Home
Youngho's Devlog
Cancel

DB 마이그레이션을 위한 flyway

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에서...