DB 스키마 형상을 소스 코드가 아닌 DB 테이블로 관리하기 위한 툴로 flyway를 많이 사용한다. flyway의 동작 방식과 관련해선 여기를 참고하면 이해하기 수월하다. 그리고 여기를 참고했을 때 DB 스키마에 변경사항이 생겼지만 스크립트 파일을 누락한 경우 애플리케이션이 실행되지 않는 불상사가 발생하여 주의해야 한다고 한다. 출처 ht...
[MSA] Kafka 도메인 이벤트 순서 보장하기
MSA환경에서 Kafka를 활용한 데이터 동기화 포스팅에서 MSA환경에서 카프카를 활용하여 두 마이크로서비스간의 데이터를 동기화하기 위한 방법들에 대해 알아보았고 아래 이미지처럼 4가지 경우의 수에 대해서 알아보았다. 도메인 이벤트별 토픽 나누는 방식에서 도출될 수 있는 문제(3, 4) 도메인 이벤트별 토픽을 나누는 방식(ex. order-cr...
[MSA] Kafka 도메인 이벤트 순서 보장 문제 해결기
https://jeonyoungho.github.io/posts/Kafka-도메인-이벤트-순서-보장하기 위 포스팅과 연관된 실제 도메인 이벤트 순서 보장 문제 해결 기록을 남기고자 합니다😀 배경 현재 MSA 환경에서 제품내 인사 데이터(코드, 조직, 구성원)는 Kafka 도메인 이벤트 기반으로 동기화 되고 있다. cms 서비스로부터 인사 데이...
[MSA] MSA환경에서 Kafka를 활용한 데이터 동기화
MSA 로 구성된 환경에서 카프카를 활용하여 도메인 이벤트를 기반으로 처리를 할 땐 아래 요소들을 고민해야 한다. 어떤 방식으로 데이터를 주고 받을 것인지? (Full-Payload 방식 or Zero-Payload 방식) 토픽을 어떻게 나눌 것인지?(도메인 이벤트를 기준으로 나눌 것인지 or 도메인 기준으로 나눌 것인지) 위 두 가지 ...
Kafka Rebalancing
출처 https://joooootopia.tistory.com/30 https://www.verica.io/blog/understanding-kafkas-consumer-group-rebalancing/ https://techblog.gccompany.co.kr/%EC%B9%B4%ED%94%84%EC%B9%B4-%EC%BB%A8%EC%8A...
함께자라기 내용 정리
[함께] 빠르고 빈번한 바통 터치가 가능한 전문가 조직 제시 제임스 개럿(Jesse James Garrett)의 저서 «사용자 경험의 요소»에선 웹개발에서 추상화의 단계를 다섯 면으로 나눈다. 전략(strategy) 범위(scope) 구조(structure) 뼈대(skeleton) 표면/비쥬얼(surface/visual) 우...
Transactional Outbox Pattern
출처 https://11st-tech.github.io/2022/05/16/junior-developer-first-msa-design-and-development/#api-%EB%A9%B1%EB%93%B1%EC%84%B1%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%88%9C%EC%84%9C-%EB%...
Kafka Connect란
출처 https://cjw-awdsd.tistory.com/53 https://sihyung92.oopy.io/architecture/cdc https://hoing.io/archives/5285
CircuitBreaker 개요 및 Resilence4J 를 활용한 실습
써킷 브레이커 패턴 써킷 브레이커는 누전 차단기라는 뜻을 가진다. 누전차단기는 전기 회로에서 과부하가 걸리거나 단락으로 인한 피해를 막기 위해 자동으로 회로를 정지시키는 장치이다. MSA 로 구성된 환경에서 여러 마이크로서비스들이 존재하고 내부 internal-api 로 통신을 하게 되어 서비스가 운영된다. 예를 들어, 아래 그림과 같이 Displ...
[이펙티브자바] 아이템89-인스턴스 수를 통제해야 한다면 readResolve 보다는 열거 타입을 사용하라
핵심 정리: 불변식을 지키기 위해 인스턴스를 통제해야 한다면 가능한 한 열거 타입을 사용하자. 여의치 않은 상황에서 직렬화와 인스턴스 통제가 모두 필요하다면 readResolve 메서드를 작성해 넣어야 하고, 그 클래스에서 모든 참조 타입 인스턴스 필드를 transient 로 선언해야 한다. 싱글턴 인스턴스의 직렬화 앞선 아이템 3에서...