Still Soft
Trang chủ › Phần Mềm Ứng Dụng

Hướng dẫn deploy ứng dụng web lên cloud AWS cho beginner

Ban biên tập Still Soft · · Cập nhật
Hướng dẫn deploy ứng dụng web lên cloud AWS cho beginner

Để deploy ứng dụng web lên AWS khi mới bắt đầu, hãy làm theo thứ tự: bảo vệ tài khoản và đặt cảnh báo chi phí trước tiên, chọn dịch vụ phù hợp với loại ứng dụng (Amplify Hosting hoặc S3 kèm CloudFront cho web tĩnh và frontend; Lightsail hoặc App Runner cho backend đơn giản; EC2 khi cần toàn quyền máy chủ), kết nối database được quản lý như RDS, gắn tên miền và HTTPS, rồi thiết lập giám sát cơ bản. AWS có hàng trăm dịch vụ, nhưng một ứng dụng web đầu tiên chỉ cần vài dịch vụ trong số đó. Bài hướng dẫn này giúp bạn chọn đúng và tránh hóa đơn bất ngờ.

Bước 0: Bảo vệ tài khoản và chi phí

Đây là bước người mới hay bỏ qua và trả giá đắt nhất.

  • Bật MFA cho tài khoản root và không dùng root cho công việc hằng ngày.
  • Tạo người dùng quản trị riêng qua IAM Identity Center hoặc IAM, cũng bật MFA.
  • Đặt AWS Budgets với ngưỡng nhỏ (ví dụ vài đô la) và nhận email cảnh báo khi chi phí vượt.
  • Không bao giờ đưa access key vào mã nguồn hay đẩy lên GitHub; khóa bị lộ thường bị lạm dụng để chạy máy ảo đào tiền ảo trong vài phút.
  • Chọn region gần người dùng: với người dùng Việt Nam, Singapore (ap-southeast-1) là lựa chọn phổ biến về độ trễ.

AWS có chương trình Free Tier cho tài khoản mới với hạn mức miễn phí ở nhiều dịch vụ; điều kiện thay đổi theo thời gian, nên đọc trang chính thức trước khi dựa vào nó.

Bước 1: Chọn dịch vụ theo loại ứng dụng

Loại ứng dụngDịch vụ gợi ýMức độ quản lý
Web tĩnh, SPA React/VueAmplify Hosting hoặc S3 + CloudFrontRất ít
Next.js, Nuxt có render phía máy chủAmplify HostingÍt
Backend nhỏ, blog WordPress, dự án cá nhânLightsail (máy chủ ảo giá cố định)Trung bình
Backend đóng gói containerApp Runner hoặc ECS FargateÍt đến trung bình
API theo sự kiện, lưu lượng thất thườngLambda + API GatewayÍt
Cần toàn quyền hệ điều hànhEC2Nhiều

Người mới nên bắt đầu với dịch vụ được quản lý nhiều nhất phù hợp ứng dụng. Khi phân vân, hãy tự hỏi: ứng dụng có cần chạy liên tục không, có cần cài phần mềm hệ thống đặc biệt không, và bạn có sẵn sàng tự vá lỗi hệ điều hành không. Càng nhiều câu trả lời "không", bạn càng nên chọn dịch vụ được quản lý.

Kiến trúc tham khảo cho ứng dụng đầu tiên

Một kiến trúc gọn cho sản phẩm nhỏ gồm: frontend trên Amplify Hosting; backend container trên App Runner hoặc một instance Lightsail; database PostgreSQL trên RDS hoặc database của Lightsail; file người dùng tải lên lưu trên S3; tên miền và DNS trên Route 53. Mỗi thành phần có thể nâng cấp riêng khi lượng người dùng tăng, mà không phải xây lại từ đầu.

Bước 2: Deploy frontend bằng Amplify Hosting

  1. Đẩy mã nguồn lên GitHub (hoặc GitLab, Bitbucket).
  2. Trong bảng điều khiển Amplify, chọn tạo ứng dụng mới, kết nối kho mã, chọn nhánh.
  3. Amplify tự nhận diện framework và đề xuất lệnh build; kiểm tra lệnh và thư mục đầu ra.
  4. Khai báo biến môi trường (ví dụ địa chỉ API).
  5. Deploy; mỗi lần đẩy code lên nhánh, Amplify tự build và triển khai lại.

Bước 3: Deploy backend

Phương án đơn giản: Lightsail

Tạo instance Lightsail với Ubuntu, gói giá cố định hằng tháng gồm CPU, RAM, ổ đĩa và băng thông. Kết nối SSH, cài Docker hoặc runtime cần thiết, chạy ứng dụng sau reverse proxy như Nginx hoặc Caddy. Mở tường lửa của instance chỉ cho cổng 80, 443 và SSH (nên giới hạn SSH theo IP của bạn). Kiến thức Linux cơ bản trong bài hướng dẫn cài đặt Ubuntu sẽ rất hữu ích ở bước này.

Phương án container: App Runner hoặc ECS Fargate

Đóng gói ứng dụng bằng Dockerfile (xem bài cách sử dụng Docker container), đẩy image lên Amazon ECR, tạo service trỏ tới image. Dịch vụ tự lo cân bằng tải, HTTPS mặc định, mở rộng theo tải. Lưu ý kiểm tra tình trạng dịch vụ và giá trên trang AWS trước khi chọn vì danh mục dịch vụ được điều chỉnh theo thời gian.

Bước 4: Database

  • Dùng Amazon RDS (PostgreSQL, MySQL) hoặc database tích hợp sẵn của Lightsail thay vì tự cài trên máy chủ ứng dụng: có sao lưu tự động, vá lỗi, khôi phục theo thời điểm.
  • Đặt database trong mạng riêng, không bật truy cập công khai; chỉ cho phép kết nối từ máy chủ ứng dụng qua security group.
  • Lưu mật khẩu database trong AWS Secrets Manager hoặc Parameter Store, không viết vào code.
  • Chọn cỡ instance nhỏ khi bắt đầu, theo dõi rồi tăng khi cần.

Bước 5: Tên miền và HTTPS

  1. Mua tên miền ở nhà đăng ký bất kỳ hoặc qua Route 53.
  2. Tạo bản ghi DNS trỏ tới Amplify, CloudFront, load balancer hoặc IP tĩnh của Lightsail.
  3. Cấp chứng chỉ SSL miễn phí bằng AWS Certificate Manager (cho CloudFront, load balancer) hoặc Let's Encrypt (khi tự quản máy chủ).
  4. Chuyển hướng toàn bộ HTTP sang HTTPS.

Bước 6: Giám sát và sao lưu

  • Xem log và chỉ số trong Amazon CloudWatch; đặt cảnh báo khi CPU cao kéo dài, ứng dụng trả lỗi 5xx nhiều.
  • Bật snapshot định kỳ cho Lightsail, EC2; RDS có sao lưu tự động, kiểm tra thời gian lưu giữ.
  • Đặt thời gian lưu log hợp lý để tránh chi phí lưu trữ log tăng dần.

Bước 7: Tự động hóa deploy

Khi đã chạy được thủ công, chuyển sang pipeline: mỗi lần merge vào nhánh chính, hệ thống tự test, build image, deploy. GitHub Actions kết nối với AWS qua OIDC giúp không phải lưu access key dài hạn; xem bài hướng dẫn thiết lập CI/CD pipeline.

Sai lầm tốn tiền thường gặp

  • Quên tắt instance, load balancer, NAT Gateway sau khi thử nghiệm.
  • Để địa chỉ IP tĩnh không gắn với máy nào (vẫn tính phí).
  • Chọn instance quá lớn "cho chắc".
  • Truyền dữ liệu ra internet nhiều mà không dùng CDN.
  • Bật dịch vụ ở nhiều region rồi quên.

Bối cảnh rộng hơn về vai trò của điện toán đám mây trong chuyển đổi số doanh nghiệp có trong bài viết AWS và điện toán đám mây trong chuyển đổi số. Nếu ngân sách hạn chế và ứng dụng đơn giản, cũng nên so sánh với VPS trong nước như phân tích ở bài so sánh dịch vụ cloud hosting VPS.

Câu hỏi thường gặp

Deploy lên AWS có miễn phí không?

Tài khoản mới có hạn mức Free Tier cho một số dịch vụ trong thời gian và mức sử dụng nhất định. Vượt hạn mức hoặc dùng dịch vụ ngoài danh sách sẽ bị tính phí, vì vậy luôn đặt cảnh báo ngân sách ngay từ đầu.

Lightsail và EC2 khác nhau thế nào?

Lightsail là máy chủ ảo đóng gói với giá cố định hằng tháng, giao diện đơn giản, hợp người mới. EC2 linh hoạt hơn nhiều về cấu hình, mạng, mở rộng nhưng phức tạp hơn và tính phí theo nhiều thành phần.

Có thể thanh toán AWS bằng thẻ phát hành tại Việt Nam không?

Thông thường AWS chấp nhận thẻ Visa, Mastercard quốc tế. Một số ngân hàng có thể yêu cầu bật thanh toán trực tuyến quốc tế; nên kiểm tra với ngân hàng phát hành thẻ.

Nếu access key bị lộ thì làm gì?

Vô hiệu hóa và xóa khóa ngay trong IAM, kiểm tra CloudTrail và hóa đơn để tìm tài nguyên lạ, xóa chúng, đổi mật khẩu và liên hệ bộ phận hỗ trợ AWS nếu phát sinh chi phí bất thường.

Bài liên quan