Domain-Driven Design: Lessons Learned & Useful Patterns
Robert Alexe is a Full Stack developer at IBM for 5 years. His main focus is developing Domain-Driven Design projects with Java and Angular, using microservices architecture. he is also experimenting new technologies and he is never afraid to design simple code and sense patterns. For the last 3 years he has been involved in designing and developing Domain-Driven Design applications for the banking sector. It is a challenging environment and it helped in consolidating his DDD knowledge.
Cristian Zamfir works as an application developer at IBM for almost 5 years. He is a Domain-Driven Design practitioner, advocate of Clean Code and Test Driven Development, trying always to think in an Object-Oriented way and enriching the domain model with business meaning whenever he gets the possibility. In his spare time he likes to check out new technologies (especially ones related to cloud, microservices) and test new patterns and ways of coding so he can improve his programming prowess even further. During his time at IBM he worked for more than 2 years in a full fledged Domain Driven Design Agile project. It is on this project that he has learned the importance of Domain oriented model and how the Ubiquitous Language can help both business experts and application developers understand the core domain problem better and find the optimal solution for it.
It is very common to create rich domain applications in your enterprise, but how do you handle all the code in order not to become complete chaos? Domain-Driven Design is a very mature software development approach which helps you think more about the most important part of an application: your domain model. It also helps in getting closer to the business experts by writing expressive code. During the last 3 years, me and Cristian Zamfir worked on improving our Domain-Driven Design skills by developing applications using this approach. We would like to share with you our lessons learned and the common patterns which we believe could be helpful in any rich-domain application, even if you don’t use the Domain-Driven Design approach. A couple of patterns we would like to share with you: Entity, Value Object, Domain Service, Infrastructure Service, Layered Architecture.