3. Microservices (1/2)
• Application pattern used for the last couple of years
• Reduces complexity by having small (micro) services that
are relatively simple
• Distributed application
4. Microservices (2/2)
• A loose collection of RESTful APIs
• One or more applications
• Potentially on different platforms
• Typically each service has its own infrastructure
• Services are typically synchronous
6. Potential pitfalls
• Performance on large scale microservices is tricky -
caching is always used
• Debugging distributed systems is hard
• Specifically distributed state can make it a lot harder
7.
8. • As of 2007:
• Had a monolithic Java application CMS
• Tons of state and caching inside the application
• Deployment was a pain
• Debugging was a pain
9. New architecture
• Many small services
• All services should be completely stateless
• Potentially leveraging different languages and runtimes for
each application if needed
• UseVarnish for caching of all data
• Support dynamic relationships between objects
18. Results
• After about 10 years in production the architecture is still
very much relevant
• Statelessness has saved thousands of hours of debugging
• After replacing bans with x-key performance is still very
good
• Scaling stateless services up and down is effortless