the quest for agility
TRANSCRIPT
The Quest for agility
Why agility is important and what we can do about it
Tamar Eilam, Ph.D., IBM [email protected]
@tamareilam
The Buzz ..Every one are talking about them … #microservices
The actuals • The principles of “born on the cloud” application
architecture, development and delivery styles are describes in books such as “Release IT!” , numereous blogs, and on-line articles.
• Companies (such as Netflix) communicated extensively about their own journey in applying the principles and achieving unprecedented degree of scale – Ability to add new functions quickly – Ability to scale the user base quickly
• Same principles, different implementation choices
The Principles - Microservice – what are they
microservices is a software architecture style, in which complex applications are composed of small, highly decoupled, independent processes communicating with one other using language-agnostic APIs.
• Compartmentalized business capability
• Cross-functional teams
• Communication via API ONLY!!
• Remove peer-to-peer dependencies
• REST communication
• Decentralized data
• Design for failure
• Evolutionary design with pluggable architecture
• Enables continuous delivery
Mon
olith
icS
tyle
Mic
rose
rvic
esst
yle
Why are they important? • Enterprises are Digitally Transforming
– How to provide new functions – By leveraging data (private + public) – By leveraging eco systems of services – How to do it quickly
• Cloud migration is no longer motivated by cost reduction; now it is about agility – a business imperative! – Cloud migration Enterprise transformation.
The quest for agility: Three winning pillars
DevOps
Micr
oservice
s
Cont
aine
rs
(Doc
ker)
agilityCultural ChangeAutomated pipelineEverything as code Immutable infrastructure
Small decoupled servicesEverything dynamicAPIs
Design for failure Embrace failuresTest by break / fail fast
Portability Developer centricEco system Fast startup
enabler
#IBMBluemix
VMs vs Containers
7
AppA
Hypervisor (Type 2)
Host OS
Server
GuestOS
Bins/Libs
AppA’
GuestOS
Bins/Libs
AppB
GuestOS
Bins/Libs
VM
GuestOS
GuestOS A
pp A’
Host OS
Server
Bins/Libs
App A
Bins/Libs
App B
App B
’
App B
’
App B
’Container
Containers are isolated,but share OS and, whereappropriate, bins/libraries
…faster, less overhead
#IBMBluemix
Static website Web frontend User DB Queue Analytics DB
Development VM
QA server Public Cloud Contributor’s laptop
Docker is a shipping container system for code
Mul
tiplic
ity o
f Sta
cks
Mul
tiplic
ity o
f ha
rdw
are
envi
ronm
ents
Production Cluster
Customer Data Center
Do services and apps interact
appropriately?
Can I migrate
smoothly and quickly
…that can be manipulated using standard operations and run consistently on virtually any hardware platform
An engine that enables any payload to be encapsulated as a lightweight, portable, self-sufficient container…
Microservices: Design for agility • Small well defined services accessible purely
through REST APIs or messaging • Loose coupling
– Dynamic binding: Services find each other through dynamic lookup, not hard coded config
– Dynamic configuration: Key configuration is externalized and shared (service responsibility to reconfigure respectively)
– Each Microservice responsible for its own state (pushed to an external data service) and data is de-centralized/normalized
– More Event driven / Asynchronous; Less RPC / Synchronous
• Advantages: Radically simpler to – recover from failures (re-start or new instance);– auto scale (add an identical instance); – update (no worries about dependencies with other
services and startup order )
Microservices: Design for failures
• Embrace failures - they will happen! • How to avoid How to identify & what to do about it
– Pure operational concern developer concern
• External calls are especially prone to problems– Separate thread pools – Time out quickly – High quality code libraries for all to use
• Embed metric collection for load balancing and failure detection • Circuit breaker pattern – identify problem and do
something about it to avoid cascading failures • Bulkhead pattern - Isolation from start to limit scope of
failure (separate thread pools)• Monkey testing – test by breaking
Microservices: Life Cycle• Deliver changes only in full stack
deployments, never in-place – Immutable infrastructure concept
• Stand up a new environment next to the current one and .. Roll forward
• Also : Deliver frequent small changes Load
Balancer
Current New Old
0%80%
20%
Roll forward Roll forward
Roll back
It is clear how the Microservices principles work in concert to
enable agility – what’s not to love about them?
The criticism: While updating each individual Microservice is simplified, the complexity shifts to managing a large system of Microservices
Edge Service
User requests
C
AB
Microservices
New microservice version
F
B’
D
E
D’
IBM Enterprise Containers on Bluemix: Where innovation happens
Automate the build of Docker images
Manage and distribute Docker images in private image registries
Easily host containers in the cloud
Scale and auto-recovery built-in
Logging and Monitoring built-in
13
https://console.ng.bluemix.net/home/
IBM Bluemix DevOps Services – Delivery Pipeline – Enabling innovation @ speed & quality
• Integration test, System test, Production
• Automation ensures the same procedure in each environment
• Fully hosted, managed, and integrated in the cloud for the cloud
#IBMBluemix
Delivery Pipeline for Containers on Bluemix
IBM ContainerImage Build
Service
Image Registry
IBM Cloud
Testing & Continuous Ops infast speed IT world
16
Continuous Operation (DevOps Analytics)
Continuous Quality (DevOps Analytics)
DevOps Pipeline
Active Deploy
Operations Visibility
Platform Services
Alek: Lead developer for WFaaS. Responsible for developing new features and improvements for WFaaS. Needs the ability to efficiently build, test, deploy his code.
Vinod: Operations lead for WFaaS responsible for ensuring problem-free continuous operation. Needs to quickly understand potential problem areas and resolve operational issues
Mariusz: Container Cloud admin. Wants to create infrastructure in a repeatable and reliable way and fix any problems before the customer notices. Lack of understanding about applications running on the infrastructure creates challenges
PERSONAS INVOLVEDDevOps Dashboard
B E P R o u d !