SlideShare a Scribd company logo
1 of 110
Download to read offline
THE MASTER MIX
Peter Pilgrim
http://bit.ly/2cloudnativejava
1
Cloud native Java -
are we there yet?
The quest for the magical enterprise relevance diamonds
PETER PILGRIM
GO TECH WORLD - Bucharest, Romania - 2nd October 2019 - 14:30
PILGRIM ENGINEERING ARCHITECTURE TECHNOLOGY © 2019
2
@peter_pilgrim - http://bit.ly/2cloudnativejava
Your speaker today
➤ Independent Contractor
Blog: http://xenonique.co.uk/blog/
Twitter: @peter_pilgrim
Linkedin: http://linkedin.com/in/peterpilgrim2000
➤ PILGRIM ENGINEERING ARCHITECTURE TECHNOLOGY
3
@peter_pilgrim - http://bit.ly/2cloudnativejava
Your speaker today
➤ Software developer, Java Champion
➤ Java EE technical author
➤ Development, Design and Architecture
➤ I normally contract with e-commerce clients
4
My published works so far
5
My clients
6
@peter_pilgrim - http://bit.ly/2cloudnativejava
****Agenda****
Cloud Native
Java EE
Microservices
Kubernetes
Jakarta EE
Way Forward
7
1
Cloud-Native
8
Matt Stine
Pivotal
“Cloud-native is an approach to
building and running applications that
exploits the advantages of the cloud
computing delivery model.”
9
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
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
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
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
Once uponatime…1995
14
@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
WORA
Write Once Run Anywhere: Java’s promise*
A broken promise for mobile, embedded and IoT devices since 2005
16
Biggest issue in 1995 to 2005 was the portability of code
➤ Windows, Mac OS X, Linux, UNIX (mainly C / C++)
➤ Embedded devices
Portability
17
Easy Networking
Java 1.0 had easy networking built-in
➤ Sockets, TCP and UDP support
➤ HTTP, HTML
18
Security
Java 1.x had notions of security
➤ Applet, Sandbox, Remote byte codes
➤ Virtual Machine (container)
19
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
October2019
21
@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
@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
24
Scale!
High availability!
Secure!
@peter_pilgrim - http://bit.ly/2cloudnativejava
Cloud native - the technical challenges
On-demand
Flexible
Cost Effective
Sustainable
Reproducibility
Provisionable
Elasticity
Scale
Horizontally
Availability
Partition
Testable
Automation
Efficient
Manageable
Idempotent
Configurable
CI / CD
Pipelines
Measureable
Timely
Retrievable
Accountable
Node
Node
Node
26
Kubernetes
Kubernetes (K8s) is an open-source system for automating deployment,
scaling, and management of containerized applications.
27
2005 Application Server
(WebLogic, WebSphere, Tomcat, Resin, etcx)
2019 Orchestration Manager
(Kubernetes, Mesos, Openstack, IBM, Oracle, BYOCIMS*)
2
Enterprise Java
28
29
Mono
1
Mono
2
N
e
t
w
o
r
k
Corporate
Load
Balancer
Corporate
Database
The Old School
➤ Monolithic server with apps
➤ 1 Load balancer (round robin)
➤ 2 or 3 Federated servers (low volume)
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)
@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
>
@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
@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
@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
@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
@peter_pilgrim - http://bit.ly/2cloudnativejava
“Containerless” Java software
DropWizard
dropwizard.io
Vert X
vertx.io
Spring Boot
spring.io/projects/spri
ng-boot
Play
Framework
playframework.com
3
Microservices
37
@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
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
Monolithic applications (Full Server)
Payara Full
Application Server
Oracle 11g
Database
Server
Network
Application EAR
JAR
WAR
40 40
Monolithic applications (Tomcat)
Apache Tomcat
(Web Profile)
Application
WAR
Oracle 11g
Database
Server
Network
41 41
Microservice application (Embedded Tomcat)
Standalone
Application
(JAR)
Embedded
Tomcat Server
Oracle 11g
Database
Server
Network
42 42
$ java -jar acme-inbound-emitter.jar
43
@peter_pilgrim - http://bit.ly/2cloudnativejava
Microservices summary
An evolution response to monolithic applications
➤ separation of concerns - modularity, encapsulation
➤ scalability - horizontally scaling, workload partitioning
➤ virtualisation & elasticity - automated operations,
on-demand provisioning
44
@peter_pilgrim - http://bit.ly/2cloudnativejava
45
4
SpringBoot
46
@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)
@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
@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
@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
A quick example on
Spring Boot and PCF
51
@peter_pilgrim - http://bit.ly/2cloudnativejava
PCF - Spring Boot Microservice #1
// /coderepo/acme-inbound-emitter/manifest-parent.yml
name: acme-inbound-emitter
buildpack: https://github.com/cloudfoundry/java-buildpack.git
memory: 2048M
instances: 3
path: ./build/libs/acme-inbound-emitter-4.5.6.jar
env:
JAVA_OPTS: -Djava.security.egd=file:///dev/urandom
52
@peter_pilgrim - http://bit.ly/2cloudnativejava
PCF - Spring Boot Microservice #2
// /coderepo/acme-inbound-emitter/manifest-development.yml
inherit: manifest-parent.yml
buildpack: java_buildpack_offline
services: [ acme-redis, acme-rabbit, acme-aws-s3, acme-ha-credentials,
acme-kafka-spike ]
env:
security.user.name: MrMagic
security.user.password: WhoCalledMe
api.cloudConfigService.uri: https://dev.digital.tech.acme.com
routes:
- route: dev.digital.tech.acme.com/inbound/transfer
- route: dev.digital.tech.acme.com/inbound/pay
53
@peter_pilgrim - http://bit.ly/2cloudnativejava
PCF - Spring Boot Microservice #3
@ComponentScan(
basePackages = {"com.acme.phoenix.inboundprocessor",
"com.acme.phoenix.batch"})
@EnableJpaRepositories(
basePackages = {"com.acme.phoenix.batch.repository",
"com.acme.phoenix.inboundprocessor.repository"})
@EntityScan(
basePackages = {"com.acme.phoenix.batch.domain",
"com.acme.phoenix.inboundprocessor.model"})
@SpringBootApplication
@AcmePaymentsRestClientApplication
public class InboundPaymentsEngineApplication {
public static void main(String[] args) {
SpringApplication.run(InboundPaymentsEngineApplication.class, args);
}
}
54
@peter_pilgrim - http://bit.ly/2cloudnativejava
PCF - Spring Boot Microservice #4
55
@Configuration()
/* ... */
public class AcmeInboundEmitterConfiguration {
/* ... */
@Autowired CloudLogService logService;
@Autowired CloudAuditService auditService;
@Autowired AnalyticEngine analyticEngine;
@Autowired SecurityGuardian securityGuardian;
// Kafka spike project
@Autowired EventStreamRouter eventStreamRouter;
}
@peter_pilgrim - http://bit.ly/2cloudnativejava
PCF - Spring Boot Microservice #5
@Configuration()
@Import({
AuditorConfiguration.class,
LoggingConfiguration.class,
S3FileStorageConfig.class,
SecureGuardianConfiguration.class,
WebUIConfiguration.class
})
/* ... */
public class AcmeInboundEmitterConfiguration {
/* ... */
}
56
@peter_pilgrim - http://bit.ly/2cloudnativejava
PCF - Spring Boot Microservice #6
@Configuration()
/* ... */
@EnableBinding({
EmitterResponseEndpoint.class,
InstructionMappingSource.class,
InvalidOutboundInstructionEndpoint.class,
JacksonConfiguration.class,
ProcessedInboundInstructionEndpoint.class
})
@IntegrationComponentScan
@EnableRetry
@EnableJpaAuditing(dateTimeProviderRef = "dateTimeProvider")
@EnableConfigurationProperties(AcmeInboundEmitterProperties.class)
@EnableInstructionMapperInstruction
public class AcmeInboundEmitterConfiguration { /* ... */ }
57
@peter_pilgrim - http://bit.ly/2cloudnativejava
PCF - Spring Boot Microservice #7
@RestController @RequestMapping("/api/payment-processor")
public class InboundProcessorRESTController
implements InboundProcessorServiceAPIClient {
@Autowired PaymentRecordRepository paymentRecordRepository;
@Override
@GetMapping("/getPaymentInfo/{storeId}/{customerId}")
public ResponseEntity<Instruction> getTopPaymentInfoPerCustomer(
@PathVariable("storeId") String storeId,
@PathVariable("customerId") String customerId) {
PaymentRecord paymentRecord =
paymentRecordRepository.findTopByStoreIdAndCustomerId(
paymentHubId, customerId);
// Do the work -- generate the JSON response
return ResponseEntity.create(...).build()
}
}
58
Deploy to the cloud! (PCF)
> gradlew clean assemble test
> cf login dev.digital.tech.acme.com
> cf target -o acme-5150 -s dev1
> cf push build/libs/acme-bank-emitter-4.5.6.jar
-f manifest-development.yml
59
5
Challengers
60
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
@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
@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
@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
6
Orchestration
65
66
Cloud Infrastructure Types
Application
Middleware
Runtime
Networking
Storage
Virtualisation
SaaS
Application
Middleware
Runtime
Networking
Storage
Virtualisation
PaaS
Application
Middleware
Runtime
Networking
Storage
Virtualisation
IaaS
Cloud provider controls these features
You control this features
Data Data Data
@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
@peter_pilgrim - http://bit.ly/2cloudnativejava
Software as a Service (SaaS) examples
Salesforce
salesforce.com
Google Apps
apps.google.com
Office 365
office.com
Dropbox
dropbox.com
@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
@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
@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
@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
Docker machine
Linux operating system
Java Virtual Machine
What is a container of a container of a container?
Application
(Embedded Server)
73 73
eu-west-2
AZ1
Orchestration of nodes, clusters and virtual private clouds
AZ2
E*
74
@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
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
@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
@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
79
Pod
Container
JVM
Service A
Metrics
Discovery
Monitoring
Fault
Tolerance
Pod
Container
JVM
Service C
Metrics
Discovery
Monitoring
Fault
Tolerance
Pod
Container
JVM
Service B
Metrics
Discovery
Monitoring
Fault
Tolerance
@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
@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
@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
7
DevOps
83
Whilst the Java EE world was in conflict,
the rest of us continued life with the
cloud-native DEV-OPS inspired evolution
...
84
85
The Phoenix Project - Kim, Behr & Spafford *2014
@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
8
OrganicDrive
87
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
Eclipse Jakarta
89
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
@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
@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
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
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?
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
Prognosis
96
@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
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*
@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
@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
@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
Graal VM - The Future Now
Imagine that? Writing a VM in Java, what? Are you crazy?
102
@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
Executive Summary
104
(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
@peter_pilgrim - http://bit.ly/2cloudnativejava
Summary
➤ Cloud Native
➤ Java EE
➤ Microservices
➤ Cloud infrastructure
➤ Kubernetes
➤ Way forward for Enterprise Java
106
@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
A West African proverb - anonymous griots
“However long the night,
the dawn will break”
108
Thank You!
xenonique.co.uk/blog/
@peter_pilgrim
201910021430
109
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:

More Related Content

What's hot

Open Source Building Career and Competency
Open Source Building Career and CompetencyOpen Source Building Career and Competency
Open Source Building Career and CompetencyKrishna-Kumar
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentAmbassador Labs
 
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"Daniel Bryant
 
Webinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesWebinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesAmbassador Labs
 
WebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and OpportunitiesWebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and OpportunitiesVladimir Beloborodov
 
DevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of ContainersDevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of ContainersDevOps Indonesia
 
Cloud native java workshop
Cloud native java workshopCloud native java workshop
Cloud native java workshopJamie Coleman
 
Docker and Microservice
Docker and MicroserviceDocker and Microservice
Docker and MicroserviceSamuel Chow
 
Create great cncf user base from lessons learned from other open source com...
Create great cncf user base from   lessons learned from other open source com...Create great cncf user base from   lessons learned from other open source com...
Create great cncf user base from lessons learned from other open source com...Krishna-Kumar
 
CloudOpen 2014 - Mixing Your Open Source Cloud Cocktail
CloudOpen 2014 - Mixing Your Open Source Cloud CocktailCloudOpen 2014 - Mixing Your Open Source Cloud Cocktail
CloudOpen 2014 - Mixing Your Open Source Cloud CocktailMark Hinkle
 
Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101Giulio Roggero
 
Learn OpenStack from trystack.cn
Learn OpenStack from trystack.cnLearn OpenStack from trystack.cn
Learn OpenStack from trystack.cnOpenCity Community
 
DevOps in a Cloud Native World
DevOps in a Cloud Native WorldDevOps in a Cloud Native World
DevOps in a Cloud Native WorldMichael Ducy
 
12 factor app - Core Guidelines To Cloud Ready Solutions
12 factor app - Core Guidelines To Cloud Ready Solutions12 factor app - Core Guidelines To Cloud Ready Solutions
12 factor app - Core Guidelines To Cloud Ready SolutionsKashif Ali Siddiqui
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016Vaidheswaran CS
 
App catalog (Vancouver)
App catalog (Vancouver)App catalog (Vancouver)
App catalog (Vancouver)Mirantis
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Developer Week - Reacting to an event-driven world
Developer Week - Reacting to an event-driven worldDeveloper Week - Reacting to an event-driven world
Developer Week - Reacting to an event-driven worldGrace Jansen
 
Building cloud native microservices
Building cloud native microservicesBuilding cloud native microservices
Building cloud native microservicesBrian Pulito
 

What's hot (20)

Open Source Building Career and Competency
Open Source Building Career and CompetencyOpen Source Building Career and Competency
Open Source Building Career and Competency
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented Development
 
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
J1 2015 "Building a Microservice Ecosystem: Some Assembly Still Required"
 
Webinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesWebinar: Code Faster on Kubernetes
Webinar: Code Faster on Kubernetes
 
WebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and OpportunitiesWebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and Opportunities
 
DevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of ContainersDevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of Containers
 
Cloud native java workshop
Cloud native java workshopCloud native java workshop
Cloud native java workshop
 
Docker and Microservice
Docker and MicroserviceDocker and Microservice
Docker and Microservice
 
Create great cncf user base from lessons learned from other open source com...
Create great cncf user base from   lessons learned from other open source com...Create great cncf user base from   lessons learned from other open source com...
Create great cncf user base from lessons learned from other open source com...
 
CloudOpen 2014 - Mixing Your Open Source Cloud Cocktail
CloudOpen 2014 - Mixing Your Open Source Cloud CocktailCloudOpen 2014 - Mixing Your Open Source Cloud Cocktail
CloudOpen 2014 - Mixing Your Open Source Cloud Cocktail
 
Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101Kubernetes and CNCF Landscape 101
Kubernetes and CNCF Landscape 101
 
Learn OpenStack from trystack.cn
Learn OpenStack from trystack.cnLearn OpenStack from trystack.cn
Learn OpenStack from trystack.cn
 
DevOps in a Cloud Native World
DevOps in a Cloud Native WorldDevOps in a Cloud Native World
DevOps in a Cloud Native World
 
12 factor app - Core Guidelines To Cloud Ready Solutions
12 factor app - Core Guidelines To Cloud Ready Solutions12 factor app - Core Guidelines To Cloud Ready Solutions
12 factor app - Core Guidelines To Cloud Ready Solutions
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016
 
OaaS:Open as a Strategy
OaaS:Open as a StrategyOaaS:Open as a Strategy
OaaS:Open as a Strategy
 
App catalog (Vancouver)
App catalog (Vancouver)App catalog (Vancouver)
App catalog (Vancouver)
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Developer Week - Reacting to an event-driven world
Developer Week - Reacting to an event-driven worldDeveloper Week - Reacting to an event-driven world
Developer Week - Reacting to an event-driven world
 
Building cloud native microservices
Building cloud native microservicesBuilding cloud native microservices
Building cloud native microservices
 

Similar to Cloud native java are we there yet go tech world 2019

Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux – Unified IoT Pl...
Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux –  Unified IoT Pl...Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux –  Unified IoT Pl...
Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux – Unified IoT Pl...mCloud
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREAraf Karsh Hamid
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionJohn Archer
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Best Full Stack .NET Core Classroom & Online training - Naresh IT
Best Full Stack .NET Core Classroom & Online training - Naresh ITBest Full Stack .NET Core Classroom & Online training - Naresh IT
Best Full Stack .NET Core Classroom & Online training - Naresh ITmanoharjgpsolutions
 
N01 cloud computing_and_gae
N01 cloud computing_and_gaeN01 cloud computing_and_gae
N01 cloud computing_and_gaeSun-Jin Jang
 
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]IO Visor Project
 
Evolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO VisorEvolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO VisorLarry Lang
 
Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSimen Sommerfeldt
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Trayan Iliev
 
Http Services in Rust on Containers
Http Services in Rust on ContainersHttp Services in Rust on Containers
Http Services in Rust on ContainersAnton Whalley
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivRon Perlmuter
 
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShiftExplore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShiftGraham Charters
 
Mihai tataran developing modern web applications
Mihai tataran   developing modern web applicationsMihai tataran   developing modern web applications
Mihai tataran developing modern web applicationsITCamp
 
William-Timpany-2016-03-09-v4-Resume
William-Timpany-2016-03-09-v4-ResumeWilliam-Timpany-2016-03-09-v4-Resume
William-Timpany-2016-03-09-v4-ResumeWilliam Timpany
 
A Reference Architecture for IoT
A Reference Architecture for IoT A Reference Architecture for IoT
A Reference Architecture for IoT WSO2
 
Kubernetes and Container Technologies from Cloud Native Computing Foundation
Kubernetes and Container Technologies from Cloud Native Computing FoundationKubernetes and Container Technologies from Cloud Native Computing Foundation
Kubernetes and Container Technologies from Cloud Native Computing FoundationCloud Standards Customer Council
 
Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014Mirantis
 

Similar to Cloud native java are we there yet go tech world 2019 (20)

Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux – Unified IoT Pl...
Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux –  Unified IoT Pl...Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux –  Unified IoT Pl...
Developers’ mDay u Banjoj Luci - Janko Isidorović, Mainflux – Unified IoT Pl...
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Best Full Stack .NET Core Classroom & Online training - Naresh IT
Best Full Stack .NET Core Classroom & Online training - Naresh ITBest Full Stack .NET Core Classroom & Online training - Naresh IT
Best Full Stack .NET Core Classroom & Online training - Naresh IT
 
Docker
DockerDocker
Docker
 
N01 cloud computing_and_gae
N01 cloud computing_and_gaeN01 cloud computing_and_gae
N01 cloud computing_and_gae
 
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]
Evolving Virtual Networking with IO Visor [OpenStack Summit Austin | April 2016]
 
Evolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO VisorEvolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO Visor
 
Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-RED
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux
 
Http Services in Rust on Containers
Http Services in Rust on ContainersHttp Services in Rust on Containers
Http Services in Rust on Containers
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
 
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShiftExplore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
 
Mihai tataran developing modern web applications
Mihai tataran   developing modern web applicationsMihai tataran   developing modern web applications
Mihai tataran developing modern web applications
 
William-Timpany-2016-03-09-v4-Resume
William-Timpany-2016-03-09-v4-ResumeWilliam-Timpany-2016-03-09-v4-Resume
William-Timpany-2016-03-09-v4-Resume
 
A Reference Architecture for IoT
A Reference Architecture for IoT A Reference Architecture for IoT
A Reference Architecture for IoT
 
Kubernetes and Container Technologies from Cloud Native Computing Foundation
Kubernetes and Container Technologies from Cloud Native Computing FoundationKubernetes and Container Technologies from Cloud Native Computing Foundation
Kubernetes and Container Technologies from Cloud Native Computing Foundation
 
Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014
 

More from Peter Pilgrim

Devoxx 2019 - Why we pair?
Devoxx 2019 - Why we pair?Devoxx 2019 - Why we pair?
Devoxx 2019 - Why we pair?Peter Pilgrim
 
LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!
LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!
LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!Peter Pilgrim
 
CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017
CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017
CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017Peter Pilgrim
 
JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...
JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...
JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...Peter Pilgrim
 
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVM
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVMQCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVM
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVMPeter Pilgrim
 
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and NoteworthyJava EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and NoteworthyPeter Pilgrim
 
BOF2644 Developing Java EE 7 Scala apps
BOF2644 Developing Java EE 7 Scala appsBOF2644 Developing Java EE 7 Scala apps
BOF2644 Developing Java EE 7 Scala appsPeter Pilgrim
 
AOTB2014: Agile Testing on the Java Platform
AOTB2014: Agile Testing on the Java PlatformAOTB2014: Agile Testing on the Java Platform
AOTB2014: Agile Testing on the Java PlatformPeter Pilgrim
 
JavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development ExperiencesJavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development ExperiencesPeter Pilgrim
 
JavaCro 2014 Digital Development with Java EE and Java Platform
JavaCro 2014 Digital Development with Java EE and Java PlatformJavaCro 2014 Digital Development with Java EE and Java Platform
JavaCro 2014 Digital Development with Java EE and Java PlatformPeter Pilgrim
 
ACCU 2013 Taking Scala into the Enterpise
ACCU 2013 Taking Scala into the EnterpiseACCU 2013 Taking Scala into the Enterpise
ACCU 2013 Taking Scala into the EnterpisePeter Pilgrim
 
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...Peter Pilgrim
 
JavaOne 2011 Progressive JavaFX 2.0 Custom Components
JavaOne 2011 Progressive JavaFX 2.0 Custom ComponentsJavaOne 2011 Progressive JavaFX 2.0 Custom Components
JavaOne 2011 Progressive JavaFX 2.0 Custom ComponentsPeter Pilgrim
 
ACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming LanguageACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming LanguagePeter Pilgrim
 

More from Peter Pilgrim (14)

Devoxx 2019 - Why we pair?
Devoxx 2019 - Why we pair?Devoxx 2019 - Why we pair?
Devoxx 2019 - Why we pair?
 
LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!
LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!
LJC 2018 - PEAT UK - Java EE - Ah, ah, ah! Staying Alive!
 
CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017
CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017
CON6148 - You Are Not Cut Out To Be A Java Contractor - JavaOne 2017
 
JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...
JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...
JavaOne 2015 CON5211 Digital Java EE 7 with JSF Conversations, Flows, and CDI...
 
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVM
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVMQCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVM
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVM
 
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and NoteworthyJava EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
 
BOF2644 Developing Java EE 7 Scala apps
BOF2644 Developing Java EE 7 Scala appsBOF2644 Developing Java EE 7 Scala apps
BOF2644 Developing Java EE 7 Scala apps
 
AOTB2014: Agile Testing on the Java Platform
AOTB2014: Agile Testing on the Java PlatformAOTB2014: Agile Testing on the Java Platform
AOTB2014: Agile Testing on the Java Platform
 
JavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development ExperiencesJavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development Experiences
 
JavaCro 2014 Digital Development with Java EE and Java Platform
JavaCro 2014 Digital Development with Java EE and Java PlatformJavaCro 2014 Digital Development with Java EE and Java Platform
JavaCro 2014 Digital Development with Java EE and Java Platform
 
ACCU 2013 Taking Scala into the Enterpise
ACCU 2013 Taking Scala into the EnterpiseACCU 2013 Taking Scala into the Enterpise
ACCU 2013 Taking Scala into the Enterpise
 
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
 
JavaOne 2011 Progressive JavaFX 2.0 Custom Components
JavaOne 2011 Progressive JavaFX 2.0 Custom ComponentsJavaOne 2011 Progressive JavaFX 2.0 Custom Components
JavaOne 2011 Progressive JavaFX 2.0 Custom Components
 
ACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming LanguageACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming Language
 

Recently uploaded

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 

Recently uploaded (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 

Cloud native java are we there yet go tech world 2019

  • 1. THE MASTER MIX Peter Pilgrim http://bit.ly/2cloudnativejava 1
  • 2. Cloud native Java - are we there yet? The quest for the magical enterprise relevance diamonds PETER PILGRIM GO TECH WORLD - Bucharest, Romania - 2nd October 2019 - 14:30 PILGRIM ENGINEERING ARCHITECTURE TECHNOLOGY © 2019 2
  • 3. @peter_pilgrim - http://bit.ly/2cloudnativejava Your speaker today ➤ Independent Contractor Blog: http://xenonique.co.uk/blog/ Twitter: @peter_pilgrim Linkedin: http://linkedin.com/in/peterpilgrim2000 ➤ PILGRIM ENGINEERING ARCHITECTURE TECHNOLOGY 3
  • 4. @peter_pilgrim - http://bit.ly/2cloudnativejava Your speaker today ➤ Software developer, Java Champion ➤ Java EE technical author ➤ Development, Design and Architecture ➤ I normally contract with e-commerce clients 4
  • 7. @peter_pilgrim - http://bit.ly/2cloudnativejava ****Agenda**** Cloud Native Java EE Microservices Kubernetes Jakarta EE Way Forward 7
  • 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
  • 25. @peter_pilgrim - http://bit.ly/2cloudnativejava Cloud native - the technical challenges On-demand Flexible Cost Effective Sustainable Reproducibility Provisionable Elasticity Scale Horizontally Availability Partition Testable Automation Efficient Manageable Idempotent Configurable CI / CD Pipelines Measureable Timely Retrievable Accountable Node Node Node
  • 26. 26 Kubernetes Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
  • 27. 27 2005 Application Server (WebLogic, WebSphere, Tomcat, Resin, etcx) 2019 Orchestration Manager (Kubernetes, Mesos, Openstack, IBM, Oracle, BYOCIMS*)
  • 29. 29 Mono 1 Mono 2 N e t w o r k Corporate Load Balancer Corporate Database The Old School ➤ Monolithic server with apps ➤ 1 Load balancer (round robin) ➤ 2 or 3 Federated servers (low volume)
  • 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
  • 36. @peter_pilgrim - http://bit.ly/2cloudnativejava “Containerless” Java software DropWizard dropwizard.io Vert X vertx.io Spring Boot spring.io/projects/spri ng-boot Play Framework playframework.com
  • 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
  • 41. Monolithic applications (Tomcat) Apache Tomcat (Web Profile) Application WAR Oracle 11g Database Server Network 41 41
  • 42. Microservice application (Embedded Tomcat) Standalone Application (JAR) Embedded Tomcat Server Oracle 11g Database Server Network 42 42
  • 43. $ java -jar acme-inbound-emitter.jar 43
  • 44. @peter_pilgrim - http://bit.ly/2cloudnativejava Microservices summary An evolution response to monolithic applications ➤ separation of concerns - modularity, encapsulation ➤ scalability - horizontally scaling, workload partitioning ➤ virtualisation & elasticity - automated operations, on-demand provisioning 44
  • 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
  • 51. A quick example on Spring Boot and PCF 51
  • 52. @peter_pilgrim - http://bit.ly/2cloudnativejava PCF - Spring Boot Microservice #1 // /coderepo/acme-inbound-emitter/manifest-parent.yml name: acme-inbound-emitter buildpack: https://github.com/cloudfoundry/java-buildpack.git memory: 2048M instances: 3 path: ./build/libs/acme-inbound-emitter-4.5.6.jar env: JAVA_OPTS: -Djava.security.egd=file:///dev/urandom 52
  • 53. @peter_pilgrim - http://bit.ly/2cloudnativejava PCF - Spring Boot Microservice #2 // /coderepo/acme-inbound-emitter/manifest-development.yml inherit: manifest-parent.yml buildpack: java_buildpack_offline services: [ acme-redis, acme-rabbit, acme-aws-s3, acme-ha-credentials, acme-kafka-spike ] env: security.user.name: MrMagic security.user.password: WhoCalledMe api.cloudConfigService.uri: https://dev.digital.tech.acme.com routes: - route: dev.digital.tech.acme.com/inbound/transfer - route: dev.digital.tech.acme.com/inbound/pay 53
  • 54. @peter_pilgrim - http://bit.ly/2cloudnativejava PCF - Spring Boot Microservice #3 @ComponentScan( basePackages = {"com.acme.phoenix.inboundprocessor", "com.acme.phoenix.batch"}) @EnableJpaRepositories( basePackages = {"com.acme.phoenix.batch.repository", "com.acme.phoenix.inboundprocessor.repository"}) @EntityScan( basePackages = {"com.acme.phoenix.batch.domain", "com.acme.phoenix.inboundprocessor.model"}) @SpringBootApplication @AcmePaymentsRestClientApplication public class InboundPaymentsEngineApplication { public static void main(String[] args) { SpringApplication.run(InboundPaymentsEngineApplication.class, args); } } 54
  • 55. @peter_pilgrim - http://bit.ly/2cloudnativejava PCF - Spring Boot Microservice #4 55 @Configuration() /* ... */ public class AcmeInboundEmitterConfiguration { /* ... */ @Autowired CloudLogService logService; @Autowired CloudAuditService auditService; @Autowired AnalyticEngine analyticEngine; @Autowired SecurityGuardian securityGuardian; // Kafka spike project @Autowired EventStreamRouter eventStreamRouter; }
  • 56. @peter_pilgrim - http://bit.ly/2cloudnativejava PCF - Spring Boot Microservice #5 @Configuration() @Import({ AuditorConfiguration.class, LoggingConfiguration.class, S3FileStorageConfig.class, SecureGuardianConfiguration.class, WebUIConfiguration.class }) /* ... */ public class AcmeInboundEmitterConfiguration { /* ... */ } 56
  • 57. @peter_pilgrim - http://bit.ly/2cloudnativejava PCF - Spring Boot Microservice #6 @Configuration() /* ... */ @EnableBinding({ EmitterResponseEndpoint.class, InstructionMappingSource.class, InvalidOutboundInstructionEndpoint.class, JacksonConfiguration.class, ProcessedInboundInstructionEndpoint.class }) @IntegrationComponentScan @EnableRetry @EnableJpaAuditing(dateTimeProviderRef = "dateTimeProvider") @EnableConfigurationProperties(AcmeInboundEmitterProperties.class) @EnableInstructionMapperInstruction public class AcmeInboundEmitterConfiguration { /* ... */ } 57
  • 58. @peter_pilgrim - http://bit.ly/2cloudnativejava PCF - Spring Boot Microservice #7 @RestController @RequestMapping("/api/payment-processor") public class InboundProcessorRESTController implements InboundProcessorServiceAPIClient { @Autowired PaymentRecordRepository paymentRecordRepository; @Override @GetMapping("/getPaymentInfo/{storeId}/{customerId}") public ResponseEntity<Instruction> getTopPaymentInfoPerCustomer( @PathVariable("storeId") String storeId, @PathVariable("customerId") String customerId) { PaymentRecord paymentRecord = paymentRecordRepository.findTopByStoreIdAndCustomerId( paymentHubId, customerId); // Do the work -- generate the JSON response return ResponseEntity.create(...).build() } } 58
  • 59. Deploy to the cloud! (PCF) > gradlew clean assemble test > cf login dev.digital.tech.acme.com > cf target -o acme-5150 -s dev1 > cf push build/libs/acme-bank-emitter-4.5.6.jar -f manifest-development.yml 59
  • 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
  • 68. @peter_pilgrim - http://bit.ly/2cloudnativejava Software as a Service (SaaS) examples Salesforce salesforce.com Google Apps apps.google.com Office 365 office.com Dropbox dropbox.com
  • 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
  • 74. eu-west-2 AZ1 Orchestration of nodes, clusters and virtual private clouds AZ2 E* 74
  • 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
  • 84. Whilst the Java EE world was in conflict, the rest of us continued life with the cloud-native DEV-OPS inspired evolution ... 84
  • 85. 85 The Phoenix Project - Kim, Behr & Spafford *2014
  • 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
  • 106. @peter_pilgrim - http://bit.ly/2cloudnativejava Summary ➤ Cloud Native ➤ Java EE ➤ Microservices ➤ Cloud infrastructure ➤ Kubernetes ➤ Way forward for Enterprise Java 106
  • 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: