Tải bản đầy đủ (.pdf) (10 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (734.43 KB, 10 trang )

Thảo
Quốc
2015vềvềĐiện
ĐiệnTử,
Tử,Truyền
TruyềnThông
Thông và Công
TinTin
(ECIT
2015)
HộiHội
Thảo
Quốc
GiaGia
2015
CôngNghệ
NghệThông
Thông
(ECIT
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: ,
di chuyển các ứng dụng truyền thống lên các đám mây hay xây
dựng một hệ thống mới trên đám mây là một thách thức lớn đối
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ụ
dành cho hàng trăm triệu người sử dụng với một ứng dụng cài


đặt trên máy một người dùng hay một ứng dụng dùng cho vài
trăm người trong một công ty. Các nhà phát triển cần thiết kế
ứng dụng để đáp ứng khả năng mở rộng, tính sẵn sàng cao
cùng năng lực xử lý thông minh khi người dùng mất kết nối.
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
nên sự ảnh hưởng lẫn nhau giữa các ứng dụng và các nhà phát
triển cần xử lý chúng một cách khéo léo.

Abstract— Đ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 tốn như các dịch vụ trong mơi trường Internet. Hầu hết các
doanh nghiệp ngày nay đều dựa trên các hệ thống công nghệ
thông tin để vận hành các hoạt động kinh doanh phức tạp. Việc
di chuyển các hệ thống này lên môi trường đám mây là điểu tất
yếu do lợi ích to lớn trong việc giảm chi phí xây dựng và vận
hành hệ thống. Các nhà phát triển có thể phát triển các ứng dụng
dịch vụ điện toán đám mây bằng 2 cách: phát triển ứng dụng
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
mây bằng cách nào đi nữa thì thiết kế là giai đoạn khơng thể bỏ
qua nhằm đánh giá tính đúng đắn của phương pháp giải quyế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
nhau. Để thiết kế thành công các hệ thống phần mềm trong đám
mây phục vụ doanh nghiệp các kiến trúc sư cần được trang bị
đầy đủ kiến thức và kinh nghiệm. Mẫu thiết kế là một phương
tiện nhằm chuyển giao giải pháp cho các vấn đề lặp lại nhiều lần
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 về mẫu thiết kế để phát triển phần mềm doanh nghiệp trong
môi trường đám mây, đặc biệt là phần mềm cung cấp như dịch

vụ, đồng thời đi sâu vào các khó khăn khi phát triển ứng dụng đa
người thuê. Đóng góp chính của bài báo này bao gồm (i) lý do cần
nghiên 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 một cách hệ thống
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
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
phần giúp các nhà nghiên cứu về kỹ nghệ phần mềm trong mơi
trường đám mây có cái nhìn tổng quan từ đó xác định hướng
nghiên cứu và bài tốn cụ thể cho mình trong lĩnh vực này dễ
dàng hơn.

Các mẫu thiết kế truyền thống vẫn có thể sử dụng để phát
triển các ứng dụng đám mây, tuy nhiên chúng chưa đủ để đáp
ứng các nhu cầu của ứng dụng điện toán đám mây khi mà khối
lượng xử lý trở nên khổng lồ, các kết nối có thể bị cắt đứt đột
ngột, các dịch vụ tương tác chồng chéo, phụ thuộc vào nhau,
chờ đợi kết quả của nhau [56, 70], nhiều khách hàng có yêu
cầu khác nhau cùng dùng chung một ứng dụng.
Một ví dụ cụ thể có thể kể đến như cơ chế xác thực và phân
quyền. Các mẫu thiết kế như Brokered Authentication, RoleBased Access Control [36] vẫn có thể sử dụng để xác thực và
phân quyền cho ứng dụng đám mây. Tuy nhiên với các ứng
dụng đám mây hỗ trợ đa người thuê, các người thuê phân thành
nhiều cấp khác nhau cần có mẫu thiết kế mới để xây dựng hệ
thống quản lý nhiều người thuê phân cấp đồng thời cung cấp
cơ chế xác thực đơn giản cho tất cả các người thuê cũng như cơ
chế phân quyền linh hoạt mà vẫn đảm bảo sự bảo mật trong
việc truy cập vào các tài nguyên.
Việc chuyển đổi các ứng dụng truyền thống lên đám mây
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
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ọ
sử dụng dịch vụ dễ dàng hơ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.

Đ

I.

GIỚI THIỆU

iện tố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 tốn như các dịch vụ trong môi trường Internet. Hầu
hết các doanh nghiệp ngày nay đều dựa trên các hệ thống công
nghệ thông tin để vận hành các hoạt động kinh doanh phức tạp.
Việc di chuyển các hệ thống này lên môi trường đám mây là
điểu tất yếu do lợi ích to lớn trong việc giảm chi phí xây dựng
và vận hành hệ thống[18, 44, 60, 75].

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ư
không bảo vệ nội dung điện thư truyền đi trong môi trường
mạng, do vậy cần có các mẫu thiết kế để giải quyết vấn đề bảo
mật nội dung dữ liệu trao đổi giữa các dịch vụ.
Rất nhiều vấn đề cần được giải quyết khi xây dựng phần

mềm trong mơi trường điện tốn đám mây như làm thế nào để
xây dựng mơ hình dữ liệu cho phép thay đổi khi thực thi
chương trình, làm sao để xử lý các quy trình tính tốn phức tạp

Cho đến thời điểm hiện tại phần lớn các ứng dụng phần
mềm vẫn ở dạng truyền thống (on-premise applications). Việc

ISBN: 978-604-67-0635-9

212
212


Thảo
Quốc
2015
ĐiệnTử,
Tử,Truyền
TruyềnThơng
Thơng và
và Cơng
TinTin
(ECIT
2015)
Hội Hội
Thảo
Quốc
GiaGia
2015
vềvềĐiện

CơngNghệ
NghệThơng
Thơng
(ECIT
2015)

địi hỏi sự kết hợp của nhiều dịch vụ, trong đó mỗi dịch vụ địi
hỏi đầu vào khác nhau và trả về kết quả bất tương thích với các
dịch vụ khác, làm sao để một hệ thống có khả năng quay ngược
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
bị lỗi.

kiếm cho việc xây dựng phần mềm đám mây; phần III chúng
tôi giới thiệu các vấn đề gặp phải khi thiết kế các phần mềm
cung cấp như dịch vụ trong môi trường đám mây; phần IV
chúng tôi tập trung vào các khó khăn về thiết kế khi phát triển
ứng dụng đa người thuê; phần V chúng tôi thảo luận một số
cơng trình liên quan; cuối cùng chúng tơi tổng kết lại hiện
trạng nghiên cứu và đưa ra tầm nhìn về tương lại. Trong mỗi
phần chúng tôi giới thiệu một số vấn đề mở còn tồn đọng của
chủ đề nghiên cứu.
Đóng góp chính của bài báo này gồm (i) lý do cần nghiên
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
kế cho các ứng dụng trong môi trường đám mây và (iii) một số
câu hỏi nghiên cứu đề xuất cho các vấn đề còn tồn đọng.

Việc phát hiện các mẫu thiết kế để giải quyết các vấn nảy
sinh khi phát triển các hệ thống phần mềm trong môi trường

đám mây, đặc biệt là các hệ thống quản trị ngân hàng, thương
mại điện tử, quản trị nhân lực, kết nối, trao đổi thông tin hay
bản đồ dịch trở thành một nhu cầu cấp thiết. Các mẫu thiết kế
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.
Trong bài báo này chúng tôi khảo sát các vấn đề gặp phải
khi thiết kế và xây dựng phần mềm trong môi trường đám
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ì ln giới hạn.
Do vậy thường xun 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
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.
Để nhận biết một mẫu là lỗi thời, cập nhập lại mẫu đó cho hợp
thời địi hỏi sự nghiên cứu lại các mẫu cũ trong hoàn cảnh mới.
Do vậy ngồi việc tìm kiếm các mẫu và ngơn ngữ mẫu mới,

các nhà nghiên cứu còn tập trung vào việc tái cấu trúc, sửa
chữa, điều chỉnh, mô tả lại các mẫu cũ cho phù hợp với hiện
tại.

Hình 1. Sơ đồ khái niệm của các lĩnh vực nghiên cứu.

Sơ đồ trên thể hiện mẫu phần mềm là một lĩnh vực con
trong kỹ nghệ phần mềm, mẫu thiết kế là một lĩnh vực con
trong mẫu phần mềm. Điện toán đám mây là một lĩnh vực
nghiên cứu riêng biệt, phần giao giữa điện tốn đám mây và kỹ
nghệ phần mềm chính là kỹ nghệ phần mềm trong môi trường
đám mây (bao gồm quy trình, chuẩn hóa, mơ hình phát triển,
ứ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
đượ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
thiết kế của nhóm 4 người với các mẫu như Abstract Factory,
Facade, Composite, Template, Strategy [43] được áp dụng rộng
rãi trong các hệ thống hướng đối tượng; hay các mẫu MVC,
Layer, Interceptor của nhóm 5 người [16] được tích hợp vào
hầu hết các hệ thống khung hiện tại; hay các mẫu Data Acess
Object, Transfer Object, Business Object, Domain Model,
Active Record [5, 40] được ứng dụng rộng rãi trong hầu hết
các phần mềm doanh nghiệp hiện nay; hay các mẫu RoleBased Access Control [36] được áp dụng để quản lý phân
quyền trong hầu như tất cả các hệ thống.

Ứng dụng đám mây là một lĩnh vực con trong điện toán
đám mây, các ứng dụng đám mây tập trung ở ba loại là ứng
dụng quản lý hạ tầng cung cấp dạng dịch vụ, ứng dụng cung
cấp nền tảng dạng dịch vụ và ứng dụng nghiệp vụ cung cấp

như dịch vụ. Sự giao nhau giữa mẫu thiết kế và ứng dụng đám
mây chính là mẫu thiết kế cho ứng dụng đám mây, lĩnh vực
nghiên cứu mà bài báo đề cập chính là miền giao nhau này.
Ứng dụng đa người thuê là một lĩnh vực nghiên cứu trong
ứng dụng đám mây. Sự giao nhau giữa mẫu thiết kế và ứng
dụng đa người thuê chính là mẫu thiết kế cho ứng dụng đa
người thuê, đây là một lĩnh vực con của mẫu thiết kế cho ứ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
trung đề cập nhiều nhất.

Các nghiên cứu về lý thuyết mẫu cũng đã được thực hiện
chi tiết [15, 24, 71]. Ngoài ra các nhà nghiên cứu còn đề xuất
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ư
phân tích [39], thiết kế nghiệp vụ [31], kiểm thử đơn vị [64],
tích hợp [50], quản lý tài nguyên [53], bảo mật hệ thống [37],
quản lý cấu hình [11]; các phần mềm đặc thù như trang mạng
[45], hệ quản trị nội dung [72], hệ thống phân tán [27], phần

Phần tiếp theo của bài báo được cấu trúc như sau: phần II
chúng tôi giới thiệu một số thành tựu trong việc nghiên cứu
mẫu thiết kế, mục đích là giới thiệu về các lĩnh vực trong công
nghệ phần mềm mà các nhà nghiên cứu đã tập trung tìm kiếm
mẫu thiết kế, từ đó cho thấy mẫu thiết kế cần tiếp tục được tìm

213
213


Thảo

Quốc
Gia
2015vềvềĐiện
ĐiệnTử,
Tử,Truyền
TruyềnThông
Thông và
TinTin
(ECIT
2015)
HộiHội
Thảo
Quốc
Gia
2015
và Công
CôngNghệ
NghệThông
Thông
(ECIT
2015)

mềm hướng dịch vụ [10, 30]. Các kinh nghiệm khi ứng dụng
mẫu một cách không đúng đắn cũng được nghiên cứu và tài
liệu hóa lại [13, 28, 58, 79].

nghiệp cần các ứng dụng vận hành đám mây. Thiết kế các ứng
dụng này là một vấn đề thiết yếu cần được giải quyết. Xây
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 ln 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
đó địi hỏi các mẫu thiết kế mới. Vấn đề mở hiện nay là việc
phát hiện, tài liệu hóa các mẫu và ngơn ngữ mẫu chun biệt
cho công nghệ mới và miền ứng dụng đặc thù, ví dụ như hệ
thống nhúng và phân tán theo thời gian thực, tương tác nhóm,
phát triển phần mềm hướng mơ hình, phát triển phần mềm
hướng khía cạnh, và đặc biệt là tính tốn dịch vụ và điện tốn
đám mây.
III.

Các phần mềm hệ thống cho đám mây cần quản lý đượ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ý
thông điệp giao tiếp, cân bằng tải, chống lỗi, theo dõi mức độ
sử dụng tài nguyên, hiệu suất hệ thống, cung cấp giao diện
người dùng và giao diện lập trình ứng dụng [75]. Các phần
mềm nền tảng đám mây cần quản lý quản lý được các ứng
dụng, cung cấp môi trường, ngôn ngữ và thư viện để phát triển
ứ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.

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
dựng các hệ thống IaaS và PaaS. Mẫu Cloud Infrastructure đưa
ra mối quan hệ tĩnh và động giữa người thuê với hệ thống điều
khiển, máy ảo, máy chủ, tài nguyên với mục đích hỗ trợ việc
xây dựng các hệ thống IaaS. Mẫu Platform-as-a-Service đưa ra
mối quan hệ tĩnh và động giữa người dùng với bên cung cấp

nền tảng cùng các thành phần thiết yếu của một hệ thống PaaS
nhằm mục đích hỗ trợ xây dựng các hệ thống PaaS. Tuy nhiên
hai mẫu thiết kế này chỉ cung cấp kiến trúc ở mức độ tổng quan
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.

Ngành điện tốn cho đến ngày nay đã trải qua 6 hệ mẫu
tính toán từ điện toán máy trạm đến điện toán cá nhân, đến điện
toán mạng, đến điện toán internet, đến điện toán lưới và hiện
tại đang trong giai đoạn điện toán đám mây [42]. Điện toán
đám mây là một lĩnh vực liên quan chặt chẽ với kỹ nghệ phần
mềm. Việc nghiên cứu các mẫu thiết kế để phát triển phần mềm
trong mơi trường điện tốn đám mây tập trung vào mẫu thiết kế
cho 3 loại phần mềm chính: phần mềm hạ tầng, phần mềm nền
tảng và phần mềm cung cấp như dịch vụ [17, 42, 61, 77].
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
kế và chuẩn để có thể thực hiện yêu cầu này. Cả 3 loại phần
mềm đều cần sử dụng các mẫu thiết kế về lưu trữ và xử lý dữ
liệu lớn, bảo mật và mở rộng các hệ thống. Cả 3 loại phần
mềm này đều có nhu cầu tích hợp các hệ thống với nhau. Việc
tích hợp này thường được thực hiện dựa trên các mẫu thiết kế
cho các hệ thống nền tảng trung gian (middleware) hay hệ
thống mạch kết nối dịch vụ (enterprise service bus) và áp dụng
các chuẩn chung. Đặc biệt cả 3 loại phần mềm hầu như đều
được xây dựng trên mơ hình đa người th. Việc xây dựng các
hệ thống đa người thuê đòi hỏi các mẫu thiết kế kiến trúc cho
từng lĩnh vực đặc thù và khả năng xử lý tính biến thiên. Hình
2 mơ tả các hướng nghiên cứu chúng tôi vừa đề cập. Chi tiết
cho từng hướng sẽ được trình bày ở những phần tiếp theo.


Vấn đề chưa giải quyết trong lĩnh vực mẫu thiết kế cho
phần mềm hệ thống và nền tảng đám mây là phân tích để tìm ra
những điểm chưa hồn thiện trong mơ hình nghiệp vụ của các
phần mềm khi áp dụng vào các hoàn cảnh thực tế; đưa ra các
chỉ dẫn cụ thể để xây dựng, hiện thực hóa các loại phần mềm
dạng này; so sánh, đánh giá các phần mềm hệ thống và phần
mềm nền tảng khác nhau.
B. Mẫu thiết kế cho việc hợp nhất các hệ thống đám mây
Các đám mây hiện nay tập trung rải rác ở một số nhà cung
cấp lớn như Amazon, Google, Microsoft, IBM và Rackspace.
[19] dự đoán trong tương lai các đám mây này sẽ hợp nhất với
nhau để tận dụng nguồn cung cấp dịch vụ của nhau nhằm giảm
chi phí mở rộng và mở rộng các khả năng của mình. Các tác
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ữ
liệu được lưu trữ không theo kiểu quan hệ dẫn đến việc lập
trình ứng dụng đám mây cũng thay đổi theo.


Hình 2 – Phát triển phần mềm trong môi trường đám mây.

A. Mẫu thiết kế cho phần mềm hệ thống và nền tảng đám mây
Nhiều doanh nghiệp hay chính phủ vì lý do bảo mật hoặc
do nhu cầu tích hợp với ứng dụng truyền thống của minh, hoặc
có nhu cầu tồn quyền quản lý ứng dụng và hạ tầng cần có đám
mây riêng của mình. Để xây dựng các đám mây riêng doanh

Các hệ thống đám mây thường cung cấp hai dịch vụ cho
việc lưu trữ và truy xuất dữ liệu ứng dụng, đặc biệt là khả
năng hỗ trợ ứng dụng làm việc với khối lượng dữ liệu lớn:

214
214


Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
HộiHội
Thảo
Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)





nhau. Các nhà phát triển gặp nhiều khó khăn trong việc tích
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
nghiệp. Trong [32] các tác giả giới thiệu mẫu thiết kế “Cloud
Component Gateway” giúp các ứng dụng tương tác với nhau

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
dụng truyền thống. Các bản sao này sẽ chuyển các yêu cầu đến
các thành phần bên trong của ứng dụng đám mây.

Tập Tập tin (file) hệ thống để lưu trữ dữ liệu như
Google File System [44], Hadoop Distributed File
System [76]
Cơ chế để truy xuất dữ liệu như MapReduce [26],
Map-Reduce-Merge [86]

Một số mẫu thiết kế để truy xuất và xử lý dữ liệu lớn như
repartition join, semi-joins, secondary sort, reservoir sampling,
vân vân được giới thiệu trong [51]. Tuy nhiên các cách xử lý
này thường áp dụng cho xử lý song song và cho kết quả không
theo thời gian thực trong khi các hệ thống đám mây thường
phải tương tác với người dùng theo thời gian thực. Việc đưa ra
các mẫu thiết kế để giải quyết việc xử lý dữ liệu lớn và cho ra
kết quả gần như theo thời gian thực là một vấn đề cần giải
quyết.

Một vấn đề khác khi tích hợp các ứng dụng là khả năng
đảm bảo tính tin cậy và tồn vẹn cho từng quy trình nghiệp vụ,
trong đó mỗi quy trình nghiệp vụ gọi các quy trình từ các ứng
dụng khác. Mặc dù đã có các chuẩn để hỗ trợ sự tin cậy khi tích
hợp
các dịch
vụ
như WS-Coordination, WSAtomicTransaction và WS-BusinessActivity [83] việc hiện
thực hóa các chuẩn này thành các hệ thống nền tảng trung gian

để giảm thời gian và chi phí cho các nhà phát triển trong việc
hiện thực hóa các nghiệp vụ doanh nghiệp trong mơi trường
đám mây vẫn chưa được thực hiện. Do vậy cần tìm kiếm mẫu
thiết kế để tích hợp các ứng dụng theo chuẩn, ví dụ như mẫu
thiết kế cho chuẩn quản lý giao dịch của ứng dụng đám mây
nhằm đạt được độ tin cậy về kết quả và sự toàn vẹn về dữ liệu.

Các ứng dụng đám mây thường tương tác và trao đổi một
khối lượng lớn dữ liệu với nhau. Làm sao để việc trao đổi được
tiến hành nhanh chóng với độ tin cậy cao, các lỗi có thể xảy ra
nằm trong sự kiểm sốt, các thơng tin khơng bị hỏng hay dư
thừa trong quá trình trao đổi cũng là một vấn đề cần giải quyết.
Ngồi ra các ứng dụng trình khách thường hạn chế về khả năng
lưu trữ và tính tốn nên việc thiết kế hệ thống sao cho vừa tận
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 đề
cần giải quyết.

E. Mẫu thiết kế cho việc bảo mật ứng dụng
Mối quan tâm lớn nhất của các doanh nghiệp khi đưa ứng
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ùng cuối thông qua các giao diện người dùng trên web hay
các dịch vụ web. Ngoài ra bảo mật cho ứng dụng trong mơi
trường đám mây thường địi hỏi tn theo các chuẩn nhằm hỗ
trợ cho việc tích hợp các dịch vụ đám mây. Nếu dịch vụ đám
mây là dịch vụ đa người thuê, bảo mật cho ứng dụng còn cần
đảm bảo sự cách ly giữa các người thuê khác nhau.

D. Mẫu thiết kế cho việc tích hợp giữa các ứng dụng cung cấp

như dịch vụ
Mỗi ứng dụng, đặc biệt là ứng dụng doanh nghiệp ln hiện
thực hóa một số các quy trình nghiệp vụ đặc thù. Các quy trình
này thường được tích hợp với nhau để thực hiện một quy trình
lớn hơn. Việc tích hợp có thể được thực hiện trong cùng một hệ
thống bằng cách sử dụng các ngơn ngữ thực thi quy trình như
Web Services Business Process Execution Language (BPEL)
[83] và các động cơ xử lý ngôn ngữ thực thi quy trình [55].
Việc tích hợp có thể được thực hiện giữa các hệ thống khác
nhau, cụ thể hơn là các hệ thống cung cấp dạng dịch vụ trong
trong mơi trường đám mây. Sự tích hợp giữa các hệ thống khác
nhau đảm bảo việc tận dụng tối đa việc tái sử dụng khả năng
của từng hệ thống. Việc tích hợp giữa các hệ thống có thể được
thực hiện ở nhiều mức độ khác nhau bằng cách sử dụng các
dịch vụ mạng (web service) hay mashups [75] hay các ngơn
ngữ thực thi quy trình với các hệ thống trung gian.

Hầu hết các ứng dụng hiện tại sử dụng các cơ chế chứng
thực đơn giản dễ bị tấn công bởi các dạng tấn công nghe trộm
và mô phỏng. Dịch vụ mạng là công nghệ được sử dụng phổ
biến hiện nay. Để đảm bảo sự bảo mật cho các dịch vụ web
đồng thời giúp các dịch vụ web tương tác được với nhau, nhiều
chuẩn đã được phát triển và áp dụng. Chuẩn WS-Policy mơ tả
văn phạm để biểu diễn các chính sách khác nhau của một dịch
vụ web và kết hợp giữa chúng. WS-Policy là nền tảng để mô tả
các chuẩn khác. Chuẩn WS-Security sử dụng các mơ hình bảo
mật có sẵn như Kerberos [68] hoặc X509. Chuẩn này đặc tả
cách sử dụng các mơ hình đó sao cho các dịch vụ web có thể
tương tác đồng nhất với nhau.


Ở góc độ thiết kế việc tích hợp giữa các ứng dụng khác
nhau có thể được thực hiện dựa vào các mẫu thiết kế tích hợp
dạng truyền tải thơng điệp như Message Bus [50]. Tuy nhiên
các mẫu thiết kế này quá tổng quát chưa giải quyết cụ thể các
yêu cầu đặc thù trong đám mây như đồng bộ hóa dữ liệu giữa
ứng dụng di dộng và nhiều nơi lưu trữ trong đám mây, đảm bảo
tính tồn vẹn của dữ liệu khi di chuyển trong đám mây, khả
năng tích hợp khối lượng dữ liệu cự kỳ lớn. Trong [62] các tác
giả đã đề xuất một số mẫu thiết kế đồng bộ hóa dữ liệu cho ứng
dụng di động như Full Transfer, Timestamp Transfer,
Mathematical Transfer.

Bảo mật được xây dựng trên mối quan hệ tin cậy được định
nghĩa trước. Kerberos bảo mật được bởi vì các thành viên tham
gia tin tưởng vào một trung tâm phân phối khóa (Kerberos Key
Distribution Center). Public Key Infrastructure (PKI) [1] bảo
mật được bởi vì các thành viên tin tưởng vào các nhà cấp
chứng chỉ gốc (Root Certificate Authorities). Chuẩn WS-Trust
đưa ra một mơ hình mở rộng để thiết lập và kiểm tra các mối
quan hệ tin cậy giữa các dịch vụ web. Chuẩn WS-Federation
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.
Chuẩn WS-SecureConversation được xây dựng trên nền của
các chuẩn WS-Security, WS-Trust, và WS-Policy nhằm cung
cấp sự tương tác và trao đổi dữ liệu bảo mật cho các dịch vụ
web [83]. XML Signature bảo vệ các phần của một tài liệu
XML khỏi sự chỉnh sửa trái phép bằng cách sử dụng chữ ký

Một trong những khó khăn khi tích hợp các ứng dụng là
giải quyết các vấn đề khơng tương thích, trùng lắp về dữ liệu
và chức năng của các ứng dụng. Hiện nay các nền tảng đám

mây tập trung rải rác ở nhiều nhà cung cấp và tổ chức khác

215
215


Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
HộiHội
Thảo
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 tốn cho chữ ký có thể sử dụng hệ thống bảo
mật đối xứng như (Triple DES hoặc AES) hoặc bất đối xứng
như RSA hoặc DSA. XML Encryption mã hóa các phần của
một tài liệu XML.

thuê khác, đặc biệt là khi hệ thống đang vận hành. Do vậy để
xây dựng hệ thống đa người thuê đáp ứng tốt khả năng mở
rộng các nhà thiết kế cần đưa ra các mẫu thiết kế quản lý trạng
thái của ứng dụng khi ứng dụng được triển khai ở nhiều cụm
máy chủ, mẫu thiết kế theo dõi và quản lý việc tăng giảm tài
nguyên đối với từng người thuê khi hệ thống đang vận hành.

Các chuẩn bảo mật cho dịch vụ web thường phức tạp và dài
dịng gây khó khăn cho các kiến trúc sư hay nhà phát triển
trong việc áp dụng và kiểm tra chúng. Trong [2, 3] các tác giả
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
khả năng so sánh và kiểm tra xem một ứng dụng có đáp ứng
một chuẩn bảo mật nào đó khơng.


G. Mẫu thiết kế cho ứng dụng cung cấp như dịch vụ
Phần mềm cung cấp như dịch vụ là một mơ hình dịch vụ
trong đó các khả năng của hệ thống được cung cấp đến người
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
Language (SAML) được đưa ra bởi tổ chức OASIS đã giải
quyết vấn đề này [25]. Giao thức OAuth 2.0 [47] là một giao
thức phân quyền mở và chuẩn hóa cho phép người dùng cấp
quyền cho các ứng dụng bên thứ ba truy cập có giới hạn vào
các tài nguyên của mình tại một nơi lưu trữ. Giao thức cho
phép cấp quyền mà không chia sẻ các thông tin bảo mật lâu
dài như mật khẩu đồng thời cho phép người dùng hủy việc cấp
phép khi cần thiết. OAuth 2.0 cũng có thể được sử dụng cho
việc đăng nhập một lần.

Phần mềm cung cấp như dịch vụ xuất hiện từ những ngày
đầu của internet. Một số nhà cung cấp ứng dụng như dịch vụ
(Application Service Provider – ASP) đã đóng gói các sản
phẩm của mình, cài đặt trong trung tâm dữ liệu của mình và
cho phép người dùng truy cập chúng thơng qua internet. Tuy
nhiên làn sóng ASP đầu tiên thất bại vì cơ sở hạ tầng cho
đường truyền internet còn chưa đáp ứng được nhu cầu người
dùng về băng thông, người dùng phải sử dụng phương pháp
truy cập bàn điều khiển từ xa (remote desktop) để thao tác với
ứ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à
phát triển dễ dàng áp dụng chúng trong hệ thống của mình và
hiện thực hóa chúng một cách đúng đắn [54, 78], đồng thời
cũng cần thiết đưa ra các mẫu thiết kế nhằm hướng dẫn áp
dụng các thuật toán bảo mật mới trong các hoàn cảnh đặc thù
nhằm đảm bảo vấn đề bảo mật cho hệ thống.

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
sử dụng hoàn toàn kiến trúc nền tảng web, tận dụng tối đa hạ
tầng chung cho nhiều người dùng để giảm giá thành. Dưới góc
nhìn của một khách hàng khi sử dụng phần mềm cung cấp như
dịch vụ người dùng chỉ cần có một thẻ ghi nợ (credit card) và
một trình duyệt để đăng ký sử dụng phần mềm. Sau đó người
dùng truy cập và hiệu chỉnh lại phần mềm theo nhu cầu của
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
trách về công nghệ thông tin để có sản phẩm sử dụng, khơng lo
lắng về vấn đề cập nhập và bảo trì phần mềm [75].

F. Mẫu thiết kế kế cho việc mở rộng khả năng tải của ứng
dụng
Đối với các ứng dụng đám mây yêu cầu về năng lực xử lý
của hệ thống luôn tăng theo cùng số lượng người dùng. Vì vậy
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ầu tiên quyết. Hệ thống cũng cần có khả năng giảm năng lực
xử lý khi dữ liệu cần xử lý giảm xuống để tiết kiệm chi phí.

Việc tăng giảm tài nguyên này cần được thực hiện một cách
liền mạch để không ảnh hưởng đến hoạt động của hệ thống.

Các giải pháp cung cấp như dịch vụ được quan tâm bởi
chúng mang lại sự đơn giản trong việc sở hữu, vận hành và bảo
trì sản phẩm kèm theo khả năng giảm chi phí to lớn cho doanh
nghiệp so với phần mềm truyền thống [81]. Vấn đề chưa giải
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ư
ngân hàng, bệnh viện, bảo hiểm, trường học, học tập điện tử (elearning).

Trong [6] các tác giả giới thiệu 5 mẫu thiết kế để mở rộng
các ứng dụng đám mây bao gồm: Single Platform, Shared
Platform, Clustered Platform, Multiple Shared Platforms,
Multiple Clustered Platforms. Các mẫu thiết kế này chỉ tập
trung vào khía cạnh triển khai hệ thống mà khơng tập trung vào
khía cạnh thiết kế và xây dựng hệ thống.

IV.

MẪU THIẾT KẾ CHO ỨNG DỤNG ĐA NGƯỜI
THUÊ

Để đạt được mục tiêu giảm chi phí, các giải pháp cung cấp
như dịch vụ thường được thiết kế theo mơ hình đa người th.
Đa người th là một mơ hình trong đó nhiều doanh nghiệp sử
dụng chung một nền tảng, chia sẻ chung nơi lưu trữ dữ liệu và
có khả năng cấu hình lại giải pháp [59]. Có thể nói mơ hình
này là một điểm đặc trưng nổi bật để phân biệt giữa một phần
mềm trong môi trường đám mây với một phần mềm truyền

thống. Mơ hình đa người th được phân thành các nhóm chính
sau [41, 66]:

Trong [85] tác giả giới thiệu các mẫu thiết kế Horizontally
Scaling Compute tập trung vào việc mở rộng tính tốn bằng
cách xây dựng các cụm tính tốn tự trị và phi trạng thái dựa
trên các dịch vụ đám mây để giảm sự phức tạp trong triển khai
và quản lý các cụm tính tốn.
Khó khăn khi xây dựng hệ thống có khả năng mở rộng là
quản lý trạng thái của ứng dụng sao cho khi áp dụng cân bằng
tải (load balancing) người dùng luôn truy cập được trạng thái
ứ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


Thảo
Quốc
Gia
2015vềvềĐiện
ĐiệnTử,
Tử,Truyền
TruyềnThơng
Thơng và
TinTin
(ECIT
2015)

HộiHội
Thảo
Quốc
Gia
2015
và Cơng
CơngNghệ
NghệThơng
Thơng
(ECIT
2015)



Hệ thống khơng có khả năng cấu hình và một hệ thống
được triển khai dùng chung cho nhiều người th
(single instance service).



Hệ thống khơng có khả năng cấu hình và mỗi người
thuê sử dụng một hệ thống được triển khai riêng cho
mình (multiple instances service).



Hệ thống có khả năng cấu hình và một hệ thống được
triển khai dùng chung cho tất cả các người thuê (single
arbitrary arbitrary instance service).




Hệ thống có khả năng cấu hình và mỗi người thuê sử
dụng một hệ thống được triển khai riêng cho mình
(multiple configurable instances service).



Ngồi ra có thể kết hợp 2 mơ hình khơng cấu hình với
nhau hoặc 2 mơ hình cấu hình với nhau để tạo thành
các mơ hình tự do (arbitrary instances service).

khách hàng; hệ thống cần được thiết kế với khả năng biến thiên
để thỏa mãn các yêu cầu về dữ liệu và quy trình nghiệp vụ khác
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
người thuê nhằm giảm thiểu chi phí phần cứng; hệ thống cần
khả năng vận hành trên nhiều cụm máy chủ khác nhau cùng
khả năng chuyển đổi giữa các cụm khi xảy ra sự cố; hệ thống
cần cho phép người thuê đo lường các yêu cầu phi chức năng
mà hệ thống cung cấp tại bất kỳ thời điểm nào [73].
A. Mẫu thiết kế kiến trúc cho phần mềm đa người thuê
Một trong những khó khăn khi xây dựng phần mềm đa
người thuê là kiến trúc tổng thể của hệ thống. Kiến trúc này là
chìa khóa để hiện thực hóa các ứng dụng đa người th. 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
thuê với nhau để họ không bị ảnh hưởng bởi nhau về mặt dữ
liệu, bảo mật, độ tin cậy cũng như quy trình nghiệp vụ. Nhiều
nhà nghiên cứu đã đề xuất các kiến trúc để giải quyết khó khăn
này.


Hình 3 mô tả kiến trúc chung của các sản phẩm cung cấp
như dịch vụ cho đa người thuê dạng có khả năng cấu hình và
một hệ thống được triển khai cho tất cả các người thuê [75].
Một sản phẩm cung cấp như một dịch vụ được sử dụng bởi
nhiều khách hàng (người thuê) A, B, C. Các khách hàng chia
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ữ
liệu (dữ liệu cấu hình). Các hệ thống đa người thuê giảm tối đa
chi phí để sở hữu và vận hành hệ thống. Một ví dụ cho thấy là
khi hệ thống cần nâng cấp một tính năng, trong mơi trường đa
người th 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
nhập nhiều hệ thống cho từng khách hàng theo cách truyền
thống [75].

Frederick Chong và Gianpaolo Carraro liệt kê các thành
phần cơ bản của kiến trúc đa người thuê bao gồm tầng lưu trữ,
tầng dịch vụ nghiệp vụ, tẩng dịch vụ quy trình, tầng giao diện,
tầng dịch vụ bảo mật và tầng siêu dữ liệu [41].
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ý
được cách ly bằng cách hạn chế người dùng đến một phần của
cấu trúc thư mục bằng các mơ hình bảo mật hệ thống đặc thù
của nền tảng phát triển [46].
Ralph Mietzner giới thiệu và đánh giá các mẫu thiết kế
Single instance service, Single configurable instance service và
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 th. 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ữ
dữ liệu cho ứng dụng đa người thuê [84].

Hình 3 – Kiến trúc của phần mềm đa người thuê [75]

Một kiến trúc sơ bộ cho đa người thuê được giới thiệu trong
[12], trong đó các tác giả cho rằng sự định danh, cấu hình và cơ
sở dữ liệu là các thành phần chính của ứng dụng đa người thuê.

Mục tiêu chính của hệ thống đa người thuê là giảm chi phí
bằng cách tối đa hóa việc chia sẻ tài nguyên. Khi chia sẻ tài
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ê
phải được cách ly hay nói cách khác tốc độ khi sử dụng hệ
thống của người thuê này không được ảnh hưởng đến tốc độ sử
dụng hệ thống của người thuê khác; việc thực thi công việc của
từng người thuê phải được cách ly hay nói cách khác luồng
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
[69].

Một kiến trúc để hiện thực hóa đa người thuê cho nền tảng
hướng dịch vụ được giới thiệu trong [8]. Afkham và các cộng

sự cho rằng việc cấu hình, phân phối thơng điệp, bảo mật, thực
thi dịch vụ và truy cập dữ liệu là các khía cạnh chính một ứng
dụng đa người th cần có.
Việc xây dựng các ứng dụng đa người thuê từ đầu địi hỏi
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
thuê cho phép các nhà cung cấp dịch vụ tái sử dụng các giao
diện lập trình bảo mật có sẵn khi phát triển một ứng dụng đa
người thuê mới. Kiến trúc này cũng cho phép có thể điều chỉnh
lại các yêu cầu về bảo mật và “tiêm” (inject) một đoạn mã

Ngoài ra khi xây dựng các hệ thống đa người thuê cần đảm
bảo hệ thống có khả năng xử lý dữ liệu lớn hơn nhiều so với
các hệ thống cho một khách hàng; hệ thống cần có khả năng
tích hợp với nhiều hệ thống truyền thống khác nhau của các

217
217


Thảo Quốc Gia 2015 về Điện Tử, Truyền Thông và Công Nghệ Thông Tin (ECIT 2015)
Hội Hội
Thảo
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
yêu cầu mới này. Các tác giả ứng dụng mẫu thiết kế quản lý
đảo ngược (inversion of control) hoặc khả năng lập trình hướng
khía cạnh để hiện thực hóa kiến trúc này.


Tính biến thiên cần được mơ hình và quản lý ở góc độ vấn
đề (hay cụ thể hơn là yêu cầu) và góc độ giải pháp [74]. Các
giải pháp cho tính biên thiên tập trung ở khả năng cấu hình
(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
hành vi của hệ thống dựa trên các thiết lập được định nghĩa
sẵn. Cấu hình được thực hiện khi hệ thống đang vận hành. Các
thiết lập cho cấu hình được xác định trước khi triển khai hệ
thống hoặc dựa vào các siêu dữ liệu trong quá trình vận hành.
Hiệu chỉnh là khả năng thay đổi hành vi của hệ thống dựa trên
việc thay đổi hay thêm một số thành phần của hệ thống. Hiệu
chỉnh được thực hiện trước khi hệ thống đưa vào triển khai.

Việc phân phối tài nguyên đến từng người thuê một cách
tối ưu hóa là một vấn đề cần được quan tâm. Hệ thống chưa
được tối ưu hóa nếu một người thuê có số người dung là 100
được phân phối số tài nguyên bằng với một người thuê có số
người dùng là 10000. Trong [34] các tác giả trình bày một
khung ứng dụng cho phép tối ưu hóa sự phân bổ các yêu cầu
của các người thuê đến các tài ngun hệ thống bằng cách sử
dụng thuật tốn tơi luyện thép.

Cấu hình thường được sử dụng để hỗ trợ sự thay đổi thông
qua các tham số được định nghĩa trước cho mơ hình dữ liệu,
quy tắc nghiệp vụ hay giao diện. Hiệu chỉnh thường được sử
dụng để hỗ trợ sự thay đổi của những phần cốt lõi của phần
mềm mà khó có thể được thực hiện bằng cấu hình. So với cấu
hình thì hiệu chỉnh thường tốn nhiều chi phí và thời gian hiện
thực hóa cũng như bảo trì hơn [80]. Hình 4 trình bày phân loại
của tính biến thiên trong môi trường đa người thuê.


Các hệ thống đa người thuê rất phong phú và đa dạng, yêu
cầu thay đổi tùy theo từng tổ chức. Ví dụ rất nhiều tổ chức
cùng cần hệ thống quản trị dự án với các yêu cầu về quy trình
đặc thù cho tổ chức của mình; các nhà cung cấp phần mềm
dịch vụ cần xây dựng hệ thống quản trị dự án đa người thuê
cho các tổ chức đó. Hay như nhiều trường đại học cùng cần hệ
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á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
dựng những hệ thống như vậy đòi hỏi các mẫu thiết kế kiến
trúc đa người thuê đặc thù cho lĩnh vực mà tổ chức quan tâm.
Do vậy thể hiện kiến trúc đa người thuê cho các lĩnh vực đặc
thù ví dụ như hệ thống bảo mật thơng điệp, hệ thống quản lý dự
á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.

Mơ hình hóa u cầu về tính biến thiên của một hệ thống và
kỹ thuật quản lý chúng được giới thiệu trong [65]. Trong đó tác
giả áp dụng các kỹ thuật của kỹ nghệ sản phẩm phần mềm
dòng để giải quyết vấn đề quản lý các yêu cầu biến thiên của
ứng dụng cung cấp như dịch vụ.
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à u cầu chất lượng của một hệ thống
trong đám mây bằng cách sử dụng mơ hình tính tăng mở rộng
(extended feature model) của kỹ nghệ phần mềm dịng.

B. Mẫu thiết kế cho tính biến thiên của phần mềm đa người
thuê
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 q trình phát triển phần
mềm như phân tích 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 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
các khách hàng khác nhau. Nói cách khác phần mềm đa người
th cần phải có tính biến thiên.

Hình 4 – Tính biến thiên trong mơi trường đa người th.

Các giải pháp cho khả năng cấu hình của phần mềm đa
người thuê tập trung vào khả năng thay đổi dữ liệu cho phù hợp
với các người thuê khác nhau, khả năng thay đổi chức năng hay
hành vi cho phù hợp với các quy trình nghiệp vụ khác nhau.
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 dữ liệu và chức năng trong môi trường đa người th dựa
trên cấu hình.

Tính biến thiên của phần mềm có thể được định nghĩa như
khả năng của một hệ thống hay sản phẩm phần mềm có thể mở
rộng, thay đổi, cấu hình hoặc hiệu chỉnh một cách hiệu quả để
có thể sử dụng trong một hồn cảnh đặc thù [67]. Sự 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 hệ thống, ở luồng nghiệp vụ, ở công nghệ sử dụng, ở mục
tiêu chất lượng đối với hệ thống hay ở môi trường triển khai hệ
thống [35].

1
2
3

Frederick Chong và Gianpaolo Carraro giới thiệu các
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
của một bảng được gắn kết với một người thuê nhất định thông
qua định danh người thuê, các trường mở rộng của mỗi bảng có


/>

218
218


Thảo
Quốc
Gia
2015vềvềĐiện
ĐiệnTử,
Tử,Truyền
TruyềnThông

Thông và
TinTin
(ECIT
2015)
HộiHội
Thảo
Quốc
Gia
2015
và Công
CôngNghệ
NghệThông
Thông
(ECIT
2015)

thể là một tập hợp cố định các trường định nghĩa trước hoặc có
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
khá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
ứng dụng đa người th có thể được thực hiện bằng cách sử
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
các hệ thống nền tảng trung gian hỗ trợ việc cách ly dữ liệu các
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
nhận các cấu hình của từng người thuê trong cơ sở dữ liệu, sau
đó từng thành phần của phần mềm cho từng tính năng yêu cầu
được khởi tạo và ánh xạ vào từng phần thực thi của hệ thống sử
dụng nội xạ sự phụ thuộc.

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
môi trường đa người thuê.

Để giải quyết tính biến thiên của dữ liệu trong q trình
thực thi của phần mềm [7] giới thiệu kỹ thuật Chunk Folding,
trong đó các bảng dữ liệu được phân ra thành các bảng thông
thường chứa các dữ liệu chung, đặc thù cho ứng dụng và cá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
trị cơ sở dữ liệu quan hệ. Các tác giả cũng xây dựng ngôn ngữ
để truy vấn thông tin khi sử dụng kỹ thuật này. Điểm yếu của
kỹ thuật này là tính cục bộ (ad-hoc) và sự phức tạp khi truy vấn
thông tin. Để ứng dụng kỹ thuật này các hệ thống phải thay đổi
hoàn toàn cách truy cập cơ sở dữ liệu của mình.

Eddy Truyen và các cộng sự giới thiệu cách tùy chỉnh ứng
dụng đa người thuê bằng cách sử dụng các tính năng đặc biệt
của các ngơn ngữ lập trình hướng hồn cảnh [49, 80].

Tình biến thiên cho các yêu cầu về triển khai cho từng
người thuê tùy theo các điều khoản của hợp đồng về dịch vụ
hoặc triển khai một phần mềm được hiệu chỉnh cho từng người
thuê có thể được hiện thực bằng ngơn ngữ thực thi quy trình
[32], hoặc kỹ nghệ hướng mơ hình [29, 38].

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 th. Force.com sử dụng kiến trúc trên nền tảng siêu dữ
liệu. Tính biến thiên về dữ liệu được xử lý bằng cách dùng các
siêu dữ liệu để mô tả dữ liệu người thuê [84]. Tương tự như kỹ
thuật sử dụng siêu dữ liệu Gautam Shroff mô tả kỹ thuật sử
dụng nhiều sơ đồ (multiple schemas) trong đó mỗi người thuê
được gắn kết với một sơ đồ dữ liệu nhất định. Sơ đồ này được
định nghĩa bằng thông tin siêu dữ liệu [75].

Các cơng trình trên đã giải quyết tính biến thiên của một số
khía cạnh trong ứng dụng đa người thuê như dữ liệu, luồng
công việc. Tuy nhiên các hệ thống đa người thuê hiện tại
thường phân thành nhiều tầng như giao diện, nghiệp vụ và dữ
liệu. Sự thay đổi của một tầng sẽ kéo theo sự thay đổi của các
tầng phụ thuộc. Thực hiện các yêu cầu về mở rộng một cách
đồng nhất trong quá trình thực thi vẫn chưa được giải quyết
triệt để; vẫn chưa có các mẫu thiết kế giúp đạt được các tính
biến thiên của ứng dụng một cách đồng nhất ở thời điểm thực
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
mẫu thiết kế để xây dựng các ứng dụng tự điều chỉnh (adaptive
SaaS software).


Một kỹ thuật khác để xử lý tính biến thiên của dữ liệu là tận
dụng các dịch vụ lưu trữ không quan hệ trong môi trường đám
mây (cloud data store) [75].
Trong [32] tác giả đề xuất phương pháp hiện thực tính biến
thiên về dữ liệu bằng cách sử dụng mẫu thiết kế Variable Data
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
này được xác định thơng qua một khóa duy nhất. Trong trường
hợp các dữ liệu này được xử lý không thông qua các hàm nhập
xuất cơ bản (tạo, cập nhập, xóa, trả về thơng tin), nhà phát triển
cần tạo các hàm xử lý đặc thù cho chúng.

V.

CƠNG TRÌNH LIÊN QUAN

Tìm hiểu về mẫu thiết kế cho điện toán đám mây chỉ mới
được thực hiện bởi [33]. Trong báo cáo này các tác giả đề xuất
quy trình để tìm kiếm mẫu thiết kế cho điện tốn đám mây, đề
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
áp dụng. Tuy nhiên các tác giả chỉ nêu lên các vấn đề chung
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
phát triển phần mềm trong môi trường đám mây; các mẫu thiết
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 qt đầy đủ các lĩnh vực chính
và phân loại một cách hệ thống; các vấn đề nghiên cứu còn tồn
đọng cũng chưa được đề cập.

Để đạt được tính biến thiên về chức năng Fehling đề xuất
xây dựng các chức năng cơ bản sau đó sử dụng các ngơn ngữ

thực thi quy trình, ví dụ như BPEL [55], để gắn các chức năng
với nhau [32].
Thiết kế và hiện thực hóa một động cơ thực thi các luồng
công việc cho đa người thuê được giới thiệu trong [69]. Động
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
GiaGia
2015
vềvềĐiện
CơngNghệ
NghệThơng
Thơng
(ECIT
2015)
Thảo
Quốc
2015
ĐiệnTử,
Tử,Truyền
TruyềnThơng
Thơng và

và Cơng
TinTin
(ECIT
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,
and Projects in Crisis.: Wiley, New York, 1998.

Trong bài báo này chúng tơi đã trình bày nguyên nhân cần
nghiên cứu mẫu thiết kế cho việc phát triển phần mềm trong
môi trường đám mây. Chúng tôi tổng kết các nghiên cứu về
mẫu thiết kế cho việc phát triển phần mềm trong môi trường
đám mây. Cụ thể là các vấn đề mà các nhà nghiên cứu công
nghệ phần mềm quan tâm khi phát triển ứng dụng trong môi
trường đám mây như xây dựng phần mềm hệ thống và phần
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à
tích hợp các phần mềm cung cấp như dịch vụ, phát triển phần
mềm đa người thuê, xử lý tính biên cho ứng dụng đa người
thuê. Chúng tơi đi sâu vào các khó khăn khi phát triển ứng
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
tổng quan về các hướng nghiên cứu mà chúng tôi đã khảo sát.

[15] Frank Buschmann, Kevlin Henney, and Douglas C. Schmidt, PatternOriented Software Architecture: A Pattern Language for Distributed
Computing., 2007.

[16] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad,
and Michael Stal, Pattern-Oriented Software Architecture: A System of
Patterns., 1996.
[17] Rajkumar Buyya, James Broberg, and Andrzej Goscinski, Cloud
Computing: Principles and Paradigms., 2011.
[18] Rajkumar Buyya, Chee Shin Yeo, and Srikumar Venugopal, MarketOriented Cloud Computing: Vision, Hype, and Reality for Delivering IT
Services as Computing Utilities., 2008.
[19] Antonio Celesti, "How to Enhance Cloud Architectures to Enable CrossFederation," in 2010 IEEE 3rd Int. Conf. on Cloud Computing, Miami,
2010.

Chúng tôi hy vọng rằng bài báo sẽ giúp các nhà nghiên cứu
về kỹ nghệ phần mềm cho đám mây có cái nhìn tổng quan về
hiện trạng nghiên cứu, các vấn đề nghiên cứu, từ đó có thể lựa
chọn cho mình bài tốn cụ thể để tiếp tục giải quyết nhằm góp
phần cung cấp các kiến thức cho ngành kỹ nghệ phần mềm
trong môi trường đám mây. Trong tương lai chúng tôi sẽ tập
trung khảo sát hiện trạng các hướng nghiên cứu liên quan đến
mẫu thiết kế trong môi trường đám mây như kỹ nghệ hướng
mơ hình, thiết kế phần mềm tự hiệu chỉnh, thiết kế phần mềm
trong mạng lưới internet vạn vật.

[20] Peter Coad, Object-oriented patterns., 1992.
[21] James O. Coplien, Advanced C++ Programming Styles and Idioms.,
1991.
[22] James O. Coplien, C++ Idioms., 1998.
[23] James O. Coplien, Idioms and Patterns as Architectural Literature.,
1997.
[24] James O. Coplien, Software Patterns., 1996.
[25] Kelly D. Lewis and James E. Lewis, "Web Single Sign-On
Authentication using SAML. 2009.," in IJCSI International Journal of

Computer Science Issues, 2009.
[26] Jeffrey Dean and Sanjay Ghemawat, "MapReduce: Simplified Data
Processing on Large Clusters," in OSDI, San Francisco, 2004.

TÀI LIỆU THAM KHẢO

[27] Michael Stal, Hans Rohnert and Frank Buschmann Douglas Schmidt,
"Pattern-Oriented Software Architecture, Patterns for Concurrent and
Networked Objects," , 2000.

[1] Carlisle Adams and Steve Lloyd, Understanding PKI Concepts,
Standards, and Deployment Considerations Second Edition.: Addison
Wesley, 2002.

[28] Bill Dudney, Stephen Asbury, Joseph K. Krozak, and Kevin Wittkopf,
J2EE Antipatterns.: Wiley, 2003.

[2] Ola Ajaj and Eduardo B. Fernandez, "A pattern for the WSSecureConversation 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
the Clouds.," in ECMFA, 2012, pp. 18-27.

[3] Ola Ajaj and Eduardo B. Fernandez, "A pattern for the WS-Trust
standard of web services," in Asian Conf. on Pattern Languages of
Programs, Tokyo, 2010.

[30] Thomas Erl, SOA Design Patterns., 2009.
[31] Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of

Software. Boston: Addison Wesley, 2003.

[4] Mohamed Almorsy, John Grundy, and Amani S. Ibrahim, "TOSSMA: A
Tenant-Oriented SaaS Security Management Architecture," in 5th IEEE
Conference on Cloud computing, Hawaii, 2012.

[32] Christoph Fehling, "An Architectural Pattern Language of Cloud-based
Applications," in Pattern Languages of Programs, Portland, 2011.

[5] Deepak Alur, John Crupi, and Dan Malks, Core J2EE™ Patterns: Best
Practices and Design Strategies., 2001.

[33] Christoph Fehling et al., "Capturing Cloud Computing Knowledge and
Experience in Patterns," in Proceedings of the 5th IEEE International
Conference on Cloud Computing, 2012, pp. 726 - 733.

[6] Claudio A. Ardagna, Ernesto Damiani, Fulvio Frati, Davide Rebeccani,
and Marco Ughetti, "Scalability Patterns for Platform-as-a-Service," in
2012 IEEE 5th Int. Conf. on Cloud Computing (CLOUD), Honolulu,
2012.

[34] Christoph Fehling, Frank Leymann, and Ralph Mietzner, "A Framework
for Optimized Distribution of Tenants in Cloud Applications," in 3rd
International Conference on Cloud Computing, 2010, pp. 252-259.

[7] Stefan Aulbach, "Multi-Tenant Databases for Software as a Service," in
2008 ACM SIGMOD Int. Conf. on Management of data, 2008.

[35] Bachmann Felix and Len Bass, "Managing Variability in Software
Architectures," ACM SIGSOFT Software Engineering Notes, vol. 26, no.

3, pp. 126-132, 2001.

[8] Afkham Azeez et al., "Multi-Tenant SOA Middleware for Cloud
Computing," in Cloud Computing (CLOUD), 2010 IEEE 3rd
International Conference, pages 458 - 465, Miami, FL, 2010.

[36] Eduardo B. Fernandez, "Patterns for Operating Systems Access Control,"
in Procs. of PLoP 2002, 2002.

[9] Kent Beck, Using Pattern Languages for Object-Oriented Programs.,
1987.

[37] Eduardo B. Fernandez, Security Patterns in Practice: Designing Secure
Architectures using Software Patterns. Chichester: Wiley, 2013.

[10] Michael Bell, SOA Modeling Patterns for Service-Oriented Discovery
and Analysis., 2010.

[38] Nicolas Ferry, Alessandro Rossini, Franck Chauvel, Brice Morin, and
Arnor Solberg, "Towards Model-driven Provisioning, Deployment,
Monitoring, and Adaptation of Multi-Cloud Systems," in 6th
International Conference on Cloud Computing, 2013, pp. 887-894.

[11] Stephen P. Berczuk and Brad Appleton, Software Configuration
Management Patterns: Effective Teamwork, Practical Integration., 2002.
[12] Cor-Paul Bezemer and Andy Zaidman, "Multi-Tenant SaaS
Applications: Maintenance Dream or Nightmare," in IWPSE-EVOL '10
Proceedings of the Joint ERCIM Workshop on Software Evolution
(EVOL) and International Workshop on Principles of Software Evolution
(IWPSE), pages 88 - 92, ACM New York, NY, USA, 2010.


[39] Martin Fowler, Analysis patterns: reusable object models., 1997.
[40] Martin Fowler et al., Patterns of Enterprise Application Architecture.,
2002.
[41] Chong Frederick and Carraro Gianpaolo, "Architecture Strategies for

220
220


Thảo
QuốcGia
Gia2015
2015về
về Điện
Điện Tử,
Truyền Thông
Thông
Tin Tin
(ECIT
2015)
HộiHội
Thảo
Quốc
Tử, Truyền
ThôngvàvàCông
CôngNghệ
Nghệ
Thông
(ECIT

2015)
Variability Realization Techniques," Software: Practice and Experience,
vol. 35, no. 8, pp. 705-754, 2005.

Catching the Long Tail," , 2006.
[42] Borko Furht and Armando Escalante, Handbook of Cloud Computing.
New York: Springer, 2010.

[68] Clifford B. Neuman and Theodore Ts'o, "Kerberos: An Authentication
Sewice for Computer Networks," IEEE Communications Magazine, pp.
33-38, 1994.

[43] Eric Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design
Patterns: Elements of Reusable Object-Oriented Software.: AddisonWesley, 1994.

[69] Milinda Pathirage, Srinath Perera, Indika Kumara, and Sanjiva
Weerawarana, "A Multi-tenant Architecture for Business Process
Executions," in Web Services (ICWS), 2011 IEEE International
Conference, pages 121 - 128, Washington, DC, 2011.

[44] Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, "The Google
File System," in ACM SIGOPS Operating Systems, 2003.
[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
management," in CEC/EEE 2007, Tokyo, 2007, pp. 551 - 558.


[71] D. Riehle, "Composite Design Patterns," in OOPSLA ’97 Conference
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
Web Content Management and Delivery, Personalisation and User
Participation., 2009.

[48] Keiko Hashizume, "Cloud Service Model Patterns," in Pattern
Languages of Programs, Tucson, 2012.
[49] Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz, "Contextoriented Programming," Journal of Object Technology, vol. 7, no. 3,
2008.

[73] Julia Schroeter, Sebastian Cech, Sebastian Götz, Claas Wilke, and Uwe
Aßmann, "Towards Modeling a Variable Architecture for Multi-Tenant
SaaS-Applications," in VaMoS, New York, 2012.

[50] Gregor Hohpe and Bobby Woolf, Enterprise Integration Patterns:
Designing, Building, and Deploying Messaging Solutions., 2003.
[51] Alex Holmes, Hadoop in Practice.: Manning Publications Co, 2012.

[74] Julia Schroeter, Peter Mucha Marcel, and Malte Lochau, "Dynamic
Configuration Management of Cloud-based Applications," in 16th
International Software Product Line Conference, 2012, pp. 171-178.

[44] IDC.
(2015,
Sep.)

IDC.
/>
[Online].

[75] Gautam Shroff, Enterprise Cloud Computing: Technology Architecture
Applications.: Cambridge University Press, 2010.

[53] Michael Kircher and Prashant Jain, Pattern-Oriented Software
Architecture: Patterns for Resource Management., 2004.

[76] Konstantin Shvachko, Hairong Kuang, Sanjay Radia, and Robert
Chansler, "The Hadoop Distributed File System," in Mass Storage
Systems and Technologies (MSST), 2010 IEEE 26th Symposium, Incline
Village, 2010.

[54] Somorovsky Juraj, Andreas Mayer, Jorg Schwenk, Marco Kampmann,
and Meiko Jensen, "On Breaking SAML: Be Whoever You Want to Be,"
in USENIX Security Symposium, 2012, pp. 397-412.

[77] Elias Adriano Nogueira da Silva and Daniel Lucredio, "Software
Engineering for the Cloud: A Research Roadmap," in Software
Engineering(SBES), 2012 26th Brazilian Symposium on Computing &
Processing (Hardware and Software), Natal, 2012.

[55] Matjaz B. Juric, Business Process Execution Language for Web
Services.: Packt Publishing, 2006.
[56] Matjaz B. Juric, Ramesh Loganathan, Poornachandra Sarang, and Frank
Jennings, SOA Approach to Integration: XML, Web services, ESB, and
BPEL in real-world SOA projects., 2007.


[78] San-Tsai Sun and Konstantin Beznosov, "The Devil is in the
(Implementation) Details: An Empirical Analysis of OAuth SSO
Systems," in ACM conference on Computer and communications
security, New York, 2012, pp. 378-390.

[57] Pohl Klaus, Günter Böckle, and Frank Van Der Linden, Software
Product Line Engineering. Berlin: Springer, 2005.

[79] Bruce Tate, Patrick Linskey, Bob Lee, and Mike Clark, Bitter EJB.,
2003.

[58] A. Koenig, "Patterns and Antipatterns," Journal of Object Oriented
Programming, volume 8, number 1, 1995.

[80] Eddy Truyen et al., "Context-oriented Programming for Customizable
SaaS Applications," in ACM Symposium on Applied Computing, 2012,
pp. 418-425.

[59] Thomas Kwok, Thao Nguyen, and Linh Lam, "A software as a service
with multi-tenancy support for an electronic contract management
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
International Middleware Conference, 2011.

[61] Zaigham Mahmood, Cloud Computing for Enterprise Architectures.,
2011.

[83] Sanjiva Weerawarana, Web Services Platform Architecture: SOAP,
WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging,
and More.: Prentice Hall PTR, 2005.

[62] Zach McCormick and Douglas C. Schmidt, "Data Synchronization
Patterns in Mobile Application Design," in PLoP, Tucson, 2012.
[63] Peter Mell and Timothy Grance, "The NIST Definition of Cloud
Computing," 2011.

[84] Craig D Weissman and Steve Bobrowski, "The Design of the Force.com
Multitenant Internet Application Development Platform," in Proceedings
of the 35th SIGMOD international conference on Management of data,
pages 889 - 896, Providence, Rhode Island, USA, 2009.

[64] Gerard Meszaros, xUnit Test Patterns Refactoring Test Code., 2007.
[65] Ralph Mietzner, Andreas Metzger, Frank Leymann, and Klaus Pohl,
"Variability Modeling to Support Customization and Deployment of
Multi-Tenant-Aware Software as a Service Applications," in PESOS '09
Proceedings of the 2009 ICSE Workshop on Principles of Engineering
Service Oriented Systems, pages 18 - 25, 2009.

[85] Bill Wilder, Cloud Architecture Patterns.: O'Reilly Media, 2012.
[86] Hung-chih Yang, Ali, Hsiao, Ruey-Lung Dasdan, and D. Stott Parker,
"Map-Reduce-Merge: Simplified Relational Data Processing," in

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



×