服薬マネジメント業務の構築 - medi-soft.jp · 入退院業務構築⑤ 18.4.16 医療ソフト総合研究所 1 2018.4.16 服薬マネジメント業務の構築 医療ソフト総合研究所
企業雲端應用服務整合 - cfliaocfliao.net/cht/lib/exe/fetch.php?media=jcd2011.pdf · WSDL...
Transcript of 企業雲端應用服務整合 - cfliaocfliao.net/cht/lib/exe/fetch.php?media=jcd2011.pdf · WSDL...
-
企業雲端應用服務整合
廖峻鋒 (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]