+ All Categories
Home > Documents > 企業雲端應用服務整合 - cfliaocfliao.net/cht/lib/exe/fetch.php?media=jcd2011.pdf · WSDL...

企業雲端應用服務整合 - cfliaocfliao.net/cht/lib/exe/fetch.php?media=jcd2011.pdf · WSDL...

Date post: 22-May-2020
Category:
Upload: others
View: 9 times
Download: 0 times
Share this document with a friend
61
企業雲端應用服務整合 廖峻鋒 (try) [email protected]
Transcript
  • 企業雲端應用服務整合

    廖峻鋒 (try)[email protected]

  • 雲端應用服務

  • What primary development framework are you planning to use in the cloud?

    - A survey of 1,200 attendees of VMworld, 2011

    • Java EE 32%

    • .NET 29%

    • PHP 14%

    • ...others

  • “ The big focus with Java EE 7 is getting Java apps into the cloud ”

    -Linda DeMichiel , Java EE 7 Spec Lead, Java One 2011

  • 雲端應用服務的特色

    雲端應用服務的模式

    Java EE 在雲端服務扮演的角色

  • 特色

  • 多租戶Multi-Tenant

    隨需伸縮Elastic

    以次(量)計價Pay-per-use

    P. Mell and T. Grance, The NIST Definition of Cloud Computing, National Institute of Standards and Technology, 2011

  • 服務模式IaaS (Infrastructure as a Service)

    PaaS (Platform as a Service)

    SaaS (Software as a Service)

  • 設施即服務模式 (IaaS)• 廠商

    – 提供虛擬的計算設施 (CPU, 儲存空間)

    • 使用者– 根據需求訂製自已所需設施– 以為自己獨佔這些設施

    • 範例– Amazon EC2

    AMI (Amazon Machine Image)2 CPU, 1G RAM, Ubuntu…

    Shared Infrastructure

    ssh

    Virtualized Computer (s)

  • 平台即服務模式 (PaaS)• 廠商

    – 提供應用程式規格或開發工具– 符合規格者可佈署至其提供的容器(Container)– 可依應用程式負荷,自動調配計算與儲存資源

    • 使用者– 開發並佈署應用程式

    • 範例– GAE (Google App Engine)

    Shared Platform

  • 軟體即服務模式 (SaaS)• 廠商

    – 提供應用程式本身– 提供圖型化介面的應用程式客製化工具– 可依應用程式負荷,自動調配計算與儲存資源

    • 使用者– 使用圖型化介面,客製化自己的應用程式

    • 範例– Salesforce.com Shared Application

  • 在雲端中的角色

  • Java EE enabled Applications

    Cloud Services

    Java EE as Cloud Consumer

  • Java EE enabled Applications

    Java EE as Cloud Integrator

  • Java EE enabledCloud Services

    Java EE as Cloud Provider

  • Java EE在雲端扮演的角色

    • Java EE as Cloud Consumer– Web Services (JAX-RS, JAX-WS)

    • Java EE as Cloud Integrator– Enterprise Service Bus (JBI)

    • Java EE as Cloud Provider– Elastic Clustering

    – Multi-Tenant Application Server

    Will be available in Java EE 7

    SaaS

    PaaS

    S. S. Rajan, HP Solution Architect, “Java EE 7 and Cloud Computing,” Java Developer’s Journal, 2011

    Java EE 8 中將有更多 support !

  • Java EE enabled Applications

    Cloud Services

    Java EE as Cloud Consumer

  • Java EE enabled Applications

    Cloud ServicesHTTP

    在雲端環境中,主機之間透過Internet標準協定進行呼叫

    Web Services

    有那些服務可呼叫 (服務內容)?用什麼方式呼叫 (存取方式)?

  • WSDL 與SOAP• 描述所提供存取方式及服務內容的標準規範

    WSDL (Web Services Description Language)

    請問您提供什麼服務?

    您給我二個數字,照如此如此方式呼叫,我就將他們加起來,再用這般這般格式回傳給您

    12

    3

    SOAP-Request

    SOAP-Response

    加法服務

  • SOAP 封包結構SOAP-ENV: Envelop

    SOAP-ENV: Header

    SOAP-ENV: Body

    (放置如認證金鑰等附加資訊)

    (放置XML)

    11

    2

  • 使用WSDL描述服服務

    Calculator Serviceint add(int i, int j)int subtract(int i, int j)int multiply(int i, int j)int divide(int i, int j)

    Port Type(Interface)

    int add(int i, int j)

    inputoutput

    operation

    WSDL

  • WSDL細部結構

    portType

    port

    types

    operation (包含input / output)

    addsubtract

    multiplydivide

    int

    CalculatorServiceEP

    WSDL 2.0中,portType=interface; port=endpoint

    CalculatorService

  • Java API for XML Web Services

  • 先寫程式

    @WebServicepublic interface Calculator{

    @WebMethodpublic int add(int i, int j);

    }

    @WebServicepublic class CalculatorImpl implements Calculator{

    @Overridepublic int add(int i, int j){

    return i+j;}

    }

    POJI / POJO WSDL

    (with annotation)

  • Java API for RESTful Web Services

    REST = Representational State Transfer

  • RESTful Web Services• R. Fielding在其博士論文提出之架構風格

    – 將HTTP的精神套用到Web Services上

    – “REST is not a standard, but it describes the use of standards”

    • HTTP/ URL/ XML

    • 和傳統SOAP/WSDL Web Services各有優勢

    http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

  • REST 意函解析萬物皆視被為具有URI的資源(Resources)

    http://acme.com/dep1/notebook1

    http://acme.com/dep1/box1

    http://acme.com/dep1/person/Helen

    http://acme.com/dep1/stapler

    http://acme.com/dep1/phone1

  • REST 意函解析 (2)http://acme.com/dep1/stapler

    ClientGET

    GET 一台釘書機要回傳什麼?

    Resource

  • REST 意函解析 (3)http://acme.com/dep1/stapler

    ClientGET

    RESTful Web Services支援多種表徵(Representation) ,例如HTML, XML, JSON, …

    Representation

    4

    Resource

    釘書機的狀態

  • 資源的狀態隨時會改變http://acme.com/dep1/stapler

    ClientGET

    4

    Resource

    釘書機的狀態

    ClientGET

    3

    Resource

    藉由取得資源的表徵,我們可以得知該資源的狀態改變

  • REST = Representational State Transfer表徵 狀態 傳送(轉變)

    ClientGET

    3

    Resource

    藉由不斷傳送資源的表徵,可以得知該資源的狀態改變

    ClientPUT /recharge

    Resource

    甚至於也可以改變資源的狀態

    10

  • Method CRUD

    POST Createupdate, delete

    GET Read

    PUT Updatecreate

    DELETE Delete

    POST: create with unknown ID, PUT: create with known ID

    對資源做CRUD

  • RESTful Service Bean

    @Path("/adder")@Produces("application/xml")public class CalculatorBean{

    @GET@Path("/add/{i}/{j}")public int add(@PathParam("i") int i, @PathParam("j") int j){

    return i+j;}

    }

    GET /adder/add/1/2

    (1)

    (3)

    (2)

    3

    (4)

  • Java EE enabled Applications

    Java EE as Cloud Integrator

  • Enterprise Service Bus• 基於共通標準 整合異質服務 的平台

    – 讓各式異質服務在不相依的前提下相互呼叫溝通

    • 重要功能– 異質元件間的服務呼叫

    – 異質元件間的訊息傳送

    – Message Flow管理 (EIP)

    – Process Workflow管理

    圖片來源: Wikipedia

  • ESB現有解決方案

    • Java EE

    – JSR-208 (Java Business Integration, JBI)

    • OpenESB (GlassFish)

    • Apache ServiceMix 3.x

    • Non-Java EE

    – Mule ESB

    – Oracle AquaLogic ESB

  • ESB的結構• ESB包含下列組件

    – Service Component• Service Engine (SE)

    – ESB中提供核心服務的模組

    • Binding Component (BC)

    – 將外部服務轉接到ESB的模組

    – Normalized Message Router (NMR)

    – Delivery Channel (DC)

    SE

    NMR

    BC 1

    DC

    BC 2

    ESB

    Party A Party B

  • 使用ESB達成異質服務整合

    Normalized Message Router (NMR)

    JBI 環境

    SE…

    JMS BC File BC JDBC BC

    DatabaseFile System

    Topic A

    Topic B

    Topic C

    MOM

    SESE

  • ESB

    ESB在雲端的定位 (以WSO2為例)5000 sessions

    50 sessionswith fail over10 sessions

    功能1: 異質服務整合功能2: Load Balance功能3: Failover

  • To ESB or not to ESB ?• ESB的問題

    – 非常難學 (缺乏有系統的專書)

    – 非常麻煩 (缺乏良好的開發工具)

    • 使用時機

    – 必須與許多即有使用多種異質協定的系統整合

    – 整合時需要用到複雜的業務流程時(i.e. BPEL)

    – 高度動態的服務端點

    • 客戶每次必須根據SLA在不同服務端點間做選擇

  • Java EE enabledCloud Services

    Java EE as Cloud Provider

  • Java EE 7/8與雲端應用服務

    • Java EE 7 (PaaS相關功能)

    – 隨需伸縮叢集 (Elastic Clustering)

    – 多租戶 (Multi-Tenancy)

    – 資料切片 (Sharding)

    • Java EE 8 (SaaS相關功能)

    – SaaS Multi-Tenancy、 NoSQL support…其它Java EE 7來不及做的

    AP Server (GlassFish 4)

    JPA (EclipseLink)

    JPA (Hibernate Sharding)

  • 隨需伸縮叢集 (Elastic Clustering)

    • 2011.10.3 JavaOne 2011 technical keynote以GlassFish 4為例,展示了未來Java EE Server如何以PaaS模式運作

    http://glassfish.java.net/javaone2011/

  • 公司A 公司B 公司C

    現在的Java EE平台

    Java EE平台開發商

    公司A 公司B 公司C

    雲端化的Java EE平台

    Java EE平台開發商

  • 隨需伸縮叢集概念

    SI

    SISI

    SI

    SharedJava EE PaaSPlatform

    SI=Server Instance

    SISI

    SI

    公司1 公司2 公司3

    叢集1

    叢集2 叢集3

    可隨需伸縮

    可隨需伸縮

    提供虛擬機器

    Shared IaaS Platform (如Amazon EC2)Shared IaaS Platform (如Amazon EC2)

    提供虛擬機器提供虛擬機器

    佈署與管理

    佈署與管理

    佈署與管理

  • 傳統Java EE叢集

    ServerInstance

    ServerInstance

    Domain Administration Server

    ServerInstance

    ServerInstance

    開發者

    使用者

    叢集

  • 與IaaS整合成為隨需伸縮叢集

    Domain Administration Server

    開發者 (租戶)

    使用者ServerInstance

    ServerInstance

    ServerInstance

    IaaSManagement Service

    叢集

    VirtualServer

    VirtualServer

    VirtualServer

    IaaS Provider

  • 多租戶 (Multi-Tenancy)

    • 在多租戶間以彈性的機制分享計算、儲存資源或應用程式

    – 所提供資源必須隨需伸縮

    – 所分享的資源或應用程式皆可為租戶量身訂做

    ApplicationApplication

    DataData

    Computing ResourceComputing Resource

    租戶 (Tenant): “一群”使用者,通常同屬於一家公司

  • “多租戶化”的程度

    Application Application Application

    DataDataData

    划算

  • Application 層級的Multi-Tenancy議題

    Web Container EJB Container Database

    /show.jsp?id=1000 getItem(1000) Select * from item where id = …

    單租戶

    /tenant1/show.jsp?id=1000 getItem(tenant1,1000) Select * from item where tenant_id = … and id = …多租戶

    Tenant ID Pass Through (TIP-Through)

  • Tenant 1

    Tenant 2

    Tenant N

    Tenant ContextMulti-Tenant Web Application

    create

    Propagate

    Layer 1 Layer 2 Layer N

    做法一: 改寫Web Application

    使用Filter或AOP進行非侵入性的改寫

  • Tenant 1

    Tenant 2

    Tenant N

    Tenant Context

    Multi-Tenant Web Application

    create

    Propagate

    Layer 1 Layer 2 Layer N

    Service M

    ediation Proxy

    Propagate

    redirect

    做法二: Service Mediation Proxy

  • Data層級的Multi-Tenancy議題

    • 多租戶共享DB

    – 對雲端服務提供商來說最划算

    – 面臨到許多技術挑戰

    Application

    Data 如何有效率的查詢個別客戶的資料

    如何確保客戶資料不被其它未經授權的客戶看到

  • 最簡單的做法: 用Tenant ID來區隔資料TenantID AccountID Name Score

    31 1 李小白 10031 2 黃小明 9032 1 陳小春 8632 2 林小萱 8731 3 周小芳 92

    如果各個Tenant所需要的欄位不同怎麼辦?

    @Entity @Table(name=“EMP”) @Multitenant(SINGLE_TABLE) @TenantDiscriminatorColumn(name = “TenantID”, …) public class Employee { ... }

    使用 tenant discriminator column (supported by Java EE 7 in JPA 2.1)

    EclipseLink 已有初步實作

  • AccountID Name Major Score

    1 李小白 資訊科學系 100

    2 黃小明 應用數學系 90

    3 周小芳 應用數學系 92

    AccountID Name Age

    1 陳小春 21

    2 林小萱 22

    TenantID AccountID Name …

    31 1 李小白 (Score) 100

    31 2 黃小明 (Score) 90

    32 1 陳小春 (Age) 21

    32 2 林小萱 (Age) 22

    31 3 周小芳 (Score) 92

    Account_T31

    Account_T32

    欄位不同

    解決方案: 一個Tenant一個Table

  • AccountID Name Major Score

    1 李小白 資訊科學系 100

    2 黃小明 應用數學系 90

    3 周小芳 應用數學系 92

    Account_T31

    真正情況

    Select Score from Account_T31 where AccountID=2

    程式中的SQL需要改寫

    AccountID Name Major Score

    1 李小白 資訊科學系 100

    2 黃小明 應用數學系 90

    3 周小芳 應用數學系 92

    Account

    Tenant 31的觀點

    Select Score from Account where AccountID=2

  • 未來展望Future Java EE

  • IBM San Francisco(1997)

    Java 企業端技術的進化

    Spring (2003)

    Hibernate (2002)

    2000 2005

    AOP(1997)

    (1994)

    J2EE 1.2(1998)

    Enterprise

    J2EE 1.3(2001)

    RobustnessJ2EE 1.4 (2004)

    Web Services

    Java EE 5-6(2006-2011)

    EoD/Flexibility

    ORM (1980)

    IoC

    2010

    Cloud Computing

    Java EE 7-8(2012-)

    Cloud

  • 有關 Java EE 7

    • Technical Lead– Linda Demichiel

    • 和雲端服務有關的新規格– Jcache 1.0 (JSR 107)

    – Batch Processing 1.0

    – JSON 1.0

    • 舊規格的雲端化– JPA 2.1 (JSR 338): Multi-Tenancy table discriminator

    – JMS 2.0 (JSR 343): Cloud extension

    – Servlet 3.1 (JSR 340): PaaS model for Web Applications

    (資料來源: Java One 2011)

  • 雲端服務技術的展望

    • 2011

    – Gartner: “the year of PaaS”

    • 2012 Q3

    – Java EE 7: First official Java-based cloud standard

    • 2015

    – Y. Natis (Gartner): “PaaS開發經驗與技能將成為IT求職基本要求! ”

  • Thank [email protected]


Recommended