Presented at the IndicThreads.com Software Development Conference 2016 held in Pune, India. More at http://www.IndicThreads.com and http://Pune16.IndicThreads.com
--
4. What Exactly is a Microservice
The term "Microservice Architecture" has sprung up over
the last few years to describe a particular way of designing
software applications as suites of independently
deployable services. While there is no precise definition of
this architectural style, there are certain common
characteristics around organization around business
capability, automated deployment, intelligence in the
endpoints, and decentralized control of languages and
data.
http://martinfowler.com/articles/microservices.html
10. Y-Axis Scaling
• Apply X-axis and Z-axis scaling to each service
independently
• Partitioning Strategies
• Noun
• Verb
• SRP
• Unix Utilities
11. Conway’s Law
“Organizations which design systems ... are constrained to
produce designs which are copies of the communication
structures of these organizations”
-Melvin Conway, 1968
Can your teams be organized around microservices
12. Popular Examples
http://techblog.netflix.com
~ 600 services
http://highscalability.com/amazon-
architecture
100-150 services to build a page
http://www.addsimplicity.com/downlo
ads/eBaySDForum2006-11-29.pdf
http://queue.acm.org/detail.cfm?
id=1394128
18. Design for Failure
• Failure will ALWAYS occur
• Dependent services may be unavailable
or too slow to respond
• Horizontal clustering
• Resilience Patterns to the rescue
• CicuitBreaker, Bulkhead, Caching,
Timeout, Retry, Messaging, etc.
20. Cloud Foundry to Rescue
• Many moving parts
• Orchestration => Cloud Foundry
21. Data Strategy
• Multiple microservices NOT to share the same database
model and perform updates on it
• Separation of at least read/write access
• Ideally: Separate data stores for each service
22. Inter-Service Communication
• In a monolith architecture, most of the communication is
synchronous
• Synchronous communication
• Mostly REST is used, Other choices: Protocol Buffers,
thrift
• May require asynchronous communication as well
• ZeroMQ, RabbitMQ, Kafka
27. Spring Boot
• Opinionated Spring application architecture - Convention
over Configuration
• Production-ready features, externalized configuration,
metrics and health checks
• Spring Cloud – Umbrella project for cloud connectors, on
top of Spring Boot
Problem starts when
Technical debt builds up
Hard to change without breaking stuff
Expensive QA & test cycles
Long term commitment to a technology stack