48
© 2015 IBM Corporation Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source David Currie, Senior Software Engineer @dcurrie | [email protected]

Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Embed Size (px)

Citation preview

Page 1: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

© 2015 IBM Corporation

Building out a MicroservicesArchitecture with WebSphere Liberty Profile and Netflix Open Source

David Currie, Senior Software Engineer

@dcurrie | [email protected]

Page 2: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

[email protected] @dcurrie http://uk.linkedin.com/in/davidcurrie/

Page 3: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source
Page 4: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source
Page 5: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

WebSphere

Liberty Profile

WebSphere

eXtreme

Scale

(WXS)JA

X-R

S

Se

rvle

t Filte

r

Data

Se

rvic

e

Fa

ca

de

Se

rvic

e F

aca

de

Data Tier

App

Specific

Caching

WXS

Client

ng

inx

Hybrid

Worklight

App

Browser

App

jQuery/DOJO

jQuery/DOJO

ng

inx

IBM

Worklight

http://bit.ly/acmeairblog

Page 6: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

programmableweb.com 2012

4.3 billion API calls/day

Peak Performanceand Scale

Page 7: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Operational Visibility

Page 8: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

DevOpsHA & DRElastic scaling

Page 9: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

http://techblog.netflix.com

http://netflix.github.io

Page 10: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

2012

2013

2014

SPECjEnterprise

Acme Air Cloud/MobileSample/Benchmark born

Sample applicationcloud prize work

Acme Air runon IBM Cloud at“Web Scale”

Portability cloudprize work

https://github.com/EmergingTechnologyInstitute

Page 11: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplication

Page 12: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplicationModularity

Page 13: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplication

Scaling

Page 14: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplication

Failing

Page 15: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplication

Failing

Page 16: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplication

Failed

Page 17: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplication

Update

Page 18: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplicationRevolution

Page 19: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MonolithicApplication

Develop

Page 20: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MicroservicesApplication

Page 21: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MicroservicesApplication

Interactions

Page 22: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MicroservicesApplication

Scaled

Page 23: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

MicroservicesApplication

Evolution

Page 24: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

ServiceDiscovery

Eureka

Page 25: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

ServiceInvocation

Ribbon

Page 26: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Hope is not a design method

“”Michael Nygard, Release It!

Page 27: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

App Container

User

Request

Dependency A Dependency B Dependency C

Dependency D Dependency F

Dependency G Dependency I

Dependency J Dependency L

Dependency E

Dependency H

Dependency K

Dependency M Dependency N Dependency O

Page 28: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

User

Request

Dependency A Dependency B Dependency C

Dependency D Dependency F

Dependency G Dependency I

Dependency J Dependency L

Dependency E

Dependency H

Dependency K

Dependency M Dependency N Dependency O

App Container

FAIL

UR

E!

Page 29: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Use

r R

eq

ue

st

Dependency A Dependency B Dependency C

Dependency D Dependency F

Dependency G Dependency I

Dependency J Dependency L

Dependency E

Dependency H

Dependency K

Dependency M Dependency N Dependency O

Use

r R

eq

ue

st

Use

r R

eq

ue

st

Use

r R

eq

ue

st

Use

r R

eq

ue

st

App Container

THR

EAD

ST

AR

VAT

ION

!

Page 30: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

User

Request

Dependency A Dependency B Dependency C

Dependency D Dependency F

Dependency G Dependency I

Dependency E

Dependency H

Dependency A

(5 Threads)

Dependency B

(5 Threads)

Dependency C

(10 Threads)

Dependency D

(5 Threads)

Dependency E

(10 Threads)

Dependency F

(5 Threads)

Dependency G

(10 Threads)

Dependency H

(5 Threads)

App Container

FAIL

FA

ST

Page 31: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

CircuitBreakerHystrix

https://www.flickr.com/photos/leafbug/409950515 CC-BY-ND 2.0

Page 32: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source
Page 33: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Container

Libraries

App Property File

DB

Runtime

URL

Application

DynamicLongProperty timeToWait = DynamicPropertyFactory.getInstance().

getLongProperty(“mywebapp.lock.waitTime", 1000);timeToWait.get();

DynamicConfiguration

Archaius

Page 34: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Small download

Low memory usage

Simple configuration

Fast start up

Easy access

Free tooling

Page 35: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

GitHub

Cloud Foundry

NetflixOSS

Zero Turnaround

JenkinsOpscode

Chef

Apache Maven

IBM UrbanCode Deploy

Gradle

Apache Ant

IntelliJ IDEA

WebSphere Developer Tools

Liberty

http://wasdev.net

http://wasdev.github.io

Docker

Page 36: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

zosSecurity-1.0 zosTransaction-1.0 zosWlm-1.0

zosConnect-1.0

zosLocalAdapters-1.0

scalingController-1.0

scalingMember-1.0

dynamicRouting-1.0

collectiveController-1.0 clusterMember-1.0

mongodb-2.0wsSecurity-1.1

wmqJmsClient-1.1

wasJmsServer-1.0

jmsMdb-3.1

wasJmsClient-1.1jaxws-2.2

jaxb-2.2

wasJmsSecurity-1.0 jca-1.6couchdb-1.0

jcaInboundSecurity-1.6mdb-3.1

jms-1.1

zOS

ND

webProfile-6.0wab-1.0

concurrent-1.0

collectiveMember-1.0

restConnector-1.0

sessionDatabase-1.0

ldapRegistry-3.0

webCache-1.0

jaxrs-1.1

distributedMap-1.0

osgiConsole-1.0

json-1.0

timedOperations-1.0monitor-1.0

oauth-2.0

blueprint-1.0

adminCenter-1.0

openid-2.0

openidConnectServer-1.0

openidConnectClient-1.0

serverStatus-1.0 spnego-1.0

osgiAppIntegration-1.0Core

servlet-3.0

jsp-2.2

jsf-2.0

ejbLite-3.1 jdbc-4.0

jndi-1.0

appSecurity-2.0

managedBeans-1.0

ssl-1.0

beanValidation-1.0

cdi-1.0

jpa-2.0 jsp-2.3

el-3.0

websocket-1.1

jdbc-4.1

servlet-3.1

websocket-1.0

jsonp-1.0

Base

New in

1Q15

New in

4Q14

Web

Profile

spnego-1.0

osgiAppIntegration-1.0

jsp-2.3

el-3.0

websocket-1.1

jdbc-4.1

zosConnect-1.0

zosLocalAdapters-1.0

scalingController-1.0

scalingMember-1.0

dynamicRouting-1.0

couchdb-1.0

openid-2.0

openidConnectServer-1.0

openidConnectClient-1.0

servlet-3.1

websocket-1.0

jsonp-1.0

Repository onlyInstall and Repository

35

Liberty Features

Page 37: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

36

dcurrie@shotover /d/libertydemo (master) $ cat > gradle.propertieswlpDir=d:/libertydemo/wlpdcurrie@shotover /d/libertydemo (master)$ gradlew build

BUILD SUCCESSFUL

Total time: 1 mins 4.741 secsdcurrie@shotover /d/libertydemo (master)$ ls -s ws-noss/build/libs/ws-netflix-oss_1.0.0.esa5727 ws-noss/build/libs/ws-netflix-oss_1.0.0.esa

https://github.com/WASdev/sample.netflixoss.wlp

Page 38: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

37

dcurrie@shotover /d/libertydemo/wlp (master) $ featureManager install netflixoss.wlp_1.0.0.esa

server.xml

<featureManager><feature>jsp-2.2</feature><feature>usr:netflixoss.wlp</feature>

</featureManager>

Page 39: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

38

DynamicLongProperty timeToWait = DynamicPropertyFactory.getInstance().

getLongProperty(“mywebapp.lock.waitTime", 1000);timeToWait.get();

<archaius><myWebapp><lock><waitTime>500</waitTime></lock></myWebapp>

</archaius>

server.xml

Page 40: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

39

public class MyCommand extends HystrixCommand<String> {protected String run() { // remote call }protected String getFallback() { // local fallback }

}String result = new MyCommand().execute();

<hystrix><command><MyCommand><execution><isolation><thread><timeoutInMilliseconds>10000</timeoutInMilliseconds>

</thread></isolation></execution></MyCommand></command>

</hystrix>

server.xml

Page 41: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

IBM Bluemix

Builds on a polyglot Platform-as-a-Service

Page 42: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

IBM Bluemix

Security

Services

Web and

application

services

Cloud

Integration

Services

Mobile

Services

Database

services

Big Data

services

Internet of

Things

Services

Watson

Services

DevOps

Services

IBM,

Third Party

and Community

Services

Page 43: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

IBM Bluemix

Private registry +

Hosted Docker runtime +

Scaling Groups

Page 44: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

43

Page 45: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source
Page 46: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Notices and Disclaimers

Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or

transmitted in any form without written permission from IBM.

U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with

IBM.

Information in these presentations (including information relating to products that have not yet been announced by IBM) has been

reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM

shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY,

EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF

THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT

OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the

agreements under which they are provided.

Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without

notice.

Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are

presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual

performance, cost, savings or other results in other operating environments may vary.

References in this document to IBM products, programs, or services does not imply that IBM intends to make such products,

programs or services available in all countries in which IBM operates or does business.

Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not

necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither

intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.

It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal

counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s

business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or

represent or warrant that its services or products will ensure that the customer is in compliance with any law.

Page 47: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Notices and Disclaimers (con’t)

Information concerning non-IBM products was obtained from the suppliers of those products, their published

announcements or other publicly available sources. IBM has not tested those products in connection with this

publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM

products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.

IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to

interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED,

INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A

PARTICULAR PURPOSE.

The provision of the information contained herein is not intended to, and does not, grant any right or license under any

IBM patents, copyrights, trademarks or other intellectual property right.

• IBM, the IBM logo, ibm.com, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document

Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand,

ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™,

PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®,

pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®,

urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of

International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and

service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on

the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.

Page 48: Building out a Microservices Architecture with WebSphere Liberty Profile and Netflix Open Source

Thank YouYour Feedback is

Important!

Access the InterConnect 2015

Conference CONNECT Attendee

Portal to complete your session

surveys from your smartphone,

laptop or conference kiosk.