@Soo
RDBMS, NoSQL, 분산 처리에 관심이 많은 백엔드 엔지니어입니다.

Collection Wrapper 클래스를 이용한 Service 계층 리팩토링

June 23, 2023

복잡한 Service 계층 Service 계층은 애플리케이션의 핵심 비즈니스 로직을 수행하는 중심적인 역할을 한다. 이 계층은 데이터 유효성 검증, 복잡한 계산 로직, 데이터베이스 CRUD 연산, 외부 API 통신, 그리고 트랜잭션 관리까지 다양한 책임을 지니고 있다. 실무에서 코드를 파악할 일이나 유지보수할 일이 생기면 가장 먼저 찾고 코드를 보는데 많…


Spring Cloud AWS Messaging 모듈 문제점 및 튜닝

June 20, 2023

1. 개요 일반적으로 Spring 환경에서 Amazon SQS 라이브러리로 모듈을 사용합니다. 을 분석하고, 단점을 보완한 모듈을 설계하는 것을 목표로 합니다. 2. Spring Cloud AWS Messaging 모듈 모듈을 사용하면 를 추상화한 API를 사용해 쉽게 와 를 구현할 수 있습니다. 아래와 같이 간단한 설정만으로 Consumer의 경우…


Amazon SQS 딥다이브

June 19, 2023

대기열 유형 표준 대기열(Standard) 무제한 처리량 : API 작업당 거의 무제한의 TPS를 지원 최소한 한 번 전달(At-least-once delivery) : 메시가 최소한 한 번 전달되고, 가끔 2개 이상의 메시지 복사본이 전달될 수 있다. 순서 보장을 위해 최선의 노력 : 가끔 메시지가 전송된 순서와 다르게 전달될 수 있음. FIFO 대기…


카프카 스트림즈의 정확히 한 번

June 16, 2023

카프카 스트림즈란? 사용자가 Kafka에서 데이터를 실시간으로 처리하는 상태 저장 스트림 처리 애플리케이션을 구축할 수 있게 해준다. Streams API로 개발된 애플리케이션은 이벤트 시간(즉, 데이터가 실제로 현실 세계에서 생성된 시점)을 기준으로 실시간 스트리밍 데이터를 처리하며, 늦게 도착하는 레코드도 지원한다. 이를 통해 데이터 처리를 신속하게 …


카프카에서의 Transactions

June 15, 2023

왜 트랜잭션인가? 웹 페이지 노출 스트림을 소비하고 웹 페이지당 총 조회 수를 생성하는 애플리케이션은 카운트에서 약간의 오류를 허용할 수 있다. 그러나 이러한 애플리케이션의 인기와 함께 더 강력한 의미론을 갖춘 스트림 처리 애플리케이션에 대한 수요도 증가했다. 예를 들어, 일부 금융 기관에서는 스트림 처리 애플리케이션을 사용하여 사용자 계정의 차변 및 대…


카프카는 어떻게 Exactly-Once Semantics 보장하나?

June 14, 2023

Message Delivery Semantics 분산형 Pub/Sub 메시징 시스템에서는 컴퓨터들이 독립적으로 장애를 일으킬 수 있다. 예를 들어, 카프카는 개별 브로커 충돌이나 프로듀서가 메시지를 보내는 동안 네트워크 장애로 인해 문제가 발생할 수 있다. 이러한 장애를 처리하기 위해 프로듀서가 취하는 조치에 따라 다른 의미가 있다. At most onc…


디자인 패턴 - 생성 패턴

April 10, 2022

팩토리 패턴 구상 클래스의 인스턴스 생성 부분을 캡슐화하기 피자 인스턴스를 만드는 구상 클래스를 선택하는 부분이 상황이 변하면 코드를 변경해야 한다. 객체 생성 부분 캡슐화 하기 피자 인스턴스 생성 부분을 SimplePizzaFactory로 넘겼을 때의 장점은? 팩토리를 사용하지 않으면 피자 인스턴스를 생성하는 부분이 많아 생성하는 작업이 변경되었을 때 …


디자인 패턴 - 구조 패턴

April 07, 2022

데코레이터 패턴 OCP 살펴보기 클래스는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 한다. 기존 코드를 변경하지 않아도 확장할 수 있어야 한다. 옵저버 패턴을 예로 들면 옵저버를 새로 추가하면 주제에 코드를 추가하지 않으면서도 얼마든지 확장이 가능하다. 모든 부분에서 OCP를 준수해야 하는가? 현실적으로도 불가능하고 OCP를 지키다 보면 추상화가 …


디자인 패턴 - 행동 패턴

April 02, 2022

디자인 패턴- 행동 패턴 어떤 처리의 책임을 어느 객체에 할당하는 것이 좋은지, 알고리즘은 어느 객체에 정의하는 것이 좋은지 다룹니다. 객체들 간의 교류 방법에 대하여 정의한다. 행동 클래스 패턴 은 클래스 사이에 행동 책임을 분산하기 위해서 상속을 사용합니다. 행동 객체 패턴 은 상속보다는 복합을 통해서 객체 사이에 행동처리의 책임을 분산합니다. 전략 …


SpringBoot AutoConfiguration 시작하기

March 28, 2022

@EnableAutoConfiguration Spring Boot 애플리케이션이 시작되면 spring-boot-autoconfigure 모듈에 미리 정의된 Configuration 클래스들이 자동으로 구성됩니다. (스프링 부트 자동 구성 목록) Auto Configuration이 실제 실행되는지 여부는 클래스 경로에 종속 클래스가 있는지 여부에 따라 달라…