DDD에서 Usecase 패턴 활용하기
필자는 최근 팀 프로젝트를 진행하면서 Spring Boot를 활용한 WAS 구현을 담당하였다. WAS를 구현하면서 상위 Service와 하위 Service가 무분별하게 참조되면서 패키지 구조가 복잡해지는 것을 경험하고 있다. 이를 보다 명확하게 구분하고자 DDD와 Usecase를 이해하고 이를 프로젝트에 적용하고자 한다.
필자는 최근 팀 프로젝트를 진행하면서 Spring Boot를 활용한 WAS 구현을 담당하였다. WAS를 구현하면서 상위 Service와 하위 Service가 무분별하게 참조되면서 패키지 구조가 복잡해지는 것을 경험하고 있다. 이를 보다 명확하게 구분하고자 DDD와 Usecase를 이해하고 이를 프로젝트에 적용하고자 한다.
필자는 지난 6월 24일부터 8월 16일까지 8주간 네이버 헬스케어연구소(일명 Healthcare Digital Transformation)에서 개발 인턴으로 근무하였다. 어느덧 인턴십이 끝난 지 3달 가량이 지났고, 이를 회고하는 시간을 가지고자 한다.
이전 포스트에서 Spring Bean의 기본 개념에 대해 다루었다. 필자는 프로젝트를 경험하면서 Component Scan과 관련된 문제를 디버깅하며, Component Scan의 내부 동작 방식을 제대로 이해하지 못할 경우 많은 시간을 디버깅에 할애한 경험이 있다. 특히 프로젝트의 규모가 커질 수록 Spring Bean의 등록 순서 및 순환 참조 문제를 해결하기 위해서는 Component Scan의 동작 방식을 명확히 이해하는 것이 중요하다.
Spring Framework를 사용하면서 가장 기본이 되는 개념이 바로 ‘Spring Bean’이다. 필자는 프로젝트를 진행하면서 Spring Bean에 대한 개념을 정확하게 이해하지 못하여 겪는 어려움을 자주 목격하였다. 특히 의존성 주입 과정에서 발생하는 Bean 충돌 문제들을 해결하는데 많은 시간을 소비하는 것을 보며, Spring Bean에 대한 체계적인 정리의 필요성을 느꼈다.
필자는 프로젝트를 진행하면서 대용량 데이터를 API 응답으로 반환해야 하는 상황에 직면하였다. 이를 해결하기 위해 여러가지 방법을 찾아보게 되었고, 이를 정리하여 추후 다른 주니어 개발자들에게 도움이 되고자 한다.
k8s 실습을 위해 Rust로 api server를 구축하였고, 이를 Docker로 빌드 하는 과정에서 오류가 발생하였다. 필자와 같은 Rust 초보가 겪을 수 있는 상황에 대해 정리해둠으로써 도움을 주고자 게시글을 작성하게 되었다.
k8s 실습을 위해 Rust로 api server를 구축하기로 결정하였고, Rust를 처음 사용하는 사용자들에게 도움이 되는 게시글을 작성하고자 한다.
프로젝트를 진행하면서 보다 일관된 커밋 메시지 설정을 통해 팀원 간 문맥 이해력 향상을 통한 커뮤니케이션 비용 감소를 위해 고민하던 중, 지난 프로젝트에서 설정한 Conventioanl Commit을 설정하는 것이 떠올랐고 이를 게시글로 작성하기로 하였다.
최근 프로젝트에서 인증 코드 저장을 위해 Redis와 자바의 자료구조인 ConcurrentHashMap 중 ConcurrentHashMap을 사용하기로 결정하였고, 이에 대한 깊은 이해를 위해 게시글을 작성하게 되었다.
최근 프로젝트에서 인증 코드 저장에 Redis와 MySQL 중 어느 것을 사용할지 고민하게 되었다. 이 글은 두 시스템을 비교 분석하여 팀원들과 최적의 선택을 논의하기 위해 작성하게 되었다.