Post

컴포넌트

12. 컴포넌트

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

여러 컴포넌트를 서로 링크하여 실행 가능한 단일 파일로 생성 가능

잘 설계된 컴포넌트라면 반드시 독립적으로 배포 가능한, 따라서 독립적으로 개발 가능한 능력을 갖춰야 한다.

컴포넌트의 간략한 역사

개발 초창기에는 메모리에서의 프로그램 위치와 레이아웃을 프로그래머가 직접 제어

프로그램의 위치가 한번 결정되면, 재배치가 불가능했다.

구시대에는 라이브러를 애플리케이션 코드에 포함해 단일 프로그램으로 컴파일

컴파일 시간을 단축시키기 위해 프로그래머는 함수 라이브러리의 소스 코드를 애플리케이션 코드로부터 분리

함수 라이브러리를 특정 위치에서 로드

애플리케이션 주소 공간이 커지면서 할당을 넘어서게 됨

단편화 지속

재배치성

지능적인 로더를 사용해 메모리에 재배치할 수 있는 형태의 바이너리를 생성하도록 컴파일러를 수정

이제 프로그래머는 함수 라이브러리를 로드할 위치와 애플리케이션을 로드할 위치를 로더에게 지시 가능

링킹 로더 탄생

링커

링킹 로더의 등장했지만, 욕심이 많아져서 다시 느려짐

링커와 로더를 분리하고, 프로그래머가 링커 담당

욕심이 많아져서 다시 느려짐

머피의 법칙 vs 무어의 법칙

무어의법칙 승!

리소스가 커져서 링크/로더가 빨라졌다.

그래서 컴포넌트 플러그인 아키텍처 탄생

참조

  1. 클린 아키텍처(Clean Architecture)
This post is licensed under CC BY 4.0 by the author.