아키텍처와 마이그레이션
주제

큰 시스템을 멈추지 않고 어떻게 바꾸나

아키텍처와 마이그레이션

모듈러 모놀리스와 이벤트 중심 설계, 레거시 위에 세운 검증 로직, 스트랭글러 패턴과 무중단 전환. 설계 결정을 내린 이유와 그 결정을 되돌린 이유를 모은다.

70편 직접 만들고 재 본 것 56 기술 블로그 리뷰 7 컨퍼런스 발표 리뷰 7 최근 글

직접 만들고 재 본 것

56편
  1. 모듈식 모놀리스를 선택한 이유 — MSA의 유혹을 거부하기
  2. 가격이 아니라 이벤트를 팔자 — monticker 설계 철학
  3. Shadow Release로 조회를 옮기기: MyBatis 결과와 QueryDSL 결과를 나란히 비교하며 전환한 기록
  4. 섬유 공장에 API를 붙이면: 제조를 클라우드처럼 쓰는 구상
  5. ProofU 초기 설계 - 근거를 추적하는 지원 문서 시스템과 기술 선택의 이유
  6. ParityPay로 검증하는 결제 정합성 1 - 장애가 나도 지켜야 할 금융 불변조건 여섯 가지
  7. ParityPay 초기 설계 - 돈의 규칙은 PostgreSQL에 두고, 나머지 기술은 그 규칙을 돕는 자리에 두기
  8. CodeDrill 초기 설계 - 판정을 신뢰 경계 밖으로 떼어 낸 온라인 저지와 그 스택을 고른 이유
  9. 타임아웃, 재시도, 백오프 - 증폭과 지터, 그리고 데드라인 전파
  10. SysDrill 초기 설계 - 실제 인프라 없이 장애 대응을 훈련시키는 백엔드의 첫 구조
  11. spring-internals-lab로 다시 읽는 Spring 1 - 이 프로젝트는 무엇을 검증하려는가
  12. API 버저닝과 호환성 - 스키마 진화 규칙
  13. iterview 초기 설계 - 이력서 기반 면접 훈련 플랫폼의 구조와 기술 선택
  14. 분산 트랜잭션 - 2PC와 Saga, 보상 트랜잭션이 실패하는 방식
  15. 모듈러 모놀리스 - 경계를 코드로 강제하는 방법
  16. spring-lite로 이해하는 Spring 구현 1 - 프로젝트 구조와 설계 범위
  17. 트레이스 샘플링 - 헤드와 테일 샘플링의 선택 기준
  18. 멱등성 설계 - 키의 단위와 저장 위치, 만료와 재시도 계약
  19. 토스증권 Kafka 데이터센터 이중화 리뷰: 미러링보다 오프셋이 어렵고, 재난과 작업의 기준이 다르다
  20. 이벤트 소싱과 CQRS - 언제 비용이 이익을 넘는가
  21. 토스증권의 CQRS·검증기와 ParityPay의 스냅샷·대사: 읽기 모델을 분리하면 반드시 따라오는 세 가지 장치
  22. 토스증권 공개 자료로 읽는 시세·주문 아키텍처: 무엇을 잃어도 되는지 먼저 정한다
  23. 시간과 순서 - 물리 시계의 한계, 논리 시계, 하이브리드 시계
  24. REST, gRPC, GraphQL - 선택 기준과 각자가 내는 비용
  25. redis-lite-java로 이해하는 Redis 아키텍처 개요
  26. 합의 알고리즘 - Raft를 상태 기계로 읽기
  27. 멱등한 API 설계 - HTTP 메서드의 의미와 재시도 계약
  28. 키 생성 병목을 추적해 구조를 바꾼 기록: Part 3 - 채번을 INSERT 시점으로 옮기고 범위 단위로 받기
  29. monticker 초기 설계: 이벤트를 중심에 둔 첫 구조와 기술 선택
  30. 일관성 모델 - 선형화, 순차, 최종 일관성, 그리고 CAP를 설정값의 언어로
  31. 대량 배치 안정성을 높이기 위한 구조 개선: Part 5 - 배타적 락과 조건부 해제로 순서를 보장하기
  32. 키 생성 병목을 추적해 구조를 바꾼 기록: Part 1 - 2분짜리 계약 생성과 SELECT 한 줄
  33. 실행하지 않은 재설계: 권리이관 시스템의 요청 모델을 3계층으로 나누자는 제안
  34. 위반 480건 위에 아키텍처 규칙을 도입하기: 신규 코드는 100% 강제, 레거시는 점진 정리
  35. Creator-Producer 매핑 장애 대응: DML 대신 애플리케이션 흐름으로 복구한 이유와 확정하지 못한 원인
  36. Bulkhead Pattern
  37. 모든 도메인이 100% 정합성을 요구하지는 않는다: Post-Commit 이벤트와 재시도 3회 정책을 정한 기준
  38. 유통사가 늘 때마다 복사되던 File Observer 구현체 정리: 제네릭을 걷어낸 Base 클래스와 DB 기반 권리사 ID
  39. 폴링 배치를 SQS 이벤트 파이프라인으로 바꾼 이유: 재시도, DLQ, 메시지 ID 멱등
  40. Map 기반 입력을 DTO와 3단계 검증으로 바꾸기: Bean Validation, 매핑, 도메인 규칙
  41. 화면 단위 API를 도메인 책임 단위로 다시 나누기: 응답 1.5초에서 300ms까지
  42. 8천만 곡 규모 음원 데이터와 온프레미스에서 AWS로의 점진 전환: 참여자로 본 것
  43. Microservice Architecture
  44. 크리에이터 스튜디오 개요: 외부 연동 분리, 감사 로그, 토큰 세션, 매핑 장애에서 내린 판단
  45. MCP 전면 개편기: Map 입력을 DTO와 3단계 검증으로 바꾸기
  46. MCP 전면 개편기: 계약 코드 채번의 락 경합을 줄여 2분을 10초로
  47. MCP 전면 개편기: MyBatis와 JPA 공존 환경의 데이터 정합성 전략
  48. MCP 전면 개편기: 화면 단위 API를 도메인 책임 API로 옮기기
  49. MCP 전면 개편기: 판단 로직의 자리를 정하고 ArchUnit으로 지키기
  50. 테이블과 데이터만 남은 외주 시스템을 리뉴얼한 과정: 음원 유통 시스템(MDS)
  51. ADR(Architecture Decision Record) - 결정의 맥락을 결정과 함께 남기기
  52. Spring 애플리케이션에서 예외를 설계하는 방법
  53. Microservice Architecture
  54. Unique ID Generation Strategy in Distributed Systems
  55. Microservices Architecture
  56. Facade

기술 블로그 리뷰

7편
  1. 무신사 「Kafka와 Strimzi를 이용하여 6개의 도메인을 하나의 도메인으로 합쳐보았습니다」 리뷰 — 배치 없이 CDC와 Kafka Streams로 옮긴 결정, 그리고 통합 모델이 원본과 같다는 것을 누가 확인하는가
  2. 쿠팡 「대용량 트래픽 처리를 위한 쿠팡의 백엔드 전략」 리뷰 — 캐시 두 겹과 '분 단위 99.99% 동일'이라는 문장, 그리고 그 0.01%를 누가 어떻게 세는가
  3. 네이버 D2 「일 3,000만 건의 네이버페이 주문 메시지를 처리하는 Kafka 시스템의 무중단 전환 사례」 리뷰 — 두 벌로 발행해 대조한 검증기와, 발행 제어 키를 파티션 키와 같게 둔 이유
  4. 카카오페이 「MSA 환경에서 네트워크 예외를 잘 다루는 방법」 리뷰 — Unknown을 타입으로 만든 글과, Unknown을 상태로 저장한 프로젝트가 갈리는 지점
  5. LINE 「기획서 없이 내재화하기: 검증 로직으로 동일함을 증명하다」 리뷰 — 블랙박스는 입력과 출력만 정의하면 통계로 같음을 증명할 수 있다
  6. 네이버 D2 「6개월 만에 연간 수십조를 처리하는 DB CDC 복제 도구 무중단/무장애 교체하기」 리뷰 — 복제·검증·복구를 셋으로 나누고, 옛 도구와 새 도구를 서로 모르게 같이 돌린 전환
  7. 카카오 「추가배포 없이 API의 case 통일시키기」 리뷰 — 받는 쪽이 자기 케이스에 맞춰 알아서 읽게 하면 배포 순서가 사라진다

컨퍼런스 발표 리뷰

7편
  1. SLASH 23 리뷰 - 은행 최초 코어뱅킹 MSA 전환기 (feat. 지금 이자 받기): 80회 DML을 50회로, MCI 대비 170배, 빅뱅 없는 전환
  2. SLASH 24 리뷰 - 토스뱅크가 차세대를 하지 않는 이유, 지속 가능한 마이그레이션 전략: 스트랭글러 피그, 6단계 사이클, 컴포지트 분할 정복, 병렬 실행 비교 검증
  3. SLASH 24 리뷰 - 리플레이 검증으로 새로운 금융 시스템 안전하게 도입하기: 운영 트래픽을 그대로 재생해 차세대 원장을 검증하다
  4. SLASH 23 리뷰 - Kafka 이중화로 다양한 장애 상황 완벽 대처하기: Active-Standby를 믿지 않고 Active-Active로 간 이유와 IDC 장애 당일의 순서
  5. SLASH 24 리뷰 - Next 코어뱅킹, MSA와 MySQL로 여는 평생 무료 환전 시대: Oracle을 버린 이유, 30ms 환전, 자정에도 멈추지 않는 잔액 대사
  6. SLASH 22 리뷰 - 왜 은행은 무한스크롤이 안되나요: 채널계가 거래내역을 직접 갖기 위한 여덟 가지 방어
  7. SLASH 21 리뷰 - 결제 시스템의 SDK와 API 디자인: 4단계를 2단계로, DELETE·PUT을 버린 이유, 한글 enum