Tải bản đầy đủ (.pdf) (51 trang)

Xây dựng website bán hàng trên nền tảng đám mây aws

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 (5.43 MB, 51 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC PHENIKAA

ĐỒ ÁN TỐT NGHIỆP

Tên Đề Tài:

Xây dựng website bán hàng trên nền tảng đám mây AWS

Sinh Viên: Ngô Mạnh Quỳnh Khoá: Khoá 12
Mã số sinh viên: 18010146 Hệ: Chính quy
Ngành: Khoa học máy tính
Giảng viên hướng dẫn: PGS.TS. Ngô Hồng Sơn

Hà Nội – Năm 2022
1

BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC PHENIKAA Độc lập – Tự do – Hạnh phúc

NHẬN XÉT ĐỒ ÁN/KHOÁ LUẬN TỐT NGHIỆP

CỦA GIẢNG VIÊN HƯỚNG DẪN

Giảng viên hướng dẫn: Ngô Hồng Sơn, Bộ môn: khoa CNTT

Tên đồ án: Xây dựng website bán hàng trên nền tảng đám mây AWS

Sinh viên thực hiện: Ngô Mạnh Quỳnh, Lớp: KHMT – K12


NỘI DUNG NHẬN XÉT:

I. Nội dung báo cáo:
Nội dung đồ án tốt nghiệp đã bao gồm các phần cơ bản: Giới thiệu tổng quan, Cơ
sở lý thuyết về cloud, xây dựng hệ thống, triển khai hệ thống, kết quả thực hiện.
Kết quả đạt được sinh viên đã triển khai thành công một website bán hàng trên
nền tảng cloud aws. Tuy nhiên phần mơ tả kết quả, sinh viên có thể mô tả kỹ hơn,
đầy đủ hơn để nêu bật kết quả cơng việc của mình

II. Sản phẩm:
Kết quả sinh viên đã xây dựng website bán hàng trên nền tảng đám mây AWS, thể
hiện được khả năng cơ bản của kỹ sư phát triển hệ thống trên nền đám mây, bao
gồm Triển khai website lên Web server trên AWS, Sử dụng thành thạo Docker,
Triển khai các dịch vụ trên AWS. Sản phẩm hoạt động đúng theo yêu cầu đặt ra
ban đầu

III. Ưu nhược điểm:
- Ưu điểm: sử dụng các công cụ hiện đại, tiên tiến trong phát triển sản phẩm và
triển khai hệ thống
- Nhược điểm: Báo cáo cịn mơ tả sơ sài các u cầu của hệ thống và sản phẩm
thu được

IV. Kết luận:
Sản phẩm của sinh viên gồm hệ thống và báo cáo tương ứng đã đạt các yêu cầu cơ
bản của đồ án tốt nghiệp ngành Khoa học mấy tính, GVHD đồng ý để sinh viên
được bảo vệ trước hội đồng.

Hà Nội, ngày tháng năm 2022

GIẢNG VIÊN HƯỚNG DẪN


(Ký và ghi rõ họ tên)

Ngô Hồng Sơn

2

3

LỜI CẢM ƠN

Qua thời gian học tập và rèn luyện tại trường Đại học Phenikaa, đến nay em đã kết
thúc khoá học 4 năm và hồn thành đồ án tốt nghiệp. Để có được kết quả này em xin chân
thành cảm ơn:

 Ban chủ nhiệm trường Đại học Phenikaa cùng các thầy cô giáo trong khoa đã
giảng dạy, quan tâm và tạo điều kiện thuận lợi để chúng em học tập và rèn luyện
trong suốt thời gian theo học tại trường.

 PGS.TS: Ngơ Hồng Sơn đã tận tình hướng dẫn, giúp đỡ em trong quá trình học
tập và đặc biệt là trong suốt thời gian làm đồ án tốt nghiệp. Thầy luôn quan tâm và
rất nhiệt tình hướng dẫn em từ việc tìm tài liệu cho đến việc định hướng lựa chọn
giải pháp để triển khai đồ án. Thầy cũng luôn nhắc nhở, động viên em mỗi khi gặp
khó khăn, nhờ vậy mà em đã hồn thành đồ án tốt nghiệp của mình đúng thời hạn.

 Em cũng xin gửi lời cảm ơn tới các thành viên trong lớp, bạn bè và những người
đã động viên, giúp đỡ em rất nhiều trong thời gian học tập và làm đồ án tốt
nghiệp.

Hà Nội, tháng 7 năm 2022

Sinh viên thực hiện
Ngô Mạnh Quỳnh

4

Nội dung

Chương 1: Giới thiệu về đồ án tốt nghiệp.......................................................1
1.1. Tên đề tài...........................................................................................1
1.2. Mục tiêu nghiên cứu .........................................................................1
1.3. Thành viên tham gia thực hiện đồ án ..............................................1
1.4. Phương thức thực hiện và kết quả...................................................1
1.4.1. Phương thức thực hiện...............................................................1
1.4.2. Kết quả ........................................................................................1

Chương 2: Tổng quan cơ sở lý thuyết và Cloud Computing .........................2
2.1. Ngơn ngữ lập trình JavaScript.........................................................2
2.2. ReactJS..............................................................................................2
2.3. Hệ điều hành Linux ..........................................................................2
2.3.1. Định nghĩa...................................................................................2
2.3.2. Cấu trúc hệ điều hành Linux .....................................................2
2.3.3. Công dụng của hệ điều hành Linux...........................................3
2.3.4. Ưu nhược điểm của hệ điều hành Linux ...................................3
2.4. Cloud Computing .............................................................................3
2.4.1. Cloud Computing là gì? .............................................................3
2.4.2. Lợi ích của Cloud Computing....................................................3
2.5. Tìm hiểu về AWS..............................................................................4
2.5.1. AWS là gì? ..................................................................................4
2.5.2. Một số dịch vụ trên AWS. ..........................................................4
2.6. Tìm hiểu về NGINX..........................................................................5

2.6.1. Nginx là gì? .................................................................................5
2.6.2. Nginx có tính năng gì?................................................................5
2.7. Tìm hiểu về Docker...........................................................................5
2.7.1. Docker là gì? ...............................................................................5
2.7.2. Container trong Docker là gì? ...................................................6
2.7.3. Các khái niện liên quan. .............................................................6

Chương 3: Xây dựng hệ thống trên AWS ......................................................7
3.1. Mơ hình hệ thống..............................................................................7

5

3.2. Tạo VPC trên AWS ..........................................................................8
3.3. Tạo Subnet trên AWS ......................................................................9
3.4. Tạo Route Table trên AWS............................................................10

3.4.1. Tạo Public Route Table trên AWS ..........................................10
3.4.2. Tạo Private Route Table trên AWS ........................................ 13
3.5. Tạo Instance trên AWS .................................................................. 14
Chương 4: Triển khai website lên AWS ....................................................... 18
4.1. Deploy source back-end và front lên server .................................. 18
4.1.1. Deploy source back-end ........................................................... 18
4.1.2. Deploy source front-end ........................................................... 19
4.2. Sử dụng Dockerfile để build image................................................21
4.2.1. Dockerfile cho back-end...........................................................21
4.2.2. ........................................................................................................ 21
4.2.3. Dockerfile cho front-end .......................................................... 22
4.3. Sử dụng dịch vụ ALB trên AWS.................................................... 23
Chương 5: Kết quả......................................................................................... 31
5.1. Kết quả thu được ............................................................................ 31

5.2. Ưu điểm, nhược điểm ..................................................................... 38
5.2.1. Ưu điểm.....................................................................................38
5.2.2. Nhược điểm...............................................................................39
5.3. Hướng phát triển ............................................................................ 39

6

Danh mục các bảng

Bảng 1: Bảng thành viên thực hiện đồ án
Bảng 2: Server List

7

Danh mục các hình

Hình 1: Topology của hệ thống
Hình 2: Tìm Kiếm các Service trên AWS
Hình 3: Tạo VPCs
Hình 4: Các bước tạo VPC
Hình 5: Tạo mới subnet
Hình 6: các bước tạo subnet Hình
Hình 7: Các bước tạo Route table
Hình 8: Tạo mới Internet Gateways
Hình 9: Các bước tạo Internet gateways
Hình 10: Chỉnh sửa Routes in Route table
Hình 11: Thêm internet gateways vào route table
Hình 12: Chỉnh Subnet associations
Hình 13: tạo mới NAT gateway
Hình 14: Các bước tạo NAT Gateway

Hình 15: Tìm dịch vụ EC2 trên AWS
Hình 16: Tạo mới Instance
Hình 17: Các bước tạo Instance (1)
Hình 18: Các bước tạo Instance (2)
Hình 19: Các bước tạo Instance (3)
Hình 20: Danh sách Instance và trạng thái
Hình 21: Zip folder Source code Backend
Hình 22: Truyền file code back-end vào trong server.
Hình 23: giải nén folder với các thư mục trên server
Hình 24: Sửa config folder để tương thích với mơi trường trên AWS
Hình 25: Build Source front-end
Hình 26: Zip folder đã build từ source front-end
Hình 27: Truyền file build front-end vào trong server
Hình 28: Folder front-end sau khi giải nén
Hình 29: dockerfile build image cho back-end

8

Hình 30: dockerfile build image cho front-end
Hình 31: truy cập vào dịch vụ EC2 trên AWS
Hình 32: Tạo mới Load Balancer
Hình 33: Chọn kiểu Load Balancer
Hình 34: Cấu hình cho Application Load Balancer (1)
Hình 35: Cấu hình cho Application Load Balancer (2)
Hình 36: Cấu hình cho Application Load Balancer (2)
Hình 37: Chọn kiểu target cấu hình target group
Hình 38: chọn Instance và chọn port cho instance đó
Hình 39: Config target group trong dịch vụ ALB
Hình 40: Build images front-end
Hình 41: image front end đã được tạo

Hình 42: Sau khi chạy container front-end thành cơng
Hình 43: kiểm tra trạng thái của website vừa được triển khai
Hình 44: Build image back-end
Hình 45: image Back-end đã được tạo
Hình 46: Sau khi container back-end được chạy thành cơng
Hình 47: Kiểm tra log của container back-end
Hình 48: giao diện của website
Hình 49: giao diện admin của trang web
Hình 50: Giao diện khi xem sản phẩm của trang web
Hình 51: Giao diện mơ tả sản phẩm của trang web
Hình 52: Chứng chỉ được AWS cung cấp miễn phí.
Hình 53: cơng cụ monitor(thơng báo qua email hoặc telegram) cho trang web.

9

Danh mục từ viết tắt

STT Cụm Từ Viết Tắt

1 Amazon Web Service AWS
ELB
2 Elastic Load Balacing ALB
EC2
3 Application Load Balacing VPC
ECR
4 Amazone Elastic Computer Cloud WAF

5 Virtual Private Cloud

6 Elastic Container Registry


7 Web Application Firewall

10

Mở đầu

Ngày nay, đối với các công ty, doanh nghiệp, việc quản lý tốt, hiệu quả dữ liệu của
riêng công ty cũng như dữ liệu khách hàng, đối tác là một trong những bài toán được ưu tiên
hàng đầu và đang khơng ngừng gây khó khăn cho họ. Để có thể quản lý dược nguồn dữ liệu
đó, ban đầu các doanh nghiệp phải đầu tư, tính tốn rất nhiều các loại chi phí như chi phí cho
phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa, … Ngồi ra
họ cịn phải tính tốn khả năng mở rộng, nâng cấp thiết bị, phải kiểm soát việc bảo mật dữ
liệu cũng như tính sẵn sàng cao của dữ liệu.

Từ một bài toán điển hình như vậy, chúng ta thấy được rằng nếu có một nơi tin cậy
giúp các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ khơng cịn quan tâm
đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào cơng việc kinh doanh của họ thì có
thể mang lại cho họ hiệu quả và lợi nhuận ngày càng cao hơn.

Thuật ngữ “Cloud Computing” ra đời bắt nguồn từ một trong những hoàn cảnh như
vậy.

Thuật ngữ “Cloud Computing” còn được bắt nguồn từ ý tưởng đưa tất cả mọi thứ như
dữ liệu, phần mềm, tính tốn, … lên trên mạng Internet. Chúng ta sẽ khơng cịn trơng thấy
các máy PC, máy chủ của riêng các doanh nghiệp để lưu trữ dữ liệu, phần mềm nữa mà chỉ
còn một số các “máy chủ ảo” tập trung trên mạng. Các “máy chủ ảo” sẽ cung cấp các dịch vụ
giúp cho doanh nghiệp có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trả phí cho lượng sử
dụng dịch vụ của học, mà không cần phải đầu tư nhiều vào cơ sở hạ tầng cũng như quan tâm
nhiều đến công nghệ. Xu hướng này sẽ giúp nhiều cho các cơng ty, doanh nghiệp vừa và nhỏ

mà khơng có cơ sở hạ tầng mạng, máy chủ để lưu trữ, quản lý dữ liệu tốt.

Vậy “Cloud Computing” là gì ? Nó có thể giải quyết bài toán trên như thế nào và có
những đặc điểm nổi bật gì ? Với vấn đề đã phân tích ở trên nên em sẽ thực hiện “xây dựng
một trang bán hàng trên nền tảng đám mây AWS”.

11

Chương 1: Giới thiệu về đồ án tốt nghiệp

1.1. Tên đề tài
1.2.
1.3. Xây dựng website bán hàng trên nền tảng đám mây AWS

1.4. Mục tiêu nghiên cứu

1.4.1.  Xây dựng một website bán hàng.

1.4.2.  Triển khai website bán hàng lên nền tảng đám mây AWS.

Thành viên tham gia thực hiện đồ án

STT Họ và tên Chức vụ Email SĐT

1 Ngô Hồng Giảng viên son.ngohong@phenikaa-

Sơn hướng dẫn uni.edu.vn

2 Ngô Mạnh Sinh Viên 0902191820


Quỳnh a-uni.edu.vn

Bảng 1: Bảng thành viên thực hiện đồ án

Phương thức thực hiện và kết quả

Phương thức thực hiện

 Nắm được một số kiến thức cơ bản về ngôn ngữ lập trình và framework như là:

ReactJS, JavaScript.

 Thao tác được trên hệ điều hành linux.

 Tìm hiểu về các dịch vụ trên AWS.

 Triển khai các dịch vụ trên AWS.

 Sử dụng thành thạo Docker.

 Triển khai website lên Web server trên AWS.

Kết quả

Xây dựng website bán hàng trên nền tảng đám mây AWS.

1

2.1. Chương 2: Tổng quan cơ sở lý thuyết và Cloud


 Computing

 Ngơn ngữ lập trình JavaScript

 JavaScript là một ngơn ngữ lập trình web rất phổ biến ngày nay. JavaScript được tích
 hợp đồng thời nhúng vào HTML để hỗ trợ cho website trở nên sống động hơn. Chúng
 cũng đóng vai trị tương tự như một phần của website, cho phép Client-side Scrip từ
 người dùng tương tự máy chủ (Nodejs) để tạo ra những website động.
Ngơn ngữ lập trình JavaScript được phát triển bởi Brendan Eich tại Netscape với tiền
2.2. thân là Mocha. Sau đó Mocha đuọc đổi thành LiveScript và cuối cùng mới đổi thành
JavaScript.
 JavaScript là một chương trình dễ học, những lỗi JavaScript rất dễ để phát hiện, từ đó
giúp người dùng sửa lỗi một cách nhanh chóng hơn.
 Những trình duyệt web có thể dịch thơng qua HTML mà không cần sử dụng đến một
compiler.
 JavaScript được các chuyên gia đánh giá là một loại ngơn ngữ lập trình nhẹ và nhanh
hơn nhiều so với các ngơn ngữ lập trình khác.
2.3. Những website có sử dụng JavaScript thì chúng sẽ giúp cho trang web đó có sự tương
tác cũng như tăng thêm nhiều trải nghiệm mới cho người dùng. Giúp thao tác với
2.3.1. người dùng phía Client và tách biệt giữa các Client với nhau.
JavaScript dễ bị các hacker và scammer khai thác hơn, JavaScript cũng khơng có khả
2.3.2. năng đa luồng hoặc đa dạng xử lý.

ReactJS

ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản
thân nó là một thư viện JavaScript được dùng để xây dựng và tương tác với các thành
phần trên website. Một trong những điểm nổi bật nhất của ReactJS đó là việc render
dữ liệu không chỉ thực hiện được trên tầng server mà còn ở dưới Client nữa.


ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây dựng giao diện
người dùng hay UI. Trong lập trình ứng dụng front-end, lập trình viên thường sẽ phải
làm việc chính trên 2 thành phần sau: UI và xử lý tương tác của người dùng. UI là tập
hợp những thành phần mà nhìn thấy được trên bất kỳ một ứng dụng nào, ví dụ có thể
kể đến bao gồm: menu, thanh tìm kiếm, những nút nhấn, card, … Giả sử đang lập
trình một website thương mại điện tử, sau khi người dùng chọn được sản phẩm ưng ý
rồi và nhấn nút “Thêm vào giỏ hàng”, thì việc tiếp theo mà phải làm đó là thêm sản
phẩm được chọn vào giỏ hàng và hiển thị lại sản phẩm đó khi user vào xem => xử lý
tương tác.
Trước khi có ReactJS, lập trình viên thường gặp rất nhiều khó khăn trong việc sử
dụng “vanilla JavaScript”(JavaScript thuần) và Jquery để xây dựng UI. Điều đó đồng
nghĩa với việc quá trình phát triển của ứng dụng sẽ lâu hơn và xuất hiện nhiều bug, rủi
ro hơn. Vì vậy vào năm 2011, Jordan Walke – một nhân viên của Facebook đã khởi
tạo ReactJS với mục đích là cải thiện quá trình phát triển UI.

Hệ điều hành Linux

Định nghĩa
 Linux là một hệ điều hành máy tính được phát triển từ năm 1991 dựa trên hệ điều

hành Unix và viết bằng ngôn ngữ C.

 Do Linux được phát hành miễn phí và có nhiều ưu điểm vượt trội nên Linux vẫn
giữ được một chỗ đứng vững chắc trong lòng người dùng trước các ông lớn như
Windows hay macOS.

Cấu trúc hệ điều hành Linux

2


2.3.3.  Kernel: Hay được gọi là phần “Nhân” vì đây là phần quan trọng nhất trong máy
2.3.4. tính bởi chứa đựng các module hay các thư viện để quản lý, giao tiếp giữa phần
cứng máy tính và các ứng dụng.
2.4.
 Shell: Shell là phần cứng có chức năng thực thi các lệnh (command) từ người
2.4.1. dùng hoặc từ các ứng dụng yêu cầu, chuyển đến cho Kernel xử lý. Shell chính là
2.4.2. cầu nối để kết nối Kernel và Application, phiên dịch các lệnh từ Application gửi
đến kernel để thực thi. Có các loại Shell như sau: sh (the Bourne Shell), bash
(Bourne-again shell), csh (C shell), ash (Almquist shell), tsh (TENEX C shell),
zsh (Z shell).

 Application: Đây là phần quen thuộc với chúng ta nhất, phần để cài đặt ứng dụng,
chạy ứng dụng để người dùng có thể phục vụ cho nhu cầu cảu mình.

Công dụng của hệ điều hành Linux
 Tương tự như các hệ điều hành khác, Linux cung cấp môi trường trung gian để

người dùng có thể giao tiếp với phần cứng máy tính, thực hiện các công việc của
mình.

 Bên cạnhd đó, nhờ ứng dụng mã nguồn mở mà Linux đem lại nhiều sự thoải mái
hơn cho người dùng, đặc biệt các lập trình viên, nhà phát triển.

Ưu nhược điểm của hệ điều hành Linux
 Ưu điểm:

o Tính bảo mật cao
o Tính linh hoạt, người dùng có thể chỉnh sửa hệ điều hành để phù hợp với

nhu cầu sử dụng của mình.

o Không sợ giật, lag, khơng chạy nổi,… trên các máy tính có cấu hình khơng

cao.
 Nhược điểm:

o Các nhà phát triển phần mềm vẫn chưa để tâm đến hệ điều hành tiềm năng
này nên số lượng phần mềm hỗ trợ vẫn còn hạn chế.

o Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux.

Cloud Computing

Cloud Computing là gì?
 Cloud Computing hay cịn gọi là điện tốn đám mây. Hiểu một cách đơn giản thì

Cloud Computing là việc cung cấp các dịch vụ điện tốn hồn tồn qua Internet.
Hay nói đúng hơn là việc cung cấp tài nguyên phù hợp với nhu cầu người dùng
hoàn toàn thơng qua Internet. Các dịch vụ ở đây có thể bao gồm máy chủ, lưu trữ,
phần mềm, …
Lợi ích của Cloud Computing
 Chi phí: Tiết kiệm chi phí chính là lợi ích đầu tiên mà Cloud Computing mang lại
cho người dùng. Thay vì bỏ chi phí đầu tư cả một hệ thống máy chỉ để lưu trữ dữ
liệu, chịu các chi phí vận hành hay bảo dưỡng hàng năm thì chỉ cần phải dành một
khoản tiền nhỏ để duy trì chúng.

 Tính mở rộng: Lợi ích thứ hai của điện tốn đám mây đó là khả năng mở rộng
linh hoạt về quy mơ của nó. Điều này có nghĩa là sẽ được phân phối đúng lượng
tài nguyên cần thiết với nhu cầu sử dụng của mình. Có thể bổ sung tài ngun bất
cứ khi nào phát sinh nhu cầu và tại đúng vị trí địa lý mong muốn.


 Hiệu năng: Lợi ích thứ ba là vấn đề về hiệu năng. Các dịch vụ điện toán đám mây
lớn nhất chạy trên mạng lưới trung tâm dữ liệu an toàn trên thế giới. Và đương
nhiên chúng được nâng cấp thường xuyên để tăng hiệu quả và mức độ bảo mật. So
với mơ hình trung tâm dữ liệu quy mơ nhỏ như một công ty điều này mang lại lợi

3

2.5. ích cực lớn như giảm độ trễ mạng và tăng tính kinh tế khi áp dụng theo quy mô
lớn hơn.
2.5.1.
 Bảo mật: Lợi ích thứ tư là tính bảo mật. Nhiều nhà cung cấp dịch vụ đám mây
2.5.2. cung cấp một loạt các chính sách, cơng nghê và kiểm sốt nhằm củng cố tính bảo
mật. Qua đó nó giúp bảo vệ dữ liệu, ứng dụng và cơ sở hạ tầng khỏi các mối đe
doạ tiềm ẩn hay các cuộc tấn công mạng vẫn thường xuyên xảy ra.

 Tốc độ: Lợi ích thứ năm là tốc độ. Hầu hết các dịch vụ Cloud Computing hiện
nay đều được cung cấp dịch vụ theo yêu cầu. Nghĩa là cần bao nhiêu có bấy nhiêu.
Thậm chí ngay một lượng lớn tài nguyên máy tính cũng có thể được cung cấp chỉ
trong vài phút. Như vậy sẽ không cần áp lực trong việc lên kế hoạch tính tốn
công suất cho phù hợp nữa. Thay vào đó có thể sử dụng bình thường, khi cần có
thể bổ sung ngay lập tức.

 Độ tin cậy: Lợi ích cuối cùng là tính tin cậy của hệ thống. Các đơn vị trung gian
chuyên cung cấp các dịch vụ về Cloud, máy chủ, … như AWS ln có các biện
pháp giúp người dùng sao lưu và bảo vệ dữ liệu. Thậm chí họ cịn có các trung
tâm DC / DR giúp khôi phục dữ liệu khi bị tấn công vào mạng và duy trì hoạt
động liên tục của hệ thống. Đây là những thứ mà phạm vi nhỏ như một công ty
đơn lẻ sẽ khó có thể đáp ứng được.

Tìm hiểu về AWS


AWS là gì?
 AWS (Amazon Web Service ) là nền tảng dịch vụ đám mây an toàn, mang đến

khả năng tính tốn, lưu trữ cơ sở dữ liệu, phân phối nội dung và các chức năng
khác nhằm giúp các doanh nghiệp mở rộng và phát triển.
Một số dịch vụ trên AWS.

 Compute
o Amazone Elastic Computer Cloud (EC2): dịch vụ máy chủ ảo.
o Elastic Load Balacing (ELB): dịch vụ cân bằng tải.
o AWS Lambda: dịch vụ triển khai code không server (serverless).
o AWS Elastic Beantalk : triển khai các ứng dụng web.
o VM Import/Export: import/export ảnh các máy ảo.

 Storage and Content Delivery
o Amazon S3: dịch vụ lưu trữ đối tượng.
o Amazon Glacier: dịch vụ lưu trữ dữ liệu ít truy cập.
o Amazon Elastic Block Store (EBS): dịch vụ lưu trữ dạng khối, phục vụ
EC2 nhưng độc lập EC2.
o Amazon Elastic File System (EFS): dịch vụ lưu trữ và chia sẻ file.
o Amazon CloudFront: dịch vụ phân phối nội dung (content delivery)
o Amazon Storage Gateway: dịch vụ cổng lưu trữ dữ liệu
o Amazon AWS Import/Export Snowball: dịch vụ di chuyển dữ liệu trực
tiếp lên đám mây của AWS.

 Database
o Amazon RDS: dịch vụ cơ sở dữ liệu mơ hình quan hệ Amazon Aurora,
Oracle, Microsoft SQL Server, PostgreSQL, MySQL & MariaDB.
o Amazon DynamoDB: dịch vụ cơ sở dữ liệu NoSQL của Amazon

o Amazon Redshift: dịch vụ kho dữ liệu của Amazon
o Amazon ElastiCache: dịch vụ cache dữ liệu của Amazon

 Networking
o Amazon VPC: dịch vụ mạng riêng ảo

4

2.6. o Amazon Direct Connect: dịch vụ thiết lập kết nối dành riêng từ AWS đến
DataCenter.
2.6.1.
2.6.2. o Amazon Route53: dịch vụ quản lý tên miền DNS và định tuyến đến các
dịch vụ của AWS.
2.7.
 Developer tools
2.7.1. o Amazon CodeCommit: dịch vụ quản lý code, có thể giao tiếp với git.
o Amazon CodeDeploy: dịch vụ triển khai code tự động lên các máy chủ ảo
EC2, Lambda.
o Amazon CodePipeline: dịch vụ liên quan đến code như cập nhật, biên
dịch, test, …

 Management tools
o Amazon CloudWatch: giám sát các nguồn tài nguyên.
o AWS CloudFormation: quản lý các nguồn tài nguyên.
o AWS CloudTrail: dịch vụ lưu lại lịch sử hoạt động các dịch vụ.
o AWS Config: dịch vụ quản lý cấu hình AWS.
o AWS OpsWorks: dịch vụ định nghĩa cấu trúc ứng dụng.
o AWS Service Catalog: dịch vụ quản lý danh mục dịch vụ IT trên AWS.
o AWS Trusted Advisor: công cụ trực tuyến giám sát giới hạn dịch vụ.


 Security and Identity
o AWS Identity and Access Management: quản lý người dùng và quyền truy
cập dịch vụ AWS.
o AWS Key Management Service (KMS): quản lý khoá mã hoá các dịch vụ.
o AWS Directory Service: quản lý và truy cập các tài nguyên dễ dàng.
o AWS WAF: Dịch vụ tường lửa cho các ứng dụng web.
o AWS CloudHSM: dịch vụ bảo mật các mô đun phần cứng. Sinh và quản lý
khoá mã hoá.

Tìm hiểu về NGINX

Nginx là gì?
 Nginx là một web server mạnh mẽ mã nguồn mở. Nginx sử dụng kiến trúc đơn

luồng, hướng sự kiện vì thế nó hiệu quả hơn Apache server. Nó cũng có thể làm
những thứ quan trọng khác, chẳng hạn như load balancing, HTTP caching, hay sử
dụng như một reverse proxy. Nginx là kiến thức không thể thiếu đối với một web
developer, system administrator hay devops.
Nginx có tính năng gì?
 Có khả năng xử lý hơn 10000 kết nối cùng lúc với bộ nhớ thấp.
 Phục vụ tập tin tĩnh (static files) và lập chỉ mục tập tin.
 Tăng tốc reverse proxy bằng bộ nhớ đệm (cache), cân bằng tải đơn giản và khả
năng chịu lỗi.
 Hỗ trợ mã hoá SSL và TLS.
 Cấu hình linh hoạt, lưu lại nhật ký truy vấn.
 Chuyển hướng lỗi 3xx-5xx.
 Hỗ trợ và tương thích với IPv6.
 Hỗ trợ truyền tải file FLV và MP4.
 Hạn chế tỉ lệ đáp ứng truy vấn.
 Rewrite URL (URL rewriting) dùng regular exporssions.

 Hỗ trợ tăng tốc với bộ nhớ đệm của FastCGI, uwsgi, SCGI, và các máy chủ
memcached.

Tìm hiểu về Docker

Docker là gì?

5

2.7.2. Docker là một nền tảng để cung cấp cách để building, deploying và running ứng dụng
2.7.3. dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hoá). Ban đầu viết
bằng python, hiện tại đã chuyển sang Golang.
Container trong Docker là gì?
 Các containers cho phép lập trình viên đóng gói một ứng dụng với tắt cả các phần

cần thiết, chẳng hạn như thư viện và các phụ thuốc khác, và gói tất cả ra dưới
dạng một package.
 Bằng cách đó, nhờ vào container, ứng dụng sẽ chạy trên mọi máy Linux khác bất
kể mọi cài đặt tuỳ chỉnh mà máy có thể có khách với máy được sử dụng để viết
code.
 Theo một cách nào đó, Docker khá giống Virtual machine. Nhưng tại sao Docker
lại phát triển, phổ biến nhanh chóng? Đây là những nguyên nhân:

o Tính dễ ứng dụng: Docker rất dễ cho mọi người sử dụng từ lập trình viên,
sys admin … nó tận dụng lợi thế của Container để build, test nhanh chóng.
Có thể đóng gói ứng dụng trên laptop của họ và chạy trên public cloud,
private cloud … Câu thần chú là “Build once, run anywhere”.

o Tốc độ: Docker container rất nhẹ và nhanh, có thể tạo và chạy docker
container trong vài giây.


o Môi trường chạy và khả năng mở rộng: Có thể chia nhỏ những chức
năng của ứng dụng thành các container riêng lẻ. Ví dụ Redis Cache có thể
chạy trên một container khác trong khi ứng dụng Nodejs lại chạy trên một
cái khác nữa. Với Docker, rất dễ để liên kết các Container với nhau để tạo
thành một ứng dụng, làm cho nó dễ dàng scale, update các thành phần độc
lập với nhau.

 Với su hướng dịch chuyển sang microservices của các hệ thống lớn, Docker đang
làm một thành phần cực kỳ quan trọng, làm cho nó trở thành một phần của nhiều
công cụ DevOps. Hiện tại thế giới đang sử dụng một công cụ quản lý container
tiên tiến khác là Kubernetes.

Các khái niện liên quan.
 Docker Engine: là thành phần chính của Docker, như một cơng cụ để đóng gói

ứng dụng.
 Docker Hub: là một “github for docker images”. Trên Docker Hub có hàng ngàn

public images được tạo bởi động đồng cho phép dễ dàng tìm thấy image cần tìm.
Và chỉ cần pull về và sử dụng với một số config mong muốn.
 Images: là một khn mẫu để tạo một container. Thường thì image sẽ dựa trên 1
image có sẵn với những tuỳ chỉnh thêm. Ví dụ build 1 image dựa trên image
Centos mẫu có sẵn để chạy Nginx và những tuỳ chỉnh, cấu hình để ứng dụng web
có thể chạy được.

 Container: là một instance của một image. Có thể create, start, stop, move hoặc
delete container dựa trên Docker API hoặc Docker CLI.

 Docker Client: là một công cụ giúp người dùng giao tiếp với Docker host.

 Docker Daemon: lắng nghe các yêu cầu từ Docker Client để quản lý đối tượng

như Container, Image, Network và Volumes thông qua REST API. Các Docker
Daemon cũng giao tiếp với nhau để quản lý Docker Service.

 Dockerfile: là một tập tin bao gồm các chỉ dẫn để build một images.
 Docker volumes: là phần dữ liệu được tạo ra khi container được khởi tạo.

6

Chương 3: Xây dựng hệ thống trên AWS

3.1. Mô hình hệ thống

3.1.1. Topology của hệ thống

Hình 1: Topology của hệ thống.

3.1.2. Server list

No AWS Instance Name Private IP Public IP Operation System Instance Cost per
Type Month
Service
c3.xlarge $146.68
Name
t2.micro free
1 EC2 NMQShop 11.11.111.68 54.169.24.219 Amazon Linux 2 t2.micro free
$50.00
Monitor 11.11.111.169 Amazon Linux 2 $50.00
11.11.111.45 Amazon Linux 2 $20.00

2 EC2 NMQShop web

3 EC2 NMQShop DB

4 VPC NAT Gateway

5 ELB ALB

6 WAF Firewall

Bảng 2: Server List

7

3.2. Tạo VPC trên AWS

 Đầu tiên truy cập vào AWS và chọn vào ơ tìm kiếm và tìm VPC Service.

Hình 2: Tìm Kiếm các Service trên AWS
 Sau khi hiển thị ra trang “VPC dashboard” > “Your VPCs” > “Create VPC”.

Hình 3: Tạo VPCs
 Tiếp đó tại phần “Create VPC” lần lượt đặt tên cho VPC tại mục “Name tag”,

đặt dải ip cho VPC tại mục “IPv4 CIDR”. Sau đó nhấn nút “Create VPC”

8

Hình 4: Các bước tạo VPC
 Sau khi tạo xong VPC chúng ta sẽ đến bước tiếp theo để tạo Subnet.


3.3. Tạo Subnet trên AWS

 Phần Subnet vẫn thuộc trong dịch vụ VPC, nên tại trang VPC đã mở ở phần trước
chúng ta sẽ chọn luôn vào phần “Subnet” ngay dưới phần “Your VPCs” ở bước
trên.

Hình 5: Tạo mới subnet
 Sau khi vào giao diện tạo subnet thì ở đây lần lượt chúng ta sẽ làm các bước như

sau:
o Tại phần “VPC ID” này dùng để chọn VPC mà đã tạo từ phần trước.
o Tại phần “Subnet name” Chọn tên cho subnet.
o Tại phần “Availability Zone” này để chọn vùng sẽ chứa cái subnet đó.
o Tại phần “IPv4 CIDR block” này sẽ gắn subnet nằm trong dải ip đã đặt từ
lúc tạo VPC.
o Hoặc nếu muốn tạo thêm subnet thì chọn vào “Add new subnet” còn
khơng thì click “Create subnet” để hoàn thành việc tạo subnet.

9


×