+ All Categories
Home > Software > Divide and Conquer: Easier Continuous Delivery using Micro-Services

Divide and Conquer: Easier Continuous Delivery using Micro-Services

Date post: 06-Apr-2017
Category:
Upload: carlos-sanchez
View: 113 times
Download: 0 times
Share this document with a friend
50
DIVIDE AND CONQUER EASIER CONTINUOUS DELIVERY USING MICRO-SERVICES Carlos Sanchez csanchez.org @csanchez Watch online at carlossg.github.io/presentations
Transcript
Page 1: Divide and Conquer: Easier Continuous Delivery using Micro-Services

DIVIDE AND CONQUER

EASIER CONTINUOUS DELIVERYUSING MICRO-SERVICES

Carlos Sanchez

      csanchez.org @csanchez

Watch online at carlossg.github.io/presentations

Page 2: Divide and Conquer: Easier Continuous Delivery using Micro-Services

ABOUT MEEngineer @ CloudBees, scaling Jenkins        

Author/contributor of Jenkins Kubernetes and Mesos plugins

Long time OSS contributor at Apache (Apache Maven),Eclipse, Puppet,…

Page 3: Divide and Conquer: Easier Continuous Delivery using Micro-Services

MICRO SERVICESthe microservice architectural style is an

approach to developing a singleapplication as a suite of small services,

each running in its own process andcommunicating with lightweight

mechanisms, o�en an HTTP resource API.

Page 4: Divide and Conquer: Easier Continuous Delivery using Micro-Services

These services are built around businesscapabilities and independently

deployable by fully automated deploymentmachinery.

James Lewis and Martin Fowler

Page 5: Divide and Conquer: Easier Continuous Delivery using Micro-Services

One application, multiple small servicesSeparate processes with lightweight comunications,typically HTTPDeployed independentlyMinimal centralized managementFully automated deployment

Page 6: Divide and Conquer: Easier Continuous Delivery using Micro-Services

MONOLITH VS MICRO-SERVICES

Page 7: Divide and Conquer: Easier Continuous Delivery using Micro-Services

COMPONENTIZATION VIA SERVICES

vs libraries

Page 8: Divide and Conquer: Easier Continuous Delivery using Micro-Services

ORGANIZED AROUND BUSINESS CAPABILITIES

cross functional teams

PRODUCTS NOT PROJECTS

business oriented

ongoing maintenance

Page 9: Divide and Conquer: Easier Continuous Delivery using Micro-Services

DECENTRALIZED GOVERNANCE

different lenguages

Amazon: you build it you run it

Page 10: Divide and Conquer: Easier Continuous Delivery using Micro-Services

DECENTRALIZED DATA MANAGEMENT

each service manages its own database

Page 11: Divide and Conquer: Easier Continuous Delivery using Micro-Services

INFRASTRUCTURE AUTOMATION

Continuous Delivery

Page 12: Divide and Conquer: Easier Continuous Delivery using Micro-Services

EVOLUTIONARY DESIGN

modular design and replaceability

Page 13: Divide and Conquer: Easier Continuous Delivery using Micro-Services

DESIGN FOR FAILURE

resiliency and self-healing

Page 14: Divide and Conquer: Easier Continuous Delivery using Micro-Services

Rapid provisioningBasic monitoringRapid application deployment - DevOps Culture

https://martinfowler.com/bliki/MicroservicePrerequisites.html

Page 15: Divide and Conquer: Easier Continuous Delivery using Micro-Services

ORGANIZATIONAL STRUCTUREAny organization that designs a system will

inevitably produce a design whosestructure is a copy of the organization's

communication structure.

Conway's Law

Page 16: Divide and Conquer: Easier Continuous Delivery using Micro-Services

CONTINUOUS DEPLOYMENTThe first 90%

DevelopBuildTestDeploy

Page 17: Divide and Conquer: Easier Continuous Delivery using Micro-Services

CONTINUOUS DEPLOYMENTThe other 90%

MonitorReact to problemsPrevent problems

Page 18: Divide and Conquer: Easier Continuous Delivery using Micro-Services

AUTOMATIONAUTOMATIONAUTOMATION

Page 19: Divide and Conquer: Easier Continuous Delivery using Micro-Services
Page 20: Divide and Conquer: Easier Continuous Delivery using Micro-Services

If you haven't automatically destroyedsomething by mistake, you are not

automating enough

Page 21: Divide and Conquer: Easier Continuous Delivery using Micro-Services

DEPLOY WITHOUT DOWNTIMEBlue-Green deploymentCanary deployment

Page 25: Divide and Conquer: Easier Continuous Delivery using Micro-Services

Use data from monitoring

Take proactive actions, ie. scaling

Page 26: Divide and Conquer: Easier Continuous Delivery using Micro-Services

(AUTO)SCALINGNew and interesting problems

Page 27: Divide and Conquer: Easier Continuous Delivery using Micro-Services

EXAMPLE: AWSInfinite capacity

Page 28: Divide and Conquer: Easier Continuous Delivery using Micro-Services

EXAMPLE: AWSResource limits: VPCs, snapshots, some instance sizes

Rate limits: affect the whole account

Page 29: Divide and Conquer: Easier Continuous Delivery using Micro-Services

EXAMPLE: AWSAlways use different accounts for testing/production and

possibly different teams

Retrying is your friend, but with exponential backoff

Page 30: Divide and Conquer: Easier Continuous Delivery using Micro-Services

PETS VS CATTLE

Page 31: Divide and Conquer: Easier Continuous Delivery using Micro-Services

How would you design your infrastructure ifyou couldn't login? Ever.

Kelsey Hightower

Page 32: Divide and Conquer: Easier Continuous Delivery using Micro-Services

STATEFUL SERVICES ARE HARDInherently

Do your services need to be deployed in a specific order?

Page 33: Divide and Conquer: Easier Continuous Delivery using Micro-Services

Adding more replicas to services is not trivial

data needs to be synced across replicaswhat if you kill a master node vs a replica

Page 34: Divide and Conquer: Easier Continuous Delivery using Micro-Services

RESILIENT & SELFHEALING SYSTEMS

Page 35: Divide and Conquer: Easier Continuous Delivery using Micro-Services

Services need to auto adapt to changes and errors

In case of unexpected errors, try to adapt and restore toworking condition

Page 36: Divide and Conquer: Easier Continuous Delivery using Micro-Services

Never expect an order of deployment

Will your app crash if database is not yet up and running?

Page 37: Divide and Conquer: Easier Continuous Delivery using Micro-Services

In case your database is down, what would you do?

1. send an alert and fail fast2. keep trying

Page 38: Divide and Conquer: Easier Continuous Delivery using Micro-Services

Services need to retry calls

Can conflict with fail-fast

Page 39: Divide and Conquer: Easier Continuous Delivery using Micro-Services

In complex systems there is no single cause of failure

Page 40: Divide and Conquer: Easier Continuous Delivery using Micro-Services

EMBRACE FAILURE!

Page 41: Divide and Conquer: Easier Continuous Delivery using Micro-Services

THE PRINCIPLES OF CHAOSENGINEERINGprinciplesofchaos.org

Build a Hypothesis around Steady State BehaviorVary Real-world EventsRun Experiments in ProductionAutomate Experiments to Run Continuously

Page 42: Divide and Conquer: Easier Continuous Delivery using Micro-Services
Page 43: Divide and Conquer: Easier Continuous Delivery using Micro-Services

FIT : FAILURE INJECTION TESTINGMiddle ground between isolated testing and large scale

chaos exerciseshttp://techblog.netflix.com/2014/10/fit-failure-injection-testing.html

Page 44: Divide and Conquer: Easier Continuous Delivery using Micro-Services

MICRO SERVICES ANDCONTAINERS

Page 45: Divide and Conquer: Easier Continuous Delivery using Micro-Services
Page 46: Divide and Conquer: Easier Continuous Delivery using Micro-Services
Page 47: Divide and Conquer: Easier Continuous Delivery using Micro-Services

BUT IT IS NOT TRIVIAL

Page 48: Divide and Conquer: Easier Continuous Delivery using Micro-Services

CLUSTER ORCHESTRATIONAllow running services in cluster

Abstract underlying infrastructure

High availability

Handle persistence for you

Network isolation and SDNs

Page 49: Divide and Conquer: Easier Continuous Delivery using Micro-Services

Recommended