Clean Architecture
개발한다는것은 유지보수성, 확장성, 테스트 용이성 등의 요구사항을 충족하기 위한 고민이 필요하고, 적절한 아키텍처 설계가 필수이다. 이런 목표를 달성하기위한 개념중 하나가 클린아키텍처 이다.
-> 소프트웨어 시스템의 구조를 설계할때 지켜야할 원칙과 방법을 정의한 개념이다. 로버트.C.마틴에 의해 소개된 개념이고, 복잡한 소프트웨어 시스템을 보다 관리가능하고 유지보수 가능한 형태로 구축하기 위한 지침을 제공한다.
클린 아키텍처의 장점중 하나는 각 부분을 독립적으로 개발하고 테스트 할수 있는 환경을 조성할 수 있다. 또한 시스템의 변경이나 업그레이드가 필요할 때 전체 시스템을 다시 작성하지않아도 되며, 특정 부분만 수정하는것이 가능해진다.
의존성 역전 원칙
-> 고수준 모듈은 저수준 모듈에 의존해서는 안되며, 양쪽 모듈 모두 추상화에 의존해야한다. 이를통해 느슨한 결합을 유지할 수 있다.
경계의 분리
-> 시스템을 여러영역으로 나누고, 각 영역 사이의 인터페이스를 정의하여 각 영역의 독립성을 보장한다.
인터페이스 분리 원칙
-> 클라이언트가 자신이 사용하지않는 메서드에 의존하지 않아야한다. 인터페이스는 클라이언트의 요구에 딱 맞는 형태로 분리되어야한다.
뷰모델(ViewModel)
-> 사용자 인터페이스와 비즈니스 로직 간의 중간 계층으로, UI에서 발생한 이벤트를 처리하고 필요한 데이터를 비즈니스 로직에 전달한다.
유스케이스(Use Case)
-> 어플리케이션의 실제 비즈니스 로직을 포함한 부분으로, 프레젠터나 뷰모델로부터 전달된 요청을 처리하고 데이터를 가공하여 반환한다.
레포지터리(Repository)
-> 데이터베이스나 외부 데이터 원본과의 상호 작용을 담당하는 부분으로, 데이터를 가져오고 저장하는 작업을 수행한다. 유스케이스는 레포지토리를 통해 데이터를 가져온다.
엔티티(Entity)
-> 어플리케이션의 핵심 데이터 구조를 나타내며, 데이터베이스나 네트워크에서 가져온 데이터를 객체로 변환한 형태이다.
클린 아키텍처
클린아키텍처
cleanarchitecture
clean architecutre