클린 아키텍쳐란 이제 엉클 밥 형님이 만드신 것인데
그 분께서는 소프트웨어 개발에 있어 원칙, 패러다임, 설계 등을 알리는 데 크게 기여하였습니다.
SOLID ( 객체 지향 설계 원칙) 의 창시자로 알려져 있음!
클린 아키텍쳐란 "관심의 분리" 그리고 "테스트 가능성"(Testability) 을 보편적인 요구를 가지고 있으며 이를 바탕으로 관심사를 분리시켜 의존도(dependency) 를 낮추는 것에 목적을 둔 아키텍쳐 입니다.
-> 우리가 프로그래밍 개발을 하다 보면 이제 보면 유지 보수를 할 수 밖에 없는데.. 그래서 낮은 비용으로 유지 보수를 할 수 밖에 없도록 된 것이 클린 아키텍쳐이다.
클린 아키텍처의 레이어 구조
출처: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
안쪽에 위치할수록 고수준 정책이며, 바깥쪽에 위치할 수록 저수준 정책을 의미합니다.
엔티티 (Entities)
- 도메인 즉 비즈니스 계층과 가장 연관되어 있는 것
- 가장 수명이 긴 객체
- 다양한 enterprise paplication 에서 쓰이는 entity 등을 의미한다.
유즈케이스 (Use cases)
- 애플리케이션 계층으로도 불리며, 어플리케이션 규모의 비즈니스 규칙을 포함
- system 의 usecase 등을 실행시키고 이제 캡슐화하는 것이며 엔터티에서 나오는 데이터의 흐름을 관리하고 조정한다
- 해당 계층의 수정은 응용 프로그램의 동작에 영향을 미친다는 의미입니다.
인터페이스 어뎁터 (Interface Adapter)
- 데이터베이스나 Web 과 같은 바깥 계층에서 사용하기 편리하도록, 유즈케이스 또는 엔티티 계층에서 데이터를 변환하는 어뎁터의 집합입니다.
흔히 MVC, MVVM과 같은 아키텍처를 포함하는 것이 이 영역으로 컨트롤러, 프레젠터, 게이트웨이 등이 속합니다.
프레임워크와 드라이버 (Frameworks & Drivers)
- 프레임워크나 툴과 같은 것을 의미하며 Database 나 웹 프레임워크와 같은 것을 의미한다
- 시간이 지남에 따라 구성이 변경 될 수 있으므로 glue code 이상에 대한 작성을 권장하지 않음
- 추상화하여 도메인 계층에 영향을 주지 않고 인터페이스를 수정하고 업데이트 할 수 있다.
'Computer 공부 > Clean architecture' 카테고리의 다른 글
database architecture (0) | 2024.11.26 |
---|