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

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

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 (2.25 MB, 22 trang )

MỤC LỤC
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



Bài tâp lớn Điện toán đám mây

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-asa-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á cao
hay 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
 ...










Heroku hỗ trợ nhiều nền tảng, ngôn ngữ lập trình, bao gồm:
NodeJS

Ruby
Python
PHP
Java
Scala
Clojure
Go
Kotlin

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

2


Bài tâp lớn Điện toán đám mây

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


Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

3


Bài tâp lớn Điện toán đám mây
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ác
phiên giao diện điều khiển. Chúng cũng có thể được sử dụng để chạy công việc
background 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 đời
dyno, 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ột
var 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.
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ân
Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

4


Bài tâp lớn Điện toán đám mây
phố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êu
dù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ền
tin 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ạm
thờ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ác
tiệ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

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

5


Bài tâp lớn Điện toán đám mây

1.3. Kiến trúc Heroku

Hình 4. Kiến trúc Heroku

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

6


Bài tâp lớn Điện toán đám mây

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ên
nhiề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ụng
mộ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ông
tin 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ể được
thự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àm
phươ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).
Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

7


Bài tâp lớn Điện toán đám mây
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âu
lệ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 trong
Procfile, 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ản
phá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ảo
mậ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 web
dyno. 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ện
lệ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ác

loạ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 đầu
thay 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ích
nhỏ (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ản
phẩ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).
 Không tốn thời gian.
Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

8


Bài tâp lớn Điện toán đám mây
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ột
lớ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,
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
Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

9


Bài tâp lớn Điện toán đám mây
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ủa
bả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ừ
ổ cứng.
 Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng mặc
định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây
MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng.

2.2. mLap
Là dịch vụ điện toán đám mây cung cấp Hệ thống Database (Database-as-aService) Chạy trên nhiều nền tảng Platform-as-a-Service và cho phép sử dụng miễn
phí
Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

10


Bài tâp lớn Điện toán đám mây

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 Runtime
của Chrome.Được xây dựng và phát triển từ năm 2009 bởi Joyent, US.Core được viết
hầ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.
Các đặc điểm:






Không đồng bộ
Tốc độ xử lý rất nhanh
Đơn luồng nhưng khả năng mở rộng cao
Không bộ đệm
Các thành phần của NodeJS :

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

11


Bài tâp lớn Điện toán đám mây

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

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

12



Bài tâp lớn Điện toán đám mây

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

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

13


Bài tâp lớn Điện toán đám mây

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

3.2.2 Thiết lập Platform
Heroku cho phép lựa chọn/thay đổi 11 Platform/Ngôn ngữ khác nhau với các câu
lệnh sau:

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

14


Bài tâp lớn Điện toán đám mây

Hình 12. Câu lệnh Khởi tạo/Thay đổi/Xóa và danh sách Platform

3.2.3 Kết nối thư mục ứng dụng


Hình 13. Kết nối thư mục ứng dụng

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

15


Bài tâp lớn Điện toán đám mây

IV. TRIỂN KHAI ỨNG DỤNG BÀI TÂP LỚN TRÊN MÔI
TRƯỜNG CLOUD
Từ những kiến thức thu thập được, sau khi tìm hiểu hệ thống cloud Platformas-Service Heroku, Hệ thống cloud Database-as-a-Service mLab và phân tích yêu cầu
bài toán; Nhóm làm việc đã lựa chọn Xây dựng ứng dụng quản lý sinh viên đơn giản
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

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

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

16


Bài tâp lớn Điện toán đám mây

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 cloud
Database-as-a-Service mLab. Có các đặc điểm sau:
Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

17


Bài tâp lớn Điện toán đám mây
 Là CSDL hướng đối tượng
 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):
STT

Tên trường


Kiểu giá trị

1

id

Object dạng id

2

firstName

Chuỗi

3

lastName

Chuỗi

4

email

Chuỗi

5

phone


Object dạng JSON gồm 2 trường
“mobile” và “work”

6

address

Chuỗi

7

facebook

Chuỗi

8

createDate

Chuỗi có định dạng Date

Ghi chú
Do hệ thống tự sinh

Hình 17. Định dạng cấu trúc và dữ liệu của Bảng student

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

18



Bài tâp lớn Điện toán đám mây

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

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

Thiết lập thư mục trên local

Test

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

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

19


Bài tâp lớn Điện toán đám mây

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

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

20


Bài tâp lớn Điện toán đám mây

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

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

21


Bài tâp lớn Điện toán đám mây

TÀI LIỆU THAM KHẢO
1. Deploy Sử Dụng Heroku, Đình Anh, 09 October 2018,
/>2. Introduction to Mongoose for MongoDB, Nick Karnik, Published Feb 20, 2018
- Last updated Aug 28, 2018,
/>3. Heroku là gì?, KHANH NGUYEN, 13/12/2017,
/>4. Sử dụng MongoDB với NodeJs, Han Van Hiep@quanghiepth86, Published Dec
28th, 2016 6:41 AM, a/p/su-dung-mongodb-voi-nodejsZDEeLXRoeJb
5. Hướng dẫn Express Phần 3: Sử dụng Database (với Mongoose),

developer.mozilla.org, />
MẬT KHẨU: 15081978

Tìm hiểu về Heroku và triển khai ứng dụng trên môi trường Cloud

22



×