- Trang Chủ
- Điện - Điện tử
- Mẫu thiết kế cho việc phát triển phần mềm trong môi trường đám mây: Bản khảo sát hiện trạng
Xem mẫu
- HộiHội
Thảo Quốc
Thảo GiaGia
Quốc 2015
2015vềvềĐiện
ĐiệnTử,
Tử,Truyền
TruyềnThông CôngNghệ
Thông và Công NghệThông
ThôngTinTin (ECIT
(ECIT 2015)
2015)
Mẫu Thiết Kế Cho Việc Phát Triển Phần Mềm Trong
Môi Trường Đám Mây: Bản Khảo Sát Hiện Trạng
Ngô Huy Biên và Trần Đan Thư
Khoa Công Nghệ Thông Tin,
Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia thành phố Hồ Chí Minh, Việt Nam
Email: nhbien@fit.hcmus.edu.vn, tdthu@fit.hcmus.edu.vn
Abstract— Điện toán đám mây hứa hẹn một cuộc cách mạng di chuyển các ứng dụng truyền thống lên các đám mây hay xây
trong công nghệ và kinh doanh bằng cách cung cấp khả năng dựng một hệ thống mới trên đám mây là một thách thức lớn đối
tính toán như các dịch vụ trong môi trường Internet. Hầu hết các với các nhà phát triển do sự khác biệt rất lớn giữa một dịch vụ
doanh nghiệp ngày nay đều dựa trên các hệ thống công nghệ dành cho hàng trăm triệu người sử dụng với một ứng dụng cài
thông tin để vận hành các hoạt động kinh doanh phức tạp. Việc đặt trên máy một người dùng hay một ứng dụng dùng cho vài
di chuyển các hệ thống này lên môi trường đám mây là điểu tất trăm người trong một công ty. Các nhà phát triển cần thiết kế
yếu do lợi ích to lớn trong việc giảm chi phí xây dựng và vận ứng dụng để đáp ứng khả năng mở rộng, tính sẵn sàng cao
hành hệ thống. Các nhà phát triển có thể phát triển các ứng dụng cùng năng lực xử lý thông minh khi người dùng mất kết nối.
dịch vụ điện toán đám mây bằng 2 cách: phát triển ứng dụng
Sự tương tác, kết hợp giữa các dịch vụ đám mây phức tạp tạo
trên dịch vụ nền tảng hoặc phát triển ứng dụng riêng gọi đến các
dịch vụ của điện toán đám mây. Dù phát triển ứng dụng đám
nên sự ảnh hưởng lẫn nhau giữa các ứng dụng và các nhà phát
mây bằng cách nào đi nữa thì thiết kế là giai đoạn không thể bỏ triển cần xử lý chúng một cách khéo léo.
qua nhằm đánh giá tính đúng đắn của phương pháp giải quyết Các mẫu thiết kế truyền thống vẫn có thể sử dụng để phát
vấn đề và có tài liệu để các bên liên quan liên lạc thống nhất với triển các ứng dụng đám mây, tuy nhiên chúng chưa đủ để đáp
nhau. Để thiết kế thành công các hệ thống phần mềm trong đám ứng các nhu cầu của ứng dụng điện toán đám mây khi mà khối
mây phục vụ doanh nghiệp các kiến trúc sư cần được trang bị lượng xử lý trở nên khổng lồ, các kết nối có thể bị cắt đứt đột
đầy đủ kiến thức và kinh nghiệm. Mẫu thiết kế là một phương
ngột, các dịch vụ tương tác chồng chéo, phụ thuộc vào nhau,
tiện nhằm chuyển giao giải pháp cho các vấn đề lặp lại nhiều lần
chờ đợi kết quả của nhau [56, 70], nhiều khách hàng có yêu
và tính hiệu quả của mẫu thiết kế đã được chứng thực qua thời
gian. Trong bài báo này chúng tôi khảo sát các công trình nghiên
cầu khác nhau cùng dùng chung một ứng dụng.
cứu về mẫu thiết kế để phát triển phần mềm doanh nghiệp trong Một ví dụ cụ thể có thể kể đến như cơ chế xác thực và phân
môi trường đám mây, đặc biệt là phần mềm cung cấp như dịch quyền. Các mẫu thiết kế như Brokered Authentication, Role-
vụ, đồng thời đi sâu vào các khó khăn khi phát triển ứng dụng đa Based Access Control [36] vẫn có thể sử dụng để xác thực và
người thuê. Đóng góp chính của bài báo này bao gồm (i) lý do cần phân quyền cho ứng dụng đám mây. Tuy nhiên với các ứng
nghiên cứu mẫu thiết kế để phát triển phần mềm trong môi dụng đám mây hỗ trợ đa người thuê, các người thuê phân thành
trường đám mây, (ii) bản tổng kết hiện trạng một cách hệ thống
nhiều cấp khác nhau cần có mẫu thiết kế mới để xây dựng hệ
các kết quả nghiên cứu về mẫu thiết kế cho các ứng dụng trong
môi trường đám mây và (iii) các câu hỏi nghiên cứu đề xuất cho
thống quản lý nhiều người thuê phân cấp đồng thời cung cấp
các vấn đề còn tồn đọng. Chúng tôi hy vọng rằng bài báo sẽ góp cơ chế xác thực đơn giản cho tất cả các người thuê cũng như cơ
phần giúp các nhà nghiên cứu về kỹ nghệ phần mềm trong môi chế phân quyền linh hoạt mà vẫn đảm bảo sự bảo mật trong
trường đám mây có cái nhìn tổng quan từ đó xác định hướng việc truy cập vào các tài nguyên.
nghiên cứu và bài toán cụ thể cho mình trong lĩnh vực này dễ Việc chuyển đổi các ứng dụng truyền thống lên đám mây
dàng hơn. không có nghĩa là loại bỏ chúng, các ứng dụng truyền thống sẽ
vẫn tồn tại song song với các ứng dụng đám mây, do vậy cần
Keywords — thiết kế phần mềm; mẫu thiết kế; điện toán đám
mây; đa người thuê; tính biến thiên của phần mềm.
có các mẫu thiết kế kết hợp sự xác thực và phân quyền giữa
đám mây và ứng dụng truyền thống, bảo mật cho người dùng
trong nhiều môi trường chỉ qua một lần xác thực nhằm giúp họ
I. GIỚI THIỆU sử dụng dịch vụ dễ dàng hơn.
Đ iện toán đám mây hứa hẹn một cuộc cách mạng trong
công nghệ và kinh doanh bằng cách cung cấp khả năng
tính toán như các dịch vụ trong môi trường Internet. Hầu
Một ví dụ khác như dịch vụ trao đổi thông điệp trong môi
trường đám mây, các dịch vụ email truyền thống hầu như
hết các doanh nghiệp ngày nay đều dựa trên các hệ thống công không bảo vệ nội dung điện thư truyền đi trong môi trường
nghệ thông tin để vận hành các hoạt động kinh doanh phức tạp. mạng, do vậy cần có các mẫu thiết kế để giải quyết vấn đề bảo
Việc di chuyển các hệ thống này lên môi trường đám mây là mật nội dung dữ liệu trao đổi giữa các dịch vụ.
điểu tất yếu do lợi ích to lớn trong việc giảm chi phí xây dựng Rất nhiều vấn đề cần được giải quyết khi xây dựng phần
và vận hành hệ thống[18, 44, 60, 75]. mềm trong môi trường điện toán đám mây như làm thế nào để
Cho đến thời điểm hiện tại phần lớn các ứng dụng phần xây dựng mô hình dữ liệu cho phép thay đổi khi thực thi
mềm vẫn ở dạng truyền thống (on-premise applications). Việc chương trình, làm sao để xử lý các quy trình tính toán phức tạp
ISBN: 978-604-67-0635-9 212
212
- Hội Hội
ThảoThảo Quốc
Quốc GiaGia 2015
2015 vềvềĐiện
ĐiệnTử,
Tử,Truyền
TruyềnThông
Thông và
và Công
CôngNghệ
NghệThông
ThôngTinTin
(ECIT 2015)
(ECIT 2015)
đòi hỏi sự kết hợp của nhiều dịch vụ, trong đó mỗi dịch vụ đòi kiếm cho việc xây dựng phần mềm đám mây; phần III chúng
hỏi đầu vào khác nhau và trả về kết quả bất tương thích với các tôi giới thiệu các vấn đề gặp phải khi thiết kế các phần mềm
dịch vụ khác, làm sao để một hệ thống có khả năng quay ngược
cung cấp như dịch vụ trong môi trường đám mây; phần IV
quy trình xử lý khi tính năng của hệ thống được xây dựng bằng
cách kết hợp nhiều dịch vụ khác nhau và một dịch vụ được gọi chúng tôi tập trung vào các khó khăn về thiết kế khi phát triển
bị lỗi. ứng dụng đa người thuê; phần V chúng tôi thảo luận một số
Việc phát hiện các mẫu thiết kế để giải quyết các vấn nảy công trình liên quan; cuối cùng chúng tôi tổng kết lại hiện
sinh khi phát triển các hệ thống phần mềm trong môi trường trạng nghiên cứu và đưa ra tầm nhìn về tương lại. Trong mỗi
đám mây, đặc biệt là các hệ thống quản trị ngân hàng, thương phần chúng tôi giới thiệu một số vấn đề mở còn tồn đọng của
mại điện tử, quản trị nhân lực, kết nối, trao đổi thông tin hay chủ đề nghiên cứu.
bản đồ dịch trở thành một nhu cầu cấp thiết. Các mẫu thiết kế Đóng góp chính của bài báo này gồm (i) lý do cần nghiên
mới sẽ giúp bảo đảm chất lượng và nâng cao hiệu suất của quá
trình phát triển phần mềm trong môi trường đám mây. cứu mẫu thiết kế để phát triển phần mềm trong môi trường
đám mây, (ii) bản tổng kết hiện trạng nghiên cứu về mẫu thiết
Trong bài báo này chúng tôi khảo sát các vấn đề gặp phải kế cho các ứng dụng trong môi trường đám mây và (iii) một số
khi thiết kế và xây dựng phần mềm trong môi trường đám câu hỏi nghiên cứu đề xuất cho các vấn đề còn tồn đọng.
mây. Sơ đồ khái niệm dưới đây mô tả các lĩnh vực mà chúng
tôi sẽ đề cập và mối liên hệ giữa chúng. II. MẪU THIẾT KẾ
Công nghệ và phương pháp phát triển phần mềm thay đổi
liên tục theo từng ngày, các vấn đề mới luôn xuất hiện ngày
một nhiều trong khi các mẫu thiết kế có sẵn thì luôn giới hạn.
Do vậy thường xuyên có nhu cầu về các mẫu mới để giải quyết
các vấn đề vừa nảy sinh. Để đưa ra các mẫu mới đòi hỏi cần có
sự đầu tư nghiên cứu về mẫu đối với các vấn đề mới nảy sinh,
sau đó tổng kết và tài liệu hóa lại các giải pháp.
Cũng như mọi sự vật khác, các mẫu không phải là tồn tại
vĩnh viễn. Có những mẫu trở nên lỗi thời do vấn đề cần giải
quyết không còn xuất hiện nữa hoặc do xuất hiện một giải pháp
thay thế khác tốt hơn, hoặc do công nghệ phát triển làm cho
Hình 1. Sơ đồ khái niệm của các lĩnh vực nghiên cứu. vấn đề có thể tự được giải quyết khi áp dụng công nghệ mới.
Khi một mẫu đã lỗi thời chúng ta không nên ứng dụng nó nữa.
Sơ đồ trên thể hiện mẫu phần mềm là một lĩnh vực con Để nhận biết một mẫu là lỗi thời, cập nhập lại mẫu đó cho hợp
trong kỹ nghệ phần mềm, mẫu thiết kế là một lĩnh vực con thời đòi hỏi sự nghiên cứu lại các mẫu cũ trong hoàn cảnh mới.
trong mẫu phần mềm. Điện toán đám mây là một lĩnh vực Do vậy ngoài việc tìm kiếm các mẫu và ngôn ngữ mẫu mới,
nghiên cứu riêng biệt, phần giao giữa điện toán đám mây và kỹ các nhà nghiên cứu còn tập trung vào việc tái cấu trúc, sửa
nghệ phần mềm chính là kỹ nghệ phần mềm trong môi trường chữa, điều chỉnh, mô tả lại các mẫu cũ cho phù hợp với hiện
đám mây (bao gồm quy trình, chuẩn hóa, mô hình phát triển, tại.
ứng dụng, vân vân).
Việc nghiên cứu để phát hiện, tài liệu hóa và áp dụng mẫu
Ứng dụng đám mây là một lĩnh vực con trong điện toán được thực hiện liên tục với hàng loạt các thành tựu như 23 mẫu
đám mây, các ứng dụng đám mây tập trung ở ba loại là ứng thiết kế của nhóm 4 người với các mẫu như Abstract Factory,
dụng quản lý hạ tầng cung cấp dạng dịch vụ, ứng dụng cung Facade, Composite, Template, Strategy [43] được áp dụng rộng
cấp nền tảng dạng dịch vụ và ứng dụng nghiệp vụ cung cấp rãi trong các hệ thống hướng đối tượng; hay các mẫu MVC,
như dịch vụ. Sự giao nhau giữa mẫu thiết kế và ứng dụng đám Layer, Interceptor của nhóm 5 người [16] được tích hợp vào
mây chính là mẫu thiết kế cho ứng dụng đám mây, lĩnh vực hầu hết các hệ thống khung hiện tại; hay các mẫu Data Acess
nghiên cứu mà bài báo đề cập chính là miền giao nhau này. Object, Transfer Object, Business Object, Domain Model,
Ứng dụng đa người thuê là một lĩnh vực nghiên cứu trong Active Record [5, 40] được ứng dụng rộng rãi trong hầu hết
ứng dụng đám mây. Sự giao nhau giữa mẫu thiết kế và ứng các phần mềm doanh nghiệp hiện nay; hay các mẫu Role-
dụng đa người thuê chính là mẫu thiết kế cho ứng dụng đa Based Access Control [36] được áp dụng để quản lý phân
người thuê, đây là một lĩnh vực con của mẫu thiết kế cho ứng quyền trong hầu như tất cả các hệ thống.
dụng đám mây và cũng chính là lĩnh vực mà bài báo này tập Các nghiên cứu về lý thuyết mẫu cũng đã được thực hiện
trung đề cập nhiều nhất. chi tiết [15, 24, 71]. Ngoài ra các nhà nghiên cứu còn đề xuất
Phần tiếp theo của bài báo được cấu trúc như sau: phần II nhiều mẫu dành riêng cho các ngôn ngữ hay hệ thống đặc thù
[9, 20 - 23]; các tác vụ trong quá trình phát triển phần mềm như
chúng tôi giới thiệu một số thành tựu trong việc nghiên cứu
phân tích [39], thiết kế nghiệp vụ [31], kiểm thử đơn vị [64],
mẫu thiết kế, mục đích là giới thiệu về các lĩnh vực trong công tích hợp [50], quản lý tài nguyên [53], bảo mật hệ thống [37],
nghệ phần mềm mà các nhà nghiên cứu đã tập trung tìm kiếm quản lý cấu hình [11]; các phần mềm đặc thù như trang mạng
mẫu thiết kế, từ đó cho thấy mẫu thiết kế cần tiếp tục được tìm [45], hệ quản trị nội dung [72], hệ thống phân tán [27], phần
213
213
- HộiHội
ThảoThảo Quốc
Quốc Gia
Gia 2015vềvềĐiện
2015 ĐiệnTử,
Tử,Truyền
TruyềnThông
Thông và
và Công
CôngNghệ
NghệThông
ThôngTinTin
(ECIT 2015)
(ECIT 2015)
mềm hướng dịch vụ [10, 30]. Các kinh nghiệm khi ứng dụng nghiệp cần các ứng dụng vận hành đám mây. Thiết kế các ứng
mẫu một cách không đúng đắn cũng được nghiên cứu và tài dụng này là một vấn đề thiết yếu cần được giải quyết. Xây
liệu hóa lại [13, 28, 58, 79]. dựng các phần mềm hệ thống (IaaS) và nền tảng (PaaS) cho
đám mây là một quá trình phức tạp.
Tuy nhiên cuộc sống luôn thay đổi, các lĩnh vực mới xuất
hiện ngày càng nhiều, xây dựng phần mềm trong các lĩnh vực Các phần mềm hệ thống cho đám mây cần quản lý được
đó đòi hỏi các mẫu thiết kế mới. Vấn đề mở hiện nay là việc các máy chủ vật lý, các máy ảo, hệ thống lưu trữ vật lý, quản lý
phát hiện, tài liệu hóa các mẫu và ngôn ngữ mẫu chuyên biệt thông điệp giao tiếp, cân bằng tải, chống lỗi, theo dõi mức độ
cho công nghệ mới và miền ứng dụng đặc thù, ví dụ như hệ sử dụng tài nguyên, hiệu suất hệ thống, cung cấp giao diện
thống nhúng và phân tán theo thời gian thực, tương tác nhóm, người dùng và giao diện lập trình ứng dụng [75]. Các phần
phát triển phần mềm hướng mô hình, phát triển phần mềm mềm nền tảng đám mây cần quản lý quản lý được các ứng
hướng khía cạnh, và đặc biệt là tính toán dịch vụ và điện toán dụng, cung cấp môi trường, ngôn ngữ và thư viện để phát triển
đám mây. ứng dụng, cung cấp phương pháp lưu trữ cho ứng dụng, vận
hành và theo dõi các ứng dụng.
III. MẪU THIẾT KẾ CHO ỨNG DỤNG ĐÁM MÂY Trong [48] các tác giả giới thiệu hai mẫu thiết kế để xây
Ngành điện toán cho đến ngày nay đã trải qua 6 hệ mẫu dựng các hệ thống IaaS và PaaS. Mẫu Cloud Infrastructure đưa
tính toán từ điện toán máy trạm đến điện toán cá nhân, đến điện ra mối quan hệ tĩnh và động giữa người thuê với hệ thống điều
toán mạng, đến điện toán internet, đến điện toán lưới và hiện khiển, máy ảo, máy chủ, tài nguyên với mục đích hỗ trợ việc
tại đang trong giai đoạn điện toán đám mây [42]. Điện toán xây dựng các hệ thống IaaS. Mẫu Platform-as-a-Service đưa ra
đám mây là một lĩnh vực liên quan chặt chẽ với kỹ nghệ phần mối quan hệ tĩnh và động giữa người dùng với bên cung cấp
mềm. Việc nghiên cứu các mẫu thiết kế để phát triển phần mềm nền tảng cùng các thành phần thiết yếu của một hệ thống PaaS
trong môi trường điện toán đám mây tập trung vào mẫu thiết kế nhằm mục đích hỗ trợ xây dựng các hệ thống PaaS. Tuy nhiên
cho 3 loại phần mềm chính: phần mềm hạ tầng, phần mềm nền hai mẫu thiết kế này chỉ cung cấp kiến trúc ở mức độ tổng quan
tảng và phần mềm cung cấp như dịch vụ [17, 42, 61, 77]. mà không đưa ra các hướng dẫn, phân tích chi tiết về việc hiện
thực hóa chúng.
Một trong các yêu cầu đối với phần mềm hạ tầng là khả
năng hợp nhất các hệ thống đám mây do vậy cần các mẫu thiết Vấn đề chưa giải quyết trong lĩnh vực mẫu thiết kế cho
kế và chuẩn để có thể thực hiện yêu cầu này. Cả 3 loại phần phần mềm hệ thống và nền tảng đám mây là phân tích để tìm ra
mềm đều cần sử dụng các mẫu thiết kế về lưu trữ và xử lý dữ những điểm chưa hoàn thiện trong mô hình nghiệp vụ của các
liệu lớn, bảo mật và mở rộng các hệ thống. Cả 3 loại phần phần mềm khi áp dụng vào các hoàn cảnh thực tế; đưa ra các
mềm này đều có nhu cầu tích hợp các hệ thống với nhau. Việc chỉ dẫn cụ thể để xây dựng, hiện thực hóa các loại phần mềm
tích hợp này thường được thực hiện dựa trên các mẫu thiết kế dạng này; so sánh, đánh giá các phần mềm hệ thống và phần
cho các hệ thống nền tảng trung gian (middleware) hay hệ mềm nền tảng khác nhau.
thống mạch kết nối dịch vụ (enterprise service bus) và áp dụng B. Mẫu thiết kế cho việc hợp nhất các hệ thống đám mây
các chuẩn chung. Đặc biệt cả 3 loại phần mềm hầu như đều Các đám mây hiện nay tập trung rải rác ở một số nhà cung
được xây dựng trên mô hình đa người thuê. Việc xây dựng các cấp lớn như Amazon, Google, Microsoft, IBM và Rackspace.
hệ thống đa người thuê đòi hỏi các mẫu thiết kế kiến trúc cho [19] dự đoán trong tương lai các đám mây này sẽ hợp nhất với
từng lĩnh vực đặc thù và khả năng xử lý tính biến thiên. Hình nhau để tận dụng nguồn cung cấp dịch vụ của nhau nhằm giảm
2 mô tả các hướng nghiên cứu chúng tôi vừa đề cập. Chi tiết chi phí mở rộng và mở rộng các khả năng của mình. Các tác
cho từng hướng sẽ được trình bày ở những phần tiếp theo. giả đưa ra một kịch bản hợp nhất trong đó các tài nguyên ảo
được chia sẽ giữa các đám mây và cung cấp cho người dùng
một cách liền mạch. Các tác giả cũng đề xuất kiến trúc, kỹ
thuật và công nghệ cần thiết để xây dựng 3 thành phần này.
Đây là một ý tưởng rất hấp dẫn, tuy nhiên việc hiện thực hóa
và đánh giá kiến trúc này vẫn chưa được thực hiện.
C. Mẫu thiết kế lưu trữ và truy xuất dữ liệu ứng dụng đám
mây
Các phần mềm trong môi trường đám mây luôn cần lưu trữ
xử lý một khối lượng dữ liệu cực kỳ lớn và nhiều khi không có
giới hạn. Đây là một đặc điểm đặc thù của các phần mềm trong
môi trường đám mây nhằm tận dụng khả năng lưu trữ và xử lý
không giới hạn của đám mây. Trong đám mây hầu hết các dữ
Hình 2 – Phát triển phần mềm trong môi trường đám mây. liệu được lưu trữ không theo kiểu quan hệ dẫn đến việc lập
A. Mẫu thiết kế cho phần mềm hệ thống và nền tảng đám mây trình ứng dụng đám mây cũng thay đổi theo.
Nhiều doanh nghiệp hay chính phủ vì lý do bảo mật hoặc Các hệ thống đám mây thường cung cấp hai dịch vụ cho
do nhu cầu tích hợp với ứng dụng truyền thống của minh, hoặc việc lưu trữ và truy xuất dữ liệu ứng dụng, đặc biệt là khả
có nhu cầu toàn quyền quản lý ứng dụng và hạ tầng cần có đám năng hỗ trợ ứng dụng làm việc với khối lượng dữ liệu lớn:
mây riêng của mình. Để xây dựng các đám mây riêng doanh
214
214
- HộiHội
ThảoThảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Tập Tập tin (file) hệ thống để lưu trữ dữ liệu như nhau. Các nhà phát triển gặp nhiều khó khăn trong việc tích
Google File System [44], Hadoop Distributed File hợp ứng dụng của mình với các ứng dụng ở các nền tảng khác,
đặc biệt là các ứng dụng truyền thống trong nội bộ doanh
System [76]
nghiệp. Trong [32] các tác giả giới thiệu mẫu thiết kế “Cloud
Cơ chế để truy xuất dữ liệu như MapReduce [26], Component Gateway” giúp các ứng dụng tương tác với nhau
Map-Reduce-Merge [86] bằng cách mỗi ứng dụng trong môi trường đám mây tạo bản
sao giao diện của mình và dùng chúng tương tác với các ứng
Một số mẫu thiết kế để truy xuất và xử lý dữ liệu lớn như dụng truyền thống. Các bản sao này sẽ chuyển các yêu cầu đến
repartition join, semi-joins, secondary sort, reservoir sampling, các thành phần bên trong của ứng dụng đám mây.
vân vân được giới thiệu trong [51]. Tuy nhiên các cách xử lý Một vấn đề khác khi tích hợp các ứng dụng là khả năng
này thường áp dụng cho xử lý song song và cho kết quả không đảm bảo tính tin cậy và toàn vẹn cho từng quy trình nghiệp vụ,
theo thời gian thực trong khi các hệ thống đám mây thường trong đó mỗi quy trình nghiệp vụ gọi các quy trình từ các ứng
phải tương tác với người dùng theo thời gian thực. Việc đưa ra dụng khác. Mặc dù đã có các chuẩn để hỗ trợ sự tin cậy khi tích
các mẫu thiết kế để giải quyết việc xử lý dữ liệu lớn và cho ra hợp các dịch vụ như WS-Coordination, WS-
kết quả gần như theo thời gian thực là một vấn đề cần giải AtomicTransaction và WS-BusinessActivity [83] việc hiện
quyết. thực hóa các chuẩn này thành các hệ thống nền tảng trung gian
Các ứng dụng đám mây thường tương tác và trao đổi một để giảm thời gian và chi phí cho các nhà phát triển trong việc
khối lượng lớn dữ liệu với nhau. Làm sao để việc trao đổi được hiện thực hóa các nghiệp vụ doanh nghiệp trong môi trường
tiến hành nhanh chóng với độ tin cậy cao, các lỗi có thể xảy ra đám mây vẫn chưa được thực hiện. Do vậy cần tìm kiếm mẫu
nằm trong sự kiểm soát, các thông tin không bị hỏng hay dư thiết kế để tích hợp các ứng dụng theo chuẩn, ví dụ như mẫu
thừa trong quá trình trao đổi cũng là một vấn đề cần giải quyết. thiết kế cho chuẩn quản lý giao dịch của ứng dụng đám mây
Ngoài ra các ứng dụng trình khách thường hạn chế về khả năng nhằm đạt được độ tin cậy về kết quả và sự toàn vẹn về dữ liệu.
lưu trữ và tính toán nên việc thiết kế hệ thống sao cho vừa tận
E. Mẫu thiết kế cho việc bảo mật ứng dụng
dụng được khả năng lưu trữ cục bộ vừa tận dụng được khả
năng lưu trữ không giới hạn của đám mây cũng là một vấn đề Mối quan tâm lớn nhất của các doanh nghiệp khi đưa ứng
cần giải quyết. dụng của mình lên đám mây là khả năng bảo mật thông tin do
trong môi trường đám mây các hệ thống luôn mở với người
D. Mẫu thiết kế cho việc tích hợp giữa các ứng dụng cung cấp dùng cuối thông qua các giao diện người dùng trên web hay
như dịch vụ các dịch vụ web. Ngoài ra bảo mật cho ứng dụng trong môi
Mỗi ứng dụng, đặc biệt là ứng dụng doanh nghiệp luôn hiện trường đám mây thường đòi hỏi tuân theo các chuẩn nhằm hỗ
thực hóa một số các quy trình nghiệp vụ đặc thù. Các quy trình trợ cho việc tích hợp các dịch vụ đám mây. Nếu dịch vụ đám
này thường được tích hợp với nhau để thực hiện một quy trình mây là dịch vụ đa người thuê, bảo mật cho ứng dụng còn cần
lớn hơn. Việc tích hợp có thể được thực hiện trong cùng một hệ đảm bảo sự cách ly giữa các người thuê khác nhau.
thống bằng cách sử dụng các ngôn ngữ thực thi quy trình như Hầu hết các ứng dụng hiện tại sử dụng các cơ chế chứng
Web Services Business Process Execution Language (BPEL) thực đơn giản dễ bị tấn công bởi các dạng tấn công nghe trộm
[83] và các động cơ xử lý ngôn ngữ thực thi quy trình [55]. và mô phỏng. Dịch vụ mạng là công nghệ được sử dụng phổ
Việc tích hợp có thể được thực hiện giữa các hệ thống khác biến hiện nay. Để đảm bảo sự bảo mật cho các dịch vụ web
nhau, cụ thể hơn là các hệ thống cung cấp dạng dịch vụ trong đồng thời giúp các dịch vụ web tương tác được với nhau, nhiều
trong môi trường đám mây. Sự tích hợp giữa các hệ thống khác chuẩn đã được phát triển và áp dụng. Chuẩn WS-Policy mô tả
nhau đảm bảo việc tận dụng tối đa việc tái sử dụng khả năng văn phạm để biểu diễn các chính sách khác nhau của một dịch
của từng hệ thống. Việc tích hợp giữa các hệ thống có thể được vụ web và kết hợp giữa chúng. WS-Policy là nền tảng để mô tả
thực hiện ở nhiều mức độ khác nhau bằng cách sử dụng các các chuẩn khác. Chuẩn WS-Security sử dụng các mô hình bảo
dịch vụ mạng (web service) hay mashups [75] hay các ngôn mật có sẵn như Kerberos [68] hoặc X509. Chuẩn này đặc tả
ngữ thực thi quy trình với các hệ thống trung gian. cách sử dụng các mô hình đó sao cho các dịch vụ web có thể
Ở góc độ thiết kế việc tích hợp giữa các ứng dụng khác tương tác đồng nhất với nhau.
nhau có thể được thực hiện dựa vào các mẫu thiết kế tích hợp Bảo mật được xây dựng trên mối quan hệ tin cậy được định
dạng truyền tải thông điệp như Message Bus [50]. Tuy nhiên nghĩa trước. Kerberos bảo mật được bởi vì các thành viên tham
các mẫu thiết kế này quá tổng quát chưa giải quyết cụ thể các gia tin tưởng vào một trung tâm phân phối khóa (Kerberos Key
yêu cầu đặc thù trong đám mây như đồng bộ hóa dữ liệu giữa Distribution Center). Public Key Infrastructure (PKI) [1] bảo
ứng dụng di dộng và nhiều nơi lưu trữ trong đám mây, đảm bảo mật được bởi vì các thành viên tin tưởng vào các nhà cấp
tính toàn vẹn của dữ liệu khi di chuyển trong đám mây, khả chứng chỉ gốc (Root Certificate Authorities). Chuẩn WS-Trust
năng tích hợp khối lượng dữ liệu cự kỳ lớn. Trong [62] các tác đưa ra một mô hình mở rộng để thiết lập và kiểm tra các mối
giả đã đề xuất một số mẫu thiết kế đồng bộ hóa dữ liệu cho ứng quan hệ tin cậy giữa các dịch vụ web. Chuẩn WS-Federation
dụng di động như Full Transfer, Timestamp Transfer, cho phép một nhóm các tổ chức thiết lập một vùng bảo mật ảo.
Mathematical Transfer. Chuẩn WS-SecureConversation được xây dựng trên nền của
Một trong những khó khăn khi tích hợp các ứng dụng là các chuẩn WS-Security, WS-Trust, và WS-Policy nhằm cung
giải quyết các vấn đề không tương thích, trùng lắp về dữ liệu cấp sự tương tác và trao đổi dữ liệu bảo mật cho các dịch vụ
và chức năng của các ứng dụng. Hiện nay các nền tảng đám web [83]. XML Signature bảo vệ các phần của một tài liệu
mây tập trung rải rác ở nhiều nhà cung cấp và tổ chức khác XML khỏi sự chỉnh sửa trái phép bằng cách sử dụng chữ ký
215
215
- HộiHội
ThảoThảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
điện tử. Thuật toán cho chữ ký có thể sử dụng hệ thống bảo thuê khác, đặc biệt là khi hệ thống đang vận hành. Do vậy để
mật đối xứng như (Triple DES hoặc AES) hoặc bất đối xứng xây dựng hệ thống đa người thuê đáp ứng tốt khả năng mở
như RSA hoặc DSA. XML Encryption mã hóa các phần của rộng các nhà thiết kế cần đưa ra các mẫu thiết kế quản lý trạng
một tài liệu XML. thái của ứng dụng khi ứng dụng được triển khai ở nhiều cụm
Các chuẩn bảo mật cho dịch vụ web thường phức tạp và dài máy chủ, mẫu thiết kế theo dõi và quản lý việc tăng giảm tài
dòng gây khó khăn cho các kiến trúc sư hay nhà phát triển nguyên đối với từng người thuê khi hệ thống đang vận hành.
trong việc áp dụng và kiểm tra chúng. Trong [2, 3] các tác giả G. Mẫu thiết kế cho ứng dụng cung cấp như dịch vụ
mô tả lại các chuẩn dưới dạng mẫu nhằm giúp các nhà phát
triển hiểu các chuẩn một cách dễ dàng hơn đồng thời cung cấp Phần mềm cung cấp như dịch vụ là một mô hình dịch vụ
khả năng so sánh và kiểm tra xem một ứng dụng có đáp ứng trong đó các khả năng của hệ thống được cung cấp đến người
một chuẩn bảo mật nào đó không. dùng bằng việc sử dụng trực tiếp ứng dụng của nhà cung cấp
trong môi trường đám mây [63].
Đăng nhập và chứng thực một lần là nhu cầu thiết yếu khi
sử dụng các dịch vụ. Chuẩn Security Assertion Markup Phần mềm cung cấp như dịch vụ xuất hiện từ những ngày
Language (SAML) được đưa ra bởi tổ chức OASIS đã giải đầu của internet. Một số nhà cung cấp ứng dụng như dịch vụ
quyết vấn đề này [25]. Giao thức OAuth 2.0 [47] là một giao (Application Service Provider – ASP) đã đóng gói các sản
thức phân quyền mở và chuẩn hóa cho phép người dùng cấp phẩm của mình, cài đặt trong trung tâm dữ liệu của mình và
quyền cho các ứng dụng bên thứ ba truy cập có giới hạn vào cho phép người dùng truy cập chúng thông qua internet. Tuy
các tài nguyên của mình tại một nơi lưu trữ. Giao thức cho nhiên làn sóng ASP đầu tiên thất bại vì cơ sở hạ tầng cho
phép cấp quyền mà không chia sẻ các thông tin bảo mật lâu đường truyền internet còn chưa đáp ứng được nhu cầu người
dài như mật khẩu đồng thời cho phép người dùng hủy việc cấp dùng về băng thông, người dùng phải sử dụng phương pháp
phép khi cần thiết. OAuth 2.0 cũng có thể được sử dụng cho truy cập bàn điều khiển từ xa (remote desktop) để thao tác với
việc đăng nhập một lần. ứng dụng và giá thành không rẻ hơn nhiều so với ứng dụng
truyền thống.
Các vấn đề chưa giải quyết trong lĩnh vực này là thể hiện
toàn bộ các chuẩn dưới dạng mẫu thiết kế nhằm giúp các nhà Không như làn sóng ASP đầu tiên các nhà cung cấp phần
mềm như dịch vụ thế hệ tiếp theo như Google hay Salesforce
phát triển dễ dàng áp dụng chúng trong hệ thống của mình và
sử dụng hoàn toàn kiến trúc nền tảng web, tận dụng tối đa hạ
hiện thực hóa chúng một cách đúng đắn [54, 78], đồng thời tầng chung cho nhiều người dùng để giảm giá thành. Dưới góc
cũng cần thiết đưa ra các mẫu thiết kế nhằm hướng dẫn áp nhìn của một khách hàng khi sử dụng phần mềm cung cấp như
dụng các thuật toán bảo mật mới trong các hoàn cảnh đặc thù dịch vụ người dùng chỉ cần có một thẻ ghi nợ (credit card) và
nhằm đảm bảo vấn đề bảo mật cho hệ thống. một trình duyệt để đăng ký sử dụng phần mềm. Sau đó người
F. Mẫu thiết kế kế cho việc mở rộng khả năng tải của ứng dùng truy cập và hiệu chỉnh lại phần mềm theo nhu cầu của
dụng mình và có thể bắt đầu sử dụng cho công việc của mình. Điểm
nhấn mạnh ở đây là khách hàng không cần các bộ phận chuyên
Đối với các ứng dụng đám mây yêu cầu về năng lực xử lý trách về công nghệ thông tin để có sản phẩm sử dụng, không lo
của hệ thống luôn tăng theo cùng số lượng người dùng. Vì vậy lắng về vấn đề cập nhập và bảo trì phần mềm [75].
là khả năng mở rộng (scalabilty) của ứng dụng nhằm đảm bảo
cho hệ thống vẫn hoạt động tốt khi dữ liệu xử lý tăng lên là yêu Các giải pháp cung cấp như dịch vụ được quan tâm bởi
cầu tiên quyết. Hệ thống cũng cần có khả năng giảm năng lực chúng mang lại sự đơn giản trong việc sở hữu, vận hành và bảo
xử lý khi dữ liệu cần xử lý giảm xuống để tiết kiệm chi phí. trì sản phẩm kèm theo khả năng giảm chi phí to lớn cho doanh
Việc tăng giảm tài nguyên này cần được thực hiện một cách nghiệp so với phần mềm truyền thống [81]. Vấn đề chưa giải
liền mạch để không ảnh hưởng đến hoạt động của hệ thống. quyết trong lĩnh vực này là đưa ra các mẫu kiến trúc để xây
dựng các hệ thống SaaS cho các miền ứng dụng khác nhau như
Trong [6] các tác giả giới thiệu 5 mẫu thiết kế để mở rộng ngân hàng, bệnh viện, bảo hiểm, trường học, học tập điện tử (e-
các ứng dụng đám mây bao gồm: Single Platform, Shared learning).
Platform, Clustered Platform, Multiple Shared Platforms,
Multiple Clustered Platforms. Các mẫu thiết kế này chỉ tập
IV. MẪU THIẾT KẾ CHO ỨNG DỤNG ĐA NGƯỜI
trung vào khía cạnh triển khai hệ thống mà không tập trung vào
THUÊ
khía cạnh thiết kế và xây dựng hệ thống.
Để đạt được mục tiêu giảm chi phí, các giải pháp cung cấp
Trong [85] tác giả giới thiệu các mẫu thiết kế Horizontally như dịch vụ thường được thiết kế theo mô hình đa người thuê.
Scaling Compute tập trung vào việc mở rộng tính toán bằng Đa người thuê là một mô hình trong đó nhiều doanh nghiệp sử
cách xây dựng các cụm tính toán tự trị và phi trạng thái dựa dụng chung một nền tảng, chia sẻ chung nơi lưu trữ dữ liệu và
trên các dịch vụ đám mây để giảm sự phức tạp trong triển khai có khả năng cấu hình lại giải pháp [59]. Có thể nói mô hình
và quản lý các cụm tính toán. này là một điểm đặc trưng nổi bật để phân biệt giữa một phần
Khó khăn khi xây dựng hệ thống có khả năng mở rộng là mềm trong môi trường đám mây với một phần mềm truyền
quản lý trạng thái của ứng dụng sao cho khi áp dụng cân bằng thống. Mô hình đa người thuê được phân thành các nhóm chính
tải (load balancing) người dùng luôn truy cập được trạng thái sau [41, 66]:
ứng dụng của phiên làm việc trước. Ngoài ra dữ liệu của các
người thuê cũng cần được thiết kế một cách hợp lý để có thể
mở rộng cho người thuê này mà không ảnh hưởng đến người
216
216
- HộiHội
ThảoThảo Quốc
Quốc Gia
Gia 2015vềvềĐiện
2015 ĐiệnTử,
Tử,Truyền
TruyềnThông
Thông và
và Công
CôngNghệ
NghệThông
ThôngTinTin
(ECIT 2015)
(ECIT 2015)
Hệ thống không có khả năng cấu hình và một hệ thống khách hàng; hệ thống cần được thiết kế với khả năng biến thiên
được triển khai dùng chung cho nhiều người thuê để thỏa mãn các yêu cầu về dữ liệu và quy trình nghiệp vụ khác
(single instance service). nhau của các khách hàng khác nhau; hệ thống cần có khả năng
mở rộng hay thu hẹp một cách linh động tùy theo số lượng
Hệ thống không có khả năng cấu hình và mỗi người người thuê nhằm giảm thiểu chi phí phần cứng; hệ thống cần
thuê sử dụng một hệ thống được triển khai riêng cho khả năng vận hành trên nhiều cụm máy chủ khác nhau cùng
mình (multiple instances service). khả năng chuyển đổi giữa các cụm khi xảy ra sự cố; hệ thống
Hệ thống có khả năng cấu hình và một hệ thống được cần cho phép người thuê đo lường các yêu cầu phi chức năng
triển khai dùng chung cho tất cả các người thuê (single mà hệ thống cung cấp tại bất kỳ thời điểm nào [73].
arbitrary arbitrary instance service). A. Mẫu thiết kế kiến trúc cho phần mềm đa người thuê
Hệ thống có khả năng cấu hình và mỗi người thuê sử Một trong những khó khăn khi xây dựng phần mềm đa
dụng một hệ thống được triển khai riêng cho mình người thuê là kiến trúc tổng thể của hệ thống. Kiến trúc này là
(multiple configurable instances service). chìa khóa để hiện thực hóa các ứng dụng đa người thuê. Mục
tiêu chính của kiến trúc này là làm sao để cách ly các người
Ngoài ra có thể kết hợp 2 mô hình không cấu hình với thuê với nhau để họ không bị ảnh hưởng bởi nhau về mặt dữ
nhau hoặc 2 mô hình cấu hình với nhau để tạo thành liệu, bảo mật, độ tin cậy cũng như quy trình nghiệp vụ. Nhiều
các mô hình tự do (arbitrary instances service). nhà nghiên cứu đã đề xuất các kiến trúc để giải quyết khó khăn
Hình 3 mô tả kiến trúc chung của các sản phẩm cung cấp này.
như dịch vụ cho đa người thuê dạng có khả năng cấu hình và Frederick Chong và Gianpaolo Carraro liệt kê các thành
một hệ thống được triển khai cho tất cả các người thuê [75]. phần cơ bản của kiến trúc đa người thuê bao gồm tầng lưu trữ,
Một sản phẩm cung cấp như một dịch vụ được sử dụng bởi tầng dịch vụ nghiệp vụ, tẩng dịch vụ quy trình, tầng giao diện,
nhiều khách hàng (người thuê) A, B, C. Các khách hàng chia tầng dịch vụ bảo mật và tầng siêu dữ liệu [41].
sẻ chung một mã nguồn. Mỗi khách hàng có dữ liệu riêng của
mình và có thể cấu hình lại hệ thống thông qua các siêu dữ Guo và các cộng sự đề xuất mô hình để phát triển các ứng
dụng đa người thuê trong trong đó việc việc thực thi và quản lý
liệu (dữ liệu cấu hình). Các hệ thống đa người thuê giảm tối đa
được cách ly bằng cách hạn chế người dùng đến một phần của
chi phí để sở hữu và vận hành hệ thống. Một ví dụ cho thấy là cấu trúc thư mục bằng các mô hình bảo mật hệ thống đặc thù
khi hệ thống cần nâng cấp một tính năng, trong môi trường đa của nền tảng phát triển [46].
người thuê do chỉ có một mã nguồn và dữ liệu được triển khai
trên một hệ thống nên chi phí giảm đi rất nhiều so với việc cập Ralph Mietzner giới thiệu và đánh giá các mẫu thiết kế
nhập nhiều hệ thống cho từng khách hàng theo cách truyền Single instance service, Single configurable instance service và
thống [75]. Multiple instances service. Các tác giả mô tả làm thế nào để
các dịch vụ giữa các người thuê. Các mẫu thiết kế này có thể
áp dụng để thiết kế, phát triển và triển khai các ứng dụng đa
người thuê [66]. Ngoài ra các tác giả còn thể hiện phương
pháp tích hợp các dịch vụ dựa trên thông tin người thuê bằng
cách truyền thông tin người thuê hiện hành vào các thành phần
dịch vụ đang được kích hoạt.
Weissman và Bobrowski mô tả thiết kế của Force.com, một
trong những doanh nghiệp đi tiên phong trong mô hình đa
người thuê. Force.com sử dụng kiến trúc trên nền tảng siêu dữ
liệu. Các siêu dữ liệu này được dùng để định nghĩa và lưu trữ
Hình 3 – Kiến trúc của phần mềm đa người thuê [75] dữ liệu cho ứng dụng đa người thuê [84].
Một kiến trúc sơ bộ cho đa người thuê được giới thiệu trong
Mục tiêu chính của hệ thống đa người thuê là giảm chi phí
[12], trong đó các tác giả cho rằng sự định danh, cấu hình và cơ
bằng cách tối đa hóa việc chia sẻ tài nguyên. Khi chia sẻ tài
sở dữ liệu là các thành phần chính của ứng dụng đa người thuê.
nguyên hệ thống cần đảm bảo dữ liệu của từng người thuê phải
được bảo mật và cách ly; tốc độ thực thi của các người thuê Một kiến trúc để hiện thực hóa đa người thuê cho nền tảng
phải được cách ly hay nói cách khác tốc độ khi sử dụng hệ hướng dịch vụ được giới thiệu trong [8]. Afkham và các cộng
thống của người thuê này không được ảnh hưởng đến tốc độ sử sự cho rằng việc cấu hình, phân phối thông điệp, bảo mật, thực
dụng hệ thống của người thuê khác; việc thực thi công việc của thi dịch vụ và truy cập dữ liệu là các khía cạnh chính một ứng
từng người thuê phải được cách ly hay nói cách khác luồng dụng đa người thuê cần có.
thực thi của các người thuê phải độc lập, kết quả của người
thuê này không ảnh hưởng đến kết quả của người thuê khác Việc xây dựng các ứng dụng đa người thuê từ đầu đòi hỏi
[69]. nhiều thời gian và công sức. Tập trung vào khía cạnh bảo mật
của hệ thống [4] giới thiệu kiến trúc quản lý bảo mật đa người
Ngoài ra khi xây dựng các hệ thống đa người thuê cần đảm thuê cho phép các nhà cung cấp dịch vụ tái sử dụng các giao
bảo hệ thống có khả năng xử lý dữ liệu lớn hơn nhiều so với diện lập trình bảo mật có sẵn khi phát triển một ứng dụng đa
các hệ thống cho một khách hàng; hệ thống cần có khả năng người thuê mới. Kiến trúc này cũng cho phép có thể điều chỉnh
tích hợp với nhiều hệ thống truyền thống khác nhau của các lại các yêu cầu về bảo mật và “tiêm” (inject) một đoạn mã
217
217
- Hội Hội
ThảoThảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
nguồn vào ứng dụng tại thời điểm đang chạy để hiện thực hóa Tính biến thiên cần được mô hình và quản lý ở góc độ vấn
yêu cầu mới này. Các tác giả ứng dụng mẫu thiết kế quản lý đề (hay cụ thể hơn là yêu cầu) và góc độ giải pháp [74]. Các
đảo ngược (inversion of control) hoặc khả năng lập trình hướng giải pháp cho tính biên thiên tập trung ở khả năng cấu hình
khía cạnh để hiện thực hóa kiến trúc này. (configuration), hiệu chỉnh (customization) và triển khai hệ
thống (provision, deployment). Cấu hình là khả năng thay đổi
Việc phân phối tài nguyên đến từng người thuê một cách hành vi của hệ thống dựa trên các thiết lập được định nghĩa
tối ưu hóa là một vấn đề cần được quan tâm. Hệ thống chưa sẵn. Cấu hình được thực hiện khi hệ thống đang vận hành. Các
được tối ưu hóa nếu một người thuê có số người dung là 100 thiết lập cho cấu hình được xác định trước khi triển khai hệ
được phân phối số tài nguyên bằng với một người thuê có số thống hoặc dựa vào các siêu dữ liệu trong quá trình vận hành.
người dùng là 10000. Trong [34] các tác giả trình bày một Hiệu chỉnh là khả năng thay đổi hành vi của hệ thống dựa trên
khung ứng dụng cho phép tối ưu hóa sự phân bổ các yêu cầu việc thay đổi hay thêm một số thành phần của hệ thống. Hiệu
của các người thuê đến các tài nguyên hệ thống bằng cách sử chỉnh được thực hiện trước khi hệ thống đưa vào triển khai.
dụng thuật toán tôi luyện thép.
Cấu hình thường được sử dụng để hỗ trợ sự thay đổi thông
Các hệ thống đa người thuê rất phong phú và đa dạng, yêu qua các tham số được định nghĩa trước cho mô hình dữ liệu,
cầu thay đổi tùy theo từng tổ chức. Ví dụ rất nhiều tổ chức quy tắc nghiệp vụ hay giao diện. Hiệu chỉnh thường được sử
cùng cần hệ thống quản trị dự án với các yêu cầu về quy trình dụng để hỗ trợ sự thay đổi của những phần cốt lõi của phần
đặc thù cho tổ chức của mình; các nhà cung cấp phần mềm mềm mà khó có thể được thực hiện bằng cấu hình. So với cấu
dịch vụ cần xây dựng hệ thống quản trị dự án đa người thuê hình thì hiệu chỉnh thường tốn nhiều chi phí và thời gian hiện
cho các tổ chức đó. Hay như nhiều trường đại học cùng cần hệ thực hóa cũng như bảo trì hơn [80]. Hình 4 trình bày phân loại
thống học tập điện tử với các yêu cầu đặc thù cho từng trường; của tính biến thiên trong môi trường đa người thuê.
các nhà cung cấp phần mềm dịch vụ cần xây dựng hệ thống
học tập điện tử đa người thuê cho các trường đại học. Để xây Mô hình hóa yêu cầu về tính biến thiên của một hệ thống và
dựng những hệ thống như vậy đòi hỏi các mẫu thiết kế kiến kỹ thuật quản lý chúng được giới thiệu trong [65]. Trong đó tác
trúc đa người thuê đặc thù cho lĩnh vực mà tổ chức quan tâm. giả áp dụng các kỹ thuật của kỹ nghệ sản phẩm phần mềm
Do vậy thể hiện kiến trúc đa người thuê cho các lĩnh vực đặc dòng để giải quyết vấn đề quản lý các yêu cầu biến thiên của
thù ví dụ như hệ thống bảo mật thông điệp, hệ thống quản lý dự ứng dụng cung cấp như dịch vụ.
án, học tập điện tử, ngân hàng, bảo hiểm, quản lý doanh nghiệp
là vấn đề cần được giải quyết. Trong [74] các tác giả mô tả quy trình để mô hình khả năng
cấu hình về tính năng và yêu cầu chất lượng của một hệ thống
B. Mẫu thiết kế cho tính biến thiên của phần mềm đa người trong đám mây bằng cách sử dụng mô hình tính tăng mở rộng
thuê (extended feature model) của kỹ nghệ phần mềm dòng.
Tính biến thiên được nghiên cứu và sử dụng nhiều trong kỹ
nghệ phần mềm dòng (software product line engineering) ở
nhiều công đoạn khác nhau trong quá trình phát triển phần
mềm như phân tích yêu cầu, thiết kế, hiện thực hóa, kiểm thử
và ở nhiều mức độ trừu tượng khác nhau như mô hình yêu cầu,
mô hình thiết kế, hệ thống đã được hiện thực hóa, kết quả kiểm
thử [57].
Khi xây dựng các phần mềm đa người thuê, các hệ thống
cần phải thỏa mãn các yêu cầu khác nhau của nhiều người thuê
và yêu cầu của môi trường phát triển đặc thù như Amazon1,
Azure2 hay Google Application Engine3. Điều này đòi hỏi các
phần mềm cần được thiết kế một cách linh động, dễ cấu hình,
hay nói cách khác là phải thỏa mãn các yêu cầu khác nhau của Hình 4 – Tính biến thiên trong môi trường đa người thuê.
các khách hàng khác nhau. Nói cách khác phần mềm đa người
thuê cần phải có tính biến thiên. Các giải pháp cho khả năng cấu hình của phần mềm đa
Tính biến thiên của phần mềm có thể được định nghĩa như người thuê tập trung vào khả năng thay đổi dữ liệu cho phù hợp
khả năng của một hệ thống hay sản phẩm phần mềm có thể mở với các người thuê khác nhau, khả năng thay đổi chức năng hay
rộng, thay đổi, cấu hình hoặc hiệu chỉnh một cách hiệu quả để hành vi cho phù hợp với các quy trình nghiệp vụ khác nhau.
có thể sử dụng trong một hoàn cảnh đặc thù [67]. Sự biến thiên Hình 5 trình bày phân loại của các giải pháp cho tính biến thiên
của phần mềm có thể xảy ra ở dữ liệu của hệ thống, ở tính năng của dữ liệu và chức năng trong môi trường đa người thuê dựa
của hệ thống, ở luồng nghiệp vụ, ở công nghệ sử dụng, ở mục trên cấu hình.
tiêu chất lượng đối với hệ thống hay ở môi trường triển khai hệ Frederick Chong và Gianpaolo Carraro giới thiệu các
thống [35]. phương pháp để cô lập và mở rộng dữ liệu của các người thuê
khác nhau trong hệ quản trị cơ sở dữ liệu quan hệ bao gồm kỹ
thuật sử dụng một sơ đồ dữ liệu chung (single schema model)
[41]. Khi sử dụng một sơ đồ dữ liệu chung mỗi dòng dữ liệu
1
http://aws.amazon.com của một bảng được gắn kết với một người thuê nhất định thông
2
3
http://www.windowsazure.com/en-us qua định danh người thuê, các trường mở rộng của mỗi bảng có
https://appengine.google.com
218
218
- HộiHội
Thảo Quốc
Thảo Gia
Quốc 2015
Gia 2015vềvềĐiện
ĐiệnTử,
Tử,Truyền
TruyềnThông và Công
Thông và CôngNghệ
NghệThông
ThôngTinTin (ECIT
(ECIT 2015)
2015)
thể là một tập hợp cố định các trường định nghĩa trước hoặc có Việc hiện thực hóa các yêu cầu biến thiên về tính năng cho
thể là một tập hợp vô hạn các cặp tên và giá trị trong một bảng ứng dụng đa người thuê có thể được thực hiện bằng cách sử
khác. dụng một kiến trúc dành cho việc phát triển các ứng dụng tự
điều chỉnh (dynamically adaptive applications) [73]. Kiến trúc
này bao gồm một siêu mô hình để định nghĩa các thành phần,
một ngôn ngữ để diễn tả các thành phần và một động cơ để
chạy các ứng dụng phát triển dựa trên kiến trúc này. Các ứng
dụng được phát triển dựa trên bộ khung này sẽ tự điều chỉnh ở
trạng thái thực thi dựa trên cấu hình của từng người thuê cũng
như yêu cầu của họ. Các yêu cầu khác nhau của từng người
thuê được định nghĩa dựa trên cấu hình người thuê.
Stefan Walraven và các cộng sự giới thiệu cách xử lý các
yêu cầu khác nhau của những người thuê khác nhau bằng cách
kết hợp việc nội xạ sự phụ thuộc (dependency injection) với
Hình 5 – Các giải pháp cho tính biến thiên của dữ liệu và chức năng trong các hệ thống nền tảng trung gian hỗ trợ việc cách ly dữ liệu các
môi trường đa người thuê. người thuê [82]. Việc tùy chỉnh phần mềm theo các yêu cầu
khác nhau của từng người thuê được thực hiện thông qua việc
Để giải quyết tính biến thiên của dữ liệu trong quá trình nhận các cấu hình của từng người thuê trong cơ sở dữ liệu, sau
thực thi của phần mềm [7] giới thiệu kỹ thuật Chunk Folding, đó từng thành phần của phần mềm cho từng tính năng yêu cầu
trong đó các bảng dữ liệu được phân ra thành các bảng thông được khởi tạo và ánh xạ vào từng phần thực thi của hệ thống sử
thường chứa các dữ liệu chung, đặc thù cho ứng dụng và các dụng nội xạ sự phụ thuộc.
bảng rải rác (chunking) chứa các dữ liệu riêng cho từng người
thuê. Kỹ thuật này được hiện thực hóa trên nền của các hệ quản Eddy Truyen và các cộng sự giới thiệu cách tùy chỉnh ứng
trị cơ sở dữ liệu quan hệ. Các tác giả cũng xây dựng ngôn ngữ dụng đa người thuê bằng cách sử dụng các tính năng đặc biệt
để truy vấn thông tin khi sử dụng kỹ thuật này. Điểm yếu của của các ngôn ngữ lập trình hướng hoàn cảnh [49, 80].
kỹ thuật này là tính cục bộ (ad-hoc) và sự phức tạp khi truy vấn Tình biến thiên cho các yêu cầu về triển khai cho từng
thông tin. Để ứng dụng kỹ thuật này các hệ thống phải thay đổi người thuê tùy theo các điều khoản của hợp đồng về dịch vụ
hoàn toàn cách truy cập cơ sở dữ liệu của mình. hoặc triển khai một phần mềm được hiệu chỉnh cho từng người
Weissman và Bobrowski mô tả thiết kế của Force.com, một thuê có thể được hiện thực bằng ngôn ngữ thực thi quy trình
trong những doanh nghiệp đi tiên phong trong mô hình đa [32], hoặc kỹ nghệ hướng mô hình [29, 38].
người thuê. Force.com sử dụng kiến trúc trên nền tảng siêu dữ Các công trình trên đã giải quyết tính biến thiên của một số
liệu. Tính biến thiên về dữ liệu được xử lý bằng cách dùng các khía cạnh trong ứng dụng đa người thuê như dữ liệu, luồng
siêu dữ liệu để mô tả dữ liệu người thuê [84]. Tương tự như kỹ công việc. Tuy nhiên các hệ thống đa người thuê hiện tại
thuật sử dụng siêu dữ liệu Gautam Shroff mô tả kỹ thuật sử thường phân thành nhiều tầng như giao diện, nghiệp vụ và dữ
dụng nhiều sơ đồ (multiple schemas) trong đó mỗi người thuê liệu. Sự thay đổi của một tầng sẽ kéo theo sự thay đổi của các
được gắn kết với một sơ đồ dữ liệu nhất định. Sơ đồ này được tầng phụ thuộc. Thực hiện các yêu cầu về mở rộng một cách
định nghĩa bằng thông tin siêu dữ liệu [75]. đồng nhất trong quá trình thực thi vẫn chưa được giải quyết
Một kỹ thuật khác để xử lý tính biến thiên của dữ liệu là tận triệt để; vẫn chưa có các mẫu thiết kế giúp đạt được các tính
dụng các dịch vụ lưu trữ không quan hệ trong môi trường đám biến thiên của ứng dụng một cách đồng nhất ở thời điểm thực
mây (cloud data store) [75]. thi nhằm đáp ứng nhu cầu nghiệp vụ khác nhau của mỗi doanh
nghiệp khác nhau. Hay nói một cách khác là vẫn chưa có các
Trong [32] tác giả đề xuất phương pháp hiện thực tính biến mẫu thiết kế để xây dựng các ứng dụng tự điều chỉnh (adaptive
thiên về dữ liệu bằng cách sử dụng mẫu thiết kế Variable Data SaaS software).
Component, trong đó dữ liệu của mỗi thực thể được gắn kết với
một danh sách không định kiểu. Mỗi đối tượng trong danh sách V. CÔNG TRÌNH LIÊN QUAN
này được xác định thông qua một khóa duy nhất. Trong trường
Tìm hiểu về mẫu thiết kế cho điện toán đám mây chỉ mới
hợp các dữ liệu này được xử lý không thông qua các hàm nhập
được thực hiện bởi [33]. Trong báo cáo này các tác giả đề xuất
xuất cơ bản (tạo, cập nhập, xóa, trả về thông tin), nhà phát triển
quy trình để tìm kiếm mẫu thiết kế cho điện toán đám mây, đề
cần tạo các hàm xử lý đặc thù cho chúng.
xuất cách mô tả các mẫu thiết kế và thảo luận một số lĩnh vực
Để đạt được tính biến thiên về chức năng Fehling đề xuất áp dụng. Tuy nhiên các tác giả chỉ nêu lên các vấn đề chung
xây dựng các chức năng cơ bản sau đó sử dụng các ngôn ngữ cần giải quyết của điện toán đám mây mà chưa đi sâu vào việc
thực thi quy trình, ví dụ như BPEL [55], để gắn các chức năng phát triển phần mềm trong môi trường đám mây; các mẫu thiết
với nhau [32]. kế cho từng vấn đề cụ thể cũng chưa được khảo sát; các công
trình được khảo sát chưa bao quát đầy đủ các lĩnh vực chính
Thiết kế và hiện thực hóa một động cơ thực thi các luồng và phân loại một cách hệ thống; các vấn đề nghiên cứu còn tồn
công việc cho đa người thuê được giới thiệu trong [69]. Động đọng cũng chưa được đề cập.
cơ này cho phép nhiều người thuê cùng chạy các luồng công
việc của mình trên cùng một động cơ. Công trình này cũng sử
dụng BPEL làm ngôn ngữ thực thi quy trình.
219
219
- Hội Hội
Thảo Quốc
Thảo GiaGia
Quốc 2015 vềvềĐiện
2015 ĐiệnTử,
Tử,Truyền
TruyềnThông
Thông và CôngNghệ
và Công NghệThông
ThôngTinTin (ECIT
(ECIT 2015)
2015)
VI. KẾT LUẬN VÀ TẦM NHÌN [13] William J. Brown, Raphael C. Malveau, Hays W. McCormick III, and
Thomas J. Mowbray, AntiPatterns - Refactoring Software, Architectures,
Trong bài báo này chúng tôi đã trình bày nguyên nhân cần and Projects in Crisis.: Wiley, New York, 1998.
nghiên cứu mẫu thiết kế cho việc phát triển phần mềm trong [15] Frank Buschmann, Kevlin Henney, and Douglas C. Schmidt, Pattern-
môi trường đám mây. Chúng tôi tổng kết các nghiên cứu về Oriented Software Architecture: A Pattern Language for Distributed
mẫu thiết kế cho việc phát triển phần mềm trong môi trường Computing., 2007.
đám mây. Cụ thể là các vấn đề mà các nhà nghiên cứu công [16] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad,
nghệ phần mềm quan tâm khi phát triển ứng dụng trong môi and Michael Stal, Pattern-Oriented Software Architecture: A System of
trường đám mây như xây dựng phần mềm hệ thống và phần Patterns., 1996.
mềm nền tảng, xử lý dữ liệu lớn, quản lý bảo mật, xây dựng và [17] Rajkumar Buyya, James Broberg, and Andrzej Goscinski, Cloud
tích hợp các phần mềm cung cấp như dịch vụ, phát triển phần Computing: Principles and Paradigms., 2011.
mềm đa người thuê, xử lý tính biên cho ứng dụng đa người [18] Rajkumar Buyya, Chee Shin Yeo, and Srikumar Venugopal, Market-
thuê. Chúng tôi đi sâu vào các khó khăn khi phát triển ứng Oriented Cloud Computing: Vision, Hype, and Reality for Delivering IT
Services as Computing Utilities., 2008.
dụng trong môi trường đám mây và đề xuất các vấn đề nghiên
cứu cho từng lĩnh vực. Hình 1, 2, 4 và 5 cung cấp góc nhìn [19] Antonio Celesti, "How to Enhance Cloud Architectures to Enable Cross-
Federation," in 2010 IEEE 3rd Int. Conf. on Cloud Computing, Miami,
tổng quan về các hướng nghiên cứu mà chúng tôi đã khảo sát. 2010.
Chúng tôi hy vọng rằng bài báo sẽ giúp các nhà nghiên cứu [20] Peter Coad, Object-oriented patterns., 1992.
về kỹ nghệ phần mềm cho đám mây có cái nhìn tổng quan về [21] James O. Coplien, Advanced C++ Programming Styles and Idioms.,
hiện trạng nghiên cứu, các vấn đề nghiên cứu, từ đó có thể lựa 1991.
chọn cho mình bài toán cụ thể để tiếp tục giải quyết nhằm góp [22] James O. Coplien, C++ Idioms., 1998.
phần cung cấp các kiến thức cho ngành kỹ nghệ phần mềm [23] James O. Coplien, Idioms and Patterns as Architectural Literature.,
trong môi trường đám mây. Trong tương lai chúng tôi sẽ tập 1997.
trung khảo sát hiện trạng các hướng nghiên cứu liên quan đến [24] James O. Coplien, Software Patterns., 1996.
mẫu thiết kế trong môi trường đám mây như kỹ nghệ hướng [25] Kelly D. Lewis and James E. Lewis, "Web Single Sign-On
mô hình, thiết kế phần mềm tự hiệu chỉnh, thiết kế phần mềm Authentication using SAML. 2009.," in IJCSI International Journal of
trong mạng lưới internet vạn vật. Computer Science Issues, 2009.
[26] Jeffrey Dean and Sanjay Ghemawat, "MapReduce: Simplified Data
TÀI LIỆU THAM KHẢO Processing on Large Clusters," in OSDI, San Francisco, 2004.
[27] Michael Stal, Hans Rohnert and Frank Buschmann Douglas Schmidt,
[1] Carlisle Adams and Steve Lloyd, Understanding PKI Concepts, "Pattern-Oriented Software Architecture, Patterns for Concurrent and
Standards, and Deployment Considerations Second Edition.: Addison Networked Objects," , 2000.
Wesley, 2002.
[28] Bill Dudney, Stephen Asbury, Joseph K. Krozak, and Kevin Wittkopf,
[2] Ola Ajaj and Eduardo B. Fernandez, "A pattern for the WS- J2EE Antipatterns.: Wiley, 2003.
SecureConversation standard for web services," in Pattern Languages of
Programs, Tucson, Arizona, 2012. [29] Brandtzæg Eirik, Sébastien Mosser, and Parastoo Mohagheghi,
"Towards CloudML, a Model-based Approach to Provision Resources in
[3] Ola Ajaj and Eduardo B. Fernandez, "A pattern for the WS-Trust the Clouds.," in ECMFA, 2012, pp. 18-27.
standard of web services," in Asian Conf. on Pattern Languages of
Programs, Tokyo, 2010. [30] Thomas Erl, SOA Design Patterns., 2009.
[4] Mohamed Almorsy, John Grundy, and Amani S. Ibrahim, "TOSSMA: A [31] Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of
Tenant-Oriented SaaS Security Management Architecture," in 5th IEEE Software. Boston: Addison Wesley, 2003.
Conference on Cloud computing, Hawaii, 2012. [32] Christoph Fehling, "An Architectural Pattern Language of Cloud-based
[5] Deepak Alur, John Crupi, and Dan Malks, Core J2EE™ Patterns: Best Applications," in Pattern Languages of Programs, Portland, 2011.
Practices and Design Strategies., 2001. [33] Christoph Fehling et al., "Capturing Cloud Computing Knowledge and
[6] Claudio A. Ardagna, Ernesto Damiani, Fulvio Frati, Davide Rebeccani, Experience in Patterns," in Proceedings of the 5th IEEE International
and Marco Ughetti, "Scalability Patterns for Platform-as-a-Service," in Conference on Cloud Computing, 2012, pp. 726 - 733.
2012 IEEE 5th Int. Conf. on Cloud Computing (CLOUD), Honolulu, [34] Christoph Fehling, Frank Leymann, and Ralph Mietzner, "A Framework
2012. for Optimized Distribution of Tenants in Cloud Applications," in 3rd
[7] Stefan Aulbach, "Multi-Tenant Databases for Software as a Service," in International Conference on Cloud Computing, 2010, pp. 252-259.
2008 ACM SIGMOD Int. Conf. on Management of data, 2008. [35] Bachmann Felix and Len Bass, "Managing Variability in Software
[8] Afkham Azeez et al., "Multi-Tenant SOA Middleware for Cloud Architectures," ACM SIGSOFT Software Engineering Notes, vol. 26, no.
Computing," in Cloud Computing (CLOUD), 2010 IEEE 3rd 3, pp. 126-132, 2001.
International Conference, pages 458 - 465, Miami, FL, 2010. [36] Eduardo B. Fernandez, "Patterns for Operating Systems Access Control,"
[9] Kent Beck, Using Pattern Languages for Object-Oriented Programs., in Procs. of PLoP 2002, 2002.
1987. [37] Eduardo B. Fernandez, Security Patterns in Practice: Designing Secure
[10] Michael Bell, SOA Modeling Patterns for Service-Oriented Discovery Architectures using Software Patterns. Chichester: Wiley, 2013.
and Analysis., 2010. [38] Nicolas Ferry, Alessandro Rossini, Franck Chauvel, Brice Morin, and
[11] Stephen P. Berczuk and Brad Appleton, Software Configuration Arnor Solberg, "Towards Model-driven Provisioning, Deployment,
Management Patterns: Effective Teamwork, Practical Integration., 2002. Monitoring, and Adaptation of Multi-Cloud Systems," in 6th
International Conference on Cloud Computing, 2013, pp. 887-894.
[12] Cor-Paul Bezemer and Andy Zaidman, "Multi-Tenant SaaS
Applications: Maintenance Dream or Nightmare," in IWPSE-EVOL '10 [39] Martin Fowler, Analysis patterns: reusable object models., 1997.
Proceedings of the Joint ERCIM Workshop on Software Evolution [40] Martin Fowler et al., Patterns of Enterprise Application Architecture.,
(EVOL) and International Workshop on Principles of Software Evolution 2002.
(IWPSE), pages 88 - 92, ACM New York, NY, USA, 2010. [41] Chong Frederick and Carraro Gianpaolo, "Architecture Strategies for
220
220
- HộiHội Thảo
Thảo QuốcGia
Quốc Gia2015
2015về
về Điện
Điện Tử, Truyền Thông
Tử, Truyền ThôngvàvàCông
CôngNghệ
NghệThông Tin Tin
Thông (ECIT 2015)
(ECIT 2015)
Catching the Long Tail," , 2006. Variability Realization Techniques," Software: Practice and Experience,
[42] Borko Furht and Armando Escalante, Handbook of Cloud Computing. vol. 35, no. 8, pp. 705-754, 2005.
New York: Springer, 2010. [68] Clifford B. Neuman and Theodore Ts'o, "Kerberos: An Authentication
[43] Eric Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Sewice for Computer Networks," IEEE Communications Magazine, pp.
Patterns: Elements of Reusable Object-Oriented Software.: Addison- 33-38, 1994.
Wesley, 1994. [69] Milinda Pathirage, Srinath Perera, Indika Kumara, and Sanjiva
[44] Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, "The Google Weerawarana, "A Multi-tenant Architecture for Business Process
File System," in ACM SIGOPS Operating Systems, 2003. Executions," in Web Services (ICWS), 2011 IEEE International
Conference, pages 121 - 128, Washington, DC, 2011.
[45] Ian Graham, A pattern language for web usability., 2003.
[70] George Reese, Cloud Application Architectures., 2009.
[46] Chang Jie Guo, Wei Sun, Ying Huang, Zhi Hu Wang, and Bo Gao, "A
framework for native multi-tenancy application development and [71] D. Riehle, "Composite Design Patterns," in OOPSLA ’97 Conference
management," in CEC/EEE 2007, Tokyo, 2007, pp. 551 - 558. Proceedings, published as ACM SIGPLAN Notices, 32(10):218–228,
October 1997. ACM Press, 1997.
[47] Dick Hardt, "The OAuth 2.0 Authorization Framework," 2012.
[72] Andreas Rüping, Where Code and Content Meet: Design Patterns for
[48] Keiko Hashizume, "Cloud Service Model Patterns," in Pattern Web Content Management and Delivery, Personalisation and User
Languages of Programs, Tucson, 2012. Participation., 2009.
[49] Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz, "Context- [73] Julia Schroeter, Sebastian Cech, Sebastian Götz, Claas Wilke, and Uwe
oriented Programming," Journal of Object Technology, vol. 7, no. 3, Aßmann, "Towards Modeling a Variable Architecture for Multi-Tenant
2008. SaaS-Applications," in VaMoS, New York, 2012.
[50] Gregor Hohpe and Bobby Woolf, Enterprise Integration Patterns: [74] Julia Schroeter, Peter Mucha Marcel, and Malte Lochau, "Dynamic
Designing, Building, and Deploying Messaging Solutions., 2003. Configuration Management of Cloud-based Applications," in 16th
[51] Alex Holmes, Hadoop in Practice.: Manning Publications Co, 2012. International Software Product Line Conference, 2012, pp. 171-178.
[44] IDC. (2015, Sep.) IDC. [Online]. [75] Gautam Shroff, Enterprise Cloud Computing: Technology Architecture
http://www.idc.com/getdoc.jsp?containerId=prUS25732415 Applications.: Cambridge University Press, 2010.
[53] Michael Kircher and Prashant Jain, Pattern-Oriented Software [76] Konstantin Shvachko, Hairong Kuang, Sanjay Radia, and Robert
Architecture: Patterns for Resource Management., 2004. Chansler, "The Hadoop Distributed File System," in Mass Storage
[54] Somorovsky Juraj, Andreas Mayer, Jorg Schwenk, Marco Kampmann, Systems and Technologies (MSST), 2010 IEEE 26th Symposium, Incline
and Meiko Jensen, "On Breaking SAML: Be Whoever You Want to Be," Village, 2010.
in USENIX Security Symposium, 2012, pp. 397-412. [77] Elias Adriano Nogueira da Silva and Daniel Lucredio, "Software
[55] Matjaz B. Juric, Business Process Execution Language for Web Engineering for the Cloud: A Research Roadmap," in Software
Services.: Packt Publishing, 2006. Engineering(SBES), 2012 26th Brazilian Symposium on Computing &
Processing (Hardware and Software), Natal, 2012.
[56] Matjaz B. Juric, Ramesh Loganathan, Poornachandra Sarang, and Frank
Jennings, SOA Approach to Integration: XML, Web services, ESB, and [78] San-Tsai Sun and Konstantin Beznosov, "The Devil is in the
BPEL in real-world SOA projects., 2007. (Implementation) Details: An Empirical Analysis of OAuth SSO
Systems," in ACM conference on Computer and communications
[57] Pohl Klaus, Günter Böckle, and Frank Van Der Linden, Software security, New York, 2012, pp. 378-390.
Product Line Engineering. Berlin: Springer, 2005.
[79] Bruce Tate, Patrick Linskey, Bob Lee, and Mike Clark, Bitter EJB.,
[58] A. Koenig, "Patterns and Antipatterns," Journal of Object Oriented 2003.
Programming, volume 8, number 1, 1995.
[80] Eddy Truyen et al., "Context-oriented Programming for Customizable
[59] Thomas Kwok, Thao Nguyen, and Linh Lam, "A software as a service SaaS Applications," in ACM Symposium on Applied Computing, 2012,
with multi-tenancy support for an electronic contract management pp. 418-425.
application," in Services Computing, 2008. SCC '08. IEEE International
Conference, pages 179 - 186, Honolulu, HI, 2008. [81] Mark Turner, David Budgen, and Pearl Brereton, "Turning Software into
a Service," IEEE Computer Society, vol. 36, no. 10, pp. 38 - 44, 2003.
[60] Neal Leavitt, "Is Cloud Computing Really Ready for Prime Time?," ,
2009. [82] Stefan Walraven, Eddy Truyen, and Wouter Joosen, "A Middleware
Layer for Flexible and Cost-Efficient Multi-tenant Applications," in 12th
[61] Zaigham Mahmood, Cloud Computing for Enterprise Architectures., International Middleware Conference, 2011.
2011.
[83] Sanjiva Weerawarana, Web Services Platform Architecture: SOAP,
[62] Zach McCormick and Douglas C. Schmidt, "Data Synchronization WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging,
Patterns in Mobile Application Design," in PLoP, Tucson, 2012. and More.: Prentice Hall PTR, 2005.
[63] Peter Mell and Timothy Grance, "The NIST Definition of Cloud [84] Craig D Weissman and Steve Bobrowski, "The Design of the Force.com
Computing," 2011. Multitenant Internet Application Development Platform," in Proceedings
[64] Gerard Meszaros, xUnit Test Patterns Refactoring Test Code., 2007. of the 35th SIGMOD international conference on Management of data,
[65] Ralph Mietzner, Andreas Metzger, Frank Leymann, and Klaus Pohl, pages 889 - 896, Providence, Rhode Island, USA, 2009.
"Variability Modeling to Support Customization and Deployment of [85] Bill Wilder, Cloud Architecture Patterns.: O'Reilly Media, 2012.
Multi-Tenant-Aware Software as a Service Applications," in PESOS '09 [86] Hung-chih Yang, Ali, Hsiao, Ruey-Lung Dasdan, and D. Stott Parker,
Proceedings of the 2009 ICSE Workshop on Principles of Engineering "Map-Reduce-Merge: Simplified Relational Data Processing," in
Service Oriented Systems, pages 18 - 25, 2009. SIGMOD '07, New York, 2007.
[66] Ralph Mietzner, Tobias Unger, Robert Titze, and Frank Leymann,
"Combining Different Multi-Tenancy Patterns in Service-Oriented
Applications," in EDOC, 2009.
[67] Svahnberg Mikael, Jilles Van Gurp, and Jan Bosch, "A Taxonomy of
221
221
nguon tai.lieu . vn