도서 요약 / / 2022. 12. 19. 09:40

[클린 아키텍처] 21. 소리치는 아키텍처

클린 아키텍처 도서 요약 내용입니다.

21장 소리치는 아키텍처

건물의 청사진을 보고 있다면 이 계획서는 무슨 이야기를 해주는가?

그 계획서가 주택을 그리고 있다면, 정문, 거실로 연결되는 현관, 그리고 식당, 주방, 식탁, 가족 방이 있다. 이러한 계획서를 본다면 한 가족이 사는 주택을 보고 있다는 사실에 의심의 여지가 없을 것이다. 다시 말해, 이 아키텍처는 "집이야"라고 소리칠 것이다.

도서관의 아키텍처를 보고 있다면 커다란 정문, 체크인/체크아웃을 담당할 사서를 위한 공간, 독서 공간, 작은 회의실, 도서관의 책장이 나타날 것이다. 이 아키텍처는 "도서관이야"라고 소리칠 것이다.

 

자, 여러분의 애플리케이션 아키텍처는 뭐라고 소리치는가? 상위 수준의 디렉토리 구조, 최상위 패키지에 담긴 소스파일을 볼 때, 이 아키텍처는 "헬스 케어 시스템이야" 또는 "재고 관리 시스템이야"라고 소리치는가? 아니면 "레일스야", "스프링/하이버네이트야" 아니면 "ASP야" 라고 소리치는가?

아키텍처의 테마

"Object Oriented Software Engineering"에서 소프트웨어 아키텍처는 시스템의 유스케이스를 지원하는 구조라고 했다.

아키텍처는 프레임워크에 대한 것이 아니다. 프레임워크는 사용하는 도구일 뿐, 아키텍처가 준수해야 할 대상이 아니다. 아키텍처를 프레임워크 중심으로 만들어 버리면 유스케이스가 중심이 되는 아키텍처는 절대 나올 수 없다.

아키텍처의 목적

좋은 아키텍처는 유스케이스를 그 중심에 두기 때문에 프레임워크나 도구, 환경에 전혀 구애받지 않고 유스케이스를 지원하는 구조를 기술할 수 있다. 아키텍트가 주목하는 첫번째 관심사는 주택이 거주하기에 적합한 공간임을 확실히 하는것이지, 벽돌로 지어지는지를 확인하는 것이 아니다. 실제 아키텍트는 외장재(벽돌, 석조, 향나무)를 소유주가 결정할 수 있도록 애쓰지만 이 역시도 계획서가 유스케이스를 확실히 충족시킨 이후다.

 

좋은 소프트웨어 아키텍트는 프레임워크, 데이터베이스, 웹 서버, 그리고 여타 개발환경 문제나 도구에 대해서는 결정을 미룰 수 있도록 만든다. 프레임워크는 열어 둬야 할 선택사항이다.

하지만 웹은?

웹은 아키텍처일까? 애플리케이션이 웹을 통해 전달된다는 것은 세부사항이며 시스템 구조를 지배해서는 절대 안된다. 웹으로 전달할 것인지 여부는 미루어야 할 결정사항이다.

프레임워크는 도구일 뿐, 삶의 방식은 아니다.

프레임워크가 아키텍처의 중심을 차지하는 일을 막을 수 있는 전략을 개발하라.

테스트하기 쉬운 아키텍처

아키텍처는 프레임워크를 전혀 준비하지 않더라도 필요한 유스케이스 전부에 대해 단위 테스트를 할 수 있어야 한다. 테스트를 돌리는 데 웹서버가 반드시 필요한 상황이 되어서는 안된다. 데이터베이스가 반드시 연결되어 있어야만 테스트를 돌릴 수 있어서도 안된다. 엔티티 객체는 반드시 POJO이어야 한다. 프레임워크, 데이터베이스 또는 여타 복잡한 것들에 의존해서는 안된다.

결론

아키텍처는 시스템을 이야기하며, 시스템에 적용한 프레임워크에 대해 이야기해서는 안된다.

 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유