diff --git a/2026/Fundamentals_of_Software_Architecture_2nd_Edition/donghyeon/week1.md b/2026/Fundamentals_of_Software_Architecture_2nd_Edition/donghyeon/week1.md new file mode 100644 index 00000000..a83aee02 --- /dev/null +++ b/2026/Fundamentals_of_Software_Architecture_2nd_Edition/donghyeon/week1.md @@ -0,0 +1,33 @@ +# 1 ~ 3장 + +## 논의 + +최근 개발자를 AI로 대체하는 기업이 많다는 뉴스를 심심치 않게 볼 수 있습니다. +인력 제약은 아키텍처를 결정할 때 가장 중요한 요소 중 하나인데, 인력이 줄어든 조직에서 MSA는 여전히 합리적일까요? + +### 내 생각 + +AI가 코딩 속도를 높여줄 수는 있지만 분산 시스템의 복잡한 구조, 장애 대응, 데이터 일관성 문제와 같은 복잡성까지 대체하기는 어렵다고 생각합니다. +그래서 인력이 줄어들수록 MSA의 이점보다는 운영 부담이 더 커질 것이고, MSA보다는 다른 대안이 더 합리적이지 않을까하는 생각입니다. + +## 내용 + +- 현대 아키텍처의 하드 파트는 데이터와 아키텍처 관심사 사이의 텐션(밀당)에서 비롯됨 +- 데이터 + - 운영 데이터 + - 비즈니스 활동에 쓰이는 **필수** 데이터 + - 일반적으로 트랜잭션 성격의 데이터 + - 분석 데이터 + - 예측, 트렌드 분석, 기타 BI 용도로 쓰이는 데이터 + - 일반적으로 트랜잭션과 무관 + - 장기적인 전략 수립과 결정에 중요하게 활용됨 +- ADR(Architecture Decision Records, 아키텍처 결정 기록): 아키텍처 결정을 가장 효과적으로 문서화하는 방법 +- 아키텍처 피트니스 함수: 아키텍처 특성의 무결성을 **객관적**으로 평가하는 임의의 매커니즘 + - 도메인 지식이 필요하지 않음 + - JDepend, ArchUnit .. + - 객관적 == 정적(static)? X. 문맥에 따라 다른 값을 반환할 수 있음 + - 간혹 수동으로 실행해야 하는 함수도 있음 (수동 피트니스 함수) +- 아키텍처 퀀텀: 독립 배포 가능한 아티팩트 (높은 기능 응집도, 높은 정적 커플링, 동기적 동적 커플링) + - 정적 결합: 공유 DB는 시스템 간의 결합점이 되어 진정한 의미의 독립 배포가 불가능하다 => 1퀀텀 = 1DB + - 동적 결합: 통신(동기? 비동기?), 일관성(원자성? 최종 일관성?), 조정(오케스트레이터? 코레오그래피?) + - UI 결합: 단일 유저 인터페이스가 백엔드와 단단히 결합되면 아키텍처 퀀텀은 다시 1로 줄어들 수 있음