인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

onionring4028님의 프로필 이미지

작성한 질문수

Java/Spring 주니어 개발자를 위한 오답노트

스프링에서 OOP와 안티 패턴 : Transaction script

패키지 구조에 대한 질문

작성

·

33

0

요즘 가장 많이 쓰는 패키지 구조가 있죠. 아래와 같이 레이어끼리만 모아둔

image.png

과연 이것이 좋은 패키지 구조일까요? 더 좋은 코드를 위해 추천하는 패키지 구조나 레퍼런스가 있는지 여쭤보고 싶습니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. onionring4028님.

패키지 구조에 대한 고민은 많은 개발자들이 마주하는 도전 과제 중 하나입니다. 설명하신 바와 같이 레이어별로 패키지를 분리하는 방식은 전통적으로 많이 사용되어 왔습니다. 이는 각 기능을 모듈화하여 관리하기 쉽게 만들어 주지만, 때로는 복잡성이 커지면서 불편함을 초래할 수도 있습니다.

더 나은 패키지 구조를 위해 다음과 같은 전략을 고려해 보세요:

  1. 기능 중심의 패키지 구조(Feature-based Structure): 기존의 레이어 중심 구조 대신, 관련 기능 중심으로 패키지를 구성합니다. 즉, 같은 기능을 수행하는 모든 컴포넌트(Controller, Service, Repository 등)를 하나의 패키지에 모아두는 것입니다. 이렇게 하면 특정 기능에 대한 모든 코드를 한 곳에서 관리할 수 있어, 개발과 유지보수에 도움이 됩니다.

  2. 핵사고날 아키텍처(Hexagonal Architecture): 외부 인터페이스와 내부 비즈니스 로직을 잘 분리하여 테스트 가능하고 확장 가능한 구조를 만듭니다. 각 레이어는 명확한 역할을 가지며, 의존성 주입을 통해 유연한 구조를 만들어주기 때문에 이 점에서는 간편한 확장이 가능합니다.

  3. 도메인 중심 구조(Domain-driven Structure): 도메인 개념을 기반으로 코드를 구조화합니다. 이는 특히 복잡한 비즈니스 로직을 가진 프로젝트에서 유용하며, 코드를 비즈니스 언어로 표현함으로써 가독성과 유지보수성을 높일 수 있습니다.

관련해서 Java/Spring에서 OOP와 안티 패턴 : Transaction script를 참고하시면, 설계와 관련하여 더 깊이 있는 이해를 도울 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.