Preface
1. What modularity is
- 1.1 Why are many small pieces easier to maintain than one big one?
- 1.2 How small or big can a piece of software be?
- 1.3 How to structure pieces of software
- 1.4 How to cut software into pieces?
- 1.5 What kind of boundaries exist that separate pieces of software from each other?
- 1.6 How to set up impermeable boundaries?
- 1.7 What is modularity not good for?
- Chapter Summary
2. The example business domain HOO
- 2.1 Requirements
- 2.2 Implementation
- 2.3 The search for alternative ways to modularity
3. What OSGi is
- 3.1 How does OSGi work?
- 3.2 A real life OSGi example
- 3.3 The HOO service as OSGi application
- 3.4 What is OSGi good for?
4. What micro-services are
- 4.1 What is the relationship between SOA and micro-service architecture?
- 4.2 How do micro-services work?
- 4.3 A real life micro-service example
- 4.4 The HOO Service as micro-service system
- 4.5 What are micro-services good for?
5. What a modular monolith is
- 5.1 How does a classic monolith work?
- 5.2 How does a pseudo-modular monolith work?
- 5.3 How does a true modular monolith work?
- 5.4 How is a true modular monolith built?
- 5.5 A real life modular monolith example
- 5.6 The HOO service as ODDM modular monolith
6. What Java Modules are
- 6.1 How do Java Modules work?
- 6.2 The HOO service as a Java modulular monolith
- 6.3 What are Java Modules good for?
7. The HOO Service in Choreography Design
- 7.1 Choreography with micro-services
- 7.2 Choreography with OSGi
- 7.3 Choreography with ODDM
- 7.4 Choreography design with Java Modules
- 7.5 Asynchronuous communication
8. Comparing the different modularity approaches
- 8.1 Implementation Details
- 8.2 Dependency and Reference Types
- 8.3 The degree of module coupling
- 8.4 Costs and disadvantages
- 8.5 Dependency levels, dependency cycles and dependency hell
- 8.6 Asynchronous communication
9. Conclusions
- 9.1 Combining different modularity approaches
- 9.2 Orchestration versus Choreography
- 9.3 Transactionality and modularity
- 9.4 Domain Driven Design (DDD) and modularity
- 9.5 Towards a new modularity mind-set for developers
- 9.6 Different ways to achieve the same goal
- 9.7 How bad are monoliths?