좋은 아키텍처가 지원해야 하는 것
시스템의 유스케이스
시스템의 운영
시스템의 개발
시스템의 배포
유스케이스
좋은 아키텍처는 행위를 명확히 하고 외부로 드러내 시스템 구조 자체에서 유스케이스가 한눈에 드러나게 만들 수 있다.
운영
시스템이 수 밀리초 안에 3차원의 빅데이터 테이블에 질의해야 한다면 이러한 형태를 지원해서 운영작업을 할 수 있는 형태로 아키텍처를 구조화 해야 한다.
개발
콘웨이 법칙 : 그 조직과 닮은 구조의 설계를 만든다.
다양한 관심사를 가진 많은 팀이 있는 조직에서는 각 팀이 독립적으로 행동하기 편한 아키텍처를 확보해야 한다.
배포
아키텍처는 배포 용이성을 결정하는데 중요한 역할을 한다.
그렇게 하기 위해서 시스템을 컴포넌트 단위로 분할해 격리시켜야 한다.
계층 결합 분리 & 유즈케이스 결합 분리
다른 이유로 변경되는 것을 분리한다.
ui, 업무 규칙, 데이터베이스
유스 케이스
⇒ 서로 다른 이유로 변경되는 요소들의 결합을 분리하면 기존것에 영향을 주지 않고도 유스케이스를 추가할 수 있다.
결합분리 모드
운영 측면에서 이점을 살릴 때 결합을 분리할 적절한 모드를 선택해야 한다.
msa처럼 때때로 컴포넌트를 서비스 수준까지도 분리해야 한다.
중복
진짜 중복
거짓된 중복
서로 다른 속도와 다른 이유로 변경된다면 이 두 코드를 진짜 중복이 아니다.
데이터베이스와 비슷한 뷰 모델이 있을 때 db 객체를 그대로 전달하고 싶은 유혹이 있다.
→ 거짓된 중복이다.
뷰모델을 만들어서 계층 간 겨합을 적절하게 분리하자.