Slides for a live Iron.io webinar on Microservices. Abstract:
With the continued proliferation of the cloud and connected devices, microservices has emerged as a dominant architectural pattern for building modern applications by separating components around specific business capabilities.
This webinar goes beyond introducing the theory of microservices to provide a comprehensive guide for building your own large-scale applications. Whether you are looking to move away from a monolithic app or are starting a new project, you’ll walk away with enough knowledge to take full advantage of all that microservices has to offer.
Watch the webinar to learn:
- The rise of microservices in the modern cloud era
- How to break apart components into discrete services
- Best practices for communication & workload processing
- The crucial role of the API Gateway
- Implications on DevOps and the deployment cycle
- How to bring it all together with monitoring & analytics
2. About the Presenter
Ivan Dwyer | Business Development
● Joined Iron.io in early 2014 to collaborate with cloud ecosystem
● Founder of a Web 1.0 Startup in 1999
● Helped build the first mobile app program at PalmSource
● Spent 10 years in international business with ACCESS
@fortyfivan
3. Agenda
⬢ The Rise of Microservices in the Modern Cloud
⬢ How to Decouple Processes Into Discrete Microservices
⬢ Best Way to Keep Microservices and Connected Devices in Touch
⬢ Best Practices Around Event-Driven Asynchronous Processing
⬢ The Role of the API Gateway
⬢ How to Deal With State
⬢ DevOps & The Continuous Deployment Cycle
⬢ Bringing it All Together With Monitoring & Analytics
5. How We Got Here
Expensive to
Scale
Difficult to Scale
Unnecessary Overhead
Complex Configurations
Granular Compute
Effective Separation
Monolith Multi-Tier / SOA Microservices
6. The Modern Cloud
{} Cloud-Native Protocols
RESTful APIs that communicate over
HTTP with JSON serialization
Agile Operations
Consistent environments for
development and deployment
Elastic Workloads
Granular workload-aware computing
for effective scalability
10. Organizational Impact
Technology
Smaller services centered around
specific capabilities
Independently developed and deployed
functional components
Lightweight cloud-native
communication and processing
Multiple language and data sources fit
for the service
Business
Focused and flexible workgroups
Shorter release cycles
Cost-effective scalable systems
No vendor or framework lock-in
11. Considerations
➔ Building and maintaining highly available
distributed systems is complex
➔ More moving parts means more components
to keep track of and configure properly
➔ Loosely coupled services means steps must be
taken to keep data consistent
➔ Distributed asynchronous processes create
network latency and more API traffic
➔ Testing and monitoring individual services is
challenging
12. Microservices are meant to make
development and deployment better,
but not necessarily easier.
15. Identify Candidate Components
➔ Outside of user response loop
➔ 3rd party service API calls
➔ Long running processes
➔ Transaction Processing
➔ Scale-out / burst processing
➔ Scheduled jobs
Business Capability
16. Loosely coupled microservices centered
around specific business capabilities lead
to more flexible and agile workflows
across your entire organization.
19. Queue all the Things
➔ Acknowledge data delivery
➔ Retry down endpoints
➔ Act as delivery buffer
➔ Keep data ordered properly
POST -> GET -> DELETE
21. Message Queueing for the Modern Cloud
Queue as a Service Cloud-Native Protocols
Reliable Data Persistence Advanced Feature Set
Detailed Monitoring Multiple Language Support
22. Leveraging a message queue ensures
reliable data transmission across services
and connected devices.
24. Event-Driven Asynchronous Patterns
Webhooks
Respond to events from external
services to initiate a process
Scheduled Jobs
Cron-like processes that occur on a
regular schedule.
Streams
Real-time activities through long
running agent/daemon processes
Fan Out
Respond to events and push to
multiple process/data endpoints
26. Distribute the Load
A master service can orchestrate slave
services to run concurrently to handle
spikes in traffic or bursts
Single responsibility microservices can
scale more effectively and cut down
total processing time
Ex: Send 4000 emails
1-1000 1001-2000 2001-3000 3001-4000
27. Highly Scalable Asynchronous Task Processing
Containerized Environment Event-Driven
Flexible Scheduling Reliable and Secure
Detailed Monitoring Multiple Language Support
28. This new pattern of event-driven
asynchronous processing with the
container as the unit of scale leads to more
efficient and cost-effective systems.
31. Considerations
Keep it Light
Focus on handling requests and
routing to appropriate microservices
Make it Highly Available
Must be deployed in a fault-tolerant
distributed manner
Load Balanced
Must be able to handle incoming traffic
spikes elastically
32. The API Gateway provides the foundation
for your entire architecture.
39. Considerations
➔ Route via the API gateway not directly
from devices
➔ Fine-grained auth support may be
needed in certain cases
➔ Balance inline processing vs out-of-
process
➔ Pre-process for faster loading times
➔ Out-of-process for greater
responsiveness
➔ Distribute processing but not
necessarily core storage
40. Always remember that your users see
your application as one unit regardless of
architectural pattern.
42. Configuration
Environments Dependencies Deployment
Support for easier migration
paths
Consistent runtime from
development to production
Empowers independent teams
and workflows
Choose the right language for
the specific microservice
Limited scope of dependent
services and libraries
Scoped environment variables
and runtimes
Build, test, and deploy on a
simpler scale
Smaller services and teams
means faster iterations
Leverage a PaaS for automated
deployment configuration
50. How We Can Help
Pair Programming
Get a hands-on walkthrough
of our platform
Architecture Review
Let us share some best
practices and advice
Start a Free Trial
Start building with Iron.io
in minutes
51. Iron.io
325 9th St
San Francisco, CA 94103
1-888-939-4623
www.iron.io
ivan@iron.io
THANK YOU
QUESTIONS?