[Clean Architecture] 12장. 컴포넌트
|
Introduction
- 컴포넌트는 배포 단위
- 컴포넌트는 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위
- 자바의 경우 jar 파일이 컴포넌트
- 컴파일형 언어에서 컴포넌트는 바이너리 파일의 결합체
- 모든 언어에서 컴포넌트는 배포할 수 있는 단위 입자
- 여러 컴포넌트를 서로 링크하여 실행 가능한 단일 파일로 생성 가능
- 컴포넌트가 마지막에 어떤 형태로 배포되든, 잘 설계된 컴포넌트라면 반드시 독립적으로 배포 가능한, 따라서 독립적으로 개발 가능한 능력을 갖춰야 한다.
컴포넌트의 간략한 역사
재배치성
- 과거의 애플리케이션과 함수 라이브러리 공간에 대한 제약 사항은 지속 가능하지 않았고, 이를 위한 해결책은 “재배치 가능한 라이브러리 relocatable binary” 였다.
- 그리고 이를 구현하기 위해 지능적인 로더를 사용했는데, 이렇게 “링킹 로더 linking loader”가 탄생
링커
- 링킹 로더로 어느 정도 해결했지만, 프로그램은 점차 커졌고, 결국 로드와 링크가 두 단계로 분리됨
- 하지만 문제 상황은 계속 반복됨
- 이 문제 상황은 하드웨어 개선을 통해 해결됨
- 결국 컴포넌트 플러그인 아키텍처가 탄생
결론
- 런타임에 플러그인 형태로 결합할 수 있는 동적 링크 파일이 이 책에서 말하는 소프트웨어 컴포넌트에 해당
- 이제는 컴포넌트 플러그인 아키텍처를 기본으로 쉽게 사용할 수 있는 지점까지 다다랐다.