Transcript
Page 1: Building Next Gen Applications and Microservices

Building Next Gen Applications and MicroservicesSteve Mirman, IBM Bluemix Architect@SteveMirmanJune 15, 2016

Page 2: Building Next Gen Applications and Microservices

2

Progression to Microservices

Continuous Integration

Agile

Heavyweight development

Continuous Deployment

DevOps

Microservices

Page 3: Building Next Gen Applications and 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

Page 4: Building Next Gen Applications and 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

Page 5: Building Next Gen Applications and 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

Page 6: Building Next Gen Applications and 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

Page 7: Building Next Gen Applications and 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

Page 8: Building Next Gen Applications and Microservices

8

Microservice Outcomes• Increase Speed• Reduce Cost• Improve Resilience• Enable Visibility

Page 9: Building Next Gen Applications and Microservices

9

Microservice Keys to Success

Architecture

MethodologyTechnology

Organization

Page 10: Building Next Gen Applications and Microservices

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

Page 11: Building Next Gen Applications and Microservices

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

Page 12: Building Next Gen Applications and Microservices

12

Technological Success• Cloud provisioning?• Virtualization? Containerization?• Application integration approach?• Security and identity management?• Operational middleware?• Language? Databases?• Legacy technologies?

Architecture

MethodologyTechnology

Organization

Page 13: Building Next Gen Applications and Microservices

13

Architectural Example

Architecture

MethodologyTechnology

Organization

Page 14: Building Next Gen Applications and Microservices

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

Page 15: Building Next Gen Applications and Microservices

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

Page 16: Building Next Gen Applications and Microservices

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

Page 17: Building Next Gen Applications and Microservices

17

Optimized Containerized Deployment• Groups of services can be

collocated on physical systems

• Containers, service discovery, service orchestration, API gateway

• Efficient/highly available

Page 18: Building Next Gen Applications and Microservices

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

Page 19: Building Next Gen Applications and Microservices

19