/
https://42jerrykim.github.io/ _index.md
아키텍처의 정의와 시스템 생명주기 전반에 걸친 목표를 다룹니다. 개발, 배포, 운영, 유지보수를 지원하는 좋은 아키텍처의 특성, 결정 지연의 가치, 정책과 세부사항의 분리를 실제 코드 예제와 함께 자세히 설명합니다.
좋은 아키텍처가 제공해야 하는 네 가지 독립성을 다룹니다. 유스케이스, 운영, 개발, 배포의 독립성을 확보하는 방법과 진짜 중복·우발적 중복을 구분해 함정을 피하는 전략, 소스·바이너리·서비스 세 가지 디커플링 모드를 예제와 함께 설명합니다.
아키텍처에서 경계를 긋는 방법과 시점을 다룹니다. 비즈니스 규칙과 세부사항 사이에 경계를 설정해 플러그인 아키텍처를 구현하는 방법을, 마틴의 FitNesse 프로젝트 실제 사례와 결제 게이트웨이 예제로 자세히 설명합니다.
경계의 다양한 구현 방식을 다룹니다. 함수 호출, 컴포넌트(ServiceLoader), 로컬 프로세스, 서비스까지 경계 횡단의 물리적 형태와 각각의 지연 시간·비용·복잡성 트레이드오프를 컴파일 가능한 Java 예제와 비교표로 자세히 설명합니다.
정책의 수준(Level)과 의존성 방향의 관계를 다룹니다. 고수준 정책과 저수준 정책을 입출력으로부터의 거리를 기준으로 구분하고, 암호화 프로그램 예제로 의존성이 고수준을 향해야 하는 이유를 아주 자세히 설명합니다.
업무 규칙의 두 가지 유형인 엔터티와 유스케이스를 다룹니다. 핵심 업무 규칙과 애플리케이션 특화 규칙의 차이, 요청/응답 모델의 설계 방법을 대출 신청 예제와 컴파일 가능한 Java 코드로 자세히 설명하고, JPA 엔터티와의 혼동도 함께 정리합니다.
소리치는 아키텍처(Screaming Architecture)의 개념을 다룹니다. 아키텍처가 시스템의 유스케이스와 의도를 어떻게 드러내야 하는지, 프레임워크가 아닌 도메인 중심 설계를 주문 처리 예제와 컨트롤러 리팩터링 코드로 설명합니다.
Clean Architecture의 핵심인 동심원 구조와 의존성 규칙을 상세히 다룹니다. Entities, Use Cases, Interface Adapters, Frameworks의 4계층과 경계를 넘는 데이터 흐름을 설명합니다.
프레젠터와 험블 객체 패턴을 다룹니다. 테스트하기 어려운 부분을 분리하여 테스트 용이성을 높이는 방법과 UI·DB·외부 서비스 등 아키텍처 경계에서의 실제 활용을, 컴파일 가능한 Java 코드와 실제 원저 인용을 근거로 자세히 설명합니다.
부분적 경계 전략을 다룹니다. 완전한 경계의 비용이 부담될 때 사용할 수 있는 마지막 단계 건너뛰기·단방향 경계·퍼사드 세 가지 패턴과 각각의 장단점을, 결제·알림 서비스 예제를 컴파일 가능한 Java 코드로 비교하며 설명합니다.