1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

10 17 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 734,43 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài viết 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 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. Mời các bạn cùng tham khảo!

Trang 1

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

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 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 toán cụ thể cho mình trong lĩnh vực này 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ệ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

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]

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

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

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, Role-Based 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

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 toá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 toán phức tạp Đ

Trang 2

đò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

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

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 toá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)

Ứ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

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

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

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 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 ngoà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

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 Role-Based 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

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

Trang 3

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]

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

đó đò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 chuyên 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 toán dịch vụ và điện toán

đám mây

Ngành điện toá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 toá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 thuê 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

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 toà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

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

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

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

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 hoà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

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:

Trang 4

 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

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 soá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

Ngoà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 toá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

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 luôn 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

Ở 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 toà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

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

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

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à toà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ư Coordination, WS-AtomicTransaction 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

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 tuân 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

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

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ý

Trang 5

điện tử Thuật toá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

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

Đă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

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

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

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

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 toán bằng

cách xây dựng các cụm tính toá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 toá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

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

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]

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

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]

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ử (e-learning)

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 thuê

Đa người thuê 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 thuê được phân thành các nhóm chính sau [41, 66]:

Trang 6

 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 thuê

(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)

 Ngoà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)

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 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

nhập nhiều hệ thống cho từng khách hàng theo cách truyền

thống [75]

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

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]

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

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 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 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

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 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ữ

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 [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ộ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 thuê 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

Trang 7

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

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 nguyên hệ thống bằng cách sử

dụng thuật toán tôi luyện thép

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

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 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

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

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 hoà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 http://aws.amazon.com

2 http://www.windowsazure.com/en-us

3 https://appengine.google.com

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 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ê

Mô hình hóa yê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à yê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

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

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 thuê dựa trên cấu hình

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ó

Trang 8

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

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 quá 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

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 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]

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

Để đạ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

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 thuê 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

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 hoà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]

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)

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 toá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 quát đầ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

Trang 9

VI KẾT LUẬN VÀ TẦM NHÌN

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

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 toá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

TÀI LIỆU THAM KHẢO

[1] Carlisle Adams and Steve Lloyd, Understanding PKI Concepts,

Standards, and Deployment Considerations Second Edition.: Addison

Wesley, 2002

[2] Ola Ajaj and Eduardo B Fernandez, "A pattern for the

WS-SecureConversation standard for web services," in Pattern Languages of

Programs, Tucson, Arizona, 2012

[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

[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

[5] Deepak Alur, John Crupi, and Dan Malks, Core J2EE™ Patterns: Best

Practices and Design Strategies., 2001

[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

[7] Stefan Aulbach, "Multi-Tenant Databases for Software as a Service," in

2008 ACM SIGMOD Int Conf on Management of data, 2008

[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

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

1987

[10] Michael Bell, SOA Modeling Patterns for Service-Oriented Discovery

and Analysis., 2010

[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

[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

[15] Frank Buschmann, Kevlin Henney, and Douglas C Schmidt,

Pattern-Oriented 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,

Market-Oriented Cloud Computing: Vision, Hype, and Reality for Delivering IT Services as Computing Utilities., 2008

[19] Antonio Celesti, "How to Enhance Cloud Architectures to Enable

Cross-Federation," in 2010 IEEE 3rd Int Conf on Cloud Computing, Miami,

2010

[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

[27] Michael Stal, Hans Rohnert and Frank Buschmann Douglas Schmidt,

"Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects," , 2000

[28] Bill Dudney, Stephen Asbury, Joseph K Krozak, and Kevin Wittkopf,

J2EE Antipatterns.: Wiley, 2003

[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

[30] Thomas Erl, SOA Design Patterns., 2009

[31] Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of

Software Boston: Addison Wesley, 2003

[32] Christoph Fehling, "An Architectural Pattern Language of Cloud-based

Applications," in Pattern Languages of Programs, Portland, 2011

[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

[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

[35] Bachmann Felix and Len Bass, "Managing Variability in Software

Architectures," ACM SIGSOFT Software Engineering Notes, vol 26, no

3, pp 126-132, 2001

[36] Eduardo B Fernandez, "Patterns for Operating Systems Access Control,"

in Procs of PLoP 2002, 2002

[37] Eduardo B Fernandez, Security Patterns in Practice: Designing Secure

Architectures using Software Patterns Chichester: Wiley, 2013

[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

[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

Trang 10

Catching the Long Tail," , 2006

[42] Borko Furht and Armando Escalante, Handbook of Cloud Computing

New York: Springer, 2010

[43] Eric Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design

Patterns: Elements of Reusable Object-Oriented Software.:

Addison-Wesley, 1994

[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

[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

[47] Dick Hardt, "The OAuth 2.0 Authorization Framework," 2012

[48] Keiko Hashizume, "Cloud Service Model Patterns," in Pattern

Languages of Programs, Tucson, 2012

[49] Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz,

"Context-oriented Programming," Journal of Object Technology, vol 7, no 3,

2008

[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

[44] IDC (2015, Sep.) IDC [Online]

http://www.idc.com/getdoc.jsp?containerId=prUS25732415

[53] Michael Kircher and Prashant Jain, Pattern-Oriented Software

Architecture: Patterns for Resource Management., 2004

[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

[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

[57] Pohl Klaus, Günter Böckle, and Frank Van Der Linden, Software

Product Line Engineering Berlin: Springer, 2005

[58] A Koenig, "Patterns and Antipatterns," Journal of Object Oriented

Programming, volume 8, number 1, 1995

[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

[60] Neal Leavitt, "Is Cloud Computing Really Ready for Prime Time?," ,

2009

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

2011

[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

[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

[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

Variability Realization Techniques," Software: Practice and Experience,

vol 35, no 8, pp 705-754, 2005

[68] Clifford B Neuman and Theodore Ts'o, "Kerberos: An Authentication

Sewice for Computer Networks," IEEE Communications Magazine, pp

33-38, 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

[70] George Reese, Cloud Application Architectures., 2009

[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

[72] Andreas Rüping, Where Code and Content Meet: Design Patterns for

Web Content Management and Delivery, Personalisation and User Participation., 2009

[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

[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

[75] Gautam Shroff, Enterprise Cloud Computing: Technology Architecture

Applications.: Cambridge University Press, 2010

[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

[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

[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

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

2003

[80] Eddy Truyen et al., "Context-oriented Programming for Customizable

SaaS Applications," in ACM Symposium on Applied Computing, 2012,

pp 418-425

[81] Mark Turner, David Budgen, and Pearl Brereton, "Turning Software into

a Service," IEEE Computer Society, vol 36, no 10, pp 38 - 44, 2003

[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

[83] Sanjiva Weerawarana, Web Services Platform Architecture: SOAP,

WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More.: Prentice Hall PTR, 2005

[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

[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

Ngày đăng: 27/04/2022, 10:09

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Carlisle Adams and Steve Lloyd, Understanding PKI Concepts, Standards, and Deployment Considerations Second Edition.: Addison Wesley, 2002 Sách, tạp chí
Tiêu đề: Understanding PKI Concepts, "Standards, and Deployment Considerations Second Edition
[42] Borko Furht and Armando Escalante, Handbook of Cloud Computing. New York: Springer, 2010 Sách, tạp chí
Tiêu đề: Handbook of Cloud Computing
[43] Eric Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software.: Addison- Wesley, 1994 Sách, tạp chí
Tiêu đề: Design "Patterns: Elements of Reusable Object-Oriented Software
[44] Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, "The Google File System," in ACM SIGOPS Operating Systems, 2003 Sách, tạp chí
Tiêu đề: The Google File System
[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 Sách, tạp chí
Tiêu đề: A framework for native multi-tenancy application development and management
[47] Dick Hardt, "The OAuth 2.0 Authorization Framework," 2012 Sách, tạp chí
Tiêu đề: The OAuth 2.0 Authorization Framework
[48] Keiko Hashizume, "Cloud Service Model Patterns," in Pattern Languages of Programs, Tucson, 2012 Sách, tạp chí
Tiêu đề: Cloud Service Model Patterns
[49] Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz, "Context- oriented Programming," Journal of Object Technology, vol. 7, no. 3, 2008 Sách, tạp chí
Tiêu đề: Context-oriented Programming
[50] Gregor Hohpe and Bobby Woolf, Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions., 2003 Sách, tạp chí
Tiêu đề: Enterprise Integration Patterns: "Designing, Building, and Deploying Messaging Solutions
[51] Alex Holmes, Hadoop in Practice.: Manning Publications Co, 2012 Sách, tạp chí
Tiêu đề: Hadoop in Practice
[53] Michael Kircher and Prashant Jain, Pattern-Oriented Software Architecture: Patterns for Resource Management., 2004 Sách, tạp chí
Tiêu đề: Pattern-Oriented Software "Architecture: Patterns for Resource Management
[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 Sách, tạp chí
Tiêu đề: On Breaking SAML: Be Whoever You Want to Be
[55] Matjaz B. Juric, Business Process Execution Language for Web Services.: Packt Publishing, 2006 Sách, tạp chí
Tiêu đề: Business Process Execution Language for Web "Services
[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 Sách, tạp chí
Tiêu đề: SOA Approach to Integration: XML, Web services, ESB, and "BPEL in real-world SOA projects
[57] Pohl Klaus, Gỹnter Bửckle, and Frank Van Der Linden, Software Product Line Engineering. Berlin: Springer, 2005 Sách, tạp chí
Tiêu đề: Software "Product Line Engineering
[58] A. Koenig, "Patterns and Antipatterns," Journal of Object Oriented Programming, volume 8, number 1, 1995 Sách, tạp chí
Tiêu đề: Patterns and Antipatterns
[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 Sách, tạp chí
Tiêu đề: A software as a service with multi-tenancy support for an electronic contract management application
[60] Neal Leavitt, "Is Cloud Computing Really Ready for Prime Time?," , 2009 Sách, tạp chí
Tiêu đề: Is Cloud Computing Really Ready for Prime Time
[61] Zaigham Mahmood, Cloud Computing for Enterprise Architectures., 2011 Sách, tạp chí
Tiêu đề: Cloud Computing for Enterprise Architectures
[44] IDC. (2015, Sep.) IDC. [Online]. http://www.idc.com/getdoc.jsp?containerId=prUS25732415 Link

HÌNH ẢNH LIÊN QUAN

Hình 1. Sơ đồ khái niệm của các lĩnh vực 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: Bản khảo sát hiện trạng
Hình 1. Sơ đồ khái niệm của các lĩnh vực nghiên cứu (Trang 2)
phát triển phần mềm hướng mô hình, phát triển phần mềm - 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
ph át triển phần mềm hướng mô hình, phát triển phần mềm (Trang 3)
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] - 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
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] (Trang 7)
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ẫ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
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 (Trang 8)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w