기능 기반 패키지(package-by-feature) : 요구사항을 구현해야하는 기능 위주로 패키지를 생성하는 것
아래처럼 커피와 관련된 기능과 멤버에 관련된 기능에 따라 패키지를 구성하는 경우이다.
계층 기반 패키지(package-by-layer) : 패키지를 계층으로 간주하여 계층별로 패키지 구조를 가지도록 설계하는 것
presentation(controller, dto), service(model), repository(dto, dao),과 같이 계층에 맞게 패키지를 나누는 것이다.
참고로 스프링에서는 테스트와 리팩토링이 편리하고, MSA 서비스로 분리가 상대적으로 편한 기능 기반 패키지를 사용할 것을 권장하고 있다.