/
https://42jerrykim.github.io/ _index.md
2005년 알리스테어 콕번이 제안한 육각형 아키텍처(Hexagonal Architecture)를 심층 분석합니다. 포트와 어댑터 개념, 외부 의존성 분리 방법, 그리고 테스트 용이성 향상의 원리를 상세히 설명합니다. 2008년 제프리 팔레르모가 제안한 양파 아키텍처(Onion Architecture)를 상세히 분석합니다. 도메인 중심 설계, 동심원 구조의 의존성 방향, 인프라스트럭처 독립성의 원리, 그리고 Clean Architecture와의 관계를 설명합니다. Clean Architecture의 탄생 과정을 추적합니다. Robert C. Martin(Uncle Bob)의 배경, 2012년 블로그 포스트, 2017년 책 출간까지의 여정과 선행 패턴들이 어떻게 통합되었는지 설명합니다. 1부 소개에서는 소프트웨어를 단순히 '동작하게 만드는 것'과 올바르게 설계하여 '유지보수와 확장성까지 갖춘 제대로 된 시스템'을 만드는 것의 차이를 설명합니다. 경험이 부족한 개발자와 열정적인 전문가의 태도 차이, 그리고 훌륭한 아키텍처의 중요성을 다룹니다. 설계(Design)와 아키텍처(Architecture)의 개념적 차이와 공통점을 다룹니다. 둘 사이에는 차이가 없으며, 좋은 아키텍처의 목표는 인력 최소화라는 실무적 관점을 실제와 유사한 사례 연구, 그리고 '나중에 정리하면 된다'는 거짓말에 대한 반박과 함께 설명합니다. 소프트웨어가 제공하는 두 가지 핵심 가치인 행위(기능)와 구조(아키텍처)에 대해 설명합니다. 왜 두 가치가 모두 중요하며, 소프트웨어를 변경하기 쉽게 만드는 것이 장기적으로 얼마나 큰 가치를 가지는지 아이젠하워 매트릭스와 함께 다룹니다. 소프트웨어 아키텍처와 프로그래밍 패러다임의 기초를 다룹니다. 최초의 코드 작성부터 어셈블러, 컴파일러, 다양한 언어의 탄생과 세 가지 프로그래밍 패러다임의 변천사, 그리고 이들이 소프트웨어 설계에 끼친 영향을 체계적으로 설명합니다. 구조적 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍 등 세 가지 주요 프로그래밍 패러다임의 개요와 각 패러다임이 가진 부정적 규칙의 본질, 그리고 프로그래밍 방식과 아키텍처에 미치는 영향을 역사적 맥락과 함께 설명합니다. 1968년 데이크스트라가 발견한 구조적 프로그래밍의 핵심을 다룹니다. goto문 해로움 논쟁, 순차/선택/반복 구조, 기능적 분해와 증명 가능한 프로그램의 개념을 반증 가능성 이론, 그리고 goto에 대한 흔한 오해와 함께 상세히 설명합니다. 객체 지향 프로그래밍의 세 가지 핵심인 캡슐화, 상속, 다형성을 아키텍처 관점에서 재해석합니다. 특히 다형성이 의존성 역전을 가능하게 하여 아키텍처에 혁명을 가져온 원리를, 가상 디스패치 비용과 과잉 추상화 리스크까지 포함해 설명합니다.