Chapter1-도메인 모델 시작 도메인 온라인 서점(쇼핑몰) 소프트웨어는 온라인으로 책을 판매하는데 필요한 상품조회, 구매, 결제, 배송 추적 등의 기능을 제공해야 한다. 이때 ‘온라인 서점’은 소프트웨어로 해결하고자 하는 문제 영역, 즉 도메인에 해당한다. 한 도메인은 다시 하위 도메인으로 나눌 수 있다. [그림1.1] 도메인...
클린코드 내용 정리
Chapter5-형식 맞추기 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다. 필요하다면 규칙을 자동으로 적용하는 도구를 활용한다. (ex. intellij의 codestyle이 이러한 도구 중...
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) 우...
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...