microservices-patterns / ftgo-application

Example code for the book Microservice patterns
Other
3.41k stars 1.32k forks source link

Proposal - use more structuring for service packages folders #53

Open asn25 opened 4 years ago

asn25 commented 4 years ago

Hello,

I propose to use more structuring of package folders in services. F.e. Order Service has big "domain"-package, that is a heap of different objects of different object types (entities, value objects, domain service, exceptions, repositories, commands, events, event hadlers, event publishers, configs, etc.).

As for me, it was difficult to correlate this one big heap of classes in "domain"-package with hexagonal architecture of service.

I did some rearrangement of packages/folder structure for my local version of FTGO app and it became more undestandable and readable (as for me).

Here is my proposal for folder structure of Order Service sources :

|-- domain | |-- config | |-- exceptions | -- repositories |-- grpc |-- main |-- messaging | |-- commands | |-- events |-- sagas | |-- cancelordersaga | |-- createordersaga | |-- reviseordersaga | -- sagaparticipants -- web

https://imgur.com/a/4LQL38W

So in root "domain"-folder we have only a few classes (Entities, Value objects and Domain service):

Address.java DeliveryInformation.java LineItemQuantityChange.java Order.java OrderLineItems.java OrderRevision.java OrderService.java PaymentInformation.java Restaurant.java Result.java RevisedOrder.java https://imgur.com/a/dxI7Fmw

Also, commands and events are grouped to corresponding folders under "messaging" folder:

https://imgur.com/a/tmOSPlt

The choice, of course, is up to the Author. I'm just giving my feedback that more detail folder structuring helped me to understand the app better.

Thanks, Andrew