Skip to content

Latest commit

 

History

History
59 lines (39 loc) · 2.59 KB

클린 아키텍처 개요와 기본 개념-eunho.md

File metadata and controls

59 lines (39 loc) · 2.59 KB

클린 아키텍처 개요와 기본 개념


클린 아키텍처란?


  • 관심사를 분리시키고 의존도를 낮추는 것에 목적을 둔 아키텍쳐
  • ‘관심의 분리’(Seperation of concerns) & ‘테스트 가능성’(Testability) 을 위한
  • ‘추상화 개념’(Abstraction principle)

❕ 의존도를 낮추고 서로에게 주는 영향을 감소함으로써 유지보수의 용이성이 향상됩니다. 낮은 비용으로 새로운 기능을 추가할 수 있습니다.

클린 아키텍쳐 기본 원칙


  • 종속성 규칙(Dependency Rule)
    • 종속성은 외부에서 내부로 안쪽으로만 가리킬 수 있고, 고수준 정책이 저수준 정책의 변경에 영향을 받지 않도록 하는 것이다.
  • High level policy(고수준 정책) : 비즈니스 영역 Business Rules, Entities
  • Low level policy(저수준 정책) : UI 영역 Presentaion, Controller

엔티티 (Entity)


  • Entity 는 애플리케이션에서 핵심적인 기능인 Business Rule 들을 담고 있다
  • Entity는 데이터베이스나 외부 인터페이스와 독립적으로 존재하며, 비즈니스 규칙과 관련된 데이터를 가지고 있다
  • 하나 이상의 프로그램 간에 공유될 수 있다. → 수명이 길다, 재상용의 가능성이 높다

레포지토리 (Repository)


  • Repository 패턴은 애플리케이션의 유지 보수성과 확장성을 향상시킵니다.
  • 예를 들어, 데이터베이스의 변경이 필요한 경우, Repository 인터페이스만 수정하면 되기 때문에 다른 부분에 영향을 주지 않고 데이터 엑세스 로직을 변경할 수 있습니다.
  • 또한, Repository를 사용하면 테스트할 때 가짜 또는 메모리 기반의 Repository를 구현하여 데이터베이스에 의존하지 않고도 테스트할 수 있습니다.

데이터 변환 (Transform) 및 매핑


  • 데이터 변환은 데이터를 한 형식에서 다른 형식으로 변환하는 작업을 의미하며, 매핑은 서로 다른 데이터 구조 간에 필요한 정보를 추출하거나 연결하는 작업을 의미합니다.
  • 이를 통해 비즈니스 로직과 데이터 엑세스 로직의 분리를 강화하고, 각 계층의 독립성을 보장할 수 있습니다.
  • Mapper를 사용하여 데이터 구조의 변경이나 외부 시스템의 변화에 유연하게 대응할 수 있습니다. 이를 통해 클린 아키텍처는 데이터의 일관성과 유연성을 유지하는데 도움을 줍니다.

레포지토리 인터페이스(Repository Interface) 설계