using microservices to modernize and future proof...
TRANSCRIPT
© 2018 IBM Corporation
Using microservices to modernize and future proof government IT systemsAndras R. Szakal, VP & CTOIBM Federal Cloud & AIU.S. Federal Market
2© 2018 IBM Corporation
Flexibility Agility
4
AdaptiveAutomation
DigitalTransformation
Application modernizationaccelerates Digital Transformation
Application modernizationü Improves developer
productivityü Increases operational
efficiency ü Reduces cost to build new
capabilities ü Expands capacity delivered
in a short time
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:
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.
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
9© 2018 IBM Corporation
10© 2018 IBM Corporation
11
• Embracing change in software delivery with DevOps• “Shift right” development• Accelerating delivery• Embracing multi-cloud• “Shift left” operations• DevOps insights
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
13
“Shift right” development & the changing developer experience• Create and Deliver new
applications and services quickly• By using a microservice
architectural style
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
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
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
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
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
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.
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
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
Microservices Reference Architecture
22
https://www.ibm.com/cloud/garage/architectures/microservices/0_1
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
(Functions)
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
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
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
Unit title29
Blank Separator -BackUp
30Think CityName / DOC ID / Month XX, 2018 / © 2018 IBM Corporation
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
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
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
34© 2018 IBM Corporation
35© 2018 IBM Corporation
36