/
https://42jerrykim.github.io/ _index.md
컴포넌트의 정의와 역사를 상세히 다룹니다. 초기 프로그래밍의 메모리 배치 문제부터 재배치 가능한 바이너리, 링커의 등장, 정적/동적 링킹의 트레이드오프, 현대의 패키지 관리자와 모듈 시스템까지 발전 과정을 다룹니다.
컴포넌트 응집도의 세 가지 원칙(REP, CCP, CRP)을 상세히 다룹니다. 어떤 클래스들을 하나의 컴포넌트에 묶어야 하는지, 세 원칙이 서로 어떻게 긴장 관계에 놓이는지, 균형점을 찾는 방법을 실제 사례와 함께 설명합니다.
컴포넌트 결합의 세 가지 원칙(ADP, SDP, SAP)을 상세히 다룹니다. 순환 의존성 제거, 안정성 방향의 의존, 추상화와 안정성의 관계를 불안정성·추상화 메트릭과 주계열 개념, 실제 리팩토링 예제와 함께 설명합니다.
아키텍처란 무엇이며, 좋은 아키텍처의 목표는 무엇인지 소개합니다. SOLID·컴포넌트 원칙만으로는 시스템 구조가 왜 부족한지 짚고, Clean Architecture의 동심원 구조와 이후 15개 장의 로드맵을 제시합니다.
아키텍처의 정의와 시스템 생명주기 전반에 걸친 목표를 다룹니다. 개발, 배포, 운영, 유지보수를 지원하는 좋은 아키텍처의 특성, 결정 지연의 가치, 정책과 세부사항의 분리를 실제 코드 예제와 함께 자세히 설명합니다.
좋은 아키텍처가 제공해야 하는 네 가지 독립성을 다룹니다. 유스케이스, 운영, 개발, 배포의 독립성을 확보하는 방법과 진짜 중복·우발적 중복을 구분해 함정을 피하는 전략, 소스·바이너리·서비스 세 가지 디커플링 모드를 예제와 함께 설명합니다.
아키텍처에서 경계를 긋는 방법과 시점을 다룹니다. 비즈니스 규칙과 세부사항 사이에 경계를 설정해 플러그인 아키텍처를 구현하는 방법을, 마틴의 FitNesse 프로젝트 실제 사례와 결제 게이트웨이 예제로 자세히 설명합니다.
경계의 다양한 구현 방식을 다룹니다. 함수 호출, 컴포넌트(ServiceLoader), 로컬 프로세스, 서비스까지 경계 횡단의 물리적 형태와 각각의 지연 시간·비용·복잡성 트레이드오프를 컴파일 가능한 Java 예제와 비교표로 자세히 설명합니다.
정책의 수준(Level)과 의존성 방향의 관계를 다룹니다. 고수준 정책과 저수준 정책을 입출력으로부터의 거리를 기준으로 구분하고, 암호화 프로그램 예제로 의존성이 고수준을 향해야 하는 이유를 아주 자세히 설명합니다.
업무 규칙의 두 가지 유형인 엔터티와 유스케이스를 다룹니다. 핵심 업무 규칙과 애플리케이션 특화 규칙의 차이, 요청/응답 모델의 설계 방법을 대출 신청 예제와 컴파일 가능한 Java 코드로 자세히 설명하고, JPA 엔터티와의 혼동도 함께 정리합니다.