본문 바로가기
책/클린 아키텍처

18장 경계 해부학

by 오오오니 2025. 3. 18.

18장 경계 해부학

비어 있음
2024년 8월 1일
시스템 아케틱처에서 컴포넌트를 분리하는 경계는 다양한 형태로 나타난다. 몇 가지를 알아보자

🛣️ 경계 횡단하기

적적할 위치에서 경계를 횡단하는 비결은 소스 코드 의존성 관리에 있음
의존성이 있는 소스코드 모듈을 변경하면 다시 컴파일 해서 배포해야 할 수도 있다.
경계는 이러한 변경이 전파되는 것을 막는 방화벽을 구축하고 관리하는 수단

🛣️ 두려운 단일체

함수와 데이터가 단일 프로세서에서 같은 주소 공간을 공유하며 규칙에 따라 분리되어 있는 것
→ 소스 수준 분리 모드
배포 관점에서 단일 실행 파일 (jar, .EXE파일)은 경계가 드러나지 않는다.
경계가 없을까?
단일 샐행 파일을 만들더라도 그 안에 포함된 다양한 컴포넌트 수준에 경계가 있다.
다형성에 의존하여 내부 의존성을 관리
이런정적 링크된 모노리틱 구조의 실행 파일이라도 규칙적이게 분리하면 개발, 테스트, 배포에 도움이 된다.

통신

단일 체에서 컴포넌트까지 통신은 빠르고 저렴하다. (함수 호출)

🛣️ 배출형 컴포넌트

아케틱처의 경계가 물리적으로 드러날 수도 있다
동적 링크 라이브러리 (.NET DLL , 자바 jar , 루비 잼)
컴파일 하지 않고 바로 사용할 수 있다.
⇒ 배포 수준 결합 분리 모드
배포 과정에서만 차이가 나고 배포 수준의 컴포넌트는 단일체와 동일하다.

통신

함수 호출이므로 저렴하다.

🛣️ 스레드

단일체와 배포형 컴포넌트는 모두 스레드를 활용할 수 있다.
스레드는 실행 계획과 순서를 체계화하는 방법에 가깝다.

🛣️ 로컬 프로세스

강한 물리적 형태를 띄는 아키텍처 경계
고수준 프로세스가 저수준 프로세스의 정보를 포함해서는 안된다(eg. PID, 물리주소, 레지스트리 키)
⇒ 저수준 프로세스가 고수준 프로세스의 플러그인 되는 것이 아키텍처 관점의 목표
메모리 공유가 되지 않음
통신 : OS 호출, 데이터 마샬링, process context switch
비싼 작업
따라서 통신이 빈번하지 않도록 제한

🛣️ 서비스

물리적인 형태를 띠는 가장 강력한 경계
서비스 경계를 지나는 통신은 함수 호출에 비해 느림
지연에 따른 문제를 고수준에서 처리할 수 있어야함 (네트워크 레이턴시, 패킷 손실)
고수준 프로세스가 저수준 프로세스의 정보를 포함해서는 안된다 (url)

' > 클린 아키텍처' 카테고리의 다른 글

20장 업무 규칙  (0) 2025.03.18
19장 정책과 수준  (0) 2025.03.18
17장 경계: 선 긋기  (0) 2025.03.18
16장 독립성  (0) 2025.03.18
15장 아키텍처란?  (0) 2025.03.18