리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
[클린 아키텍처 12] 아키텍처 스타일 결정하기Java 2024.10.11 12:57
언제 실제로 육각형 아키텍처를 사용해야 할까? 도메인이 왕이다영속성 관심사나 외부 시스템에 대한 의존성 등의 변화로부터 자유롭게 도메인 코드를 개발할 수 있는 것이 육각형 아키텍처 스타일의 주요 특징이다!이것이 육각형 아키텍처가 DDD와 정말 잘 어울리는 이유 만약 도메인 코드가 애플리케이션에서 가장 중요한 것이 아니라면 해당 아키텍처 스타일은 필요하지 않을 것 경험이 여왕이다인간은 습관의 동물이다.만약 새로운 웹 어플을 만든다면 계층형 아키텍처 스타일을 이용할 것. 아키텍처 스타일에 대해 괜찮은 결정을 내리는 방법은 다른 아키텍처 스타일을 경험해 본보는 것!이 경험이 다음 아키텍처 결정을 이끌어줄 것이다 그때그때 다르다어떤 소프트웨어를 만드냐, 도메인 코드의 역할이 무엇이냐, 팀의 경험이 무엇이냐에 다..
-
[클린 아키텍처 11] 의식적으로 지름길 사용하기기타 2024.10.11 12:45
지름길을 방지하기 위해선 -> 먼저 지름길 자체를 파악해야 한다.잠재적인 지름길에 대한 인식을 높이자! 왜 지름길은 깨진 창문 같을까?깨진 창문 이론:어떤 것이 멈춘 것처럼 보이고, 망가져 보이고, 혹은 관리되지 않는다고 여겨지면 인간의 뇌는 이를 더 멈추고, 망가뜨려도 된다고 생각하게 된다! - 기물 파손이 흔한 동네에서는 방치된 차를 도둑질하거나 망가뜨리는 일이 더 쉽게 일어남- '좋은 동네'라도 차의 챙문이 깨져있다면 차를 망가뜨리는 일이 쉽게 일어남 ... 코드에 적용해보면?- 품질이 떨어진 코드에서 작업할 때 더 낮은 품질의 코드를 추가하기 쉽다- 코딩 규칙을 많이 어긴 코드에서 작업할 때 또 다른 규칙을 어기기 쉽다 깨끗한 상태로 시작할 책임가능한 한 지름길을 거의 쓰지 않고 기술 부채를 ..
-
[클린 아키텍처 10] 아키텍처 경계 강화하기기타 2024.10.01 20:16
경계와 의존성'경계를 강제한다'는 것은 무엇인가도메인 > 애플리케이션 > 어댑터 > 설정 각 계층 사이의 경계를 유지하는 것. 계층 경계를 넘는 의존성은 항상 안쪽 방향으로 향하는 것! 접근 제한자경제를 강제하는 가장 기본적인 도구 = 접근 제한자 package-private의 중요성 - 자바 패키지를 통해 클래스들을 응집적인 '모듈'로 만들어줌 - 패키지내 클래스들은 서로 접근 가능하지만, 패키지 바깥에서는 접근 불가- 모듈의 진입점으로 활용된 클래스만 Public 설정 > 의존성 규칙 위반할 위험이 줄어듬 - domain 패키지는 다른 계층에서 접근 가능 해야함- application은 web 어댑터와 persitence 어댑터에서 접근 가능해야함 패키지내의 클래스가 특정 개수를 넘어가기 시작하면 ..
-
[클린 아키텍처 09] 애플리케이션 조립하기기타 2024.09.29 13:00
왜 조립까지 신경 써야 할까?유스케이스가 영속성 어댑터를 호출해야 하고 스스로 인스턴스화한다면 코드 의존성이 잘못된 방향으로 만들어 진 것 유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다. 그럼 객체 인스턴스를 생성할 책임은 누구에게 있을까?의존성 규칙을 어기지 않으면서 그렇게 할 수 있을까? 아키텍처에 대해 중립적이고 인스턴스 생성을 위해 모든 클래스에 대한 의존성을 가지는 설정 컴포넌트가 있어야 함! 설정 컴포넌트는 각 클래스의 인스턴스 생성 역할을 한다. 평범한 코드로 조립하기class Application { public static void main(String[] args) { AccountRepository accountRepository = n..
-
[클린 아키텍처 07] 아키텍처 요소 테스트하기기타 2024.09.09 17:01
테스트 피라미드어떤 종류의 테스트를 목표로 해야 하는가?- 만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해 높은 커버리지를 유지해야 한다.- 하나의 '단위'가 제대로 동작하는지 확인할 수 있는 단위 테스트 여러개의 단위와 단위를 넘는 경계, 아키텍처 경계, 시스템 경계를 결합하는 테스트는 만드는 비용이 더 비쌈, 실행이 더 느림! 테스트가 비싸질수록 테스트의 커버리지 목표는 낮게 잡아야함!그렇지 않으면 신규 기능 개발 단위 테스트, 통합 테스트, 시스템 테스트의 정의는 프로젝트마다 다른 의미를 가질 수 있다. 단위 테스트피라미드의 토대하나의 클래스를 인스턴스화하고 해당 클래스의 인터페이스를 통해 기능들을 테스트한다.만약 테스트 중인 클래스가 다른 클래스에 ..