8. 8
● Maintainable and testable
● Independently deployable
● Loosely coupled
● Organized around business capabilities
● Owned by a small team
What is Microservice?
https://microservices.io/
9. 9
● 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
https://www.ibm.com/cloud/mono2micro
10. 10
● DDD is hard
● Team culture is difficult to change
● Convert Monolith to microservices is hard if done manually
● No resources to convert Monolith to microservices
Microservices difficulties
18. 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
27. 27
● It often has servers – too minor to be noticed
● Pay as you Go pattern: applicable to public cloud
● Occasionally running; fast operations
● scaling to zero
What is Serverless?
28. Cloud Native Runtimes
28
The JVM was designed with portability and flexibility
in mind. This meant that bytecodes were loaded
lazily and optimized while the application was
running. The result was slower startup times but
high peak throughput. The cloud demands a shift in
the performance characteristics of JVMs.
Solutions:
- Dynamic AOT compilation and class metadata
persistence
- Static compilation – native image
Native Image JDK
Positives
1. Extremely fast startup time (less than 50 ms)
2. Small memory footprint (less than 30mb) on
startup
3. Small on-disk footprint (no bytecodes, no
interpreter, no JIT etc.)
4. Very small container image size
5. Native OS executable image
Negatives
1. Only runs a subset of existing Java workloads
and tooling
• Developer experience mismatch
2. Not designed for intensive / long running
applications
3. Peak throughput is much lower than that of JVM
mode
4. GC technology is not as good as in JVM mode
5. Requires work to keep up with new Java
versions
6. Different technology = different bugs and
behavior
Positives
1. Full Java capabilities available
• Dynamic class loading,
Reflection,
Serialization
• Monitoring agents, JNI
• ….
2. Runs full suite of applications and
tooling
3. Dynamically adapts to program
behavior
•AOT, Interpreter, JIT
compiler
Negatives
1. Runtime memory use typically
higher
2. Slower startup
3. Larger on-disk footprint
30. 30
Fast startup
Graalvm: build time compilation
Linux CRIU technology
OpenJ9 and Open Liberty InstantOn
Public Cloud Serverless
IBM Cloud Code engine
Amazon Lambda
Google Function
Azure Function
Cloud Native Application Serverless Enabled
https://openliberty.io/blog/2022/09/29/instant-on-beta.html
InstantOn