[Spring Boot] Mockist 안티 패턴에서 벗어난 TDD 도입해보기
·
Backend/Spring Boot & JPA
💡 읽기전에 주의 사항1. 기본적인 TDD와 JUnit, Mockito 라이브러리에 대한 이해를 요구합니다. (초급자용이 아닙니다.)2. 아래 포스트는 정답이 아닙니다.단위 테스트에는 목킹을 최대한 자제하는 고전파와 목킹을 적극 권장하는 런던파가 존재합니다.하지만 최근 들어서 목킹이 안티 패턴이라는 말이 기정사실화 되어감에 따라, 제 경험을 바탕으로 고전파 쪽으로 치우친 이야기를 하고 있습니다.여전히 좋은 TDD에 대해서는 알아가는 과정에 있으니, 참고하실 때 유의하시길 바라는 마음에 서두에 남겨둡니다.시작하기 앞서, 해결책은 카카오페이 기술 블로그에서 가장 많이 영감을 받았습니다.진심으로 감사드립니다.1. Introduction 📌 Am I truly parcticing TDD?나는 요 근래 제대로..
[Spring Boot] 효과적인 도메인 모델링 전략에 대하여 (Service, Repository 그리고 Entity Relationship)
·
Backend/Spring Boot & JPA
💡 해당 포스팅의 내용은 정확하지 않습니다! 궁금한 점이나 의문점, 틀린점 등에 대한 댓글은 언제나 환영합니다.또한 내용이 상당히 어려우니, 멀티 모듈과 도메인 규칙에 대한 기본적인 이해 지식을 필요로 합니다.이전 내용을 다시 자세히 다루기엔 글이 너무 길어지고 번잡스러워지므로 양해 부탁드립니다. 🙇‍♂️(작성 순서대로 정렬)• 프로젝트 멀티 모듈화 고찰• 도메인 비즈니스 규칙과 멀티 모듈 아키텍처 설계• 다중 인프라스트럭처 도메인 모듈 분리를 위한 리팩토링📕 목차1. Introduction2. How to Structure Domain Services3. Implementing Domain Repositories: Query vs. Application Logic4. Designing Domain..
[Spring Boot] 다중 인프라스트럭처 도메인 모듈 분리를 위한 리팩토링
·
Backend/Spring Boot & JPA
📕 목차1. Introduction2. Problems with the Existing Approach3. Direction for Architecture Improvement4. Refactoring Execution Strategy5. Real-World Application Case6. Advantages and Limitations of the Improved Architecture1. Introduction 📌 The Reason멀티 모듈을 구성하면서 잘 모르는 개념에 대해선 몸소 체험해보기로 결정했었다.점차 기존 설계의 결함이 보이기 시작했고, 이를 분석하여 정리해둔 적이 있었다. 하지만 도메인 모듈을 수정하면, 하위 모듈까지 영향이 전파될 것이 두려워 차마 손을 대지 못하고 있었다.그러다..
[Spring Boot] Test Builder Pattern으로 BDD를 표현할 수 있을까?
·
Backend/Spring Boot & JPA
💡 예능적인 발상일 뿐, 실제로 시도하기엔 별로 좋은 방법이 아니라고 생각합니다. 아이디어만이라도 주워가실 분들은 읽어보세요!📕 목차1. Introduction2. Test Builder Pattern for Domain Rule3. Conclusion1. Introdution 📌 What's the problem?모든 코드는 깃헙에서 확인 가능합니다. 구현하고 있던 Usecase는 "채팅방에 메시지가 전송되었을 때, offline 혹은 백그라운드, 다른 뷰를 보고 있던 사용자에게 채팅 메시지를 푸시 알림으로 보여준다"였다.offline인 사용자의 경우 웹 소켓이 연결된 서버가 없기 때문에, 반드시 relay 서버에서 채팅 큐를 관찰해야만 하는 상황. 푸시 알림을 전송할 비즈니스 규칙은 본질적 복잡..