Upload
ironio
View
259
Download
0
Embed Size (px)
Citation preview
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
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 ProtocolsRESTful APIs that communicate over HTTP with JSON serialization
Agile OperationsConsistent environments for development and deployment
Elastic WorkloadsGranular workload-aware computing for effective scalability
Common Characteristics
Single Responsibility
Independent
Loosely Coupled
Stateless
Asynchronous
Interchangeable
Organizational ImpactTechnology
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
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.
Queue all the Things
➔ Acknowledge data delivery➔ Retry down endpoints➔ Act as delivery buffer➔ Keep data ordered properly
POST -> GET -> DELETE
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.
Event-Driven Asynchronous PatternsWebhooksRespond to events from external services to initiate a process
Scheduled JobsCron-like processes that occur on a regular schedule.
StreamsReal-time activities through long running agent/daemon processes
Fan OutRespond to events and push to multiple process/data endpoints
Compute Environment
Load Balancer
Traditional Hosting Model (Apps) Ephemeral Micro Computing (Tasks)
Distribute the LoadA 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.
Considerations
Keep it LightFocus on handling requests and
routing to appropriate microservices
Make it Highly AvailableMust be deployed in a fault-tolerant
distributed manner
Load BalancedMust be able to handle incoming traffic spikes elastically
Polyglot Persistence
Key/ValueRapid access for reads/writes
SQLTransactional data
NoSQLHigh volume reads
FIleDistributed file system
While preserving stateless microservices, choose the right data store and connection for the process.
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.
Configuration
Environments Dependencies DeploymentSupport 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
Responsibilities
Runtime Monitoring
Audit trails
Logging
Error Handling
Alerting
Performance Testing
With microservices, monitoring and analytics must be done at both the individual level and as part of the
whole application.
Full Microservices Stack
API
Infrastructure
Compute Storage Networking
Message Queue Scheduler
Monitoring
How We Can Help
Pair ProgrammingGet a hands-on
walkthrough of our platform
Architecture ReviewLet us share some best practices and advice
Start a Free TrialStart building with Iron.io in minutes
Iron.io325 9th StSan Francisco, CA 94103
1-888-939-4623www.iron.io
THANK YOU
QUESTIONS?