“Dịch chuyển đám mây” lên AWS miễn phí

Trong bài viết này, mình sẽ chia sẻ lại quá trình TVQhub.com và các site vệ sinh chuyển sang dùng toàn bộ các dịch vụ điện toán đám máy (Cloud computing – CC) của Amazon Web Services (AWS) với chi phí là 👍

Trước đây mình đã sử dụng qua Google Cloud Platform (GCP) – cũng là một dịch vụ cung cấp CC của Google, mỗi lần kích hoạt thẻ thanh toán bạn sẽ có $300 cho 12 tháng sử dụng tẹt ga. Nhưng gần đây mình đã có cơ hội được tìm hiểu sâu hơn về AWS và DevOps thì AWS có những thứ mình cần học để áp dụng trong công việc nên cũng ấp ủ ý định là chuyển sang dùng AWS, và tới đầu tháng 6 thì khi tài khoản GCP của mình đã gần hết tiền thì hành trình bắt đầu…

Amazon Elastic Compute Cloud (EC2)

Trong chính sách Free Tier của AWS, bạn sẽ được sử dụng 750 giờ miễn phí cho EC2 (tương đương một con EC2 chạy bung nóc trong một tháng)

Và đây là thông số EC2 mình đã setup:

  • Location: Singapore (ap-southeast-1) – mình chọn location này vì đa phần các website của mình traffic đều là từ Việt Nam nên chọn đặt ở Singapore là tối ưu đường truyền nhất
  • AMI: Amazon Linux 2 AMI – đây là image mới nhất của AWS và là Long-term Support (LTS)
  • Instance type: t2.micro – chỉ có loại này mới được free 750h nhé
  • Storage: 30GB – mặc định AWS set 8GB như trong Free Tier bạn được tận 30GB cho phần Amazon Elastic Block Store (EBS), nhớ là type bạn để default là General Purpose (SSD)

Một số thông số khác như VPC, Subnet thì mình để mặc định của AWS đã tạo cho, phần Security Group thì mình thêm các port 80, 443 cho webservice, port 22 cho SSH.

Để SSH vào EC2 thì bạn cần có file .pem, nên khi tạo xong một instance, bạn nhớ lưu lại file .pem thật kĩ, mình cũng chia sẻ một cách để các bạn ssh nhanh chóng bằng lệnh ssh aws là hãy vào folder .ssh -> tìm sửa file config (nếu chưa có hãy tạo mới) và dán đoạn sau đây

Host aws
  HostName <your_instance_ip>
  User ec2-user
  IdentityFile <your_pem_location> (ex: ~/.ssh/tvqhub-aws.pem)

Sau khi instance đã launch ra, bạn nên add cho nó một Elastic IP (EIP), giúp cho instance của bạn không bị thay đổi IP mỗi lần restart. EIP nếu được assign cho một EC2 thì sẽ không bị tính phí nhé.

Vậy là mình đã có một EC2 để cài đặt các app lên trên đó rồi 🎉

Tiếp theo là phần trỏ domain về EC2, mình không sử dụng Amazon Route53 vì sẽ bị charge phí là $0.5 / tháng cho một hosted zone. Nên giải pháp của mình là Cloudflare.

Với Free plan của Cloudflare thì website của mình cũng đã được bảo vệ ở mức độ basic rồi, dù gì với một website không tốn tiền hàng tháng chắc cũng chả ai rảnh đâu mà DDOS cả, nếu có thì mình tắt server đi ngủ cho qua cơn bão thôi ^^.

Amazon Relational Database Service (RDS)

Mình chọn RDS làm dịch vụ lưu trữ database vì mình không cần phải cài mysql lên EC2 nữa, không phải tốn dung lượng ổ đĩa của server và RDS cũng nằm trong chính sách Free Tier của AWS, hơn thế nữa bạn còn được backup database tự động và hoàn toàn miễn phí.

Và đây là thông số RDS mình đã setup:

  • Engine type: MySQL v8.0.19
  • DB instance size: t2.micro
  • Storage: General purpose (SSD) – size 20GB

Ngoài 2 dịch vụ mình nêu trên, mình còn đang tìm hiểu và chắc chắn sẽ apply thêm các tính năng khác (nếu miễn phí) của AWS, cụ thể là S3, SQS, SNS, ElastiCache, API GW, CloudWatch…

Alright và cảm ơn các bạn đã dành thời gian đọc bài viết này và nếu có thắc mắc bất cứ vấn đề gì các bạn comment bên dưới bài viết, mình sẽ trả lời trong tầm hiểu biết của mình 🤗.