Tải bản đầy đủ (.docx) (14 trang)

XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ VÀ CUNG CẤP DỊCH VỤ DATABASE AS A SERVICE

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

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
o0o
Báo cáo chuyên đề
ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY
XÂY DỰNG CHƯƠNG TRÌNH
QUẢN LÝ VÀ CUNG CẤP DỊCH VỤ
DATABASE AS A SERVICE
Giảng viên hướng dẫn: PGS. TS. Nguyễn Phi Khứ
Học viên thực hiện: Hồ Mạnh Khương
MSHV: CH1301018
Mục lục
I. Giới thiệu về điện toán đám mây
Điện toán đám mây là một thuật ngữ được nhắc tới khá nhiều trong giới công nghệ
gần đây. Thuật ngữ này liên quan tới rất nhiều các công nghệ mới đang phát triển và bản
thân định nghĩa về điện toán đám mây cũng vẫn còn đang được những người làm công
nghệ tinh chỉnh lại hàng ngày.
Hiểu theo một cách đơn giản, điện toán đám mây là việc ảo hóa các tài nguyên tính
toán và các ứng dụng. Thay vì việc sử dụng một hoặc nhiều máy chủ thật thì nay chúng
ta sẽ sử dụng các tài nguyên được ảo hóa (virtualized) thông qua môi trường Internet.
Bản thân từ đám mây (cloud) là một từ ẩn dụ (metaphor) cho Internet.
[1]
Như vậy, trước đây để có thể triển khai một ứng dụng (ví dụ một trang Web), bạn phải
đi mua/thuê một hay nhiều máy chủ (server), sau đó đặt máy chủ tại các trung tâm dữ liệu
(datacenter) thì nay điện toán đám mây cho phép bạn giản lược quá trình mua/thuê. Bạn
chỉ cần nêu ra yêu cầu của mình, hệ thống sẽ tự động gom nhặt các tài nguyên rỗi (free)
để đáp ứng yêu cầu của bạn. Chính vì vậy, có thể kể đến một vài lợi ích cơ bản của điện
toán đám mây như sau:
- Sử dụng các tài nguyên tính toán động (Dynamic computing resources): Các tài
nguyên được cấp phát cho doanh nghiệp đúng như những gì doanh nghiệp muốn
một cách tức thời. Thay vì việc doanh nghiệp phải tính toán xem có nên mở rộng


hay không, phải đầu tư bao nhiêu máy chủ thì nay doanh nghiệp chỉ cần yêu cầu
và đám mây sẽ tự tìm kiếm tài nguyên rỗi để cung cấp cho bạn.
- Giảm chi phí: Doanh nghiệp hoặc cá nhân sẽ có khả năng cắt giảm chi phí để mua
bán, cài đặt và bảo trì tài nguyên. Thay vì phải đi mua máy chủ, cài đặt máy chủ,
bảo trì máy chủ thì nay chúng ta chẳng cần phải làm gì ngoài việc xác định chính
xác tài nguyên mình cần và yêu cầu.
- Giảm độ phức tạp trong cơ cấu của doanh nghiệp: Doanh nghiệp sản xuất hàng
hóa mà lại phải có cả một chuyên gia IT để vận hành, bảo trì máy chủ thì quá tốn
kém. Nếu đơn giản hóa được quá trình này thì doanh nghiệp sẽ chỉ tập trung vào
việc sản xuất hàng hóa chuyên môn của mình và giảm bớt được độ phức tạp trong
cơ cấu.
- Tăng khả năng sử dụng tài nguyên tính toán: Một trong những câu hỏi đau đầu của
việc đầu tư tài nguyên (ví dụ máy chủ) là bao lâu thì nó sẽ hết khấu hao, tôi đầu tư
như thế có lãi hay không, có bị outdate về công nghệ hay không… Khi sử dụng tài
nguyên trên đám mây thì bạn không còn phải quan tâm tới điều này nữa.
- Kiến trúc hướng dịch vụ (SOA)
Tuy vậy, để có thể tận dụng tối đa điện toán đám mây thì điều quan trọng là doanh nghiệp
và cá nhân cần phải tìm một nhà cung cấp “đám mây” đủ tốt để đáp ứng được cho mình
tất cả những điều trên. Trong tương lai, điện toán đám mây sẽ rất hữu ích khi nó vươn cả
tới việc sử dụng những tài nguyên dư thừa trong các máy tính cá nhân của chính bạn.
II. Điện toán đám mây
Điện toán đám mây cũng giống như các công nghệ mới, đều được giải thích với các
thuật ngữ cụ thể và các chữ viết tắt. Ba thuật ngữ quan trọng nhất là IaaS, PaaS và SaaS.
Infrastructure as a Service (IaaS) cung cấp cho bạn khả năng sử dụng phần cứng máy
tính được ảo hóa và kết nối mạng.
IaaS cung cấp nhiều nguồn tài nguyên như firewalls, load balancers, các địa chỉ IP,
nhưng hệ điều hành và các ứng dụng sẽ do bạn cài đặt và cập nhật. Điều này giúp bạn
linh hoạt hơn trong việc sử dụng tài nguyên vào mục đích gì.
IaaS được cung cấp rộng rãi bởi các nhà cung cấp Amazon, Memset, Google,
Windows… Để dễ dàng quản lý các dịch vụ IaaS, người ta xây dựng các template mẫu để

có thể tạo ngay những máy ảo từ các template mẫu này với các cài đặt được tùy chỉnh
trước, giảm thời gian triển khai và giúp cho việc chuyển đổi giữa các hệ thống ảo hóa
khác nhau.
Platform as a Service (PaaS) hỗ trợ người sử dụng cloud computer tốt hơn bằng việc
cung cấp sẵn các hệ điều hành, cơ sở dữ liệu, máy chủ web và môi trường thực thi lập
trình. Hơn nữa, nó cho phép bạn chỉ tập trung vào triển khai các ứng dụng cụ thể, cho
phép các nhà cung cấp đám mây quản lý và đo đạc tài nguyên 1 cách tự động.
Vậy PaaS có thể cho phép bạn tập trung hơn vào ứng dụng và dịch vụ đầu cuối hơn là phí
thời gian cho việc cài đặt và cấu hình hệ điều hành. Các nhà cung cấp IaaS cũng cung cấp
PaaS, giúp bạn giảm tải lượng công việc và thời gian tìm kiếm.
Software as a Service (SaaS) là sự lựa chọn phù hợp nhất khi bạn muốn tập trung vào
người dùng cuối mà không cần quan tâm đến việc triển khai, quản lý và cài đặt hệ điều
hành và tài nguyên. SaaS giúp cho bạn truy cập đến các phần mềm trên nền tảng đám
mây mà không cần quản lý cơ sở hạ tầng và nền tảng nó đang chạy.
Điều này có nghĩa là nó dễ dàng truy cập và có khả năng mở rộng. Có rất nhiều ví dụ về
SaaS gồm email, phần mềm văn phòng và các công cụ kiểm toán từ Google, Microsoft,
Freshbooks…
Các dạng as a service khác: một số dịch vụ khác được cung ứng trên nền Cloud được
phát triển sau này như STaas (Storage as a service) hoặc DBaaS (Database as a service).
Ta sẽ tìm hiểu và triển khai một chương trình quản lý DBaaS đơn giản trong nội dung báo
cáo này.
III. Giới thiệu về DBaaS
1. DBaas là gì?
Database-as-a-Service (DBaaS) là dịch vụ được quản lý bởi nhà cung cấp Cloud. Nó
hỗ trợ các chức năng quản lý cơ sở dữ liệu. Với dịch vụ DBaaS, người dùng không cần
có kiến thức chuyên sâu về cơ sở dữ liệu hoặc tốn chi phí bảo trì và vận hành các hệ
thống quản trị cơ sở dữ liệu. Các ứng dụng được triển khai bởi người dùng chỉ cần gọi và
sử dụng các tài nguyên cơ sở dữ liệu sẵn có từ DBaaS mà không cần người dùng quan
tâm nhiều, trừ khâu cài đặt cơ sở dữ liệu gốc ban đầu. Cơ sở dữ liệu sẽ được tự động bảo
trì, nâng cấp, sao lưu và xử lý nếu có sự cố về phần cứng mà không cần người dùng phải

bận tâm.
Ngoài các yêu cầu sẵn có từ các ứng dụng đám mây, DBaaS còn phải đáp ứng thêm
một số yêu cầu sau:
[2]
- Khả năng chuyển nhanh đổi giữa các node của dịch vụ đám mây: khi một node đặt
dịch vụ DBaaS bị quá tải về tài nguyên hoặc kết nối mạng, cơ sở dữ liệu của người
dùng cần được chuyển đổi ngay sang các node khác có nhiều tài nguyên hơn.
Hoặc khi người dùng không có nhu cầu sử dụng nhiều tài nguyên sẽ được đưa
sang node nhỏ hơn nhằm tiết kiệm chi phí.
- Tính khả dụng cao: các hệ thống cung cấp DBaaS phải đáp ứng nhu cầu khách
hàng mọi lúc mọi nơi. Do được triển khai trên nền đám mây nên DBaaS phải đảm
bảo không có thời gian chết, không bị giới hạn tài nguyên vật lý và hoạt động ổn
định.
- Tính mềm dẻo: cơ sở dữ liệu có thể được mở rộng hoặc thu nhỏ mà không có gián
đoạn trong quá trình sử dụng.
2. Một số nhà cung cấp DBaaS phổ biến:
Hiện nay có nhiều nhà cung cấp DBaaS với 2 mô hình cơ sở dữ liệu phổ biến là SQL
và No SQL.
[2]
SQL Data Model gồm:
- Amazon Relational Database Service (MySQL)
- Microsoft SQL Azure (MS SQL)
- Heroku PostgreSQL as a Service (shared and dedicated database options)
- Clustrix Database as a Service
- EnterpriseDB Postgres Plus Cloud Database
No SQL Data Model gồm:
- Amazon DynamoDB
- Amazon SimpleDB
- Cloudant Data Layer (CouchDB)
- Cloudbase.io Cloud Database

- Database.com by SalesForce
- Google App Engine Datastore
- Instaclustr (Apache Cassandra)
- MongoDB Database as a Service (nhiều lựa chọn)
- Orchestrate
MySQL
DBaaS Manager
Client
Cloud Infrastructure
Client
IV. Chương trình thử nghiệm DBaaS Manager
Chúng ta tiến hành xây dựng chương trình quản lý và cung cấp dịch vụ DBaaS trên
nền PHP và MySQL.
1. Mô hình xây dựng:
Chương trình được xây dựng trên nền ngôn ngữ lập trình PHP, với cơ sở dữ liệu
MySQL được triển khai trên nền Cloud.
[3]
Mô hình hoạt động cơ bản của chương trình DBaaS Manager
2. Xây dựng cơ sở dữ liệu cho chương trình
Ta xây dựng cơ sở dữ liệu cho chương trình gồm các bảng sau:
Table Chức năng
Members Chứa các thông tin của người dùng, bao gồm username,
password, email, số lượng database sở hữu.
Auth Chứa các thông tin phân quyền người dùng, bao gồm tên
phân quyền, số lượng database tối đa được phép tạo
Dblist Danh sách các database và thông tin của các database đó, bao
gồm user đã tạo, tên database, username sử dụng cho
database, host/ip cho phép truy cập vào database
3. Các module của chương trình
Chương trình gồm các module chính sau:

Module Chức năng
Login Thực hiện đăng nhập vào hệ thống
Logout Đăng xuất khỏi hệ thống
Register Đăng ký tài khoản mới
Database Hiển thị danh sách database mà user đã tạo, cho phép xóa (có
xác nhận) trên danh sách này.
Newdb Tạo mới database, cho phép lựa chọn các thông tin của
database như tên, username, mật khẩu, IP/Host cho phép truy
cập
Editdb Chỉnh sửa một số thông tin của database như user, mật khẩu,
Host/IP cho phép truy cập
Profile Cho phép user tự chỉnh sửa một số thông tin cá nhân như
email, mật khẩu
About Giới thiệu về chương trình
4. Sơ lược giao diện chương trình:
Chương trình được thực hiện trên bộ framework đơn giản, đã bao gồm các chức năng
như rewrite url, lọc injection, hỗ trợ truy vấn sql, hỗ trợ các thao tác trên file và tối ưu
bộ nhớ. Giao diện được thực hiện responsive chạy tốt cả trên các thiết bị di động.
- Trang đăng ký ngắn gọn chỉ gồm các thông tin: username, password và
email. Sau khi đăng ký người dùng có thể đăng nhập và tạo database để sử
dụng ngay.
Giao diện trang đăng ký
- Trang quản lý database: bao gồm danh sách các database, có khả năng xóa
trực tiếp trên danh sách này. Ngoài ra có tích hợp phpMyAdmin để người
dùng thuận tiện trong quá trình quản lý và backup cơ sở dữ liệu.
Giao diện trang quản lý database
- Trang thay đổi thông tin database: người dùng có thể thay đổi các thông tin
của database như password truy cập database, IP/Host cho phép truy cập.
Mọi thay đổi có hiệu lực ngay lập tức và không gây gián đoạn quá trình sử
dụng database.

Trang thay đổi thông tin database
5. Triển khai thực nghiệm chương trình:
Chương trình được triển khai thực nghiệm và chạy thử tại địa chỉ />Chương trình được triển khai trên 2 server gồm:
- Server web: chứa source DBaaS Manager và phpMyAdmin.
- Server MySQL: dựa trên nền cloud, chỉ chứa MySQL.
Việc phân chia như trên đảm bảo tài nguyên cloud chỉ phục vụ MySQL, trong khi
tài nguyên sử dụng chạy web nằm riêng trên server khác.
Ưu điểm:
- Server chạy MySQL không cần cài đặt các dịch vụ web.
- Tiết kiệm tài nguyên và đảm bảo an toàn về bảo mật cho cơ sở dữ liệu
(tránh các lỗ hổng về web)
- Dễ dàng bảo trì và thay đổi. Có thể linh động về nơi đặt website.
Nhược điểm:
- Khó triển khai nếu không nắm vững về cách thức cài đặt và cấu hình dịch
vụ.
- Kết nối cơ sở dữ liệu giữa server chứa web và cơ sở dữ liệu phụ thuộc vào
độ trễ giữa 2 server. Tuy nhiên với cơ sở hạ tầng đặt gần nhau thì độ trễ
giữa 2 server là chưa tới 10ms.
6. Nhận xét
- Việc triển khai chương trình DBaaS Manager là khá đơn giản nếu đã có
kiến thức cơ bản về cấu hình server. Tổng thời gian cài đặt dịch vụ và triển
khai chỉ khoảng 30 phút.
- Chương trình hoạt động tốt trên cả môi trường server chạy Windows và
Linux.
- Cung cấp dịch vụ DBaaS nhanh chóng, đăng ký và sử dụng chưa tới 15
giây.
- Đường truyền MySQL server 100mbps cho phép hoạt động cùng lúc từ 500
đến 1000 database với 10.000 concurrent connections.
Các nhược điểm cần khắc phục:
- Chưa có giao diện quản lý cho Administrator.

- Thiếu một số tính năng cần thiết (như khôi phục mật khẩu qua email, hỗ trợ
IPv6)
- Chưa thực nghiệm đủ để kiểm tra tối đa công suất của cloud server.
V. Kết luận
Mục tiêu của DBaaS là cung cấp cho người dùng một môi trường triển khai cơ sở dữ
liệu an toàn và nhanh chóng mà không cần quan tâm đến vấn đề cơ sở hạ tầng hay tài
nguyên hệ thống.
[3]

Mặc dù đã có nhiều nhà cung cấp DBaaS nhưng giá cả còn cao và chưa thân thiện với
người dùng. Hi vọng rằng DBaaS Manager có thể góp phần nào giúp đưa DBaaS đến với
người dùng với chi phí rẻ hơn và đơn giản hơn, dễ dàng triển khai ở nhiều khu vực và
datacenter nhằm xây dựng cơ sở dữ liệu với chất lượng kết nối cao nhất với các dịch vụ
web.
VI. Tài liệu tham khảo
[1]. MD Dikaiakos, D Katsaros, P Mehra, Cloud computing: distributed internet
computing for IT and scientific research, 2009
[2]. H Hacigumus, B Iyer, S Mehrotra, Providing database as a service, 2002
[3]. C Curino, EPC Jones, RA Popa, N Malviya, E Wu, Relational cloud: A
database-as-a-service for the cloud, 2011

×