51
MICROSERVICES BREAKING APART THE MONOLITH www.iron.io

Microservices: Breaking Apart the Monolith

  • Upload
    ironio

  • View
    253

  • Download
    0

Embed Size (px)

Citation preview

MICROSERVICES

BREAKING APART THE MONOLITH

www.iron.io

Ken Fromm
meant this as could go either route
Ken Fromm
Think if we list the concerns, talk about some best practices, that should suffice.
Ken Fromm
Mention that this is a talk in and of itself and we're working with a partner.
Ken Fromm
<deleted>
Ken Fromm
https://twitter.com/kjnilsson/status/578192733040431104
Ken Fromm
https://twitter.com/mdcarlson/status/535544523405811712
Ken Fromm
Suggest grouping in three columns.Development PatternsCode Packages and DependenciesDeployment Cycle
Ken Fromm
Development PatternsEmpower ndependent teams and workgroupsPrototyping to production the same infrastructureSupports easier migration paths
Ken Fromm
Unit of scale is the task and not an app or vm.
Ken Fromm
Code Packages and Dependencies- The right language for the task- Dependencies only for the task- Scoped environment variables- Scoped runtime environments
Ken Fromm
Deployment CycleBuild, test, deploy but on a simpler scaleTasks and containers are your friendSmaller teams/faster cycles means fewer code mergesCan be built with open source, cloud services, and on-prem solutions
Ken Fromm
not sure you need - given the length

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 ProtocolsRESTful APIs that communicate over HTTP with JSON serialization

Agile OperationsConsistent environments for development and deployment

Elastic WorkloadsGranular 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 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

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 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.

API Gateway

Request Handling / Routing

APIGateway

Auth

User Request REST

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

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/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.

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 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

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 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

[email protected]

THANK YOU

QUESTIONS?