agility with microservices and devops

16
AGILE TOUR PUNE AGILITY WITH MICROSERVICES & DEVOPS Archana Joshi & Yatin Kulkarni Cognizant Oct 2015

Upload: archana-joshi

Post on 14-Apr-2017

458 views

Category:

Technology


2 download

TRANSCRIPT

AGILE TOUR PUNE

AGILITY WITH MICROSERVICES & DEVOPS

Archana Joshi & Yatin Kulkarni

Cognizant

Oct 2015

State of the Union – Where are we heading?

• Digital Disruption,

• Way of working is keeping pace

• Architectural paradigms are lagging

Microservices – Modularity on steroids!

•Origins in philosophy

•2005 – web-services

•2011 – Services

Microservices – Modularity on steroids!

microservices

is a software architecture style in which complex

applications are composed of small, independent processes

(based on business) communicating with each other using

language-agnostic APIs

(Source: wikipedia)

Microservices – Early adopters

Microservices – One of the top trends

Microservices - Essential

to produce a continuous

digital experience

Source: Gartner Oct 2015 – Top 10 technology trends for 2016

Source: MuleSoft 2015 survey of 300 IT decision makers (ITDMs) to assess how

organizations of all sizes are implementing and planning for APIs

DevOps – Collaborate and Automate

Baked-in collaboration

Cross-functional teams and skills

Continuous delivery

Small, frequent updates

Instant deployments

Quick transition in the app lifecycle

Automation

Real-time visibility and updates

Development and operations aligned

Reduced service disruption

Quick value delivery

Increased volume of new applications, updates and

patches

Streamlined processes

Time to market

Service quality

Risk management

Agility

Agile, Microservices, DevOps – A “ménage a trois” made

in heaven!

• Dependency management simplified

• Well suited for large distributed teams by dividing work across pairs, locations

• High technical debt associated with adopting microservices can only be

managed through appropriate DevOps tools

• DevOps takes center stage instead of being an after thought by becoming an

integral part of the process

And the rubber hits the road – SOA to Microservices in 3

“easy” steps…

• Step 1 – Modularize your service silos by applying Domain Driven Design

(DDD) specifically Bounded Contexts

• Step 2 – Adopt a PaaS platform for the build process – Heroku, CloudFoundry,

etc.

• Step 3 – Adopt a container technology for deployment - Docker, LXD, etc.

Step 1 - Better Agility through Domain Driven Design

• Small Teams (no more than 4 developers) per Bounded Context

• Decentralized data store design to reduce dependencies

• Promote use of polyglot persistence across various data stores

• Manage data consistency challenges through use of MDM tools to ensure

eventual consistency

• Employ Contract Driven Development

• Choose most appropriate technology for a given Microservice

• Abide by the other principles of The Twelve Factor App (http://12factor.net/)

Example of a classic SOA based application

Service Deployments

Primary Data

Store

Replicated

Data Store

Web Apps

Web Store Fulfillment Call Center

Customer

Management

Order

Management Logistics

Management

Inventory

Management

Mobile Apps

Customer Internal

Content

Management

Partner

Systems

Service Gateway (Typically an ESB)

Microservices based Application architecture

Service Deployments

Web Apps

Web Store Fulfillment Call Center

Mobile Apps

Customer Internal

Content

Management

Partner

Systems

Service Gateway (Typically just a Load Balancer)

Step 2 – Better Agility through Continuous Integration

Done Right

• Use platforms such as Heroku/Cloud Foundry/Docker to

– Internalize environment/configuration management so as to achieve

Dev/Prod parity

– Promote use of immutable instances and thus horizontal scalability

– Allow for service evolution through versioning with minimal disruption

– Instutionalize the use of “Operationalized Architecture” so that DevOps

(CI/CD/Monitoring) become a first class concern

• Plan for complete test automation including functional and

integration testing

Step 3 – Better Agility through Continuous Deployment &

Monitoring • Adopt container based deployment to optimally utilize available compute and storage

resources by

– Deploying a single microservice per container

– Leveraging Blue/Green Deployments to minimize risk

– Managing Scalability for individual microservices

• Leverage appropriate monitoring tools to be able to respond quickly and efficiently manage failures.

• Introduce platforms for API management and discoverability (Apigee, Apis.io, etc) to promote adoption and reusability

• Invest in Networking as a Service tools (SDN, Fan, etc) for managing large scale microservices deployments

The future is here – Everything you need to build

Microservices in a box

AWS Lambda

Spring Cloud

Azure Service Fabric