Một lưới là một nhóm máy chủ mà trên đó nhiệm vụ lớn được chia thành những tác vụ nhỏ để chạy song song, được xem là một máy chủ ảo Với điện toán đám mây, các tài nguyên điện toán như má
Trang 1
BÀI THU HOẠCH MÔN HỌC
CHUYỂN ĐỔI ỨNG DỤNG WEB
THÀNH GIẢI PHÁP SAAS
Giáo viên hướng dẫn:
GSTS Hoàng Kiếm
Học viên thực hiện:
Thái Hồng Quang
CH1101033
Lớp:
Thạc sỹ CNTT qua mạng khoá 06
Trang 2Lời nói đầu
Khoa học là hệ thống các tri thức về quy luật của tự nhiên ,xã hội và tư duy về những biện pháp tác động đến thế giới xung quanh ,đến nhận thức và làm biến đổi thế giới đó phục vụ cho lợi ích của con người
Khoa học bao gồm một hệ thống tri thức về quy luật của vật chất và sự vận động của vật chất ,những quy luật của tự nhiên ,xã hội và tư duy hệ thống tri thức này hình thành trong lịch sử và không ngừng phát triển trên cơ sở thực tiễn xã hội phận biệt ra 2
hệ thống tri thức :tri thức kinh nghiệm và tri thức khoa học
Trong phạm vi của bài thu hoạch nhỏ này em sẽ trình bày phương pháp chuyển đổi ứng dụng web thành giải pháp Saas Qua đây em cũng xin gửi lời cảm ơn đến giáo sư tiến sỹ khoa học Hoàng Văn Kiếm , người đã tận tâm truyền đạt cho chúng em những kiến thức nền tảng cơ bản cho chúng em về môn học “Phương pháp nghiên cứu khoa học trong tin học “
Mục lục
I Giới thiệu điện toán đám mây
Trang 31 Giới thiệu
2 Lịch sử
3 Kiến trúc điện toán đám mây
II Dịch vụ của điện toán đám mây
1 Saas
2 Paas
3 Iaas III Chuyển đổi ứng dụng thành giải pháp Saas
1 Chuyển đổi lược đồ cơ sở dữ liệu sang một mô hình trừu tượng
2 Mở rộng quá trình xác thực người dung
3 Cấu hình kết nối cơ sở dữ liệu
4 Triển khai ứng dụng SaaS nhiều bên thuê mới vào đám mây
I Giới thiệu điện toán đám mây
Trang 41 Giới thiệu
Theo Ian Foster: “Một mô hình điện toán phân tán có tính co giãn lớn mà hướng theo co giãn về mặt kinh tế, là nơi chứa các sức mạnh tính toán, kho lưu trữ, các nền tảng (platform) và các dịch vụ được trực quan, ảo hóa và co giãn linh động, sẽ được phân phối theo nhu cầu cho các khách hàng bên ngoài thông qua Internet” “Điện toán đám mây là một dạng thức điện toán cung cấp các tài nguyên ảo hóa và có quy mô dưới dạng dịch vụ qua mạng Internet Người dùng không cần tới những kiến thức chuyên môn để quản lý hạ tầng công nghệ này bởi phần việc đó là dành cho các nhà cung cấp dịch vụ.”
Rất nhiều người, bao gồm cả các chuyên gia kỹ thuật, nghĩ rằng điện toán đám mây chỉ đơn giản là ảo hóa trên một quy mô rất lớn nhưng điều này là không đúng Sự khác biệt về ảo hóa và điện toán đám mây là ảo hóa chỉ đơn giản là đặt các khối lượng công việc trên các hệ thống ảo cá nhân Các hệ thống cá nhân là ảo nhưng chúng có chức năng và mục đích tương tự: Một máy chủ web, máy chủ tập tin, máy chủ cơ sở
dữ liệu Bạn có thể có hàng ngàn máy ảo, mỗi máy thực hiện các chức năng riêng của mình Đấy không phải là điện toán đám mây
Một môi trường điện toán đám mây là một cơ sở hạ tầng ảo có chung nguồn tài nguyên dịch vụ và một chức năng cụ thể: Một công cụ tìm kiếm (Google), lưu trữ tập tin và hệ thống thu hồi (Dropbox) Điện toán đám mây là hàng ngàn máy ảo với một mục đích duy nhất: Cung cấp một dịch vụ không ngừng
2 Lịch sử
Thuật ngữ điện toán đám mây xuất hiện bắt nguồn từ hệ thống điện toán lưới trong thâp niên 80 tiếp theo là điện toán nhu cầu và phần mềm dịch vụ
Điện toán lưới đặt trọng tâm vào việc chuyển tải 1 công việc đến địa điểm của các tài nguyên điện toán cần thiết để sử dụng Một lưới là một nhóm máy
chủ mà trên đó nhiệm vụ lớn được chia thành những tác vụ nhỏ để chạy song song, được xem là một máy chủ ảo Với điện toán đám mây, các tài nguyên điện toán như máy chủ có thể được định hình động hoặc cắt nhỏ từ cơ sở hạ tầng phần cứng nền và trở nên sẵn sàng thực hiện nhiệm vụ, hỗ trợ những môi trường không phải là điện toán lưới như Web ba lớp chạy các ứng dụng truyền thống hay ứng dụng Web 2.0
Trang 5II Dịch vụ của điện toán đám mây
1 Paas
PaaS (Platform as a Service) hỗ trợ việc triển khai ứng dụng mà không quan tâm đến chi phí hay sự phức tạp của việc trang bị và quản lý các lớp phần cứng và phần mềm bên dưới, cung cấp tất cả các tính năng cần thiết để hỗ trợ chu trình sống đầy đủ của việc xây dựng và cung cấp một ứng dụng và dịch vụ web sẵn sàng trên internet mà không cần bất kì thao tác tải hay cài đặt phần mềm cho những người phát triển , quản
lý tin học , hay người dùng cuối
Khi PaaS có sẵn như một dịch vụ, các developer và ISVs có thể kiểm soát toàn
bộ việc phát triển và triển khai ứng dụng PaaS cho phép các developer và ISV’s tạo
ra các ứng dụng web tùy chỉnh và phát hành nó một cách nhanh chóng , khi nhiều rắc rối như việc thiết lập hosting, servers, databases, quá trình tương tác người dùng và những frameworks được đóng gói
Mô hình PaaS
Trang 6PaaS là một khái niệm được biết đến như một dịch vụ nền tảng Cloud Computing Ứng dụng PaaS là một biến thể của ứng dụng saas
PaaS còn được biết đến với một tên khác là cloudware
Đặc trưng
Một ứng dụng PaaS bao gồm các đặc trưng sau đây:
Phục vụ cho việc phát triển, kiểm thử, triển khai và vận hành ứng dụng giống như là môi trường phát triển tích hợp
Cung cấp các công cụ khởi tạo với giao diện trên nền web
Có kiến trúc đồng nhất
Tích hợp dịch vụ web và cơ sở dữ liệu
Hỗ trợ cộng tác nhóm phát triển
Cung cấp các công cụ hỗ trợ tiện tích khác
Ưu điểm
Dịch vụ nền tảng (PaaS) đang ở thời kì đầu và được ưa chuộng ở những tính năng được ưa thích bởi nó cung cấp dịch vụ phần mềm có tích hợp các yếu tố về nền tảng hệ thống
Ưu điểm trong những dự án tập hợp những công việc nhóm có sự phân tán
về địa lý
Khả năng tích hợp nhiều nguồn của dịch vụ web
Giảm chi phí ngoài lề khi tích hợp các dịch vụ về bảo mật, khả năng mở rộng, kiểm soát lỗi…
Giảm chi phí khi trừu tượng hóa công việc lập trình ở mức cao để tạo dịch
vụ, giao diện người dùng và các yếu tố ứng dụng khác
Hướng việc sử dụng công nghệ để đạt được mục đích tạo điều kiện dễ dàng hơn cho việc phát triển ứng dụng đa người dùng cho những người không chỉ trong nhóm lập trình mà có thể kết hợp nhiều nhóm cùng làm việc
Trang 7Nhược điểm
Ràng buộc bởi nhà cung cấp: do giới hạn phụ thuộc vào dịch vụ của nhà cung cấp
Giới hạn phát triển: độ phức tạp khiến nó không phù hợp với yêu cầu phát triển nhanh vì những tính năng phức tạp khi hiện thực trên nền tảng web
2 Saas
Hãng nghiên cứu toàn cầu IDC định nghĩa: “Saas là phần mềm hoạt động trên Web, được quản lý bởi nhà cung cung cấp và cho phép người sử dụng truy cập từ xa” Saas là một mô hình kinh doanh phần mềm mới ra đời Saas là viết tắt của từ Software As A Service Đây là một xu hướng mới sẽ phát tiển mạnh trong tương lai Nguyên tắc chủ yếu của Saas là sử dụng phầm mềm mà không cần cài đặt Theo mô hình truyền thống khi 1 một doanh nghiệp muốn triển khai 1 phần mềm để sử dụng cho doanh nghiệp của mình thì phải trải qua rất nhiều giai đoạn và chi phí triển khai rất cao
Thông thường một phần mềm được viết ,phát triển và cung cấp như một sản phẩm hoàn chỉnh Tuy nhiên Internet đã tạo ra một xu hướng mới: cung cấp phần mềm qua mạng Quan niệm này tương đối đơn giản: “Đừng mua phần mềm, hay thuê và sử dụng khi bạn cần” Điều này cũng tương tự như việc thuê nhà hay ô tô trong thời gian ngắn, phục vụ mục đích nhất thời còn hơn là bỏ tiền ra mua cả sản phẩm Để sử dụng được phần mềm, thay vì phải bỏ tiền ra để xây dựng một phần mềm trọn gói như trước đây người dùng chỉ cần đăng kí với nhà cung cấp để thuê phần mềm sử dụng.Tùy theo nhu cầu của mỗi công ty khác nhau mà chi phí cũng khác nhau nhưng thông thường chi phí đó nhỏ hơn rất nhiều so với với chi phí xây dựng một phần mềm trọn gói
3 Iaas
IaaS là việc phân phối hạ tầng máy tính như một dịch vụ Tầng này khác với PaaS
ở chỗ : phần cứng ảo được cung cấp không kèm theo software stack Thay vào đó, người dùng tự đưa ra VM image của mình IaaS là dạng “thô” nhất của “computing as
Trang 8a service” Nhà cung cấp IaaS thương mại nối tiếng nhất là Amazon Elastic Compute Cloud (EC2) Trong EC2 , bạn có thể chỉ định máy ảo (VM) đặc biệt của mình và triển khai các ứng dụng trên đó hay là cung cấp VM iamge của bạn và chạy nó trên server Bạn chỉ phải trả tiền cho thời gian tính toán, dung lượng lưu trữ và băngthôngmạng
Dự án Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs
To Useful Systems) là một bản thực thi mã nguồn mở của EC2, trong đó tương thích
về giao diện với dịch vụ thương mại Giống như EC2, Eucalyptus dựa trên Linux với Xen dùng cho ảo hóa hệ điều hành Eucalyptus được phát triển tại đại học California cho mục đích nghiên cứu cloud computing
Một vài gói nguồn mở dựa trên Linux khác Hadoop là một Java™ software framework nguồn mở tương tự như PaaS nhưng tập trung vào thao tác các tập dữ liệu lớn trên các server nối mạng với nhau (lấy ý tưởng từ Google MapReduce cho phép xử
lý song song trên các tập dữ liệu lớn) Như thế thì nó sẽ tìm được các ứng dụng trong tìm kiếm và quảng cáo Hadoop cũng cung cấp các dự án con phỏng theo các ứng dụng của Google Ví dụ Hbase đưa ra chức năng giống như CSDL Google BigTable
và Hadoop Distributed File System (HDFS) đưa ra chức năng giống như Google File System
III Chuyển đổi ứng dụng thành giải pháp Saas
1 Chuyển đổi lược đồ cơ sở dữ liệu sang một mô hình trừu tượng
công nghệ điển hình của một ứng dụng web trông giống như Hình; một ứng dụng giao tiếp với một cơ sở dữ liệu, thường là thông qua một tầng lưu giữ dữ liệu lâu bền như Hibernate
Trang 9Hình: ứng dụng web điển hình trong đám mây
Để biến đổi một ứng dụng thành một ứng dụng nhiều bên thuê, cơ sở dữ liệu phải được thiết kế lại để có thêm các trường để quản lý dữ liệu nhận dạng bên thuê, sẽ cần thiết để cho phép bên thuê lọc dữ liệu
Ứng dụng SaaS-Factory được sử dụng để đọc lược đồ của cơ sở dữ liệu ứng dụng hiện có Sau đó nó tạo ra một mô hình của cơ sở dữ liệu đó rồi sử dụng nó để tạo ra một cơ sở dữ liệu mới trong MySQL có thêm trường TenantID trong các bảng Tại thời điểm này một số bảng bổ sung thêm được tạo ra, trong đó có một bảng chứa thông tin bên thuê mà Multi-Tenant Server sử dụng
Trang 10Hình 2 Tạo lược đồ cơ sở dữ liệu siêu mô hình
Vì Cơ sở dữ liệu siêu mô hình (MetaModel Database) trông giống như cũ đối với ứng dụng ban đầu, cũng có chính các bảng và các trường như thế, nên ứng dụng ban đầu có thể tiếp tục tương tác với Cơ sở dữ liệu siêu mô hình chính xác giống như nó đã làm với cơ sở dữ liệu MySQL Có thể tạo ra cơ sở dữ liệu thực ở dưới mô hình này với các trường TenantID bổ sung cần thiết cho một ứng dụng nhiều bên thuê
Cơ sở dữ liệu siêu mô hình chỉ là trừu tượng hóa và không thực sự lưu giữ bất kỳ
dữ liệu nào: Nó chỉ đơn giản là một mô hình Do đó, khi cơ sở dữ liệu thực được tạo
ra, không có lý do nào để không thể tạo ra nó trong bất kỳ Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) được hỗ trợ nào Điều này có thể có ích đối với các trường hợp ở
đó các ISV đã muốn thay đổi chồng công nghệ bằng cách chọn một RDBMS khác, có thể là DB2 để tận dụng một số tính năng hay hiệu năng tốt hơn cho các ứng dụng của chúng
2 Mở rộng quá trình xác thực người dung
Bất kỳ ứng dụng SaaS nhiều bên thuê nào cũng phải có khả năng quản lý các thông tin phiên làm việc cần thiết của những người sử dụng đã xác thực để có thể xác định người sử dụng ấy thuộc bên thuê nào Có nhiều phương pháp xác thực cho các ứng
Trang 11dụng; do đó bất kỳ ứng dụng nào được chuyển đổi cũng phải được phân tích và phải hiểu rõ về các phương thức xác thực của nó
Như đã giới thiệu cách thiết lập một bảng các bên thuê và thêm một bảng người dùng sao cho mối quan hệ này có thể được duy trì trong dữ liệu của ứng dụng Mục đích là để thực hiện một phương thức sẽ mở rộng quá trình xác thực người dùng ứng dụng để cho khi một người dùng đăng nhập vào, anh ta cũng khớp với bên thuê tương ứng của mình và TenantID trở thành một phần của thông tin phiên làm việc
Có nhiều cách để thực hiện điều này, nó phụ thuộc vào việc triển khai thực hiện ứng dụng Nếu sử dụng Tomcat như là thùng chứa servlet của ứng dụng, thì có thể sử dụng việc xác thực do thùng chứa quản lý để khởi đầu một quy tắc nghiệp vụ chạy trong Máy chủ nhiều bên thuê (Multi-Tenant Server) để thực hiện tra tìm TenantID của người sử dụng Ngoài ra, có thể sử dụng một bộ lọc servlet để phát hiện và sau đó thiết lập biến cục bộ luồng TenantID Với ví dụ jBilling này, ứng dụng xử lý việc xác thực trực tiếp bằng cách xác nhận hợp lệ dựa vào các bảng người dùng của nó Vì vậy phương thức được sử dụng để cung cấp xác thực nâng cao đã có một số thay đổi đơn giản về mã xác thực để thêm vào quá trình tra tìm kiếm thông tin bên thuê của người dùng được lưu trữ trong các bảng mới
Nhờ việc người dùng đã được xác thực và biết được TenantID mà họ thuộc về, nên
đã có đầy đủ thông tin để có thể lọc dữ liệu sao cho chỉ có dữ liệu thuộc về bên thuê đó mới có thể truy cập được
3 Cấu hình kết nối cơ sở dữ liệu
Máy chủ nhiều bên thuê của Corent được xây dựng trên một kiến trúc hướng dịch
vụ, sử dụng Cơ sở dữ liệu siêu mô Đây là một tầng trừu tượng để mô hình hóa cơ sở
dữ liệu ban đầu của ứng dụng và các giao tiếp cơ sở dữ liệu của ứng dụng được chuyển hướng đến siêu mô hình trừu tượng thay vì triển khai cơ sở dữ liệu thực tế Điều này được thực hiện bằng cách chỉ cần cấu hình lại kết nối JDBC của jBilling để truy cập
Trang 12vào Cơ sở dữ liệu siêu mô hình thay vì cơ sở dữ liệu MySQL thực tế Đối với các ứng dụng sử dụng Hibernate, cần cấu hình nhánh ngôn ngữ Corent của Hibernate
Do những thay đổi này, các cuộc gọi cơ sở dữ liệu của ứng dụng bây giờ được hướng tới Cơ sở dữ liệu siêu mô hình Các sự kiện SQL này bị chặn bởi Trình điều khiển lanh lẹn của Corent (Corent Agile Controller™) và sau đó chuyển tới Trình kết nối cơ sở dữ liệu lanh lẹn (Corent's ADBC™-Agile DataBase Connector) của Corent ADBC nhận câu lệnh SQL mà ứng dụng gửi tới Cơ sở dữ liệu siêu mô hình và phân tích cú pháp nó, sau đó bổ sung thêm các tiêu chí lọc TenantID của người dùng trong phiên làm việc đã gửi câu lệnh SQL ấy (ví dụ, ở đây TenantID = <myTenantID>) Điều này đảm bảo rằng sự an toàn của dữ liệu trong cơ sở dữ liệu chia sẻ chung luôn được duy trì nghiêm ngặt Ngay cả khi một ứng dụng bên ngoài như ReportWriter kết nối tới, dữ liệu mà nó có thể nhìn thấy vẫn bị hạn chế trong những dữ liệu thích hợp cho bên thuê đó Vì chúng ta biết người đang đăng nhập là ai, bất kể từ ứng dụng nào, chúng ta biết họ thuộc về bên thuê nào và các bộ lọc thích hợp được áp dụng
Vì việc xử lý các câu lệnh SQL được thực hiện sau khi chúng được gửi tới Cơ sở
dữ liệu siêu mô hình và bên thuê của người sử dụng đã biết nên Trình điều khiển lanh lẹn của Corent có thể chặn và thực hiện các hoạt động tinh vi hơn, bao gồm việc tra tìm các quy trình xử lý và các cấu hình của bên thuê cụ thể Do đó, có thể thực hiện các hành động đặc thù tùy theo mỗi bên thuê, thậm chí thay thế một kết nối cơ sở dữ liệu khác sao cho một bên thuê có thể sử dụng một cơ sở dữ liệu DB2 mặc dù tất cả những bên thuê khác đang sử dụng cơ sở dữ liệu MySQL Hoặc một bên thuê có thể thêm thao tác SQL để hạn chế dữ liệu mà họ có thể lấy ra trong số các bản ghi đã nhập không quá 90 ngày trước đó Tất cả các tùy chỉnh cho mỗi bên thuê này có thể được thực hiện thông qua một Máy quy tắc lanh lẹn (Agile Rules Engine™) được xây dựng trong Máy chủ nhiều bên thuê mà không cần bất kỳ các thay đổi nào với mã ứng dụng ban đầu