Package-by-layer groups code by technical layers (controllers/services/repos). Package-by-feature groups code by domain/feature. Feature-based structure often scales better because related code lives together and boundaries are clearer.