Building Next Gen Applications and Microservices
May 25, 2016
IBM Swift Package Catalog
Progression to Microservices
1. From Heavyweight Development to Agile
A consolidation of ideas from Extreme Programming, Scrum,
Tried to remove the overhead and risk of large scale software
development by having:
Smaller work increments
2. From Agile to Continuous Integration (CI)
Sought to combine software components as early in the
lifecycle as possible in order to minimize the impact of
code integration issues.
Virtualization and automated testing removed
technological barriers to CI.
The adoption of Agile led to a growth in CI, which was a
common practice in Extreme Programming.
3. From CI to Continuous Delivery (CD)
CD defines a deployment pipeline to bring changes to production as
quickly as possible.
Is an instantiation of Scrums potentially shippable product
4. From CD to DevOps
In most organizations development and operations were separate.
Organizations where operations and development were together were more successful at establishing CD practices.
Engineering approaches were taken to problems that were previously dealt with procedurally.
This led to:
Higher automation in day to day tasks
Greater stability and resilience
5. From DevOps to Microservices
The architectural phase where large monolithic applications are broken down into discrete, business focused services.
This led to:
Higher development parallelization
Greater scalability and utilization
Microservice Keys to Success
Are teams aligned to business or technology?
How are responsibilities divided between
At what level of organization are
development and operations divided?
DevOps or Development and Operations?
What are team sizes and skills?
Dependencies and cross-team
Power distribution between teams?
Product or projects?
Agile or waterfall?
Who controls business requirements?
Fear of change, or continuous delivery?
Degree of automation in deployment and
Application integration approach?
Security and identity management?
Encapsulate services and are accessible by IP/port combination
Provides a way to know when services have been added/removed and where
they are located
Manages service topologies
Ensures availability and utilization
High Level View
Connect to services through HTTP
Services communicate through
Services can be written in
whatever language is best for the
task and skills available
Each service stores data
Services can scale independently
according to load without
affecting the others
Services connect to external data
stores (databases, BLOB stores,
Containers, service discovery, API
Efficient/single point of failure
Optimized Containerized Deployment
Groups of services can be
collocated on physical systems
Containers, service discovery,
service orchestration, API
Do One Thing Well
Expect Output to Become Input
Dont Insist on Interactive Input
Dont Hesitate to Throw it Away
Code management, testing, and
Security and identity