Building a highly available, scalable web application | Bài báo cáo học phần Điện đám mây | Trường Đại học Phenikaa
Một trường Đại học đang chuẩn bị cho năm học mới. Bộ phận tuyển sinh đã nhận được khiếu nại rằng ứng dụng web dành cho hồ sơ sinh viên của họ chậm hoặc không có sẵn trong thời gian tuyển sinh cao điểm vì số lượng yêu cầu cao. Bạn là một kỹ sư đám mây và quản lý của bạn muốn bạn thiết kế và triển khai một kiến trúc lưu trữ mới trên AWS Cloud để cải thiện trải nghiệm người dùng của ứng dụng web. Thử thách của chúng tôi là lập kế hoạch, thiết kế, xây dựng và triển khai ứng dụng web lên Đám mây AWS theo cách phù hợp với các biện pháp thực hành tốt nhất của Khung kiến trúc tối ưu AWS. Trong giai đoạn tiếp nhận cao điểm, ứng dụng phải hỗ trợ hàng nghìn người dùng và có tính sẵn sàng cao, có thể mở rộng, cân bằng tải, bảo mật và hiệu suất cao. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.
Preview text:
TRƯỜNG ĐẠI HỌC PHENIKAA
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐIỆN TOÁN ĐÁM MÂY
BUILDING A HIGHLY AVAILABLE, SCALABLE WEB APPLICATION STT Họ và tên Mã SV Email 1
NGUYỄN ĐỨC ANH 21012478 21012478@st.phenikaa-uni.edu.vn 2
PHẠM MẠNH HÙNG 21012874 21012874@st.phenikaa-uni.edu.vn
Giảng viên hướng dẫn: ThS.Nguyễn Thành Trung 2023 LỜI CAM KẾT
Họ và tên sinh viên: Nguyễn Đức Anh
Điện thoại liên lạc: 0981402765
Email: 21012478@st.phenikaa-uni.edu.vn Lớp: CNTT - 4
Họ và tên sinh viên: Phạm Mạnh Hùng
Điện thoại liên lạc: 0869882565
Email: 21012874@st.phenikaa-uni.edu.vn Lớp: CNTT - 4
Chúng tôi cam kết Bài tập lớn (BTL) là công trình nghiên cứu của nhóm tôi.
Các kết quả nêu trong BTL là trung thực, là thành quả của riêng chúng tôi, không
sao chép theo bất kỳ công trình nào khác. Tất cả những tham khảo trong BTL – bao
gồm hình ảnh, bảng biểu, số liệu, và các câu từ trích dẫn – ều ược ghi rõ ràng và ầy
ủ nguồn gốc trong danh mục tài liệu tham khảo. Chúng tôi xin hoàn toàn chịu trách
nhiệm với dù chỉ một sao chép vi phạm quy chế của nhà trường.
Hà Nội, ngày 21 tháng 01 năm 2024 Nhóm tác giả BTL TÓM TẮT STT Họ và tên
Các công việc / óng góp chính trong bài tập lớn 1 Nguyễn Đức Anh
Tổng quan: Nền tảng, Công nghệ sử dụng
Phát triển và triển khai: Thiết kế tổng quan, Triển khai kĩ thuật
Kết luận và hướng phát triển: Kết luận 2 Phạm Mạnh Hùng Mở ầu, Nền tảng
Hướng phát triển, Kết luận DANH MỤC HÌNH VẼ
Hình 3.1.1.1 Cơ sở hạ tầng ........................................................................................ 9
Hình 3.1.2.1 Dự toán chi phí ....................................................................................10
Hình 3.2.2.1 Hiển thị trang danh sách học
sinh .......................................................24 Hình 3.2.2.2 Hiển thị trang thêm sinh
viên vào hồ sơ sinh viên .............................25 Hình 3.2.2.3 Hiển thị trang sửa, xóa
thông tin sinh viên .........................................26 Hình 3.2.4.1 Nội dung file
data.sql ..........................................................................80 lOMoARcPSD|47231818
MỤC LỤC ............................................................................................. 5
1. MỞ ĐẦU ................................................................................................................ 5
1.1 Giới thiệu ........................................................................................................... 5
1.1.1 Đặt vấn ề ..................................................................................................... 5
1.1.2 Giải pháp ..................................................................................................... 5
2. TỔNG QUAN ........................................................................................................ 6
2.1 Nền tảng ............................................................................................................ 6
2.2 Công nghệ sử dụng............................................................................................ 7
3. PHÁT TRIỂN VÀ TRIỂN KHAI KĨ THUẬT ................................................... 9
3.1 Thiết kế tổng quan ............................................................................................. 9
3.1.1 Phương án thiết kế ...................................................................................... 9
3.1.2 Dự toán chi phí .......................................................................................... 10
3.2 Triển khai kĩ thuật ........................................................................................... 10
3.2.1 Phase 1: Planning the design and estimating cost .................................... 10
3.2.2 Phase 2: Creating a basic functional web application .............................. 12
3.2.3 Phase 3: Decoupling the application components .................................... 26
3.2.4 Phase 4: Implementing high availability and scalability .......................... 52
4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ......................................................... 79
4.1 Kết luận ........................................................................................................... 79
4.2 Hướng phát triển ............................................................................................. 80
TÀI LIỆU THAM KHẢO ...................................................................................... 83
LỜI CAM KẾT ......................................................................................................... i
TÓM TẮT ................................................................................................................ ii lOMoARcPSD|47231818
DANH MỤC HÌNH VẼ ......................................................................................... iii
MỤC LỤC ................................................................................................................ iv iv 1. MỞ ĐẦU 1.1 Giới thiệu
1.1.1 Đặt vấn ề
Một trường Đại học ang chuẩn bị cho năm học mới. Bộ phận tuyển sinh ã
nhận ược khiếu nại rằng ứng dụng web dành cho hồ sơ sinh viên của họ chậm hoặc
không có sẵn trong thời gian tuyển sinh cao iểm vì số lượng yêu cầu cao.
Bạn là một kỹ sư ám mây và quản lý của bạn muốn bạn thiết kế và triển khai một
kiến trúc lưu trữ mới trên AWS Cloud ể cải thiện trải nghiệm người dùng của ứng dụng web.
Thử thách của chúng tôi là lập kế hoạch, thiết kế, xây dựng và triển khai ứng dụng
web lên Đám mây AWS theo cách phù hợp với các biện pháp thực hành tốt nhất
của Khung kiến trúc tối ưu AWS. Trong giai oạn tiếp nhận cao iểm, ứng dụng phải
hỗ trợ hàng nghìn người dùng và có tính sẵn sàng cao, có thể mở rộng, cân bằng
tải, bảo mật và hiệu suất cao.
1.1.2 Giải pháp
• Chức năng: Xem chi tiết, thêm, xóa hoặc sửa ổi hồ sơ học sinh mà không
có bất kỳ sự chậm trễ nào.
• Cân bằng tải: Cân bằng lưu lượng người dùng một cách hợp lý ể tránh tài
nguyên bị quá tải hoặc không ược sử dụng úng mức. 5 lOMoARcPSD|47231818
• Khả năng mở rộng: Thiết kế ể mở rộng quy mô nhằm áp ứng các yêu cầu ặt ra cho ứng dụng.
• Tính sẵn sàng cao: Hạn chế thời gian ngừng hoạt ộng khi máy chủ web không hoạt ộng. • Tính bảo mật:
- Cơ sở dữ liệu ược bảo mật và không thể truy cập trực tiếp từ mạng công cộng.
- Các máy chủ web và cơ sở dữ liệu chỉ có thể ược truy cập qua các cổng thích hợp.
- Ứng dụng web có thể truy cập ược qua internet.
- Thông tin xác thực cơ sở dữ liệu không ược mã hóa cứng vào ứng dụng web.
• Tối ưu hóa chi phí: Giải pháp ược thiết kế ể giữ chi phí ở mức thấp.
• Hiệu suất cao: Các hoạt ộng (xem, thêm, sửa, xóa) ược thực hiện bình
thường mà không có ộ trễ. 2. TỔNG QUAN 2.1 Nền tảng
Nền tảng của chúng tôi trên AWS là một hệ sinh thái a dịch vụ, bắt ầu từ việc lưu
trữ dữ liệu ối tượng ến việc quản lý cơ sở dữ liệu và môi trường ứng dụng. Dữ liệu
sinh viên và tài liệu ính kèm ược an toàn lưu trữ trong RDS với tính năng
versioning ể bảo ảm quản lý phiên bản và lifecycle policies ể quản lý hiệu suất chi phí. 6 lOMoARcPSD|47231818
Cơ sở dữ liệu chính của chúng tôi sử dụng Amazon RDS, với sự linh hoạt ể chọn
lựa giữa các loại cơ sở dữ liệu MySQL. Điều này không chỉ ảm bảo tính hiệu suất
mà còn giúp chúng tôi mở rộng cơ sở dữ liệu theo nhu cầu tăng trưởng.
Để tối ưu hóa hiệu suất và giảm áp lực cho cơ sở dữ liệu chính, chúng tôi sử dụng
Amazon ElastiCache ể cache những truy vấn dữ liệu phổ biến, giúp giảm ộ trễ và
tăng cường khả năng áp ứng. Môi trường ứng dụng ược triển khai trên các máy ảo
EC2 với sự tự ộng mở rộng thông qua EC2 Auto Scaling, giúp ảm bảo tính sẵn
sàng và khả năng mở rộng linh hoạt.
Cuối cùng, tất cả các quản lý quyền truy cập ều ược thực hiện thông qua AWS
Identity and Access Management (IAM), giúp ảm bảo tính an toàn và tuân thủ
trong việc quản lý tài nguyên. Điều này tạo ra một nền tảng linh hoạt, áng tin cậy
và có thể mở rộng ể ối mặt với mọi thách thức mà trường Đại học có thể gặp phải
trong quá trình tuyển sinh.
2.2 Công nghệ sử dụng
• Amazon EC2 (Elastic Compute Cloud): Sử dụng máy ảo EC2 ể triển khai
máy chủ web và cơ sở dữ liệu. Có thể sử dụng các instance EC2 có khả năng
mở rộng ể áp ứng nhu cầu tăng cường vào thời iểm cao iểm.
• Amazon RDS (Relational Database Service): Lưu trữ cơ sở dữ liệu quan
hệ của ứng dụng web. RDS giúp quản lý và mở rộng cơ sở dữ liệu một cách
dễ dàng, ồng thời cung cấp các tính năng như sao lưu tự ộng và quản lý hiệu suất. 7 lOMoARcPSD|47231818
• Amazon VPC (Virtual Private Cloud): Tạo một mạng ảo ể cách ly và bảo
mật ứng dụng web khỏi các mạng khác. Cấu hình các subnet, route tables,
và security groups ể kiểm soát truy cập.
• Amazon ELB (Elastic Load Balancer): Sử dụng ể phân phối tải giữa
nhiều máy chủ web EC2, cải thiện khả năng mở rộng và ảm bảo tính sẵn
sàng cao của ứng dụng.
• Auto Scaling: Cấu hình Auto Scaling ể tự ộng mở rộng hoặc thu nhỏ số
lượng máy chủ web EC2 dựa trên tải công việc và yêu cầu của người dùng.
• AWS Identity and Access Management (IAM): Quản lý quyền truy cập
giữa các dịch vụ và người dùng. Đảm bảo an toàn và bảo mật thông tin của sinh viên.
• Cloud9: Giúp chạy các lệnh Giao diện dòng lệnh AWS (AWS CLI) trong
các tác vụ của bài toán ặt ra.
• AWS Secrets Manager: ể tạo bí mật nhằm lưu trữ thông tin xác thực cơ sở
dữ liệu và ặt cấu hình ứng dụng web. 8 lOMoARcPSD|47231818
3. PHÁT TRIỂN VÀ TRIỂN KHAI KĨ THUẬT
3.1 Thiết kế tổng quan
3.1.1 Phương án thiết kế
Hình 3.1.1.1 Cơ sở hạ tầng 9 lOMoARcPSD|47231818
3.1.2 Dự toán chi phí
Hình 3.1.2.1 Dự toán chi phí
3.2 Triển khai kĩ thuật
3.2.1 Phase 1: Planning the design and estimating cost
Task 1: Creating an architectural diagram
Chọn vào AWS Architecture Icons ể vào trang web, trong trang web này sẽ cung
cấp các công cụ ể vẽ sơ ồ kiến trúc AWS.
Hãy cuộn xuống dưới ể chọn công cụ, công cụ mà tôi sử dụng ở ây là Draw.io. 10 lOMoARcPSD|47231818 Chọn Draw.io.
Chúng tôi sẽ vẽ sơ ồ kiến trúc của AWS ở ây.
Task 2: Developing a cost estimate
Chọn AWS Pricing Calculator ể xây dựng ước tính chi phí.
Chọn Create estimate ể xây dựng ước tính chi phí 11 lOMoARcPSD|47231818
3.2.2 Phase 2: Creating a basic functional web application
Task 1: Creating a virtual network
1. Mở trình duyệt AWS:
Trong hộp tìm kiếm ở bên phải Services, tìm kiếm và chọn VPC ể mở bảng iều khiển VPC.
2. Bắt ầu tạo VPC
- Chọn region N.Virgina (us-east-1)
- Chọn liên kết bảng iều khiển VPC cũng nẳm ở phía trên bên trái của bảng iều
khiển - Chọn Create VPC 12 lOMoARcPSD|47231818
3. Cài ặt cấu hình chi tiết cho VPC:
Trong Resources to create chọn VPC and more.
Trong Name tag auto-generation, Giữ Auto-generate ã chọn, tuy nhiên thay ổi
giá trị từ project sang lab.
IPv4 CIDR block: 10.0.0.0/16.
Number of Availability Zones: chọn 1 Number
of public subnets: giữ nguyên là 1.
Number of private subnets: giữ nguyên là 1. 13 lOMoARcPSD|47231818
Mở rộng Customize subnets CIDR blocks:
Thay ổi Public subnet CIDR block in us-east-1a: 10.0.0.0/24.
Thay ổi Private subnet CIDR block in us-east-1a: 10.0.1.0/24. 14 lOMoARcPSD|47231818
Đặt NAT gateways thành In 1 AZ.
Đặt VPC endpoints thành None.
Giữ DNS hostnames và DNS resolution enable.
4.Trong bảng Preview bên phải và xác nhận cài ặt cấu hình. 15 lOMoARcPSD|47231818 o VPC: lab-vpc o Subnets: us-east-1a ▪
Public subnet name: lab-subnet-public1-us-east-1a ▪
Private subnet name: lab-subnet-private1-us-east-1a o Route tables ▪ lab-rtb-public ▪
lab-rtb-private1-us-east-1a o Network connections ▪ lab-igw ▪ lab-nat-public1-us-east-1a
5. Tạo VPC Security Group.
1. Trong ngăn iều hướng bên trái, chọn Security group. 16 lOMoARcPSD|47231818
2. Chọn Create security group và thực hiện cấu hình. •
Security group name: lab-sg Description: SG for web, database • VPC: lab-vpc.
3. Trong ngăn Inbound rules, chọn Add rule.Sau ó thực hiện cấu hình : • Type: HTTP • Source: Anywhere-IPv4
4. Trong ngăn Inbound rules, chọn Add rule.Sau ó thực hiện cấu hình : • Type: SSH • Source: My Ip
5. Trong ngăn Inbound rules, chọn Add rule.Sau ó thực hiện cấu hình : • Type: HTTP • Source: Anywhere-IPv4
6. Chọn Create security group 17 lOMoARcPSD|47231818 18