Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
1
What is it?
Alasdair Nottingham,
Open Liberty Project Lead
Ian Robinson,
WebSphere Chief Architect
Geoff Pirie,
Open Liberty Product Manager
2
“Developer Feedback”
3
“Developer Feedback”
Quotes
Evil
EPIC FAIL!
Exception generator
Would never choose it myself
Dangerous for your mental health
Abandon all hope ye who enter webfear!!
Websfear is mostly a generator of frustration and consulting fees
4
“Developer Feedback”
Quotes
Evil
EPIC FAIL!
Exception generator
Would never choose it myself
Dangerous for your mental health
Abandon all hope ye who enter webfear!!
Websfear is mostly a generator of frustration and consulting fees
5
Stability vs Innovation
Innovation
Stability
• I need the latest features
• Lambdas are cool
• My code is cleaner with Java 8
• I need the latest APIs because
I’m at the cutting edge
• Stop changing things under me
• I want to do the fun stuff, stop
breaking the stable applications
• When I upgrade everything
breaks
• This app is mission critical I can’t
afford weird JDK arithmetic bugs
6
Our Journey and Why We Made It
• Efficient
• Simple to use
• Consistency
• Just enough Application Server
• Very good for virtualized environments
• End of migration
• Agile Ready
8
Open Liberty and WebSphere Open Liberty is the essential Java EE and MicroProfile runtime that WebSphere Liberty extends
• WebSphere Liberty Core offers supported Java EE Web Profile
• Liberty Base offers supported Java EE Full Profile
• Liberty ND offers supported Java EE Full Profile and advanced management capabilities
All 3 commercial editions provide additional capabilities:
Programming model extensions
Production quality of service extensions
Security extensions
And IBM’s full support
Liberty ND
Liberty Base
Liberty Core
MicroProfile
Full Profile Java EE 7
Web Profile Java EE 7
9 9
Demo
10
Fit-for-purpose server
Kernel
<feature>microProfile-1.0</feature>
jaxrs-2.0
cdi-1.2 appmgr
<feature>microProfile-1.2</feature>
mpConfig mpHealth
Java EE
11
Open Liberty features MicroProfile WebProfile 7 Java EE 7 Java EE 8 (WIP) non-API
cdi-1.2 servlet-3.0 jaxws-2.2 servlet-4.0 restConnector-2.0
jsonp-1.0 beanValidation-1.1 jms-2.0 jaxrs-2.1 passwordUtilities-1.0
jaxrs-2.0 cdi-1.2 jca-1.7 jsonb-1.0 federatedRepository-1.0
mpConfig-1.0 jpa-2.1 jaspic-1.1 jsonp-1.1 ldapRegistry-3.0
mpFaultTolerance-1.0 el-3.0 jacc-1.5 javaMail-1.6 monitor-1.0
mpHealth-1.0 jaxrs-2.0 concurrent-1.0 jsf-2.3 bells-1.0
mpMetrics-1.0 managedBeans-1.0 ejb-3.2 appSecurity-2.0
mpJwt-1.0 websocket-1.1 batch-1.0 transportSecurity-1.0
jsonp-1.0 j2eeManagement-1.1
servlet-3.1 javaMail-1.5
jsp-2.3
jsf-2.2
ejbLite-3.2
12
Simple Config
<server> <featureManager> <feature>microProfile-1.2</feature> </featureManager> <webApplication location=“myweb.war” contextRoot=“/” /> </server>
server.xml
-Xmx1g -Dsystem.prop=value
jvm.options
WLP_OUTPUT_DIR=/usr/wlp-out/
server.env
13
Composing Config <server> <httpEndpoint id=“defaultHttpEndpoint” host=“${host}” httpPort=“${http}” httpsPort=“${https}”/> </server>
configDropins/defaults/common-http.xml
<server> <include location="https://myHost/ports.xml”/> <variable name=“host” value=“${my.host}”/> <variable name=“http” value=“${my.host.http}”/> <variable name=“https” value=“${my.host.https}”/> </server>
configDropins/overrides/ports.xml
14
Fast & Small Startup
0
1
2
3
4
5
6
7
8
9
Liberty16.0.0.4
Tomcat 9 M11 WildFly 10.1 TomEE Plus1.7.4
Startup Time
0
50
100
150
200
250
300
Liberty16.0.0.4
Tomcat 9M11
WildFly 10.1 TomEE Plus1.7.4
Footprint
Lower is better
15
Helpful Debug
16
Class Visibility - Parent First
JVM
rt.jar jce.jar jsse.jar
Application Server
runtime.jar libx-1.jar was-util.jar
1
2
Web Application
myapp.jar libx-2.jar myutil.jar
3
✗
✓
• App Server & Application use open source library
• They use different versions
• When application loads class in open source library, the app server copy is found first
✘Application fails as class is not compatible
17
Class Visibility - Parent Last
JVM
rt.jar jce.jar jsse.jar
Application Server
runtime.jar libx-1.jar was-util.jar
1
2
Web Application
myapp.jar libx-2.jar myutil.jar
3
• App Server & Application use open source library
• They use different versions
• When application loads class in open source library, the application copy is found first
✘If application contains Servlet classes then the container can’t use the Servlet classes so application fails
✓
18
Class Visibility - Liberty
JVM
rt.jar jce.jar jsse.jar
Application Server
runtime.jar libx-1.jar was-util.jar
1
2
Web Application
myapp.jar libx-2.jar myutil.jar
3
• App Server & Application use open source library
• They use different versions
• When application loads class in open source library, only API class loads are delegated to the application server classloader
✔Application gets the open source class it wants, server and application agree on servlet
✓
19
17.0.0.3
17.0.0.2
Zero Migration • Zero config migration
• Write once, run forever
• Zero migration for apps
- No behavior changes in existing features
- New behaviors in new features
• Choose your Java
- IBM, Oracle, Open JDK+OpenJ9, Open JDK+Hotspot
WLP_CONFIG_DIR
app1Svr
app2Svr
20
=
zip
transfer
transfer
transfer
unzip
unzip
unzip
app and config
liberty
+
host1
host2
host3
Liberty Server Package
21
Cloud Foundry
app and config liberty buildpack
cf push
Cloud Environments
FROM open-liberty
docker image
Kubernetes
Pod kubernetes
deployment Pod Pod
Pod Pod
22
WebSphere Liberty’s open source Java EE and MicroProfile runtime for Java microservices
https://openliberty.io
An Open Cloud Java Stack
Service Management and Fabric
Pod Pod
Pod Microservice Builder
https://developer.ibm.com/microservice-builder/
IBM Cloud private Community edition
http://www.eclipse.org/openj9/
The contribution of IBM’s enterprise grade, open source, JVM Prebuilt OpenJDK 9 with OpenJ9 VM from AdoptOpenJDK
23
Useful links
• https://openliberty.io/
• https://github.com/openliberty/open-liberty
• http://groups.io/g/openliberty
• https://stackoverflow.com/questions/tagged/open-liberty
• http://www.eclipse.org/openj9/
• https://developer.ibm.com/microservice-builder/
24 24
Thank You!
25
Liberty Evolution 8.5 8.5.5 8.5.5.2 8.5.5.6 16.0.0.2 17.0.0.3
2012 2013 2014 2015 2016 2017
Servlet/JSP Java EE 6
Web Profile Java EE 7
MicroProfile 1.2 MicroProfile 1.0
26
http://microprofile.io/
MicroProfile adds new enterprise Java capabilities for microservices
Config Fault Tolerance Health Check Health Metrics Distributed Tracing
externalize configuration to improve portability
build robust behavior to cope with unexpected
failures
ensure services are running and meeting
SLAs
understand the interactions between services while running
resolve problems in complex distributed
systems
New in Eclipse MicroProfile Release 1.2: https://projects.eclipse.org/projects/technology.microprofile/releases/1.2
mpConfig-1.1 mpFaultTolerance-1.0 mpHealth-1.0 mpMetrics-1.0
Robust Microservices