Xem mẫu

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