Transcript
Page 1: Building Next Generation Applications and Microservices

Building Next Gen Applications and Microservices

Manuel Silveyra

@manuel_silveyra

May 25, 2016

Page 2: Building Next Generation Applications and Microservices

IBM Swift Package Catalog

2

https://swiftpkgs.ng.bluemix.net/

Page 3: Building Next Generation Applications and Microservices

Progression to Microservices

3

Continuous Integration

Agile

Heavyweight development

Continuous Deployment

DevOps

Microservices

Page 4: Building Next Generation Applications and Microservices

1. From Heavyweight Development to Agile

4

• 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 5: Building Next Generation Applications and Microservices

2. From Agile to Continuous Integration (CI)

5

• 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 6: Building Next Generation Applications and Microservices

3. From CI to Continuous Delivery (CD)

6

• 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 7: Building Next Generation Applications and Microservices

4. From CD to DevOps

7

• 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 8: Building Next Generation Applications and Microservices

5. From DevOps to Microservices

8

• 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 9: Building Next Generation Applications and Microservices

Microservice Outcomes

• Increase Speed

• Reduce Cost

• Improve Resilience

• Enable Visibility

9

Page 10: Building Next Generation Applications and Microservices

Microservice Keys to Success

10

Organization

MethodologyTechnology

Page 11: Building Next Generation Applications and Microservices

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?

11

Organization

MethodologyTechnology

Page 12: Building Next Generation Applications and Microservices

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?

12

Organization

MethodologyTechnology

Page 13: Building Next Generation Applications and Microservices

Technological Success

• Cloud provisioning?

• Virtualization? Containerization?

• Application integration approach?

• Security and identity management?

• Operational middleware?

• Language? Databases?

• Legacy technologies?

13

Organization

MethodologyTechnology

Page 14: Building Next Generation Applications and Microservices

Microservice Exercise

14

Page 15: Building Next Generation Applications and Microservices

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

Page 16: Building Next Generation Applications and Microservices

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

Page 17: Building Next Generation Applications and Microservices

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

Page 18: Building Next Generation Applications and Microservices

Optimized Containerized Deployment

• Groups of services can be

collocated on physical systems

• Containers, service discovery,

service orchestration, API

gateway

• Efficient/highly available

18

Page 19: Building Next Generation Applications and Microservices

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

Page 20: Building Next Generation Applications and Microservices

20

Page 21: Building Next Generation Applications and Microservices

Microservice Platform

Shared Capabilities

• Hardware services

• Code management, testing, and

deployment

• Data stores

• Service orchestration

• Security and identity

• Architectural policy

Local Capabilities

• General tooling

• Runtime configuration

• Service discovery

• Request routing

• System observability

21


Recommended