[Clean Architecture] 21장 :: 소리치는 아키텍처

Jihyoung·2022년 4월 27일
0

Clean Architecture

목록 보기
18/23
post-thumbnail

📕 아키텍처의 테마

이바 야콥슨(ivar Jacobson)이 소프트웨어 아키텍처에 대해 쓴 독창적인 저서인 《Object Oriented Software Engineering》을 읽어보자.

  • 이 책의 부제가 유스케이스 주도 접근법(Use Case Driven Approach)이라는 점을 주목하자.
  • 야콥슨은 소프트웨어 아키텍처는 시스템의 유스케이스를 지원하는 구조라고 지적했다.

아키텍처는 프레임워크에 대한 것이 아니다.

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

📗 아키텍처의 목적

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

좋은 소프트웨어 아키텍처는 개발 환경 문제나 도구에 대해서는 결정을 미룰 수 있도록 만든다.

  • 프레임워크는 열어둬야할 선택사항이다.

좋은 아키텍처는 유스케이스에 중점을 두며, 지엽적인 관심사에 대한 결합을 분리시킨다.


📙 하지만 웹은?

웹은 전달 메커니즘(입출력 장치)이며, 애플리케이션 아키텍처에서도 그와 같이 다뤄야 한다.
애플리케이션이 웹을 통해 전달된다는 사실은 세부사항이며, 시스템 구조를 지배해서는 절대 안 된다.

근본적인 아키텍처를 고치지 않아도 시스템은 어떤 플랫폼을 통해서라도 전달될 수 있어야 한다.

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

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

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


📒 테스트하기 쉬운 아키텍처

  • 아키텍처가 유스케이스를 최우선으로 하고 프레임워크와 적당한 거리를 둔다면, 필요한 유스케이스 전부에 대해 단위 테스트를 할 수 있어야 한다.
  • 엔티티 객체는 반드시 오래된 방식의 간단한 객체(plain old object)여야 한다.
  • 프레임워크, 데이터베이스, 등 복잡한 것들에 의존해서는 안 된다.
  • 유스케이스가 엔티티 객체를 조작해야 한다.
  • 프레임워크로 인한 어려움을 겪지 않고도 반드시 있는 그대로 테스트 할 수 있어야 한다.

📕 결론

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

  • 세부사항을 당장 고려하지 않은 상태에도 시스템이 동작할 수 있어야 한다.

📚 Reference

  • Clean Architecture : 소프트웨어 구조와 설계의 원칙
profile
로그를 생활화

0개의 댓글