Will Microservices Die?
—
Rich Hagarty
Developer Advocate, IBM
@rhagarty8
2
● Myths and Facts about Microservices
● Things you should know about Microservices
● The future of Microservices
● Java Performance?
Agenda
3
4
Need a name for the current non-
microservices
Let’s call it Monolith!
5
● Old fashioned?
● Problematic?
● Evil?
Monolith
6
● Maintainable and testable
● Independently deployable
● Loosely coupled
● Organized around business capabilities
● Owned by a small team
What is Microservice?
https://microservices.io/
7
Microservice Myth
8
● The smaller the better
● The more the merrier
Microservice Myth 1
9
● Microservices are the destiny
● Monolith will have to be migrated to Microservices
Microservice Myth 2
10
● Microservices making developers job easier
● Microservices increase productivity
● Microservices boost performance
● Microservices are fast
Microservice Myth 3
11
Monolith -> Microservice -> Monolith
https://www.infoq.com/news/2020/04/microservices-back-again/
12
Microservice Facts
13
Microservice Fact 1
● Independent deployment
● Need continuous deployment pipeline
● Owned by a small team
14
Microservice Fact 2
● No code sharing
● No database sharing
15
Microservice Fact 3
● Language agnostic: Java, Go, Python, etc
16
Things you should know if you do
Microservices
17
Is Microservice the default answer for
your problems?
18
Is Microservice the default answer for
your problems?
NO
19
Microservice needs a GOOD
architecture
20
● DDD and/or EDD not Resume Driven Design (RDD)
● Day2 Operation ever so important
● Standard programming model to interact with other microservices
● Corresponding team culture
● Be mindful on refactoring monolith to microservices
Microservice Architecture
Checkout IBM Mono2Micro – uses AI to refactor monolith to microservices
21
What is DDD?
https://martinfowler.com/bliki/BoundedContext.html
BoundedContext
Domain-Driven Design is an approach to software development that centres
the development on programming a domain model that has a rich
understanding of the processes and rules of a domain.
22
What is EDD?
Services communicate with each other via
messages
Message Broker
ms1 ms2
ms3
23
Monolith and Microservice will coexist
24
What you need is a Cloud Native
Application!
25
What are Cloud Native
Applications?
26
12 Factor App Methodology
https://12factor.net/
27
The original 12 factors:
https://12factor.net/
28
Revised 15 factors
https://www.oreilly.com/library/view/beyond-the-twelve-factor/9781492042631/
Cloud Native applications
1. RESTful – like cattle not pet, communicative
2. Configurable
3. Fault tolerance
4. Can be discovered
5. Secure
6. Traceable, monitorable
7. Able to communicate with the cloud infrastructure
30
Cloud Native API Standards
Open Liberty
Some runtimes
Jakarta EE 10 Platform
Updated
Not Updated
New
Authorization 3.0
Activation 2.1
Batch 2.1
Connectors 2.1
Mail 2.1
Messaging 3.1
Enterprise Beans 4.0
RESTful Web Services 3.1
JSON Processing 2.1
JSON Binding 3.0
Annotations 2.1
Interceptors 2.1
Dependency Injection 2.0
Servlet 6.0
Server Pages 3.1
Expression Language 5.0
Debugging Support 2.0
Standard Tag Libraries 3.0
Faces 4.0
WebSocket 2.1
Enterprise Beans Lite 4.0
Persistence 3.1
Transactions 2.0
Managed Beans 2.0
CDI 4.0
Authentication 3.0
Concurrency 3.0
Security 3.0
Bean Validation 3.0
Jakarta EE 10 Web Profile
Updated
Not Updated
New
RESTful Web Services 3.1
JSON Processing 2.1
JSON Binding 3.0
Annotations 2.1
Interceptors 2.1
Dependency Injection 2.0
Servlet 6.0
Server Pages 3.1
Expression Language 5.0
Debugging Support 2.0
Standard Tag Libraries 3.0
Faces 4.0
WebSocket 2.1
Enterprise Beans Lite 4.0
Persistence 3.1
Transactions 2.0
Managed Beans 2.0
CDI 4.0
Authentication 3.0
Concurrency 3.0
Security 3.0
Bean Validation 3.0
Jakarta EE 10 Core Profile
Updated
Not Updated
New
RESTful Web Services 3.1
JSON Processing 2.1
JSON Binding 3.0
Annotations 2.1
CDI Lite 4.0
Interceptors 2.1
Dependency Injection 2.0
Health Metrics
Fault
Tolerance
OpenAPI
Config
Open
Tracing
JWT
Jakarta
JSON-B
Rest Client
Jakarta
CDI
Jakarta
REST
Jakarta
JSON-P
Core
Reactive
Messaging
Integrate
Observe
GraphQL
Telemetry
https://microprofile.io/
Cloud Native Java APIs
35
Cloud Native applications into Cloud
natively
36
Containerization
37
38
Cloud Native Application Deployment
39
Is Cloud Native Application obsolete
when Serverless appears?
40
● It often has servers – too minor to be noticed
● Pay as you Go pattern: applicable to public cloud
● Occasionally running and fast operations: scaling to zero
What is Serverless?
41
Fast startup
Graalvm: build time compilation
Linux CRIU technology
OpenJ9 and Open Liberty InstantOn
Public Cloud Serverless
IBM Code engine
Amazon Lambda
Google Function
Azure Function
Cloud Native Application Serverless Enabled
42
Is Cloud Native Application obsolete
when Serverless appears?
NO
43
Is Java a great fit for microservices?
(specifically auto-scaling and serverless)
44
Is Java a great fit for microservices?
(specifically auto-scaling and serverless)
with the right technology
45
Wed 4:55PM
The Next Frontier in Open Source Compilers:
Just-in-time complication as a Service
IBM sessions
46
● Do not use microservices as a goal
● Define your problems first
● Monolith is NOT evil
● Use best practices if you need to do microservices
● Microservices and Monolith will coexist: build cloud native
applications
● Cloud Native Applications supports serverless
● Java can work with microservices and serverless
Take Away
@rhagarty8

Will Microservices Die.pdf