[Clean Architecture] 12장 컴포넌트

soohee·2022년 5월 11일
0

클린아키텍처

목록 보기
11/15

컴포넌트 : 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위

잘 설계된 컴포넌트는 반드시 독립적으로 배포가 가능해야 하며, 독립적으로 개발 가능한 능력을 갖춰야한다.

컴포넌트의 간략한 역사

개발 초창기에는 프로그램이 로드될 주소를 직접 제어해야 했기에, 메모리 사용량이 점점 늘어났다.

재배치성

재배치가 가능한 바이너리를 통해 Loader을 사용해서, 메모리에 재배치 할 수 있는 형태의 바이너리를 생성하도록 컴파일러를 수정했다.

  • 프로그램이 라이브러리 함수를 호출한다면 컴파일러는 라이브러리 함수 이름을 외부 참조(external reference)로 생성
  • 반면 라이브러리 함수를 정의하는 프로그램이라면 컴파일러는 해당 이름을 외부 정의(external definition)로 생성
  • 이렇게 함으로써 외부 정의를 로드할 위치가 정해지기만 하면 로더가 외부 참조를 외부 정의에 링크시킴
  • 이렇게 링킹 로더(linking loader)가 탄생

링커

링킹 로더의 탄생으로 프로그램을 개별적으로 컴파일하고 로드할 수 있는 단위로 분할할 수 있게 되었다.

  • 1960s 속도의 문제로 인해 로드와 링크를 분리했다. 프로그래머는 링커라는 애플리케이션으로 링크 과정을 맡았다. 링커로 링크가 완료된 재배치 코드를 만들었고, 따라서, 로더의 로딩 과정이 아주 빨라졌다.
  • 1980s 무어가 나타나며, 컴퓨터는 빨라지고, 저렴해졌다.
  • 현재 컴퓨터와 장치가 빨라져 로드와 링크를 동시에 가능하게 되었다.

이렇게 컴포넌트 플러그인 아키텍처가 탄생했다.

결론

옛날부터 여러 노력을 통해 컴퓨터 성능을 높였다.

지금은 그러한 노력들로 인해 컴포넌트 플러그인 아키텍처를 쉽게 사용가능하다.

profile
🐻‍❄️

0개의 댓글