본문 바로가기

아키텍처11

[만들면서 배우는 클린 아키텍처] 09. 애플리케이션 조립하기 왜 조립까지 신경 써야 할까?코드의 의존성이 올바른 방향을 가리키게 하기 위해서 유스케이스와 어댑터를 그냥 필요할 때 인스턴스화하면 안된다.유스케이스가 영속성 어댑터를 호출하고 스스로 인스턴스화 한다면 코드 의존성이 잘못된 방향으로 만들어진 것이다. 이것이 아웃고잉 포트 인터페이스를 생성한 이유다. 유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다. 객체 인스턴스를 생성할 책임은 누구에게 있을까? 그리고 어떻게 의존성 규칙을 어기지 않으면서 그렇게 할 수 있을까? 설정 컴포넌트(configuration component)아키텍처에 대해 중립적이고 인스턴스 생성을 위해 모든 클래스에 대한 의존성을 가지는 컴포넌트 역할- 웹 어댑터 인스턴스 생성- HTTP 요청이 실제로.. 2024. 10. 17.
[만들면서 배우는 클린 아키텍처] 07. 아키텍처 요소 테스트하기 육각형 아키텍처의 테스트 전략테스트 피라미드비용이 많이 드는 테스트는 지양하고 비용이 적게 드는 테스트를 많이 만들어야 한다. 이 테스트는 하나의 단위(일반적으로 하나의 클래스)가 제대로 동작하는지 확인할 수 있는 단위 테스트들이다. 테스트 피라미드는 테스트가 비싸질수록 테스트의 커버리지 목표는 낮게 잡아야 한다는 것을 보여준다. 그러지 않으면 기능을 만드는 것보다 테스트를 만드는 데 시간을 더 쓰게 되기 때문이다.   단위 테스트피라미드의 토대. 일반적으로 하나의 클래스를 인스턴스화하고 해당 클래스의 인터페이스를 통해 기능들을 테스트한다. 만약 다른 클래스에 의존한다면 의존되는 클래스들은 인스턴스화하지 않고 테스트하는 동안 목(mock)으로 대체한다.통합 테스트연결된 여러 유닛을 인스턴스화하고 시작점이.. 2024. 10. 15.
[만들면서 배우는 클린 아키텍처] 06. 영속성 어댑터 구현하기 의존성 역전애플리케이션 서비스에서는 영속성 기능을 사용하기 위해 포트 인터페이스를 호출한다. 이 포트는 실제로 영속성 작업을 수행하고 데이터베이스와 통신할 책임을 가진 영속성 어댑터 클래스에 의해 구현된다.영속성 어댑터는 아웃고잉 어댑터다. 애플리케이션에 의해 호출될 뿐 애플리케이션을 호출하지는 않는다.포트는 애플리케이션 서비스와 영속성 코드 사이의 간접적인 계층으로 영속성 코드를 리팩터링 하더라도 코어 코드를 변경하지 않아도 된다. 자연스럽게 런타임에도 의존성은 애플리케이션 코어에서 영속성 어댑터로 향한다. 포트가 계약을 만족하는 한 코어에 영향을 미치지 않으면서 영속성 코드를 마음껏 수정할 수 있다.영속성 어댑터의 책임영속성 어댑터가 하는 일1. 입력을 받는다포트 인터페이스를 통해 입력을 받는다. 입.. 2024. 10. 14.
728x90
반응형