1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo và Source code: Dien toan dam may, Heroku PaaS, mLab DaaS, NodeJS, MongoDB

22 468 8

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 2,2 MB
File đính kèm baitaplon-dientoandammay.rar (1 MB)

Nội dung

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

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

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

Hì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 4

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

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

1.3 Kiến trúc Heroku

Hình 4 Kiến trúc Heroku

Trang 7

Hì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 8

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

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

2.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 12

Hì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 13

Hình 10 Quy trinh triển khai ứng dụng lên Heroku

Trang 14

3.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 15

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

4.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 17

4.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 19

Tạ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 20

4.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 21

4.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 22

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

Ngày đăng: 28/03/2019, 11:13

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Deploy Sử Dụng Heroku, Đình Anh, 09 October 2018, https://www.codehub.vn/Express-js-Co-Ban/Deploy-Su-Dung-Heroku Link
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 Link
3. Heroku là gì?, KHANH NGUYEN, 13/12/2017, https://yeulaptrinh.pw/1522/heroku-la-gi/ Link
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 Link
5. Hướng dẫn Express Phần 3: Sử dụng Database (với Mongoose) Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w