•Tìm hiểu Hệ thống Cloud PlatformasaService heroku.•Tìm hiểu Hệ thống Cloud DatabaseasaService mLab.•Tìm hiểu mô hình, cách thức xây dựng, triển khai một ứng dụng trên môi trường cloud computing.•Xây dưng mô phỏng ứng dụng Quản lý sinh viên bằng NodeJS và MongoDB chạy trên môi trường cloud heroku.•Thực hành việc cài đặt, chạy trên môi trường Cloud heroku. MẬT KHẨU FILE SOURCECODE TRONG FILE DOC
Trang 1I GIỚI THIỆU VỀ HEROKU 2
1.1 Giới thiệu Heroku 2
1.2 Các thành phần của Heroku 3
1.3 Kiến trúc Heroku 6
1.4 So sánh Heroku với Amazon AWS 8
II GIỚI THIỆU VỀ MONGODB, MLAB VÀ NODEJS 10
2.1 MongoDB 10
2.2 mLap 11
2.3 NodeJS 11
III TRIỂN KHAI ỨNG DỤNG LÊN HEROKU 12
3.1 Các bước triển khai 12
3.2 Một số câu lệnh thông dụng 14
3.2.1 Các câu lệnh Khởi tạo ứng dụng 14
3.2.2 Thiết lập Platform 14
3.2.3 Kết nối thư mục ứng dụng 15
IV TRIỂN KHAI ỨNG DỤNG BÀI TÂP LỚN TRÊN MÔI TRƯỜNG CLOUD 15
4.1 Mục đích của Ứng dụng baitaplon-dientoandammay 16
4.2 Nội dung của Ứng dụng 16
4.2.1 Đặc điểm 16
4.2.2 Các chức năng của ứng dụng 17
4.2.3 Cấu trúc thư mục ứng dụng 17
4.2.4 Cấu trúc Database của ứng dụng 17
4.3 Các bước xây dựng, triển khai ứng dụng 19
4.4 Một số giao diện 19
4.4.1 Trang chủ/Danh sách sinh viên 19
4.4.2 Tìm kiếm sinh viên 20
4.4.3 Thông tin sinh viên 20
4.4.4 Form Tạo mới/Sửa thông tin sinh viên 21
TÀI LIỆU THAM KHẢO 22
Trang 2I GIỚI THIỆU VỀ HEROKU
1.1 Giới thiệu Heroku
Heroku là một nền tảng cũng như dịch vụ cho phép các nhà phát triển xây dựng,phát triển và vận hành các ứng dụng hoàn toàn trên đám mây dưới dạng Platform-as-a-Service Heroku, một trong những nền tảng đám mây đầu tiên, đã được phát triển từtháng 6 năm 2007, khi nó chỉ hỗ trợ ngôn ngữ lập trình Ruby Điều tuyệt vời ở Heroku
là bạn có thể sử dụng dịch vụ hoàn toàn miễn phí cùng với vô vàn các addons hỗ trợcực kỳ hữu ích cho các ứng dụng web không yêu cầu phải có tốc độ truy cập quá caohay dung lượng lớn
Heroku giúp dễ dàng trong việc triển khai ứng dụng trên môi trường cloud.Ngoài ra, heroku còn hỗ trợ nhiều tính năng khác:
Database miễn phí (P
SSL miễn phí
Hỗ trợ làm việc nhóm (team work)
Liên kết với Github đơn giản
Trang 3Hình 1 Mô hình đám mây PaaS của Heroku
1.2 Các thành phần của Heroku
Hình 2 Các thành phần của Heroku
a) Dynos
Tất cả các ứng dụng Heroku chạy trong một bộ sưu tập các container Linux được
gọi là dynos Dynos gồm có 3 cấu hình cơ bản
Web: dynos Web là dynos của loại quy trình “web” được định nghĩa trong
Procfile của bạn Chỉ các dynos web mới nhận được lưu lượng HTTP từ các bộ định tuyến
Worker: dynos Worker có thể thuộc bất kỳ loại quy trình nào được khai báo
trong Procfile của bạn, ngoài "web" Các dynos Worker thường được sử dụng
Trang 4cho các công việc background, các queueing systems,và các công việc theo
thời gian
One-off: Các dynos một lần là các dynos tạm thời có thể chạy tách rời hoặc với
đầu vào / đầu ra của chúng được gắn với thiết bị đầu cuối cục bộ của bạn
Chúng được tải với bản phát hành mới nhất của bạn Chúng có thể được sử
dụng để xử lý các tác vụ quản trị, chẳng hạn như di chuyển cơ sở dữ liệu và cácphiên giao diện điều khiển Chúng cũng có thể được sử dụng để chạy công việcbackground giống như với trình lập lịch Heroku
Khi một dyno web hoặc worker được khởi động, hình thành dyno của ứng dụng
sẽ thay đổi (số dynos đang chạy của từng loại quy trình) - và tùy thuộc vào vòng đờidyno, Heroku sẽ tiếp tục duy trì sự hình thành dyno đó cho đến khi thay đổi nó Mặt
khác, các dynos One-off chỉ được mong đợi chạy một lệnh ngắn ngủi và sau đó thoát
ra, không ảnh hưởng đến sự hình thành dyno của bạn
b) Databases & Data Management
Heroku cung cấp ba dịch vụ database quản lý cho tất cả khách hàng:
Heroku Postgres
Heroku Redis
Apache Kafka trên Heroku
Heroku Postgres: là cơ sở dữ liệu đáng tin cậy và mạnh mẽ của Heroku một
dịch vụ dựa trên PostgreSQL Bạn có thể truy cập cơ sở dữ liệu Heroku Postgres từbất kỳ ngôn ngữ nào bằng trình điều khiển PostgreSQL, bao gồm tất cả các ngôn ngữđược Heroku hỗ trợ
Các ứng dụng Heroku sử dụng biến cấu hình DATABASE_URL để chỉ định URL của
cơ sở dữ liệu chính của ứng dụng Nếu ứng dụng của bạn chỉ có một cơ sở dữ liệu,URL của nó sẽ tự động được gán cho cấu hình này Bạn có thể chia sẻ một cơ sở dữliệu Heroku Postgres duy nhất giữa nhiều ứng dụng với heroku
Heroku Redis: Heroku Redis là kho lưu trữ dữ liệu khóa-giá trị (key-value)
trong bộ nhớ, do Heroku điều hành, được cung cấp và quản lý dưới dạng tiện ích bổsung Heroku Redis có thể truy cập từ bất kỳ ngôn ngữ nào với trình điều khiển
Redis, bao gồm tất cả các ngôn ngữ và khung được hỗ trợ bởi Heroku Khi Heroku
Redis đã được tạo, bản phát hành mới sẽ được tạo và ứng dụng sẽ khởi động lại Mộtvar cấu hình REDIS_URL sẽ được tạo sẵn trong cấu hình ứng dụng và sẽ chứa URLđược sử dụng để truy cập cá thể Heroku Redis mới được cấp phép Điều này có thểđược xác nhận bằng cách sử dụng lệnh heroku config
Trang 5Apache Kafka trên Heroku: là một add-on cung cấp Kafka như một dịch vụ
tích hợp hoàn toàn vào nền tảng Heroku Apache Kafka là một bản ghi cam kết phânphối cho các giao tiếp nhanh, có khả năng chịu lỗi giữa các nhà sản xuất và người tiêudùng bằng cách sử dụng các chủ đề dựa trên thông điệp Kafka cung cấp đường truyềntin nhắn để xây dựng một thế hệ ứng dụng phân tán mới có khả năng xử lý hàng tỷ sựkiện và hàng triệu giao dịch, và được thiết kế để di chuyển khối lượng lớn dữ liệu tạmthời với độ tin cậy cao và khả năng chịu lỗi
c) Add ons
Heroku cung cấp nhiều loại add-on cho nhiều mục đích khác nhau, một số tiệních bổ sung có thể được attached vào một ứng dụng khác Bạn có thể quản lý cáctiện ích của mình thông qua giao diện dòng lệnh hoặc thông qua giao diện web Bảngđiều khiển Heroku
Hình 3 Mô hình triển khai ứng dụng trên Heroku
Trang 61.3 Kiến trúc Heroku
Hình 4 Kiến trúc Heroku
Trang 7Hình 5 Các thành phần trong Kiến trúc Heroku
Heroku cho phép bạn triển khai, chạy và quản lý các ứng dụng được viết trênnhiều nền tảng/ngôn ngữ Ruby, Node.js, Java, Python, Clojure, Scala, Go và PHP
Một ứng dụng là một tập hợp các mã nguồn được viết bằng một trong các ngôn ngữ này, có lẽ là một khung công tác và một số mô tả phụ thuộc chỉ thị một hệ thống xây
dựng để phụ thuộc bổ sung cần thiết để xây dựng và chạy ứng dụng
Các cơ chế phụ thuộc khác nhau giữa các ngôn ngữ: trong Ruby bạn sử dụngmột Gemfile , trong Python một requirements.txt , trong Node.js một package.json ,trong Java một pom.xml
Mã nguồn cho ứng dụng của bạn, cùng với tệp phụ thuộc, nên cung cấp đủ thôngtin cho nền tảng Heroku để xây dựng ứng dụng của bạn, để tạo ra một thứ có thể đượcthực thi
Git là một hệ thống kiểm soát phiên bản phân tán mạnh mẽ mà nhiều nhà phát
triển sử dụng để quản lý và phiên bản mã nguồn Nền tảng Heroku sử dụng Git làmphương tiện chính để triển khai các ứng dụng (có nhiều cách khác để chuyển mãnguồn của bạn tới Heroku, bao gồm thông qua API)
Trang 8Khi bạn tạo một ứng dụng trên Heroku, nó kết hợp với một kho Git mới, thườngđược đặt tên là heroku repository, với kho lưu trữ Git cục bộ cho ứng dụng của bạn.Kết quả là, việc triển khai mã chỉ là git push quen thuộc, nhưng thay vào đó là câulệnh từ xa heroku.
Heroku thực hiện các ứng dụng bằng cách chạy lệnh bạn đã chỉ định trongProcfile, trên dyno đã được cài sẵn với slug chuẩn bị của bạn (trên thực tế, với bảnphát hành của bạn, mở rộng slug của bạn và một vài mục chưa được định nghĩa:config vars và add-ons) Một dyno hoạt động như một container Unix được bảomật, gọn nhẹ, có chứa ứng dụng của bạn trong hệ thống tập tin của nó
Nếu bạn triển khai một ứng dụng lần đầu tiên, Heroku sẽ tự động chạy 1 webdyno Nói cách khác, nó sẽ khởi động một dyno, tải nó với slug của bạn, và thực hiệnlệnh mà bạn đã kết hợp với loại tiến trình web trong Procfile của bạn
Bạn có quyền kiểm soát bao nhiêu dynos đang chạy tại bất kỳ thời điểm nào.Cho ví dụ về Procfile trước đó, bạn có thể bắt đầu 5 dynos, 3 cho web và 2 cho cácloại quy trình xếp hàng, như sau:
heroku ps:scale web=3 queue=2
Khi bạn triển khai một phiên bản mới của một ứng dụng, tất cả các dynos hiệnđang thực hiện đều bị kill và các dynos mới (với bản phát hành mới) được bắt đầuthay thế chúng - bảo toàn sự hình thành dyno hiện có
1.4 So sánh Heroku với Amazon AWS
Amazon Web service và Heroku đều có bản miễn phí cho các dự án sở thíchnhỏ (Startup)
Nếu bạn muốn bắt đầu một ứng dụng ngay lập tức, không cần tùy chỉnh nhiều
kiến trúc, hãy chọn Heroku.
Nếu bạn muốn tập trung vào kiến trúc và để có thể sử dụng các máy chủ web
khác nhau, thì hãy chọn AWS AWS tốn nhiều thời gian hơn dựa trên dịch vụ / sản
phẩm bạn chọn, nhưng có thể đáng giá AWS cũng đi kèm với nhiều dịch vụ và sảnphẩm plugin
Heroku:
Nền tảng dưới dạng Dịch vụ (PAAS)
Tài liệu tốt
Có các công cụ và kiến trúc tích hợp sẵn
Kiểm soát giới hạn kiến trúc trong khi thiết kế ứng dụng
Triển khai được thực hiện (chỉ thông qua lệnh git)
Trang 9 Không tốn thời gian.
Amazon AWS:
Cho phép lựa chọn Cơ sở hạ tầng như một dịch vụ (IAAS)
Đa năng - có nhiều sản phẩm như EC2, LAMBDA, EMR, v.v
Có thể sử dụng một cá thể chuyên dụng để kiểm soát nhiều hơn kiến trúc,
chẳng hạn như chọn hệ điều hành, phiên bản phần mềm, v.v Có nhiều hơn mộtlớp phụ trợ.Elastic Beanstalk là một tính năng tương tự như PAAS của Heroku
Có thể sử dụng triển khai tự động hoặc của riêng bạn
Hình 6 So sánh Amazone AWS và Heroku
II GIỚI THIỆU VỀ MongoDB, mLab và NodeJS
2.1 MongoDB
MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL (*)hàng đầu, được hàng triệu người sử dụng MongoDB được viết bằng C++ Ngoài ra,
Trang 10MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection
và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễdàng
Hình 7 Ánh xạ MongoDB và CSDL quan hệ
Cơ chế hoạt động của MonghoDB
MongoDB hoạt động dưới một tiến trình ngầm service, luôn mở một cổng
(Cổng mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi vào sau đó mới tiến hành xử lý
Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên “_id” thuộc kiểu dữ liệu ObjectId mà nó quy định để xác định được tính duy nhất củabản ghi này so với bản ghi khác, cũng như phục vụ các thao tác tìm kiếm và
truy vấn thông tin về sau Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất
Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ
Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ
Trang 112.2 mLap
Là dịch vụ điện toán đám mây cung cấp Hệ thống Database Service) Chạy trên nhiều nền tảng Platform-as-a-Service và cho phép sử dụng miễnphí
(Database-as-a-Hình 8 Các phương án lưu trữ dữ liệu của mLab
2.3 NodeJS
Là một nền tảng (Platform) phát triển độc lập xây dựng trên Javascript Runtimecủa Chrome.Được xây dựng và phát triển từ năm 2009 bởi Joyent, US.Core được viếthầu hết bằng C++ => tốc độ xử lý và hiệu năng cao.Thích hợp ứng dụng có tốc độ xử
lý nhanh, realtime thời gian thực
Trang 12Hình 9 Các thành phần của NodeJS
III TRIỂN KHAI ỨNG DỤNG LÊN HEROKU
3.1 Các bước triển khai
Triển khai ứng dụng lên Heroku gồm 5 bước như sau
1) Create you app (using build tools)
2) Initialise a git repository for your project
3) Create your heroku app (heroku create)
4) Git Commit your files to the local repository
5) Git Push your app to heroku
Trang 13Hình 10 Quy trinh triển khai ứng dụng lên Heroku
Trang 143.2 Một số câu lệnh thông dụng
3.2.1 Các câu lệnh Khởi tạo ứng dụng
Hình 11 Các câu lệnh khởi tạo ứng dụng trên Heroku
Trang 15Platform-và triển khai ứng dụng lên môi trường cloud heroku.
Hình 14 Ứng dụng baitaplon-dientoandammay trên Cloud herou
Trang 164.1 Mục đích của Ứng dụng baitaplon-dientoandammay
Ứng dụng baitaplon-dientoandammay được xây dựng với những mục tiêu sau:
Tìm hiểu Hệ thống Cloud Platform-as-a-Service heroku
Tìm hiểu Hệ thống Cloud Database-as-a-Service mLab
Tìm hiểu mô hình, cách thức xây dựng, triển khai một ứng dụng trên môi
trường cloud computing
Xây dưng ứng dụng có thể chạy trên môi trường cloud
Thực hành việc cài đặt, chạy trên môi trường Cloud heroku
4.2 Nội dung của Ứng dụng
4.2.1 Đặc điểm
Ứng dụng baitaplon-dientoandammay có các đặc điểm sau:
Được cài đặt, chạy trên môi trường Cloud Heroku
Sử dụng framework NodeJS và AngularJS
Sử dụng dịch vụ Database-as-a-Service mLab và database MongoDB
Sử dụng Git làm repository
Chạy trên Web, cổng 8080
Trang 174.2.2 Các chức năng của ứng dụng
Ứng dụng baitaplon-dientoandammay mô
phỏng Bài toán Quản lý sinh viên với các chức
năng cơ bản sau:
Liệt kê Danh sách sinh viên
Xem thông tin sinh viên
Thêm một sinh viên
Xóa sinh viên
Sửa/Cập nhật thông tin
Tìm kiếm sinh viên
Hình 15 Các chức năng của ứng dụng
baitaplon-dientoandammay
4.2.3 Cấu trúc thư mục ứng dụng
Hình 16 Cấu trúc thư mục ứng dụng baitaplon-dientoandammay trên Local
4.2.4 Cấu trúc Database của ứng dụng
Database của ứng dụng là CSDL MongoDB, được tạo trên Hệ thống cloudDatabase-as-a-Service mLab Có các đặc điểm sau:
Là CSDL hướng đối tượng
Trang 18 Lưu trữ dưới dạng JSON
Truy xuất dưới format URI
Cấu trúc và dữ liệu của Bảng students có kiểu như sau (không bắt buộc):
8 createDate Chuỗi có định dạng Date
Hình 17 Định dạng cấu trúc và dữ liệu của Bảng student
4.3 Các bước xây dựng, triển khai ứng dụng
Khởi tạo ứng dụng Phát triển ứng dụng Triển khai và test
Trang 19Tạo/đk account (free) Tạo Database MongoDB trên mLab Test trên Local Cài đặt Nodejs và npm Kết nối heroku tới mLab Commit changes Cài đặt Git Xây dựng Ứng dụng Quản lý sinh
viên
Đẩy lên heroku và build
Cài đặt heroku CLI Cài đặt các thư viện Open app
Khởi tạo Git repo
Tạo/kết nối đến heroku
4.4 Một số giao diện
4.4.1 Trang chủ/Danh sách sinh viên
Hình 18 Giao diện trang chủ/Danh sách sinh viên
Trang 204.4.2 Tìm kiếm sinh viên
Hình 19 Tìm kiếm sinh viên
4.4.3 Thông tin sinh viên
Hình 20 Thông tin sinh viên
Trang 214.4.4 Form Tạo mới/Sửa thông tin sinh viên
Hình 21 Form Tạo mới/Sửa thông tin sinh viên
Trang 22TÀI LIỆU THAM KHẢO
1 Deploy Sử Dụng Heroku, Đình Anh, 09 October 2018,
https://www.codehub.vn/Express-js-Co-Ban/Deploy-Su-Dung-Heroku
2 Introduction to Mongoose for MongoDB, Nick Karnik, Published Feb 20, 2018
- Last updated Aug 28, 2018,
https://www.codementor.io/theoutlander/introduction-to-mongoose-for-mongodb-gw9xw34el
3 Heroku là gì?, KHANH NGUYEN, 13/12/2017,
https://yeulaptrinh.pw/1522/heroku-la-gi/
4 Sử dụng MongoDB với NodeJs, Han Van Hiep@quanghiepth86, Published
Dec 28th, 2016 6:41 AM,
https://viblo.asia/p/su-dung-mongodb-voi-nodejs-ZDEeLXRoeJb
5 Hướng dẫn Express Phần 3: Sử dụng Database (với Mongoose),
developer.mozilla.org, https://developer.mozilla.org/vi/docs/Learn/Server-side/Express_Nodejs/mongoose
MẬT KHẨU: 15081978