Building Next Gen Applications and MicroservicesSteve Mirman, IBM Bluemix Architect@SteveMirmanJune 15, 2016
2
Progression to Microservices
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
3
1. From Heavyweight Development to Agile• A consolidation of ideas
from Extreme Programming, Scrum, Lean, etc.
• Tried to remove the overhead and risk of large scale software development by having:
– Smaller work increments– Frequent iterations– Rapid prototyping
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
4
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.
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
5
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 Scrum’s “potentially shippable product increment”.
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
6
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
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
7
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
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
8
Microservice Outcomes• Increase Speed• Reduce Cost• Improve Resilience• Enable Visibility
9
Microservice Keys to Success
Architecture
MethodologyTechnology
Organization
10
Organizational Success• Are teams aligned to business or
technology?• How are responsibilities divided
between teams?• 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
communications?• Power distribution between teams?
Architecture
MethodologyTechnology
Organization
11
Methodological Success• Product or projects?• Agile or waterfall?• Who controls business requirements?• Fear of change, or continuous
delivery?• Degree of automation in deployment
and operations?
Architecture
MethodologyTechnology
Organization
12
Technological Success• Cloud provisioning?• Virtualization? Containerization?• Application integration approach?• Security and identity management?• Operational middleware?• Language? Databases?• Legacy technologies?
Architecture
MethodologyTechnology
Organization
13
Architectural Example
Architecture
MethodologyTechnology
Organization
14
Microservice Technologies• Containers
– Encapsulate services and are accessible by IP/port combination• Service Discovery
– Provides a way to know when services have been added/removed and where they are located
• Service Orchestration– Manages service topologies– Ensures availability and utilization
• API gateway– Security– Routing
15
High Level View• Connect to services
through HTTP• Services communicate
through event bus• Services can be written in
whatever language is best for the task and skills available
• Each service stores data independently
16
Containerized Deployment• Services can scale
independently according to load without affecting the others
• Services connect to external data stores (databases, BLOB stores, etc.)
• Containers, service discovery, API gateway
• Efficient/single point of failure
17
Optimized Containerized Deployment• Groups of services can be
collocated on physical systems
• Containers, service discovery, service orchestration, API gateway
• Efficient/highly available
18
Microservice Principles• Do One Thing Well• Build Afresh• Expect Output to Become Input• Don’t Insist on Interactive Input• Try Early• Don’t Hesitate to Throw it Away• Toolmaking
19