26
1 What is it? Alasdair Nottingham, Open Liberty Project Lead Ian Robinson, WebSphere Chief Architect Geoff Pirie, Open Liberty Product Manager

What is it? - RainFocus · 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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: What is it? - RainFocus · 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

1

What is it?

Alasdair Nottingham,

Open Liberty Project Lead

Ian Robinson,

WebSphere Chief Architect

Geoff Pirie,

Open Liberty Product Manager

Page 2: What is it? - RainFocus · 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

2

“Developer Feedback”

Page 3: What is it? - RainFocus · 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

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

Page 4: What is it? - RainFocus · 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

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

Page 5: What is it? - RainFocus · 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

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

Page 6: What is it? - RainFocus · 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

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

Page 7: What is it? - RainFocus · 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
Page 8: What is it? - RainFocus · 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

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

Page 9: What is it? - RainFocus · 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

9 9

Demo

Page 10: What is it? - RainFocus · 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

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

Page 11: What is it? - RainFocus · 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

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

Page 12: What is it? - RainFocus · 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

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

Page 13: What is it? - RainFocus · 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

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

Page 14: What is it? - RainFocus · 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

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

Page 15: What is it? - RainFocus · 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

15

Helpful Debug

Page 16: What is it? - RainFocus · 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

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

Page 17: What is it? - RainFocus · 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

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

Page 18: What is it? - RainFocus · 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

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

Page 19: What is it? - RainFocus · 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

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

Page 20: What is it? - RainFocus · 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

20

=

zip

transfer

transfer

transfer

unzip

unzip

unzip

app and config

liberty

+

host1

host2

host3

Liberty Server Package

Page 21: What is it? - RainFocus · 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

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

Page 22: What is it? - RainFocus · 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

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

Page 24: What is it? - RainFocus · 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

24 24

Thank You!

Page 25: What is it? - RainFocus · 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

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

Page 26: What is it? - RainFocus · 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

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