clean-architecture

21. 소리치는 아키텍처

아키텍처의 목적


좋은 아키텍처는 유스케이스를 그 중심에 두기 때문에, 프레임워크나 도구, 환경에 전혀 구애받지 않고 유스케이스를 지원하는 구조를 아무런 문제 없이 기술할 수 있다.

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

하지만 웹은?


웹은 아키텍처일까? 아니다.

웹은 전달 메커니즘(입출력 장치)이며, 애플리케이션 아키텍처에서도 그와 같이 다뤄야 한다.

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


프레임워크는 매우 강력하고 상당히 유용할 수 있다. 프레임워크 제작자는 자신이 만든 프레임워크를 매우 깊이 신뢰하곤 한다.

어떻게 하면 아키텍처를 유스케이스에 중점을 둔 채 그대로 보존할 수 있을지를 생각하라.

테스트하기 쉬운 아키텍처


아키텍처가 유스케이스를 최우선으로 한다면, 그리고 프레임워크와는 적당한 거리를 둔다면, 프레임워크를 전혀 준비하지 않더라도 필요한 유스케이스 전부에 대해 단위 테스트를 할 수 있어야 한다.

테스트를 돌리는 데 웹 서버가 반드시 필요한 상황이 되어서는 안 된다.

엔티티 객체는 반드시 POJO(오래된 방식의 간단한 객체)여야 하며, 프레임워크나 데이터베이스, 또는 여타 복잡한 것들에 의존해서는 안 된다.

결론


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