Microservices Architecture: Nirvana or Nightmare
-
Upload
christophe-marchal -
Category
Technology
-
view
1.082 -
download
0
Transcript of Microservices Architecture: Nirvana or Nightmare
Issues
➔ Teams depending from other teams to release
➔ Feature synchronization overhead
➔ Creating stubs to parallelize development
➔ Release synchronization overhead
➔ Impossible to experiment
➔ Very little innovation
Benefits
➔ Teams are independant
➔ Parallel development and releases
➔ Small teams tend to iterate faster
➔ Easy to experiment
Escalation process
TI doesn’t
deliver
Business
Developers
create unstable
software
Operation
Operation is too
slow
Developer
Potential solution: Product service call other services
● Simple
● Concurrency issue
● Single Responsability
Principle Issue
● Inconsistency issue
Potential solution: Broker
● Single Responsibility
Principle
● Inconsistency
● Concurrency
● Contract issue
● Performance issue
Potential solution: Writes via Message Bus
● Single Responsibility Principle
● Inconsistency
● Concurrency
● Contract
● Complexity
12 Factors➔ One codebase tracked in
revision control, many deploys
➔ Explicitly declare and isolate
dependencies
➔ Store config in the
environment
➔ Treat backing services as
attached resources
➔ Strictly separate build and run
stages
➔ Execute the app as one or
more stateless processes
➔ Export services via port
binding
➔ Export services via port
binding
➔ Scale out via the process
model
➔ Maximize robustness with fast
startup and graceful shutdown
➔ Keep development, staging,
and production as similar as
possible
➔ Treat logs as event streams
➔ Run admin/management tasks
as one-off processes
Developers need to test more stuff
➔ Unit tests
➔ Functional tests
➔ Contract tests
➔ Backward compatibility tests
➔ Forward compatibility tests
➔ Stress tests
➔ Chaos tests
Summary➔ Architecture to scale Teams
➔ Highly Flexible
➔ Highly complex
➔ Ownership using Management 3.0
➔ Development Mastering using Agile Coaching
➔ Agile deploy thanks to a Platform as a Service
➔ Data Architecture
➔ DevOps