Agile Tour Pune 2015: Agility with Microservices and Devops: Archana Joshi and Yatin Kulkarni
-
Upload
india-scrum-enthusiasts-community -
Category
Technology
-
view
455 -
download
0
Transcript of Agile Tour Pune 2015: Agility with Microservices and Devops: Archana Joshi and Yatin Kulkarni
AGILITY WITH MICROSERVICES & DEVOPS
Archana Joshi & Yatin Kulkarni
Cognizant
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!
microservicesis 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
ManagementLogistics
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
THANK YOUhttps://in.linkedin.com/in/arcjoshi
https://in.linkedin.com/in/yatinkulkarni