From 5973c7cb93e307f9ad97c03c26ab6f2d1c184a33 Mon Sep 17 00:00:00 2001 From: dhlee3994 Date: Thu, 19 Feb 2026 22:11:15 +0900 Subject: [PATCH] =?UTF-8?q?8~9=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../donghyeon/week4.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 2026/Fundamentals_of_Software_Architecture_2nd_Edition/donghyeon/week4.md diff --git a/2026/Fundamentals_of_Software_Architecture_2nd_Edition/donghyeon/week4.md b/2026/Fundamentals_of_Software_Architecture_2nd_Edition/donghyeon/week4.md new file mode 100644 index 00000000..ee3e5133 --- /dev/null +++ b/2026/Fundamentals_of_Software_Architecture_2nd_Edition/donghyeon/week4.md @@ -0,0 +1,28 @@ +# 8 ~ 9장 + +## 논의 + +최종 일관성 패턴 중 **백그라운드 동기화 패턴**은 매우 생소한 패턴인데, 사용해본 분이 계신지 궁금하네요. +어떤 상황이었고, 왜 이 패턴을 사용했는지.. + +## 내용 + +- 코드 재사용 패턴 + - 코드 복제: 서비스 진입점을 정의한 어노테이션과 같이 대부분의 서비스에서 필요한 극히 **정적인 일회성 코드**에는 유용 + - 공유 라이브러리: 버저닝이 필수 + - 공유 서비스: 이에 의존하는 서비스가 런타임에 잘못될 가능성이 있음 => 버저닝도 말처럼 쉽지 않음 + - 사이드카와 서비스 메시: 로깅, 보안, 모니터링과 같은 공통 인프라 로직 (구현 계층이 다른 AOP 느낌임) +- 공동 데이터 오너십(joint ownership) 해결 기법 + - 전술적인 보완책 3개 + 구조적인 해결책 1개(서비스 통합 기법) + - 테이블 분할 기법: 데이터를 물리적으로 나누어 관리 + - 데이터 도메인 기법: 도메인 관점에서 데이터를 그룹화 + - 대리자 기법: 특정 서비스가 데이터 접근을 대행 + - 서비스 통합 기법: 여러 테이블 오너 서비스를 하나의 서비스로 통합, 공동 오너십 => 단독 오너십 +- 분산 트랜잭션 (Distributed Transaction, 이하 DT): not ACID, but BASE + - BA (Base Availability, 기본 가용성): DT의 모든 서비스/시스템이 DT에 참여할 수 있다 + - S (Soft state, 소프트 상태): DT가 진행 중이고 원자적 비즈니스 요청이 미완료(또는 완료 여부조차 알 수 없는) 상태 + - E (Eventual consistency, 최종적 일관성): 언젠가는 DT의 모든 부분이 무사히 완료되고 모든 데이터가 동기화 +- 최종 일관성 패턴 + - 백그라운드 동기화 패턴 + - 오케스트레이티드 요청 기반 패턴 + - 이벤트 기반 패턴