Backend
-
JDBC 살펴보기Backend/학습내용 정리 2024. 9. 12. 15:30
매번 단순하게 Spring properties 들을 이용해 데이터베이스 연결 설정을 하다 실제 어떻게 작동하는지 확인해보고자 간단하게 DriverManager 와 DataSource 에 대해 학습했습니다. 이번 글에서는 간단하게 DriverManager, PrepareStatement, DataSource 데 관해 정리하겠습니다. 글 목차 1. DriverManager 2. Statement vs PreparedStatement 3. DataSource DriverManagerStatic Method 만 제공한다. 단순하게 Connection 을 얻을 수 있는데 DriverManager.getConnection() 메서드를 이용해 Connection 인터페이스 객체를 얻을 수 있습니다.각 DB 밴..
-
Spring @EventListener 사용하기 (2)Backend/학습내용 정리 2024. 7. 19. 16:33
https://jinmook.tistory.com/29 Spring @EventListener 사용하기글 목차1. ApplicationEventPublisher vs ApplicationEventPublisherAware2. 비동기로 진행하기3. 트랜잭션 확인4. 정리 프로젝트를 진행하며 Spring 의 Event 기반으로 개발을 진행했습니다. 사용자가 검색을 진행jinmook.tistory.com 앞선 글에서는 이벤트 리스너와 비동기 설정, 트랜잭션 설정 등에 관해 알아봤습니다.이번 글에서는 이어서 트랜잭션과 관련된 내용 그리고 Tomcat과 Executor 관계에 대해 알아보겠습니다. 글 목차 1. @TransactionalEventListener 2. TaskExecutor 3. @Async..
-
트랜잭션과 JPA 낙관적 락Backend/학습내용 정리 2024. 6. 17. 21:06
트랜잭션과 락 개념 트랜잭션은 작업의 완전성을 보장해 주는 것입니다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능입니다. 잠금은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있게 해주는 역할을 합니다.트랜잭션의 격리 수준이라는 것은 하나의 트랜잭션 내에서 또 다른 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지를 결정하는 레벨을 의미합니다. 락과 트랜잭션은 서로 비슷한 개념 같지만,락은 동시성을 제어하기 위한 기능이고,트랜잭션은 데이터의 정합성을 보장하기 위한 기능입니다 JPA 낙관적 락 낙관적 락은 DB의 락 기능을 이용한 동시성 ..
-
내 코드가 그렇게 이상한가요?Backend/책 정리 2024. 6. 6. 20:07
시작에 앞서...예전에 블로그에 클린 코드나 이팩티브 자바를 읽고 정리하는 내용을 올렸었는데, 관련된 정리 내용은 다른 블로그에도 너무 많은것 같아서 앞으로는 책 정리 내용을 블로그에 올리지는 않을 예정입니다.사실 그전에도 책은 꾸준히 읽고 있었는데 블로그에 정리는 하지 않았고 대신 개인 노트 앱에 정리하고 github에 올리는 방식으로 변경하고 여기 블로그에는 책에 대한 리뷰만 작성하려고 합니다. 내용 정리에 대한 깃허브는 아래 링크를 통해 볼 수 있습니다. 기술 책 정리 github repository](https://github.com/jin-mook/TechBookSummaries\)) 이번 글은 최근에 다 읽었던 '내 코드가 그렇게 이상한가요' 라는 책에 대한 리뷰입니다. 챕터별 리뷰 지금까..
-
Spring @EventListener 사용하기Backend/학습내용 정리 2024. 5. 29. 01:03
글 목차1. ApplicationEventPublisher vs ApplicationEventPublisherAware2. 비동기로 진행하기3. 트랜잭션 확인4. 정리 프로젝트를 진행하며 Spring 의 Event 기반으로 개발을 진행했습니다. 사용자가 검색을 진행하면 해당 키워드로 이벤트를 생성하고 EventListener 부분에서는 관련된 로직을 처리하도록 개발했습니다. 이렇게 이벤트 기반으로 로직을 분리하면서 메인 로직인 기사 검색에 집중할 수 있었고, 이벤트 처리 로직에서는 키워드 순위와 관련된 로직을 처리할 수 있었습니다. 이번 글에서는 Event 처리 기반으로 구현하면서 공부했던 내용을 정리했습니다. ApplicationEventPublisher vs ApplicationEventPub..
-
Server Sent Event 정리Backend/학습내용 정리 2024. 5. 16. 13:46
글 목차1. Server Sent Event 개념2. Spring 에서 SseEmitter 클래스 확인하기3. SseEmitter 클래스 동작 방식4. Spring 코드 흐름 확인5. 마무리6. 참고 블로그 Server Sent Event 개념 전통적으로 웹 페이지는 새로운 데이터를 얻기 위해 서버로 요청을 보내야 하는 구조입니다. 즉, 서버로 데이터를 요청해야 합니다. 하지만 Server-Sent Events 방식으로 웹페이지의 요청 없이도 언제든지 서버가 새로운 데이터를 보내는 것이 가능합니다. 이렇게 보내진 메시지는 웹페이지 안에서 이벤트와 데이터로 다룰 수 있습니다. Server-Sent Events 방식을 사용할 때 주의할 점이 Http/2 프로토콜을 사용하지 않는다면 최대 커넥션 개수가 부..
-
카프카의 내부 동작 원리와 구현Backend/kafka 2023. 8. 9. 01:21
이번 글은 카프카의 내부 동작 원리에 대한 챕터에 대한 정리입니다. 1. 카프카 리플리케이션 카프카는 안정성을 확보하기 위해 카프카 내부에서 리플리케이션이라는 동작을 하게 됩니다. 카프카는 브로커의 장애에도 불구하고 연속적으로 안정적인 서비스를 제공함으로써 데이터 유실을 방지하며 유연성을 제공합니다. 카프카의 리더 파티션에 메시지를 보내게 되면 해당 메시지를 모든 리플리케이션 팩터 수만큼의 브로커에서 가질 수 있게 됩니다. 즉, 리플리케이션이 있는 경우 N개의 브로커 중에 N-1 까지의 브로커 장애가 발생해도 메시지 손실 없이 안정적으로 메시지를 주고받을 수 있습니다. [ 리더와 팔로워 ] 카프카는 내부적으로 모두 동일한 리플리케이션들을 리더와 팔로워로 구분하고, 각자의 역할을 분담시킵니다. 리더는 리플..
-
카프카 기본 개념과 구조Backend/kafka 2023. 7. 26. 02:42
이번 글은 카프카 관련 책 내용의 일부를 정리한 글입니다. 이후에도 주기적으로 정리해서 업로드할 예정입니다. 카프카를 구성하는 주요 요소 주키퍼 : 아파치 프로젝트 어플리케이션 이름입니다. 카프카의 메타데이터 관리 및 브로커의 정상상태 점검을 담당합니다. 카프카 : 아파치 프로젝트 애플리케이션 이름입니다. 여러 대의 브로커를 구성한 클러스터를 의미합니다. 브로커 : 카프카 애플리케이션이 설치된 서버 또는 노드를 의미합니다. 프로듀서 : 카프카로 메시지를 보내는 역할을 하는 클라이언트를 총칭합니다. 컨슈머 : 카프카에서 메시지를 꺼내가는 역할을 하는 클라이언트를 총칭합니다. 토픽 : 카프카는 메시지 피드들을 토픽으로 구분하고, 각 토픽의 이름은 카프카 내에서 고유합니다. 파티션 : 병령 처리 및 고성능을 ..