헥사고날 아키텍처를 떠먹어보자
·
Architecture
팀 프로젝트를 하며 클린 코드, 클린 아키텍처란 무엇인가 고민을 하게 되었습니다.테스트 코드를 작성하며 이리 저리 꼬인 의존성에 따라 모의 객체를 만들어주는 것이 너무 힘들었기 때문입니다..그러던 중, [ 만들면서 배우는 클린 아키텍처 - 톰 홈버그 ] 책을 추천 받아 읽게 되어 해당 내용을 정리하고 간단하게 진행하고 있던 프로젝트에 적용해 본 후기를 작성해보겠습니다.클린 아키텍처와 헥사고날 아키텍처클린 아키텍처에서 소개된 의존성 규칙이 있습니다. 이는 모든 소스코드 의존성은 외부에서 내부로, 고수준 정책을 향해야 한다는 것입니다. 이를 통해 업무 로직(고수준 정책)은 세부 사항들(저수준 정책)의 변경에 영향을 받지 않도록 할 수 있습니다. 이와 같은 구조는 변경에 유연성을 제공하며, 테스트 용이성을 향..
불변객체를 사용 하여 동시성 문제를 방지하자 (feat. Java Record)
·
Architecture
불변 객체란 객체가 생성된 이후에 그 상태(필드 값)이 절대로 변하지 않는 객체 입니다.특징객체 내부의 상태(필드 값)이 변경 되지 않습니다.여러 스레드에서 동시에 읽거나 사용해도 안전하게 동작합니다. 값이 변하지 않아 동기화를 신경 쓰지 않아도 됩니다.상태가 고정되어 있어 외부에서 잘못된 수정이 발생하지 않아 코드의 신뢰성이 높아집니다.생성 방법필드 값이 수정 되지 않도록 객체 생성(초기화)시에 입력되는 값을 기본으로 변경 되지 않게 코드를 구성해주어야 합니다.이를 만족하기 위해 언어가 제공하는 기능들을 조합하여 환경을 조성합니다.Java 불변 객체 만들기필드에 final 키워드final은 필드 값을 한 번 설정한 후에는 변경하지 않겠다는 의미입니다.초기화 시점을 강제 해 줍니다. final 변수는 선..