Lesson 5: Microservices Flashcards
What does it mean if we want to design our application as loosely coupled microservices?
- small functionality granularity organized around capabilities
- Lightweight communication protocols
- Independently deployable and replaceable
What are fat services?
- slow development
- scalability issues
- reusability issues
What is a microservice?
A way of designing software applications as suites of independently deployable services
Give some characteristics of microservices
- Built around business capabilities
- Independently deployable by fully automated deployment machinery
- Bare minimum of centralized management
- Written in different programming languages
- Using different data storage technologies
What are advantages of the monolith design?
- Well known layered architecture
- IDE-friendly
- Easy sharing, simplified testing, easy deployment
What are disadvantages of the monolith design
- Limited agility
- Obstacle for continuous delivery
- Stuck with a technology stack
Why choose services over libraries?
- services are independently deployable
- changes in libraries = redeploying entire application
- explicit component interface when using services
What is a component and which variants do we know?
Component = unit of software that is independently replaceable or upgradable
- libraries = linked into a program
- services = out of process component
What does the Enterprise Service Bus do?
Sophisticated message routing, choreography, transformation and business rule application
Describe decentralized governance.
- Each service picks the right technology
- Service contracts define the interfaces
- Allows for different conceptual models, even of the same entity
- Polyglot persistence
- Transaction-less so cope with eventual consistency
What is the goal of the Reactive Manifesto?
To condense knowledge on how to design highly scalable and reliable applications
What are the three steps of continuous delivery automation?
- Continuous integration:
integrating, building and testing code within the development environment - Continuous Deliver:
Software can be released to production at any time - Continuous Deployment:
Software is automatically pushed into production
Which 4 architectural traits are there in the Reactive Manifesto?
- Message Driven
- Responsive
- Elastic
- Resilient
What is the “Message Driven” trait in the Reactive Manifesto?
- Asynchronous message-passing between components
Addressable recipients await the arrival of messages and react to them
Establish a boundary that enables loose coupling, isolation and location transparency - Enables load management, elasticity and flow control by monitoring and shaping the message queues in the system
What is the “Responsive” trait in the Reactive Manifesto?
- The system responds in a timely manner (aim: 0.1 seconds)
Client side: lazy loading – first load important stuff and show it ASAP
Show progress
Individual slow performing service should not slow down others - As far as users know, when the response time exceeds their expectation the system is down