using microservices to modernize and future proof...

36
© 2018 IBM Corporation Using microservices to modernize and future proof government IT systems Andras R. Szakal, VP & CTO IBM Federal Cloud & AI U.S. Federal Market

Upload: others

Post on 31-May-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

© 2018 IBM Corporation

Using microservices to modernize and future proof government IT systemsAndras R. Szakal, VP & CTOIBM Federal Cloud & AIU.S. Federal Market

Page 2: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

2© 2018 IBM Corporation

Page 3: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government
Page 4: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Flexibility Agility

4

AdaptiveAutomation

DigitalTransformation

Application modernizationaccelerates Digital Transformation

Page 5: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Application modernizationü Improves developer

productivityü Increases operational

efficiency ü Reduces cost to build new

capabilities ü Expands capacity delivered

in a short time

Page 6: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Maintain, Operate,

and Support

Move, Modernize,

Deploy

Common HybridCloud Platform

Assess and Plan

6

Organizations are focusing on modernization

• 70% of hybrid cloud adoption is being driven by the need to modernize• IBM delivers a framework to accelerate the app modernization journey:

Page 7: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

What resources and

time will I need to

invest?

Will they be easy or

problematic to

move?

Which ones should I

move first?

What applications

do I have on

premise?

7

Choosing what apps to move to cloud• Agencies predominantly investing in government and hybrid clouds are using or considering AI at a greater

proportion than agencies predominantly investing in their own data centers (49% vs 28%)

• Working with multiple cloud providers will deliver the greatest ability to innovate (41% vs 39% for civilian

and 48% vs 40% for defense and intelligence) compared to a single vendor.

Page 8: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Make the best decisions based on best practices

Determine adoption readiness

Provide actionable roadmap

Gather information on existing apps & supportive environment

8

Making the Journey…• 56% of respondents reported their agency is using or planning to use containers to run application.• Agencies investing in hybrid cloud are the most likely to be moving forward with microservices

Page 9: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

9© 2018 IBM Corporation

Page 10: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

10© 2018 IBM Corporation

Page 11: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

11

• Embracing change in software delivery with DevOps• “Shift right” development• Accelerating delivery• Embracing multi-cloud• “Shift left” operations• DevOps insights

Page 12: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Essential characteristics of the “Digital Culture”

“Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure.”

— Melvyn Conway, 1968

* http://martinfowler.com/articles/microservices.html

Page 13: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

13

“Shift right” development & the changing developer experience• Create and Deliver new

applications and services quickly• By using a microservice

architectural style

Page 14: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Q: How far along is your agency in adopting the following development practices?(Select the farthest stage your agency has reached implementing the following, as of June 2018)

Q19 How far along is your agency in adopting the following developmentpractices?(Select the farthest stage your agency has reached

implementing the following, as of June 2018)

Answered: 169 Skipped: 0

19%

32

44%

75

18%

31

15%

25

4%

6

169

19%

32

42%

71

21%

36

13%

22

5%

8

169

13%

22

40%

67

26%

44

19%

32

2%

4

169

17%

29

40%

67

24%

40

14%

24

6%

10

169

16%

27

35%

59

24%

40

19%

32

7%

12

169

12%

21

36%

60

21%

36

25%

43

5%

9

169

Not Considering Considering Testing Partially Implemented

Fully Implemented

Use

microservic

es to

develop ...

Use

microservic

es to

refactor...

Re-architec

t legacy

apps to

reduce c...

Create

microservic

es that

access d...

Expose

data

residing on

existing...

Build

services/ap

ps which

integrat...

0%

10%

20%

30%

40%

50%

19%

19%

19%

19%

19%

19%

19% 19%

19%

19%

19%

19%

19%

19%

13%

13%

13%

13%

13%

13%

13%

17%

17%

17%

17%

17%

17%

17%16%

16%

16%

16%

16%

16%

16%

12%

12%

12%

12%

12%

12%

12%

44%

44%

44%

44%

44%

44%

44%

42%

42%

42%

42%

42%

42%

42%

40%

40%

40%

40%

40%

40%

40% 40%

40%

40%

40%

40%

40%

40%

35%

35%

35%

35%

35%

35%

35% 36%

36%

36%

36%

36%

36%

36%

18%

18%

18%

18%

18%

18%

18%

21%

21%

21%

21%

21%

21%

21%

26%

26%

26%

26%

26%

26%

26%

24%

24%

24%

24%

24%

24%

24% 24%

24%

24%

24%

24%

24%

24%

21%

21%

21%

21%

21%

21%

21%

15%

15%

15%

15%

15%

15%

15%13%

13%

13%

13%

13%

13%

13%

19%

19%

19%

19%

19%

19%

19%

14%

14%

14%

14%

14%

14%

14%

19%

19%

19%

19%

19%

19%

19%

25%

25%

25%

25%

25%

25%

25%

4%

4%

4%

4%

4%

4%

4%5%

5%

5%

5%

5%

5%

5%

2%

2%

2%

2%

2%

2%

2%

6%

6%

6%

6%

6%

6%

6% 7%

7%

7%

7%

7%

7%

7%5%

5%

5%

5%

5%

5%

5%

NOTCONSIDERING

CONSIDERING TESTING PARTIALLYIMPLEMENTED

FULLYIMPLEMENTED

TOTAL

Use microservices to develop new

applications

Use microservices to refactor or

modernize existing applications

Re-architect legacy apps to reduce

cost and speed application

development

Create microservices that access data

residing on existing systems of record

Expose data residing on existing

systems of record via APIs

Build services/apps which integrate

data residing on premises with other

services that live in the cloud

19 / 22

Cloud and Container Adoption Survey

Q19 How far along is your agency in adopting the following developmentpractices?(Select the farthest stage your agency has reached

implementing the following, as of June 2018)

Answered: 169 Skipped: 0

19%

32

44%

75

18%

31

15%

25

4%

6

169

19%

32

42%

71

21%

36

13%

22

5%

8

169

13%

22

40%

67

26%

44

19%

32

2%

4

169

17%

29

40%

67

24%

40

14%

24

6%

10

169

16%

27

35%

59

24%

40

19%

32

7%

12

169

12%

21

36%

60

21%

36

25%

43

5%

9

169

Not Considering Considering Testing Partially Implemented

Fully Implemented

Use

microservic

es to

develop ...

Use

microservic

es to

refactor...

Re-architec

t legacy

apps to

reduce c...

Create

microservic

es that

access d...

Expose

data

residing on

existing...

Build

services/ap

ps which

integrat...

0%

10%

20%

30%

40%

50%

19%

19%

19%

19%

19%

19%

19% 19%

19%

19%

19%

19%

19%

19%

13%

13%

13%

13%

13%

13%

13%

17%

17%

17%

17%

17%

17%

17%16%

16%

16%

16%

16%

16%

16%

12%

12%

12%

12%

12%

12%

12%

44%

44%

44%

44%

44%

44%

44%

42%

42%

42%

42%

42%

42%

42%

40%

40%

40%

40%

40%

40%

40% 40%

40%

40%

40%

40%

40%

40%

35%

35%

35%

35%

35%

35%

35% 36%

36%

36%

36%

36%

36%

36%

18%

18%

18%

18%

18%

18%

18%

21%

21%

21%

21%

21%

21%

21%

26%

26%

26%

26%

26%

26%

26%

24%

24%

24%

24%

24%

24%

24% 24%

24%

24%

24%

24%

24%

24%

21%

21%

21%

21%

21%

21%

21%

15%

15%

15%

15%

15%

15%

15%13%

13%

13%

13%

13%

13%

13%

19%

19%

19%

19%

19%

19%

19%

14%

14%

14%

14%

14%

14%

14%

19%

19%

19%

19%

19%

19%

19%

25%

25%

25%

25%

25%

25%

25%

4%

4%

4%

4%

4%

4%

4%5%

5%

5%

5%

5%

5%

5%

2%

2%

2%

2%

2%

2%

2%

6%

6%

6%

6%

6%

6%

6% 7%

7%

7%

7%

7%

7%

7%5%

5%

5%

5%

5%

5%

5%

NOTCONSIDERING

CONSIDERING TESTING PARTIALLYIMPLEMENTED

FULLYIMPLEMENTED

TOTAL

Use microservices to develop new

applications

Use microservices to refactor or

modernize existing applications

Re-architect legacy apps to reduce

cost and speed application

development

Create microservices that access data

residing on existing systems of record

Expose data residing on existing

systems of record via APIs

Build services/apps which integrate

data residing on premises with other

services that live in the cloud

19 / 22

Cloud and Container Adoption Survey

Q19 How far along is your agency in adopting the following developmentpractices?(Select the farthest stage your agency has reached

implementing the following, as of June 2018)

Answered: 169 Skipped: 0

19%

32

44%

75

18%

31

15%

25

4%

6

169

19%

32

42%

71

21%

36

13%

22

5%

8

169

13%

22

40%

67

26%

44

19%

32

2%

4

169

17%

29

40%

67

24%

40

14%

24

6%

10

169

16%

27

35%

59

24%

40

19%

32

7%

12

169

12%

21

36%

60

21%

36

25%

43

5%

9

169

Not Considering Considering Testing Partially Implemented

Fully Implemented

Use

microservic

es to

develop ...

Use

microservic

es to

refactor...

Re-architec

t legacy

apps to

reduce c...

Create

microservic

es that

access d...

Expose

data

residing on

existing...

Build

services/ap

ps which

integrat...

0%

10%

20%

30%

40%

50%

19%

19%

19%

19%

19%

19%

19% 19%

19%

19%

19%

19%

19%

19%

13%

13%

13%

13%

13%

13%

13%

17%

17%

17%

17%

17%

17%

17%16%

16%

16%

16%

16%

16%

16%

12%

12%

12%

12%

12%

12%

12%

44%

44%

44%

44%

44%

44%

44%

42%

42%

42%

42%

42%

42%

42%

40%

40%

40%

40%

40%

40%

40% 40%

40%

40%

40%

40%

40%

40%

35%

35%

35%

35%

35%

35%

35% 36%

36%

36%

36%

36%

36%

36%

18%

18%

18%

18%

18%

18%

18%

21%

21%

21%

21%

21%

21%

21%

26%

26%

26%

26%

26%

26%

26%

24%

24%

24%

24%

24%

24%

24% 24%

24%

24%

24%

24%

24%

24%

21%

21%

21%

21%

21%

21%

21%

15%

15%

15%

15%

15%

15%

15%13%

13%

13%

13%

13%

13%

13%

19%

19%

19%

19%

19%

19%

19%

14%

14%

14%

14%

14%

14%

14%

19%

19%

19%

19%

19%

19%

19%

25%

25%

25%

25%

25%

25%

25%

4%

4%

4%

4%

4%

4%

4%5%

5%

5%

5%

5%

5%

5%

2%

2%

2%

2%

2%

2%

2%

6%

6%

6%

6%

6%

6%

6% 7%

7%

7%

7%

7%

7%

7%5%

5%

5%

5%

5%

5%

5%

NOTCONSIDERING

CONSIDERING TESTING PARTIALLYIMPLEMENTED

FULLYIMPLEMENTED

TOTAL

Use microservices to develop new

applications

Use microservices to refactor or

modernize existing applications

Re-architect legacy apps to reduce

cost and speed application

development

Create microservices that access data

residing on existing systems of record

Expose data residing on existing

systems of record via APIs

Build services/apps which integrate

data residing on premises with other

services that live in the cloud

19 / 22

Cloud and Container Adoption Survey

Use microservices to refactor or modernize existing applications

Base: 169

Predominantly private cloud (managed by 3rd party)

Predominantly community cloud (for fed workloads)

Predominantly public cloud (i.e. commercial cloud)

Hybrid (IT environment using both private and public cloud)

Predominantly gov’t run & owned data center(s) (in-house)

* July 2018 FedScoop Gov IT Modernization Survey

Agencies using microservices to modernize existing applications regardless of where they concentrate their IT investments.*

Current Agency Adoption of Microservices to refactor existing applications

Page 15: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Microservices Architecture

A microservice is a granular, decoupled componentwithin a broader application

Monolithic application

Silo

Microservices application

Microservice(component)

Microservice(component)

Microservice(component)

• Agility• Scalability• Resilience

Simplistically, microservices architecture is about breaking down large silo applications into more manageable, fully decoupled pieces

Page 16: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Monolithic vs. Microservices

16

Is “microservices architecture” really “micro-component architecture”?

Monolithic application

Silocomponent

Microservices application

“Micro” refers to the granularity of the components, not the granularity of the exposed interfaces

Exposed services and APIs Exposed services and APIs

MicroserviceComponent

MicroserviceComponent

MicroserviceComponent

Page 17: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Comparing monolithic & microservices architecturesCategory Monolithic architecture Microservices architecture

Architecture Built as a single logical executable Built as a suite of small services

Modularity Based on language features Based on business capabilities

Agility Changes to the system involve building and deploying a new version of the entire application

Changes can be applied to each service independently

Scaling Entire application scaled when only one part is the bottleneck

Each service scaled independently when needed

Implementation Typically entirely developed in one programming language

Each service can be developed in a differentprogramming language

Maintainability Large code base is intimidating to new developers Smaller code bases easier to manage

Deployment Complex deployments with maintenance windows and scheduled downtimes

Simple deployment as each service can be deployed individually, with minimal if not zero downtime

Page 18: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

The Twelve Factor ApplicationI. Codebase - One codebase that is tracked in revision control, many deploys

II. Dependencies - Explicitly declare and isolate dependencies

III. Config - Store config in the environment

IV. Backing services - Treat backing services as attached resources

V. Build, release, run - Strictly separate build and run stages

VI. Processes - Execute the app as one or more stateless processes

VII. Port binding - Export services with port binding

VIII. Concurrency - Scale out using the process model

IX. Disposability - Maximize robustness with fast startup and graceful shutdown

X. Dev/prod parity - Keep development, staging, and production as similar as possible

XI. Logs - Treat logs as event streams

XII. Admin processes - Run admin and management tasks as one-off processes

Page 19: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Microservices and SOA

Factor SOA MicroservicesRole in IT Architectural style for connected systems Application architecture (as well as practices associated with it)

Purpose Exposing business functions and data via standardized interfaces for re-use across the enterprise

Structuring applications by breaking into smaller, completely independent components

Primary design consideration

Re-use of services (exposure of business functions) • Implementation of independent business functions• De-coupling of dependencies

Interaction model Usually synchronous via SOAP/XML over HTTP Synchronous or asynchronous (very often JSON based)

Composition One or more applications (components) may support many services

One “application” (component) per service

Deployment implications

• Changes to a single service require the full application it is part of to be redeployed, impacting other services supported by that application

• Design, development and test on (or considered for) all services in changed application(s)

• Only the service being changed is affected• Design, development and test on one service only• Deployment/re-deployment should be significantly faster and

more agile

Overall, Microservices are an application architecture pattern, whereas SOA is an architectural style to connect systems.

Page 20: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Why Microservices vs. SOABoth SOA and microservices deal with a system of services that communicate over a network, but there are differences:

The focus of SOA is on componentization and reuse

§ One or more applications (components) may support many services

§ SOA services tend to be “servants of many masters”

§ This means that a change to a SOA service might impact multiple consumers

The focus of microservices is on breaking down a potentially monolithic application into smaller, more manageable components

– With the objective of more flexible, decoupled, faster development

– Challenges here relate to needing good DevOps, management views, and controls

Data

Service

Orchestration

Microservicesapplication 1

Data

Microservicesapplication 2

Data

Microservicesapplication 3

Data

Microservicesapplication 4

Data

Page 21: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Monolithic vs microservices architecture

“An Overview of Microservices Architecture” by Khoa Dinhhttp://khoadinh.github.io/2015/05/01/microservices-architecture-overview.html

Server side

Client side

Code is runin the sameprocess

Web client IoT Mobile client

Relationaldatabase

Create, retrieve, update, and delete

Monolithic application

Repositories

Business Logic

JSON Notifications HTTP, WebSocket

Server side

Client side

Web client IoT Mobile client

SQL

HTTP

JSON Notifications HTTP, WebSocket

API gateway

Service

Service Service

HTTP

SQL

Service

NoSQL

Messagequeue

Service

Subscribe

Publish

Page 22: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Microservices Reference Architecture

22

https://www.ibm.com/cloud/garage/architectures/microservices/0_1

Page 23: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Traffic Management with ISTIO (Service Mesh) using the IBM Cloud Kubernetes Service

23https://github.com/IBM/microservices-traffic-management-using-istio?cm_mc_uid=55118066466315017667874&cm_mc_sid_50200000=1502737450

Page 24: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government
Page 25: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

(Functions)

Page 26: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Accelerate app modernization using IBM Cloud Private

26

Strategic Value:

Ø Rapid Innovation

Ø Hybrid Integration

Ø Management & Compliance

Ø Investment Leverage

Ø Microservice Portability

Your choice of infrastructure:

IBM Z

Kubernetes Container Platform

Core Operational Services

IBM Middleware, Data, Analyticsand Developer Services

Page 27: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Q: How far along is your agency in adopting the following development practices?(Select the farthest stage your agency has reached implementing the following, as of June 2018)

* July 2018 FedScoop Gov IT Modernization Survey

Q19 How far along is your agency in adopting the following developmentpractices?(Select the farthest stage your agency has reached

implementing the following, as of June 2018)

Answered: 169 Skipped: 0

19%

32

44%

75

18%

31

15%

25

4%

6

169

19%

32

42%

71

21%

36

13%

22

5%

8

169

13%

22

40%

67

26%

44

19%

32

2%

4

169

17%

29

40%

67

24%

40

14%

24

6%

10

169

16%

27

35%

59

24%

40

19%

32

7%

12

169

12%

21

36%

60

21%

36

25%

43

5%

9

169

Not Considering Considering Testing Partially Implemented

Fully Implemented

Use

microservic

es to

develop ...

Use

microservic

es to

refactor...

Re-architec

t legacy

apps to

reduce c...

Create

microservic

es that

access d...

Expose

data

residing on

existing...

Build

services/ap

ps which

integrat...

0%

10%

20%

30%

40%

50%

19%

19%

19%

19%

19%

19%

19% 19%

19%

19%

19%

19%

19%

19%

13%

13%

13%

13%

13%

13%

13%

17%

17%

17%

17%

17%

17%

17%16%

16%

16%

16%

16%

16%

16%

12%

12%

12%

12%

12%

12%

12%

44%

44%

44%

44%

44%

44%

44%

42%

42%

42%

42%

42%

42%

42%

40%

40%

40%

40%

40%

40%

40% 40%

40%

40%

40%

40%

40%

40%

35%

35%

35%

35%

35%

35%

35% 36%

36%

36%

36%

36%

36%

36%

18%

18%

18%

18%

18%

18%

18%

21%

21%

21%

21%

21%

21%

21%

26%

26%

26%

26%

26%

26%

26%

24%

24%

24%

24%

24%

24%

24% 24%

24%

24%

24%

24%

24%

24%

21%

21%

21%

21%

21%

21%

21%

15%

15%

15%

15%

15%

15%

15%13%

13%

13%

13%

13%

13%

13%

19%

19%

19%

19%

19%

19%

19%

14%

14%

14%

14%

14%

14%

14%

19%

19%

19%

19%

19%

19%

19%

25%

25%

25%

25%

25%

25%

25%

4%

4%

4%

4%

4%

4%

4%5%

5%

5%

5%

5%

5%

5%

2%

2%

2%

2%

2%

2%

2%

6%

6%

6%

6%

6%

6%

6% 7%

7%

7%

7%

7%

7%

7%5%

5%

5%

5%

5%

5%

5%

NOTCONSIDERING

CONSIDERING TESTING PARTIALLYIMPLEMENTED

FULLYIMPLEMENTED

TOTAL

Use microservices to develop new

applications

Use microservices to refactor or

modernize existing applications

Re-architect legacy apps to reduce

cost and speed application

development

Create microservices that access data

residing on existing systems of record

Expose data residing on existing

systems of record via APIs

Build services/apps which integrate

data residing on premises with other

services that live in the cloud

19 / 22

Cloud and Container Adoption Survey

Q19 How far along is your agency in adopting the following developmentpractices?(Select the farthest stage your agency has reached

implementing the following, as of June 2018)

Answered: 169 Skipped: 0

19%

32

44%

75

18%

31

15%

25

4%

6

169

19%

32

42%

71

21%

36

13%

22

5%

8

169

13%

22

40%

67

26%

44

19%

32

2%

4

169

17%

29

40%

67

24%

40

14%

24

6%

10

169

16%

27

35%

59

24%

40

19%

32

7%

12

169

12%

21

36%

60

21%

36

25%

43

5%

9

169

Not Considering Considering Testing Partially Implemented

Fully Implemented

Use

microservic

es to

develop ...

Use

microservic

es to

refactor...

Re-architec

t legacy

apps to

reduce c...

Create

microservic

es that

access d...

Expose

data

residing on

existing...

Build

services/ap

ps which

integrat...

0%

10%

20%

30%

40%

50%

19%

19%

19%

19%

19%

19%

19% 19%

19%

19%

19%

19%

19%

19%

13%

13%

13%

13%

13%

13%

13%

17%

17%

17%

17%

17%

17%

17%16%

16%

16%

16%

16%

16%

16%

12%

12%

12%

12%

12%

12%

12%

44%

44%

44%

44%

44%

44%

44%

42%

42%

42%

42%

42%

42%

42%

40%

40%

40%

40%

40%

40%

40% 40%

40%

40%

40%

40%

40%

40%

35%

35%

35%

35%

35%

35%

35% 36%

36%

36%

36%

36%

36%

36%

18%

18%

18%

18%

18%

18%

18%

21%

21%

21%

21%

21%

21%

21%

26%

26%

26%

26%

26%

26%

26%

24%

24%

24%

24%

24%

24%

24% 24%

24%

24%

24%

24%

24%

24%

21%

21%

21%

21%

21%

21%

21%

15%

15%

15%

15%

15%

15%

15%13%

13%

13%

13%

13%

13%

13%

19%

19%

19%

19%

19%

19%

19%

14%

14%

14%

14%

14%

14%

14%

19%

19%

19%

19%

19%

19%

19%

25%

25%

25%

25%

25%

25%

25%

4%

4%

4%

4%

4%

4%

4%5%

5%

5%

5%

5%

5%

5%

2%

2%

2%

2%

2%

2%

2%

6%

6%

6%

6%

6%

6%

6% 7%

7%

7%

7%

7%

7%

7%5%

5%

5%

5%

5%

5%

5%

NOTCONSIDERING

CONSIDERING TESTING PARTIALLYIMPLEMENTED

FULLYIMPLEMENTED

TOTAL

Use microservices to develop new

applications

Use microservices to refactor or

modernize existing applications

Re-architect legacy apps to reduce

cost and speed application

development

Create microservices that access data

residing on existing systems of record

Expose data residing on existing

systems of record via APIs

Build services/apps which integrate

data residing on premises with other

services that live in the cloud

19 / 22

Cloud and Container Adoption Survey

Q19 How far along is your agency in adopting the following developmentpractices?(Select the farthest stage your agency has reached

implementing the following, as of June 2018)

Answered: 169 Skipped: 0

19%

32

44%

75

18%

31

15%

25

4%

6

169

19%

32

42%

71

21%

36

13%

22

5%

8

169

13%

22

40%

67

26%

44

19%

32

2%

4

169

17%

29

40%

67

24%

40

14%

24

6%

10

169

16%

27

35%

59

24%

40

19%

32

7%

12

169

12%

21

36%

60

21%

36

25%

43

5%

9

169

Not Considering Considering Testing Partially Implemented

Fully Implemented

Use

microservic

es to

develop ...

Use

microservic

es to

refactor...

Re-architec

t legacy

apps to

reduce c...

Create

microservic

es that

access d...

Expose

data

residing on

existing...

Build

services/ap

ps which

integrat...

0%

10%

20%

30%

40%

50%

19%

19%

19%

19%

19%

19%

19% 19%

19%

19%

19%

19%

19%

19%

13%

13%

13%

13%

13%

13%

13%

17%

17%

17%

17%

17%

17%

17%16%

16%

16%

16%

16%

16%

16%

12%

12%

12%

12%

12%

12%

12%

44%

44%

44%

44%

44%

44%

44%

42%

42%

42%

42%

42%

42%

42%

40%

40%

40%

40%

40%

40%

40% 40%

40%

40%

40%

40%

40%

40%

35%

35%

35%

35%

35%

35%

35% 36%

36%

36%

36%

36%

36%

36%

18%

18%

18%

18%

18%

18%

18%

21%

21%

21%

21%

21%

21%

21%

26%

26%

26%

26%

26%

26%

26%

24%

24%

24%

24%

24%

24%

24% 24%

24%

24%

24%

24%

24%

24%

21%

21%

21%

21%

21%

21%

21%

15%

15%

15%

15%

15%

15%

15%13%

13%

13%

13%

13%

13%

13%

19%

19%

19%

19%

19%

19%

19%

14%

14%

14%

14%

14%

14%

14%

19%

19%

19%

19%

19%

19%

19%

25%

25%

25%

25%

25%

25%

25%

4%

4%

4%

4%

4%

4%

4%5%

5%

5%

5%

5%

5%

5%

2%

2%

2%

2%

2%

2%

2%

6%

6%

6%

6%

6%

6%

6% 7%

7%

7%

7%

7%

7%

7%5%

5%

5%

5%

5%

5%

5%

NOTCONSIDERING

CONSIDERING TESTING PARTIALLYIMPLEMENTED

FULLYIMPLEMENTED

TOTAL

Use microservices to develop new

applications

Use microservices to refactor or

modernize existing applications

Re-architect legacy apps to reduce

cost and speed application

development

Create microservices that access data

residing on existing systems of record

Expose data residing on existing

systems of record via APIs

Build services/apps which integrate

data residing on premises with other

services that live in the cloud

19 / 22

Cloud and Container Adoption Survey

Use microservices to develop new applications

Base: 169

Predominantly gov’t run & owned data center(s) (in-house)

Predominantly private cloud (managed by 3rd party)

Predominantly community cloud (for fed workloads)

Predominantly public cloud (i.e. commercial cloud)

Hybrid (IT environment using both private and public cloud)

Agencies that invest more in a hybrid cloud model are the furthest along in testing or implementing microservices for new applications, although a significant portion of those investing “in-house” have also implemented those services.*

Current Agency Adoption of Microservices for new application development

Page 28: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

https://twitter.com/adrianco/status/441883572618948608

Shifting Complexity – Architecture Matters

“Twitter microservices map looks just like the Netflix one. We called this the ‘Death Star’ diagram”

— Adrian Cockcroftvia twitter

Page 29: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Unit title29

Page 30: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

Blank Separator -BackUp

30Think CityName / DOC ID / Month XX, 2018 / © 2018 IBM Corporation

Page 31: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

[email protected]

Info Sheet: PatternsCore patterns• Monolithic architecture• Microservice architecture

Decomposition• Decompose by business capability• Decompose by subdomain

Deployment patterns• Multiple service instances per host• Service instance per host• Service instance per VM• Service instance per Container• Serverless deployment• Service deployment platform

Cross cutting concerns• Microservice chassis• Externalized configuration

Communication style• Remote Procedure Invocation• Messaging• Domain-specific protocol

External API• API gateway• Backend for front-end

Security• Access Token

Service discovery• Client-side discovery• Server-side discovery• Service registry• Self registration• 3rd party registration

Data management• Database per Service• Shared database• Saga • Event sourcing• Transaction log tailing• Database triggers• Application events• CQRS• API composition

Observability• Log aggregation• Application metrics• Audit logging• Distributed tracing• Exception tracking• Health check API

UI patterns• Server-side page fragment composition• Client-side UI composition

Testing• Service Component Test• Service Integration Contract Test

Reliability• Circuit Breaker

Source: http://microservices.io/patterns/index.html

Patterns Map

Page 32: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

What makes Microservices Architectures different

The core architectural differences can be inspected through an example. In a simple and classical two-tier architecture, assume that App Noderepresents the application tier, with some business logic (Figure 1). It exposes services to the client and uses data services offered by the database.

The application may already be structured via components on the inside. Even with the best practices and intentions in place, the most well structured applications degrade in structure over time. This loss in structure decreases maintainability with all its consequences, which is one of the key issues being addressed by Microservices.

If the Microservices architectural style is used, the solution architecture would look like this: Application components are separated from each other in every sense. Not just from an application perspective but also from runtime and data perspectives (Figure 3). Application components are separated all the way down to the persistence layer, placed into containers, and the communication between them is replaced by communication via API.

This decomposition allows for creating smaller, inherently less complex, easier to develop, maintain, deploy and run pieces of software.

[1] How to build performant microservice architectures, IBM (S. Sengul, M. Pichler)

Monoliths are broken up… …into discrete services

Page 33: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

IBM cloud data centers dedicated to federal clients with varying levels of compliance depending on mission

33

• Raleigh, NC• Rocket Center, WV• Boulder, CO• Ashburn, VA• Dallas, TX

Page 34: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

34© 2018 IBM Corporation

Page 35: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

35© 2018 IBM Corporation

Page 36: Using microservices to modernize and future proof ...digitalgovernment.com/wp-content/uploads/2018/08/Session5-Andra… · Using microservices to modernize and future proof government

36