9. Matt Stine
Pivotal
“Cloud-native is an approach to
building and running applications that
exploits the advantages of the cloud
computing delivery model.”
9
10. Adrian Cockcroft
VP Cloud Architecture Strategy at AWS, @adrianco
“Cloud native architectures take full
advantage of on-demand delivery,
global deployment, elasticity, and
higher-level services.”
10
11. Dianne Marsh
Director of Engineering, Netflix @dmarsh
Presentation Kubecon 2017 https://www.youtube.com/watch?v=mfFtfaulCtg
“The culture impacts the tech
And tech can impact the culture”
“... and we’re only just getting started”
11
12. Cloud Native Computing Foundation (CNCF)
official documentation https://github.com/cncf/toc/blob/master/DEFINITION.md
“Cloud native technologies empower
organizations to build and run scalable
applications in modern, dynamic
environments such as public, private, and
hybrid clouds.”
12
13. What do you need to
become Cloud-Native?
➤ Think of it as “Philia”, “attraction”, “affinity”
and “compatible”
➤ Appropriate technology choices:
○ Elasticity,High availability,
○ Distributed computing,
○ Resilience to failure
➤ Appropriate architecture
➤ Appropriate constraints
➤ Sensitivity to Conway’s Law
➤ Teamwork and THE THREE WAYS*
13
15. @peter_pilgrim - http://bit.ly/2cloudnativejava
15
Programming environment available free for developers
Palo Alto, CA - January 23, 1996 - JavaSoft, the newly-formed
operating company of Sun Microsystems, Inc., today announced that the
Java™ 1.0 programming environment is now available for download at
http://java.sun.com.
"Java's write-once-run-everywhere capability along with its easy
accessibility have propelled the software and Internet communities to
embrace it as the de facto standard for writing applications for complex
networks," said Alan Baratz, JavaSoft's newly appointed president. "We're
delighted to invite developers to download Java 1.0 immediately and start
building the next killer application."
https://tech-insider.org/java/research/1996/0123.html
16. WORA
Write Once Run Anywhere: Java’s promise*
A broken promise for mobile, embedded and IoT devices since 2005
16
17. Biggest issue in 1995 to 2005 was the portability of code
➤ Windows, Mac OS X, Linux, UNIX (mainly C / C++)
➤ Embedded devices
Portability
17
18. Easy Networking
Java 1.0 had easy networking built-in
➤ Sockets, TCP and UDP support
➤ HTTP, HTML
18
19. Security
Java 1.x had notions of security
➤ Applet, Sandbox, Remote byte codes
➤ Virtual Machine (container)
19
20. Revolutionary features
1. Garbage Collection built-in - no malloc() or free()
2. Software Development Kit (SDK) - useful collection library
3. Reasonable built-in graphics library
20
22. @peter_pilgrim - http://bit.ly/2cloudnativejava
Java == Technology + People + Context
Java is just a means to getting the result for stakeholders
Why are we building it?
What are we building?
How are we building it?
22
23. @peter_pilgrim - http://bit.ly/2cloudnativejava
High performance teams
➤ Agile team - High performance trustworthy people with great belief
➤ Self reliant members - practicing proactive and empathic behaviours
➤ Egoless - story-centric led, democratic and co-operative
➤ Constant improvements - Small feedback loops in both tech and people
➤ Supportive and caring - every so often, personal circumstances will intervene
➤ Fun! - wind downs, regular lunch and/or evening event
23
30. 30
N
e
t
w
o
r
k
The New School
➤ Micro Service Oriented Architecture M/SOA
➤ Orchestration (Kubernetes / Openshift)
➤ 200+ nodes (Fortune 500 companies 2019)
31. @peter_pilgrim - http://bit.ly/2cloudnativejava
What did Java EE do for us?
Standards
JCP
JSR
Open JDK
Jakarta EE
Open Source
Source code
Tomcat
Hibernate
Spring Framework
Market Players +
Jobs
Employment
Contracts
Demand
Career
Social
Community
User Groups
Conferences
Commonality
Leadership
Node
Node
>
32. @peter_pilgrim - http://bit.ly/2cloudnativejava
What did Java EE do for us?
➤ The Servlet container - dynamic web content
○ Java Servlets => Tomcat
○ Java Server Pages (JSP) => dynamic web components
○ Java Server Faces (JSF)
○ Java RESTful API (JAX-RS)
○ Bean Validation
○ Context & Dependency Injection (CDI)
32
33. @peter_pilgrim - http://bit.ly/2cloudnativejava
What did Java EE do for us?
➤ The EJB container - container for poolable remotable functions
○ Java Messaging Service (JMS) => peer-to-peer, pub / sub messaging
○ Java Persistence => JPA and JDBC
○ Enterprise Java Beans (EJB) => local / remote endpoints
○ Transactions (JTS and JTA)
○ Asynchronous operations (almost free)
33
34. @peter_pilgrim - http://bit.ly/2cloudnativejava
Java EE
PROS
➤ Elementary application containers (Servlet and EJB)
➤ Suitable for low and medium volume websites
CONS
➤ Lack of scalability (both horizontally and vertically)
➤ Hard to achieve High Availability (HA) with supreme high volume
34
35. @peter_pilgrim - http://bit.ly/2cloudnativejava
Enter “container-less” JAR circa 2010
➤ Uber-JARs
➤ DIY Tomcat and Jetty embedded containers
➤ Work around System Administrators, Ops IT - WebLogic Servers
➤ Fine examples of so-called guerilla engineering
35
38. @peter_pilgrim - http://bit.ly/2cloudnativejava
Social networking and high volume content
In the mid-2000, social networking exploded
Scale and high-availability (HA) became supremely important!
Monolithic architecture became cumbersome and overloaded
38
39. Josh Evans - Mastering Chaos - A Netflix Guide to Microservices
Former vice president of engineering at Netflix
“A microservice is this extreme
reaction to monolithic applications ...
it is an evolutionary approach to a
set of specific problems.”
39
40. Monolithic applications (Full Server)
Payara Full
Application Server
Oracle 11g
Database
Server
Network
Application EAR
JAR
WAR
40 40
47. @peter_pilgrim - http://bit.ly/2cloudnativejava
Spring Boot
47
Spin off project from Spring Framework circa 2012
➤ Embedded Servlet container (Tomcat or Jetty)
➤ Spring Inversion-of-Control (IoC) style
➤ Spring RESTful service
➤ Spring Model View Controller (MVC)
48. @peter_pilgrim - http://bit.ly/2cloudnativejava
Spring Boot
➤ Extended configuration using Java annotations
➤ Removed XML deployment and lifecycle configuration
➤ Uber-JAR
○ (WAR rebuilt into a single runnable JAR file)
48
49. @peter_pilgrim - http://bit.ly/2cloudnativejava
Spring Boot
PROS
➤ Easy to understand
➤ Many Java EE developers already experienced (on-the-market)
➤ Just enough compatibility with Java EE to work
CONS
➤ Vendor lock-in
➤ Neither JAX RS or CDI are not supported (or ever will be)
49
50. @peter_pilgrim - http://bit.ly/2cloudnativejava
Spring Boot
For enterprise Java developers, Spring Boot is the market leader
Each step to cloud-native services from Spring / Pivotal
➤ Spring Cloud
➤ Spring Reactive (WebFlux / Reactor) proposition
➤ Pivotal Cloud Foundry
However, see my recommendations later*
50
61. Challengers in Java VM
platform development space
61
➤ Go language and ecosystem
➤ Node JS
➤ Python ML space
➤ Other vendor-lock solutions
○ AWS Beanstalk
○ Programming language specific solutions
○ etc
62. @peter_pilgrim - http://bit.ly/2cloudnativejava
GO language and infrastructure
Why would a business look at Go Language?
➤ No persistent required - no database
➤ High concurrency function (Goroutines)
➤ Compile down to native machine code (stronger type safety)
➤ API gateway and service aggregation
➤ Fast startup and responsiveness
62
63. @peter_pilgrim - http://bit.ly/2cloudnativejava
Node JS
Why would a business rely on NodeJS on the server side?
➤ Serverless - temporal flow - short-lived data for transformation
➤ Stateless - no conversational state
➤ Massive scale and density
➤ Data Analysis and Machine Learning
(e.g. Serverless / AWS Lambdas or Azure functions)
63
64. @peter_pilgrim - http://bit.ly/2cloudnativejava
Are Java containers too bulky for some situations?
Serverless function (FaaS) architecture are examples
➤ Need taking over traditional Java development solutions
➤ TTM (Time To Market) and feature-fast delivery
➤ Experimental, flexible and exploratory architectures
Java (and JVM) is not necessarily the solution for all requirements
Companies are waking up to these new ideas
64
67. @peter_pilgrim - http://bit.ly/2cloudnativejava
Software as-a Service
67
➤ SaaS is hosted by cloud provider
○ primarily designed for the end-user
○ lowest infrastructure overhead and maintenance costs
○ Deliver over web content and/or RESTful API
➤ SaaS has limited configuration
○ DSL - domain specific language
○ User interface / experience branding
○ Plugins
69. @peter_pilgrim - http://bit.ly/2cloudnativejava
Platform as a Service
➤ PaaS abstracts a framework across the multiple cloud providers
➤ PaaS supports cloud-native developers with API:
○ Common scalability
○ High-availability (load balancers)
○ Message data queues and event processing I/O
○ Data resilience (failure over / service discovery / eventual consistency)
○ Adaptive databases with replication sets
➤ Some PaaS solutions in theory allow cloud-native portability
○ Migrate application from one cloud provider to another (exit plan)*
69
70. @peter_pilgrim - http://bit.ly/2cloudnativejava
Platform as a Service (PaaS) examples
Heroku
heroku.com
OpenShift
apps.google.com
Pivotal
Cloud
Foundry
pivotal.io/platform
Fortune 500 businesses develop cloud-native applications using a PaaS
71. @peter_pilgrim - http://bit.ly/2cloudnativejava
Infrastructure as a Service
Customer takes (full*) responsibility for infrastructure provisioning
➤ Elastic instances
➤ Network connectivity between nodes, subnets, security
➤ Load balancing, NATs, IGW, availability and (auto-)scalability
➤ Monitoring, metrics and alerts
➤ Application deployment and auto-restart
Cloud host provider is responsible for physical hardware availability
*Sometimes, this is untrue: infrastructure that delegate to an AWS Fargate on EKS is an example
71
72. @peter_pilgrim - http://bit.ly/2cloudnativejava
Infrastructure as a Service (IaaS) examples
Google
Cloud
Platform
cloud.google.com
Microsoft
Azure
azure.microsoft.com
Amazon
Web Services
aws.amazon.com
Fortune 500 businesses develop cloud-native applications using a PaaS
73. Docker machine
Linux operating system
Java Virtual Machine
What is a container of a container of a container?
Application
(Embedded Server)
73 73
75. @peter_pilgrim - http://bit.ly/2cloudnativejava
External Container Technology
➤ Docker: the de-facto successful implementation of
containerisation technology, packaging of apps, libraries & OS
➤ Docker composition enables quick assembly, fast deployment
➤ Docker processes means that restarts are cheap.
○ (Okay, we need to throw in some Kubernetes in there!)
Whole premise of a redeployment of WAR and EAR files is gone!
75
76. 76
Introduction to Kubernetes
(K8S)
➤ Kubernetes orchestrates containers
➤ Containers are Docker instances
➤ Support multiple cloud and bare-metal
environments
➤ A Greek term for “ship’s pilot” or
“helmsman”
➤ Google first create Borg and K8S is a
second version implementation
(vis-a-vis Fred Brooks)
➤ Kubernetes is open source and written
in the Go language
77. @peter_pilgrim - http://bit.ly/2cloudnativejava
Key features of Kubernetes
➤ Elasticity support with horizontal scaling (automatic and manual)
➤ Resilience
➤ Automatic restart
➤ Scheduling across host providers
➤ Built-in load balancer
➤ Rolling upgrades (clever namespacing)
77
78. @peter_pilgrim - http://bit.ly/2cloudnativejava
Namespace
➤ Method to
cluster for
environment
➤ Authorisation
➤ Policy
management
➤ Naming of pod
clusters
Kubernetes Terminology
Pod
➤ Managed
lifecycle
➤ Docker
Containers 1+
➤ Shared IP
➤ Same host
(AWS EC2
instance)
Label
➤ Annotation
principle
➤ Key-value
pairs for
Kubernetes
objects
➤ Enabler for
Blue / Green
deployments
Replica Set /
Deployment
➤ Replication
controller
➤ Desired
instance count
➤ Health check
➤ Management
of pods
➤ Load balancer
Persistent
Volume
➤ Network
available
storage
➤ Single or
multiple node
clusters
80. @peter_pilgrim - http://bit.ly/2cloudnativejava
Learn Kubernetes on your local workstation
Localhost development with Minikube (https://kubernetes.io/docs/tasks/tools/install-minikube/ )
Pros:
➤ Tool make your PC a single-node Kubernetes cluster
➤ Open source tool: Linux, Mac OS and Windows
➤ Lean and experiment - practice kubectl command line
➤ Proof of concept - evaluate advance extension features
Cons:
➤ Features that require multiple-node will not work in Minikube
brew cask install minikube
80
81. @peter_pilgrim - http://bit.ly/2cloudnativejava
Learn Kubernetes from only one provider to learn all
Once you learn it, you can run it on any cloud provider
➤ GKE from Google Cloud Platform
➤ AKS from Microsoft Azure
➤ EKS from Amazon Web Services
81
82. @peter_pilgrim - http://bit.ly/2cloudnativejava
Kubernetes CLI
Learn kubectl (Kubernetes control admin tool) from CLI
> kubectl get namespaces
> kubectl get pods -n peatspace
> kubectl run peatboot --image=peat/peatboot --port=8080
> kubectl logs peatboot-qz794
82
86. @peter_pilgrim - http://bit.ly/2cloudnativejava
The Three Ways - Phoenix Project
86
➤ Enable fast left-to-right flow
○ from Development to Operations IT to Customer
➤ Enable fast, coherent and constant feedback
○ Create quality at source, embed knowledge & achieve safety
➤ Enable high-trust people culture
○ Scientific approach to experimentation and organisation learning
88. Dr. Venkat Subramanian
Author, Developer and Professor
“Java was born in a perfect storm”
“I’m betting on Java being one of the most
vibrant languages for asynchronous
programming.”
88
90. Jakarta EE 8 - Highlights
➤ https://jakarta.ee/
➤ Open-Source Cloud-Native Java
➤ Full compatibility with Java EE 8
➤ Open TCK
○ Licenses
○ Processes
➤ Active community
90
91. @peter_pilgrim - http://bit.ly/2cloudnativejava
Microprofile and Jakarta EE
➤ Oracle reacted to the industry concern 2016
➤ Community created the Microprofile project 2016
➤ Oracle donated the Java EE to Eclipse Foundation 2017
➤ Eclipse Foundation created the Jakarta EE brand 2018
➤ Oracle transferred the intellectual property to Eclipse 2018
➤ 39 Source code repos and TCK transferred to Eclipse 2018
91
92. @peter_pilgrim - http://bit.ly/2cloudnativejava
Jakarta EE and Microprofile status
➤ Oracle rush-released Java EE 8 in October 2017
➤ Eclipse Foundation only released Jakarta EE 8, September 2019
➤ Microprofile V3.0 released in July 2019
92
93. No change since last release v2.2
93
Open Tracing
(Swagger) 1.3
Open API
(Logging) 1.1
REST Client 1.3 Configuration 1.3
Fault Tolerance
(circuit breaker) 1.3
Metrics 2.0
JWT Propagation
(security) 1.1
Health Check 2.0
CDI 2.0 JSON-P 1.1 JAX-RS 2.1 JSON-B 1.0
New in v3.0
94. No change since last release v2.2
94
Open Tracing
(Swagger) 1.3
Open API
(Logging) 1.1
REST Client 1.3 Configuration 1.3
Fault Tolerance
(circuit breaker) 1.3
Metrics 2.0
JWT Propagation
(security) 1.1
Health Check 2.0
CDI 2.0 JSON-P 1.1 JAX-RS 2.1 JSON-B 1.0
New in v3.0
Is this impressive progress enough for
developers, designers, architects and DevOps?
95. Microprofile developer job adverts:
where are they?*
95
*On the 24th September 2019, I checked UK contract and permanent job hunting sites: jobserve.com,
cwjobs.com, totaljobs.com and indeed.com/uk. I found 0 jobs advertising Microprofile or Jakarta EE
technologies
97. @peter_pilgrim - http://bit.ly/2cloudnativejava
Reactive
Programming
➤ Standardise
RXJava /
Reactor
➤ Oracle already
researching
Fibers
Jakarta EE - possible ways forward
Modularity
➤ Remove EJB
container
➤ Delivery
modular
specifications
➤ Abstract
Dependency
Injection
➤ Gather input
from Spring
Boot team
APIs
➤ Gain NoSQL
support
➤ Lambdas first
class citizens
➤ Standardise
event queue /
stream
(Kafka)
➤ Improve Java
➤ Watch Kotlin
Containerless
➤ Overdue
standard API
for Embedded
containers
➤ Standard JAR
file format
➤ Docker
container
metadata
Infrastructure
➤ Cloud
Provider
Bindings
➤ Single or
multiple node
clusters
➤ Discuss with
the CNCF
98. No change since last release v2.2
98
Open Tracing
(Swagger) 1.3
Open API
(Logging) 1.1
REST Client 1.3 Configuration 1.3
Fault Tolerance
(circuit breaker) 1.3
Metrics 2.0
JWT Propagation
(security) 1.1
Health Check 2.0
CDI 2.0 JSON-P 1.1 JAX-RS 2.1 JSON-B 1.0
New in Microprofile v3.0
NoSQL*
Event
Streaming*
Orchestration
Metadata (IaC)*
Serverless
(FaaS)*
My Preferences / My Wishlist*
99. @peter_pilgrim - http://bit.ly/2cloudnativejava
IMHO Jakarta EE requires
➤ Standard Embedded Server Server API
○ Easy-to-use provisioning, execution and monitoring
➤ Standard Testing Framework
○ Seamless concise, easy-to-use and build standard testing
○ Acknowledge testing pyramid best practice
➤ Distributed Streaming - improved messaging semantics
○ talk with Kafka community and others
99
100. @peter_pilgrim - http://bit.ly/2cloudnativejava
Jakarta EE must consider DevOps, be cloud aware
➤ Needs to be Cloud Environment aware
○ Where am I running? Docker, AWS, PCF
➤ Cloud metadata support
○ Talk with folk responsible for Docker, Kubernetes and PCF
➤ Infrastructure as Code Support
○ Talk with Hashicorp: Terraform, Vault; Ansible, etc
100
101. @peter_pilgrim - http://bit.ly/2cloudnativejava
Jakarta EE support for alternative Java languages
Late 2019, but these are really nice-to-haves:
➤ Look at the growth of Kotlin especially DSL support
➤ Seriously, take advantage of Java 8 Lambdas!
➤ Add support Java 8 Streams, finally and go reactive
○ Look at RX Java and Spring Reactor framework e.g. Mono, WebFlux
➤ Keep abreast of whatever Brian Goetz is adding to Java!
101
102. Graal VM - The Future Now
Imagine that? Writing a VM in Java, what? Are you crazy?
102
103. @peter_pilgrim - http://bit.ly/2cloudnativejava
Future Cloud-Native Java
Graal VM
graalvm.org
Next generation
Universal VM
Polyglot languages
JVM and non-JVM
JIT compilation
Native code
Quarkus
quarkus.io
Kubernete Native
JVM stack
Built-on Graal VM
Fast boot times
FN Project
fnproject.io
FaaS compute
platform
Multiple cloud
providers
Serverless
Docker support
Helidon
helidon.io
Reactive web server
Based on Netty
Microprofile support
Micro framework
105. (J)VM startup-time now is a thing (it matters)
Generate native images from Java*
Container complexity will increase
Container density will increase
105*or from Kotlin, Scala and your favourite alternative JVM language
107. @peter_pilgrim - http://bit.ly/2cloudnativejava
Where Do You Go Next?
➤ Get behind Jakarta EE and keep pushing
➤ Push one cloud-native app to the host
➤ Learn Kubernetes and orchestration
➤ Learn alternative languages such as Kotlin, Scala or Groovy
➤ Checkout the Graal VM platform
➤ Stay Free*
*Song title from The Clash, album Give ‘em Enough Rope
https://en.wikipedia.org/wiki/Give_%27Em_Enough_Rope
107
108. A West African proverb - anonymous griots
“However long the night,
the dawn will break”
108
110. Shout outs and digital image attribution - Thank you!!!!
110
First, shout out to my partner in creative crime and life Terry Neason, singer,
chartreuse and diva: terryneason.co.uk and presentation tlcpowertalk.co.uk
Second, a shout to the amazing Negative Space. o/
Fantastic stock images https://negativespace.co/collection/autumn/
Dog. I got you!
Shout out to the following digital image photographers: