
트랜잭셔널 아웃박스 패턴이란?마이크로서비스 환경에서는 데이터베이스와 메시지 브로커를 함께 사용하는 경우가 많습니다. 예를 들어 콘서트 예매 시스템에서 결제가완료되면 사용자에게 알림을 보내야 하는데, 이 과정에서 데이터베이스 트랜잭션과 메시지 발행이 원자성을 가져야 합니다.트랜잭셔널 아웃박스 패턴은 이벤트를 바로 메시지 브로커로 보내지 않고, 먼저 데이터베이스의 아웃박스 테이블에 저장한 후 별도의프로세스가 이를 읽어서 메시지 브로커로 전송하는 방식입니다. 1. 기존 구현의 문제점기존 시스템은 결제 처리와 동시에 카프카로 메시지를 직접 전송했습니다@Transactionalpublic PaymentResult processPayment(PaymentCommand command) { Payment paym..

개요도대체 카프카가 무엇이고 이걸 왜 쓰는걸까요..? 여기서도 카프카 저기서도 카프카.. 그래서 카프카카 뭔데??대규모 실시간 데이터 스트리밍을 하기위한 분산 메시징 시스템 이라고 하는데..오늘 같이 공부하며 카프카를 왜 사용해야 하는지에 대한 이해 및 간단하게 적용을 한번 해보고자 합니다... 1. 카프카의 탄생배경카프카는 비즈니스 소셜 네트워크 서비스인 링크드인 (linked-in) 에서 개발했다고 합니다..(그런의미에서 제 링크드인 http://www.linkedin.com/in/dongmin-cheon-9967352a2) 링크드인 초기에는 파편화 된 데이터 수집 및 분배를 처리하기 위해 데이터를 생성하는 source Application과데이터가 최종 적재되는 target Application..

1. 기존 시스템의 문제점 분석1.1 강결합된 도메인 구조@Transactionalpublic PaymentConcertResult paymentConcert(String token, long reservationId) { long userId = Users.extractUserIdFromJwt(token); Users user = userRepository.findById(userId); Queue queue = queueRepository.findByToken(token); queue.tokenReserveCheck(); Reservation reservation = reservationRepository.findById(reservationId); user.check..

1. 개요우리는 왜 데이터베이스 최적화를 해야 할까요? 데이터베이스 최적화를 하는 이유는 여러 가지가 있지만,주된 이유는 시스템의 성능을 높이고 사용자 경험을 향상시키기 위해서입니다. 흔히들 이런 질문을 하십니다. 물론 서버 성능을 높이는 것(Scale-up)도 하나의 방법이 될 수 있습니다.하지만 이는 다음과 같은 한계가 있습니다:비용 효율성: 서버 성능 향상은 비용이 기하급수적으로 증가합니다.한계 존재: 아무리 좋은 서버도 결국 물리적 한계가 존재합니다.근본적 해결 아님: 비효율적인 쿼리는 여전히 비효율적입니다. 2. 콘서트 예매 시스템의 특수성콘서트 예매 시스템은 다음과 같은 특징이 있습니다:극단적인 동시성인기 가수의 티켓 오픈 시 수만 명이 동시 접속1초 내에 수천 개의 좌석 조회 요청 발생같은..

개요우리는 왜 클린아키텍처를 도입해야 할까요? 클린 아키텍처는 코드를 더 유지보수하기 쉽고, 확장 가능하며, 테스트하기 좋게 만들어줍니다. 그 이유는 크게 두 가지 입니다. 설명에 앞서 일단 객체지향의 설계 5원칙 "SOLID" 에 대해서 알아 볼 필요가 있습니다.(저도 다시 복습 해보고자...) SOLID 원칙이란? 객체 지향 설계의 다섯 가지 핵심 원칙소프트웨어 개발에서 중요한 목표 중 하나는 유지보수성, 확장성, 그리고 코드의 재사용성을 높이는 것입니다.이를 달성하기 위해서 SOLID 원칙이 제시되었습니다. SOLID는 소프트웨어 설계 원칙들의 약어로, 각 원칙은 객체 지향 프로그래밍에서 모듈을 더 유연하고 확장 가능하게 만들기 위해 제안되었습니다. 이 글에서는 SOLID 원칙이 무엇인지,각 ..