Home 클린 아키텍처 - 소리치는 아키텍처
Post
Cancel

클린 아키텍처 - 소리치는 아키텍처

Table of Contents

  1. 아키텍처의 테마
  2. 아키텍처의 목적
  3. 하지만 웹은?
  4. 프레임워크는 도구일 뿐, 삶의 방식은 아니다
  5. 테스트하기 쉬운 아키텍처
  6. 결론

아키텍처의 테마

Object Oriented Software Engineering에서 이바 야콥슨은 소프트웨어 아키텍처는 시스템의 유스케이스를 지원하는 구조라고 지적했다. 소프트웨어 애플리케이션의 아키텍처는 애플리케이션의 유스케이스에 대해 소리쳐야 한다.

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

아키텍처의 목적

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

좋은 소프트웨어 아키텍처는 여타 개발 환경 문제나 도구에 대해서는 결정을 미룰 수 있도록 만든다. 뿐만 아니라 이러한 결정을 쉽게 번복할 수 있도록한다. 좋은 아키텍처는 유스케이스에 중점을 두며, 지엽적인 관심사에 대한 결합은 분리시킨다.

하지만 웹은?

시스템이 웹을 통해 전달된다는 사실이 시스템의 아키텍처에 영향을 줘서는 안 된다. 웹은 전달 메커니즘(입출력 장치)이며, 애플리케이션 아키텍처에서도 그와 같이 다뤄야 한다. 웹을 통해 전달 된다는 사실은 세부사항 이며, 시스템 구조를 지배해서는 절대 안 된다. 실제 애플리케이션을 웹으로 전달할지 여부는 미루어야 할 결정사항 중 하나다.

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

프레임워크는 매우 강력하고 상당히 유용할 수 있다. 그래서 “프레임워크가 모든 것을 하게 하자”라는 태도를 취할 수 있다.

이는 우리가 취하고 싶은 태도가 아니다.

어떻게 하면 아키텍처를 유스케이스에 중점을 둔 채 그대로 보존할 수 있을지를 생각하라. 프레임워크가 아키텍처의 중심을 차지하는 일을 막을 수 있는 전략을 개발하라.

테스트하기 쉬운 아키텍처

프레임워크를 전혀 준비하지 않더라도 필요한 유스케이스 전부에 대해 단위 테스트를 할 수 있어야 한다. 엔티티 객체는 반드시 오래된 방식의 간단한 객체(plain old object)여야 하며, 프레임워크나 데이터베이스, 또는 여타 복잡한 것들에 의존해서는 안 된다. 유스케이스 객체가 엔티티 객체를 조작해야 한다. 최종적으로, 프레임워크로 인한 어려움을 겪지 않고도 반드시 이 모두를 있는 그대로 테스트할 수 있어야 한다.

결론

아키텍처는 시스템을 이야기해야 하며, 시스템에 적용한 프레임워크에 대해 이야기해서는 안 된다. 새로 합류한 프로그래머는 시스템이 어떻게 전달될지 알지 못한 상태에서도 시스템의 모든 유스케이스를 이해할 수 있어야 한다.

This post is licensed under CC BY 4.0 by the author.

클린 아키텍처 - 업무 규칙

클린 아키텍처 - 클린 아키텍처