HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 아만드팀
[New] 아만드팀
/
🔏
팀 스터디
/
🪵
클린 아키텍처
/
🎬
17 선 긋기
🎬

17 선 긋기

발표자
Date
Jul 13, 2022
Tags
5부
아키텍처

소프트웨어 아키텍처는 선을 긋는 기술이다.

  • 경계 boundary
    • 경계는 소프트웨어 요소를 서로 분리한다.
  • 아키텍트의 목표는 필요한 시스템을 만들고 유지하는 데 드는 인적 자원을 최소화하는 것.
    • 인적 자원의 효율을 떨어뜨리는 요인은?
      • 결합. - 특히 너무 일찍 내려진 결정에 따른 결합.
      • 이른 결정
        • 시스템의 요구사항과 아무런 관련이 없는 결정.
        • 프레임워크, 데이터베이스, 웹 서버, 유틸리티 라이브러리, 의존성 주입에 대한 결정 등
      • 좋은 시스템 아키텍처는 이런 결정에 의존하지 않음.
      • 좋은 시스템 아키텍처는 이러한 결정을 가능한 한 최후의 순간에 내릴 수 있게 해줌.
      • 결정에 따른 영향이 크지 않게 만듦.

어떻게 선을 그을까? 그리고 언제 그을까?

선을 그어서 시스템 요구사항과 관련이 없는 사항들은 나중에 결정한다.
관련이 있는 것과 없는 것 사이에 선을 긋는다.
  • 데이터 베이스
    • 업무 규칙이 알아야 할 것은 데이터를 가져오고 저장할 때 사용할 수 있는 함수 집합이 있다는 사실이 전부다.
    • 이러한 함수 집합을 통해 데이터베이스를 인터페이스 뒤로 숨길 수 있다.
    • 아래의 이미지에서 경계선은 어디에 그어야 할까.
      • notion image
    • 경계선은 상속 관계를 횡단하면서 Database Interface 바로 아래에 그려 진다.
      • notion image
    • 조금 물러나서 컴포넌트를 한 번 살펴보자.
      • notion image
      • Database컴포넌트가 Business Rules를 향하도록 만들어 졌고, 두 컴포넌트 사이에 경계선이 있다.
        • → 어떤 종류의 데이터베이스도 사용할 수 있음을 알 수 있다.
        • → 이 같은 사실은 데이터베이스에 대한 결정을 연기할 수 있다.
        • → 데이터베이스를 결정하기에 앞서 업무 규칙을 먼저 작성하고 테스트하는 데 집중할 수 있음을 의미한다.

플러그인 아키텍처

  • 위의 데이터베이스 컴포넌트에 대해 내린 결정은 서드파티 플러그인을 사용할 수 있게 한 그 패턴이다.
  • 사실 소프트웨어 개발 기술의 역사는 플러그인을 손쉽게 생성하여 확장 가능하며 유지보수가 쉬운 시스템 아키텍처를 확립할 수 있게 만드는 방법에 대한 이야기다.
    • notion image
 

결론

  • 소프트웨어 아키텍처에서 경계선을 그리려면 먼저 시스템을 컴포넌트 단위로 분할해야 함.
    • 일부 컴포넌트는 핵심 업무 규칙
    • 나머지 컴포넌트는 플러그인.
    • 컴포넌트 사이의 화살표가 핵심 업무를 향하도록 컴포넌트 소스를 배치한다.
      • 의존성 화살표는 저수준 세부사항에서 고수준의 추상화를 향하도록 배치된다.
      •