Sample
Download the sample (includes Chapter 3 and the index.)
Part I: Motivation and Basics
- 1 Preliminaries
- 1.1 Overview of Microservice
- 1.2 Why Microservices?
- 1.3 Challenges
- 2 Microservice Scenarios
- 2.1 Modernizing an E-Commerce Legacy Application
- 2.2 Developing a New Signaling System
- 2.3 Conclusion
Part II: Microservices: What, Why, and Why Not?
-
3 What are Microservices?
- 3.1 Size of a Microservice
- 3.2 Conway’s Law
- 3.3 Domain-Driven Design and Bounded Context
- 3.4 Why You Should Avoid a Canonical Data Model (by Stefan Tilkov, innoQ)
- 3.5 Microservice With UI?
- 3.6 Conclusion
-
4 Reason for Microservices
- 4.1 Technical Benefits
- 4.2 Organizational Benefits
- 4.3 Benefits from a Business Perspective
- 4.4 Conclusion
-
5 Challenges
- 5.1 Technical Challenges
- 5.2 Architecture
- 5.3 Infrastructure and Operations
- 5.4 Conclusion
-
6 Microservices and SOA
- 6.1 What is SOA?
- 6.2 Differences Between SOA and Microservices
- 6.3 Conclusion
Part III: Implementing Microservices
-
7 Architecture of Microservice-based Systems
- 7.1 Domain Architecture
- 7.2 Architecture Management
- 7.3 Techniques to Adjust the Architecture
- 7.4 Growing Microservice-based Systems
- 7.5 Why You Should Avoid a Canonical Data Model (by Stefan Tilkov, innoQ)
- 7.6 Microservices and Legacy Applications
- 7.7 Hidden Dependencies (by Oliver Wehrens, E-Post Development GmbH)
- 7.8 Event-driven Architecture
- 7.9 Technical Architecture
- 7.10 Configuration and Coordination
- 7.11 Service Discovery
- 7.12 Load Balancing
- 7.13 Scalability
- 7.14 Security
- 7.15 Documentation and Metadata
- 7.16 Conclusion
-
8 Integration and Communication
- 8.1 Web and UI
- 8.2 REST
- 8.3 SOAP and RPC
- 8.4 Messaging
- 8.5 Data Replication
- 8.6 Interfaces: Internal and External
- 8.7 Conclusion
-
9 Architecture of Individual Microservices
- 9.1 Domain Architecture
- 9.2 CQRS
- 9.3 Event Sourcing
- 9.4 Hexagonal Architecture
- 9.5 Resilience and Stability
- 9.6 Technical Architecture
- 9.7 Conclusion
-
10 Testing Microservices and Microservice-based Systems
- 10.1 Why Tests?
- 10.2 How to Test
- 10.3 Mitigate Risks at Deployment
- 10.4 Testing the Complete Systems
- 10.5 Testing Legacy Applications and Microservices
- 10.6 Testing Individual Microservices
- 10.7 Consumer-Driven Contract Tests
- 10.8 Testing Technical Standards
- 10.9 Conclusion
-
11 Operations and Continuous Delivery of Microservices
- 11.1 Challenges for Operations of Microservices
- 11.2 Logging
- 11.3 Monitoring
- 11.4 Deployment
- 11.5 Combined or Separate Deployment? (by Jörg Müller, Hypoport AG)
- 11.6 Control
- 11.7 Infrastructure
- 11.8 Conclusion
-
12 Organizational Effects of a Microservices-based Architecture
- 12.1 Organizational Benefits of Microservices
- 12.2 An Alternative Approach to Conway’s Law
- 12.3 Micro- and Macro-Architecture
- 12.4 Technical Leadership
- 12.5 DevOps
- 12.6 When Microservices Meet Classical IT Organizations (by Alexander Heusingfeld, innoQ)
- 12.7 Interface to the Customer
- 12.8 Reusable Code
- 12.9 Microservices Without Changing the Organization?
- 12.10 Conclusion
Part IV: Technologies
-
13 Example for a Microservices-based Architecture
- 13.1 Domain Architecture
- 13.2 Basic Technologies
- 13.3 Build
- 13.4 Deployment Using Docker
- 13.5 Vagrant
- 13.6 Docker Machine
- 13.7 Docker Compose
- 13.8 Service Discovery
- 13.9 Communication
- 13.10 Resilience
- 13.11 Load Balancing
- 13.12 Integrating Other Technologies
- 13.13 Tests
- 13.14 Experiences with JVM-based Microservices in the Amazon Cloud (Sascha Möllering)
- 13.15 Conclusion
-
14 Technologies for Nanoservices
- 14.1 Why Nanoservices?
- 14.2 Nanoservices: Definition
- 14.3 Amazon Lambda
- 14.4 OSGi
- 14.5 Java EE
- 14.6 Vert.x
- 14.7 Erlang
- 14.8 Seneca
- 14.9 Conclusion
-
15 Getting Started with Microservices
- 15.1 Why Microservices?
- 15.2 Roads Towards Microservices
- 15.3 Microservices: Hype or Reality?
- 15.4 Conclusion