MICROSERVICES
BREAKING APART THE MONOLITH
www.iron.io
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
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
Evolution
How We Got Here
Expensive to
Scale
Difficult to Scale
Unnecessary Overhead
Complex Configurations
Granular Compute
Effective Separation
Monolith Multi-Tier / SOA Microservices
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
Microservices represents the convergence
of the modern cloud and modern
application development.
Microservices
Common Characteristics
Single Responsibility
Independent
Loosely Coupled
Stateless
Asynchronous
Interchangeable
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
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
Microservices are meant to make
development and deployment better, but
not necessarily easier.
Decoupling
Where to Start
From Scratch Refactor New Features
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
Loosely coupled microservices centered
around specific business capabilities lead to
more flexible and agile workflows across your
entire organization.
Communication
More Moving Parts
Queue all the Things
➔ Acknowledge data delivery
➔ Retry down endpoints
➔ Act as delivery buffer
➔ Keep data ordered properly
POST -> GET -> DELETE
Problems with Dumb Pipes
Down endpoints
Overloaded endpoints
Message Queueing for the Modern Cloud
Queue as a Service Cloud-Native Protocols
Reliable Data Persistence Advanced Feature Set
Detailed Monitoring Multiple Language Support
Leveraging a message queue ensures
reliable data transmission across services
and connected devices.
Compute
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
Compute Environment
Load Balancer
Traditional Hosting Model (Apps) Ephemeral Micro Computing (Tasks)
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
Highly Scalable Asynchronous Task Processing
Containerized Environment Event-Driven
Flexible Scheduling Reliable and Secure
Detailed Monitoring Multiple Language Support
This new pattern of event-driven asynchronous
processing with the container as the unit of scale
leads to more efficient and cost-effective
systems.
API Gateway
Request Handling / Routing
API
Gateway
Auth
User Request REST
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
The API Gateway provides the foundation for
your entire architecture.
State
Connections, Payloads & Caching
Deliver payload
Secure DB
connection
In-process temp storage
Polyglot Persistence
Key/Value
Rapid access for reads/writes
SQL
Transactional data
NoSQL
High volume reads
FIle
Distributed file system
While preserving stateless microservices,
choose the right data store and connection for
the process.
Presentation
Client Frameworks
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
Always remember that your users see your
application as one unit regardless of
architectural pattern.
Operations
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
Continuous Delivery
Code Test Deploy
Monitoring & Analytics
Responsibilities
Runtime Monitoring
Audit trails
Logging
Error Handling
Alerting
Performance Testing
Keeping it Together
STDOUT
Errors
Runtime
Performance
With microservices, monitoring and analytics
must be done at both the individual level and
as part of the whole application.
Conclusion
Full Microservices Stack
API
Infrastructure
Compute Storage Networking
Message Queue Scheduler
Monitoring
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
Iron.io
325 9th St
San Francisco, CA 94103
1-888-939-4623
www.iron.io
ivan@iron.io
THANK YOU
QUESTIONS?

Microservices: Breaking Apart the Monolith

  • 1.
  • 2.
    About the Presenter IvanDwyer | 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 Riseof 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
  • 4.
  • 5.
    How We GotHere 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
  • 7.
    Microservices represents theconvergence of the modern cloud and modern application development.
  • 8.
  • 9.
    Common Characteristics Single Responsibility Independent LooselyCoupled Stateless Asynchronous Interchangeable
  • 10.
    Organizational Impact Technology Smaller servicescentered 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 andmaintaining 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 meantto make development and deployment better, but not necessarily easier.
  • 13.
  • 14.
    Where to Start FromScratch Refactor New Features
  • 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 microservicescentered around specific business capabilities lead to more flexible and agile workflows across your entire organization.
  • 17.
  • 18.
  • 19.
    Queue all theThings ➔ Acknowledge data delivery ➔ Retry down endpoints ➔ Act as delivery buffer ➔ Keep data ordered properly POST -> GET -> DELETE
  • 20.
    Problems with DumbPipes Down endpoints Overloaded endpoints
  • 21.
    Message Queueing forthe Modern Cloud Queue as a Service Cloud-Native Protocols Reliable Data Persistence Advanced Feature Set Detailed Monitoring Multiple Language Support
  • 22.
    Leveraging a messagequeue ensures reliable data transmission across services and connected devices.
  • 23.
  • 24.
    Event-Driven Asynchronous Patterns Webhooks Respondto 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
  • 25.
    Compute Environment Load Balancer TraditionalHosting Model (Apps) Ephemeral Micro Computing (Tasks)
  • 26.
    Distribute the Load Amaster 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 AsynchronousTask Processing Containerized Environment Event-Driven Flexible Scheduling Reliable and Secure Detailed Monitoring Multiple Language Support
  • 28.
    This new patternof event-driven asynchronous processing with the container as the unit of scale leads to more efficient and cost-effective systems.
  • 29.
  • 30.
    Request Handling /Routing API Gateway Auth User Request REST
  • 31.
    Considerations Keep it Light Focuson 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 Gatewayprovides the foundation for your entire architecture.
  • 33.
  • 34.
    Connections, Payloads &Caching Deliver payload Secure DB connection In-process temp storage
  • 35.
    Polyglot Persistence Key/Value Rapid accessfor reads/writes SQL Transactional data NoSQL High volume reads FIle Distributed file system
  • 36.
    While preserving statelessmicroservices, choose the right data store and connection for the process.
  • 37.
  • 38.
  • 39.
    Considerations ➔ Route viathe 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 thatyour users see your application as one unit regardless of architectural pattern.
  • 41.
  • 42.
    Configuration Environments Dependencies Deployment Supportfor 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
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
    With microservices, monitoringand analytics must be done at both the individual level and as part of the whole application.
  • 48.
  • 49.
    Full Microservices Stack API Infrastructure ComputeStorage Networking Message Queue Scheduler Monitoring
  • 50.
    How We CanHelp 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 SanFrancisco, CA 94103 1-888-939-4623 www.iron.io ivan@iron.io THANK YOU QUESTIONS?