AWS Overview

Bài viết mang tính chất overview về các service của AWS, dành cho các bạn mới bắt đầu với câu hỏi "AWS là gì?" Refer Document:

1. Advantages of Cloud Computing

Thay vì hiểu Cloud là gì, chúng ta có thể tìm hiểu như thế nào gọi là Cloud, nói theo cách của AWS, Cloud có những ưu điểm sau:

  • Cost (đầu tiên luôn luôn là cost): AWS nói “bạn chỉ trả những gì mà bạn sử dụng”.
  • Khả năng Scale: Scale là yêu cầu tối thiểu của 1 hệ thống Cloud, đáp ứng nhu cầu mở rộng liên tục và dễ dàng
  • Không còn lo lắng về Capacity: Không cần phải dự đoán trước capacity của hệ thống, bạn có thể dễ dàng stop các service idle, hoặc start các service nhanh chóng nếu có sự gia tăng đột biến.
  • Nhanh chóng và tốc độ: Trong môi trường cloud, IT member chỉ cần click trong vài phút để đáp ứng nhu cầu của công ty thay vì mất vài tuần để chuẩn bị hạ tầng.
  • Giảm thiểu chi phí running & maintaining data center: Cloud giúp cho bạn tập trung đáp ứng vào yêu cầu của khách hàng (end-user) thay vì tập trung vào các vấn đề của Server.
  • Go Global trong vài phút: Chỉ bằng vài click, bạn có thể release 1 service ra internet với độ trể thấp, hạ tầng ổn định & tối ưu cost.

AWS Shared Responsibility Model

Amazon Web Services Cloud Platform

Bạn có thể access AWS service thông qua AWS Management Console hoặc Command Line Interface:

  • AWS Management Console: Thông qua Web Browser AWS Management Console bằng các thao tác click. Ngoài ra, bạn cũng có thể sử dụng AWS console mobile app để nhanh chóng view resource.
  • AWS Command Line Interface (CLI): AWS cho phép control qua giao diện dòng lệnh, hổ trợ viết Script gọi các API của AWS theo nhu cầu.

2. Compute

2.1 Amazon EC2

Amazon Elastic Computer Cloud (Amazon EC2) hay còn gọi là Instance (Virtual Server), là web service cung cấp capacity computer linh hoạt. Amazon EC2 cam kết SLA đạt 99.95% availability. Làm quen với khái niệm Scaling:

  • Scaling Up/Down: Tăng/Giảm capacity (RAM, CPU, ….) của Instance.
  • Scaling In/Out: Tăng/Giảm số lượng Instance.

Về Security:

  • Có thể thiết lập rank IP Private dành riêng cho EC2
  • Sử dụng Security Group và Network ACLs để control inbound/outbound
  • Có thể thiết lập IPsec VPN giữa Data Center và AWS Cloud.
  • Dedicated Instance → Tạo EC2 trên 1 hardware physical dành riêng cho 1 KH duy nhất.

Về Cost:

  • On-Demand Instance: Tính theo giờ, đáp ứng nhu cầu dùng trong thờ gian ngắn. Dùng bao nhiêu, trả bấy nhiêu.
  • Reserved Instance: Cho phép trả trước 1 lượng Server cho 1 hoặc 3 năm. Chi phí chỉ bằng 75% so với On-Demand. Nếu không có nhu cầu sử dụng trong thời gian dài, bạn có thể sale tại Reserved Instance Marketplace.
  • Spot Instance: AWS cho phép đấu thầu các EC2 chưa được sử dụng, phù hợp nhu cầu sử dụng trong thời gian ngắn & AWS có thể thu hồi mà không báo trước.

2.2 Elastic Load Balacing

Elastic Load Balacing (ELB) tự động phân phối traffic incoming đến các EC2 Instance. Cho phép tạo Application với khả năng chịu lỗi (fault tolerance)

2.3 AWS Lambda

Cho phép deploy code mà không cần server. Chỉ tính phí running code - Không tính phí khi code không running. Với Lambda, bạn có thể running code mà không quan tâm quản lý & vận hành. Chỉ cần Upload code & Lambda sẽ control các vấn đề run & scale với high availability. Ngoài ra, bạn có thể dùng các AWS Service khác để trigger Lambda hoặc gọi trực tiếp từ web or mobile app.

2.4 AWS Elastic Beanstalk

Beanstalk cho phép dễ dàng deploy và scaling web application và các services được deploy với Java, .Net, PHP, Node.js, Python, Ruby, Go and Docker trên các dòng server như Apache, Nginx, Passenge and IIS. Bạn chỉ cần đơn giản là upload code và sau đó AWS Beantalk sẽ tự động xử lý môi trường như capacity, ELB, AutoScaling với health monitoring. Có thể full control cũng như cho phép access đến các AWS resource trong Beanstalk.

2.5 VM Import/Export

Cho phép bạn dễ dàng import các Virtual Machine Images từ datacenter đến môi trường Cloud (EC2 instance) và đồng hợp có thể export trở lại on-premises environment (datacenter).

3. Storage and Content Delivery

3.1 Amazon S3

S3 cung cấp service storage với các đặc tính safe, secure & highly-scalable. AWS S3 rất đơn giản để sử dụng thông qua giao diện web service - cho phép storage & retrieval data. AWS S3 không có khái niệm folder, với đối tượng lưu trữ cấp thấp nhất là Object. AWS S3 cung cấp nhiều loại gồm:

  • Amazon S3 Standard cho mục đích storage data, mà được access thường xuyên.
  • Amazon S3 Standard - Infrequent Access (Standard - IA) cho phép store data thời gian dài nhưng không thường xuyên sử dụng.
  • Amazon Glacier dành cho store data = archive long-term.

3.2 Amazon Glacier

AWS Glacier là service secure, durable và chi phí rất rẽ cho data archiving và backup long-term (chi phí tầm 0,007$ mỗi Gb mỗi tháng). AWS Glacier được tối ưu cho "data không thường xuyên access" với thời gian retrieval trong vài nhiều (3 - 5h).

3.3 Amazon Elastic Block Store

AWS EBS cung cấp persistent block-level storage volume (Lưu trữ dữ liệu bền vững, không phụ thuộc vào EC2) được sử dụng cho AWS EC2 instances. Mỗi AWS EBS volume tự động replicated trong AZ để bảo vệ data, chống failure, high availability & durability.

EBS khác hoàn toàn với Instance Store, có thể mình sẽ đề cập trong một bài viết khác.

3.4 Amazon Elastic File System

AWS EFS là service cho phép shared file storage, được sử dụng cho AWS EC2 instances. AWS EFS dễ dàng sử dụng và cung cấp một simple interface mà cho phép bạn tạo & cấu hình File System nhanh chóng và dễ dàng.

3.5 Amazon CloudFront

AWS CloudFront là web service phân phối nội dung (content delivery). Nó tích hợp với các service khác của AWS để dễ dàng phân phối contect đến end user với low_latency, high data transfer. CloudFront dùng để phân phối nội dung dynamic, static, streaming sử dụng global network tại các edge locations. Các request đến content sẽ tự động được routing đến edge location gần nhất, vì vậy mà nội dung sẽ được delivered với performance tốt nhất có thể. AWS CloudFront kết hợp với các service khác như S3, EC2, ELB và Route53 - ngoài ra, AWS CloudFront cũng có thể làm việc với các service NOT_AWS như 1 origin để store data.

Edge locations: AWS có rất nhiều Edge trên thế giới, mình hay dịch là "phần biên", AWS sẽ tự động chỉ định Edge gần người dùng nhất cho mục đích tối ưu độ trễ (latency) Edge khác với các khái niệm Available Zone, Region.

3.6 Amazon Storage Gateway

AWS Storage Gateway là một service connecting từ on-premises đến cloud-based storage, cung cấp giải pháp tích hợp storage data 1 cách bảo mật. Service này cho phép bạn storage data trong Cloud với scalable và cost-effective storage, cung cấp performance low-latency đối với các data thường xuyên access trên on-premises trong khi vẫn được encrypted backup trên S3 hoặc Glacier.

On-premises: Có thể hiểu là DataCenter/Local

3.7 Amazon AWS Import/Export Snowball

Giải pháp migrate một lượng data lớn đến AWS không thông qua internet mà bằng shipping. Transferring data với Snowball là giải pháp đơn giản, nhanh và an toàn với chi phí cost thấp hơn nhiều so với transfer tốc độ cao qua Internet.

Shipping: AWS sẽ gởi "thiết bị lưu trữ vật lý" đến cho bạn, bạn copy data vào đấy và AWS sẽ vận chuyển về Region mà bạn muốn (tất nhiên dữ liệu được encryption)

4. Database

4.1 Amazon RDS

AWS RDS - chuyên dùng cho relational database, dễ dàng cho setup, operate và khả năng scaling trên Cloud. AWS RDS giúp bạn tối ưu thời gian cho các công việc vận hành như backup, software patching, monitoring, scaling và replication. AWS RDS tối ưu cho High Availability, Fault Tolerant (Multi-AZ) & hổ trợ Read Replicate (tối ưu cho heavy read). RDS hiện tại support cho Amazon Aurora, Oracle, Microsoft SQL Server, PostgreSQL, MySQL & MariaDB.

RDS không có OS, tức là bạn không thể can thiệp ở mặt OS; Khác với khái niệm Database on EC2.

4.2 Amazon DynamoDB

AWS DynamoDB là service database NoSQL (do chính AWS phát triển) với đặc tính fast và flexible, dành cho tất cả các application đòi hỏi tính consistent & latency thấp với khả năng scaling tốt. DynamoDB chuyện dụng cho mobile, web, gaming, ad-tech, Internet of Things, ...

Một vài Service của AWS như DynamoDB, Lambda, S3 .... là dạng Serverless.

4.3 Amazon Redshift

AWS Redshift chuyên cho data warehouse với các đặc tính fast, fully managed, petabyte-scale. Giúp cho việc phân tích data trở nên simple & cost-effective. Redshift phân phối query một cách tối ưu với kỹ thuật storage data theo column để nâng cao I/O và xử lý các query song song qua nhiều node. Redshift support driver JDBC & ODBC mà có thể download từ AWS Management Console. AWS Redshift thường được tích hợp với với S3, DynamoDB, Elastic MapReduce, AWS Kinesis.

4.4 Amazon ElastiCache

AWS ElastiCache là service chuyên dụng cho in-memory cache trong cloud, giúp cải thiện performance của hệ thống. AWS ElastiCache support 2 loại sau:

  • Memcache: Chuyên dùng cho hệ thống memory cache object, được sử dụng khá phổ biến. Đa số các tool nổi tiếng hiện nay đều sử dụng Memcached
  • Redis: Store in-memory open-source dự trên key-value, support store data cấu trúc như set & lists. ElastiCache support master/slave replication & Multi-AZ.

5. Networking

5.1 Amazon VPC

AWS Virtual Private Cloud cho phép xây dựng Network độc lập mà bạn có thể khởi tạo các AWS resource khác trong VPC và kết nối chung với nhau. VPC cho phép control hoàn toàn phần Network, bao gồm range IP, Subnet, routing table & gateways. Dễ dàng customize cấu hình network theo yêu cầu với public subnet cho web server mà có thể access Internet, và phần private subnet như database, application server. Bạn có thể control nhiều layer security như ACLs & Security Group để giúp control access cho mỗi Instance trong mỗi Subnet. Thêm vào đó, bạn có thể tạo VPN connect giữa Datacenter và Amazon VPC

5.2 Amazon Direct Connect

Dễ dàng để thiết lập một kết nối dành riêng (dedicated) từ on-premises (datacenter) đến AWS. Sử dụng AWS Direct Connect, trong một số trường hợp có thể giúp giảm cost, tăng bandwidth throughput. Dựa trên chuẩn 802.1Q VLAN, cho phép bạn sử dụng cùng một connection để access đến public resource như các Object được store trong S3, và các private resource như EC2, RDS, ...

5.3 Amazon Route53

Dịch vụ quản lý DNS trên AWS (Port Protocol của DNS là 53). Được sử dụng để route traffic của End User đến các AWS service như EC2 Instance, ELB hoặc AWS S3 bucket - hoặc có thể sử dụng để route traffic đến on-premises. Bạn có thể sử dụng Route53 để cấu hình DNS_healthy_check để route traffic đến endpoints_healthy. Bạn cũng có thể quản lý traffic_globally thông qua các loại routing khác nhau như Latency Based Routing, Geo DNS và Weighted Round Robin - Tất cả có thể kết hợp với DNS Failover để đảm bảo low-latency và fault-tolerant.

  • AWS Route53 cũng cho phép bạn đăng ký mua domain - Bạn có thể purchase và quản lý domain (example.com) - AWS Route53 sẽ tự động cấu hình DNS cho domain của bạn.

DNS_healthy_check: Thường dùng cho mục đích HA, nếu Region Singapore lỗi thì traffic sẽ được chuyển hưởng đến Region Europe. Latency Based Routing, Geo DNS và Weighted Round Robin: Sẽ được đề cập trong một phần khác.

6. Developer Tools

  • Amazon CodeCommit Service cho phép full manager source control, với tính bảo mật & highly scalable như Git private. AWS giúp giảm thiểu phí vận hành liên quan đến control source & infrastructure tương ứng. Có thể sử dụng AWS CodeCommit để store mọi thứ một cách security từ source-code đến binaries, và nó có thể làm việc rất tốt với các tool Git hiện tại.

  • Amazon CodeDeploy Service chuyên cho automates code deployment đến mọi instance, bao gồm EC2 & các VM trên on-premises. AWS CodeDeploy cho phép deploy nhanh chóng và tự động, tránh downtime trong suốt quá trình deploy.

  • Amazon CodePipeline AWS CodePipeline là service continuous delivery nhanh và hiệu quả. Bao gồm việc build, test & deploy code của ban mỗi khi code thay đổi, dựa vào quy trình xử lý release do bạn định nghĩa. Có thể sử dụng thay thế cho các 3nd Party CI như Jenkin, Bamboo, Travis, ..

7. Management Tools

7.1 Amazon CloudWatch

AWS CloudWatch cho phép monitoring các resouce AWS hoặc các application chạy trên AWS. Bạn có thể sử dụng CloudWatch để collect và track các metric, log files và set Alarm. CloudWatch có thể monitor các Resouces như AWS EC2, DynamoDB, RDS cũng như custom metric được tạo ra do application & service, và mọi log files của application.

7.2 AWS CloudFormation

Dành cho developers & system admin dễ dàng để tạo và quản lý một tập hợp các resource AWS liên quan với nhau. Bạn có thể sử dụng AWS CloudFormation như một template để mô tả, liên kết các thành phần trong AWS, và các parameter để build một môi trường AWS hoàn chỉnh. Ngoài ra, AWS CloudFormation hổ trợ quản lý version của các template, giúp việc rollback AWS Infra 1 cách dễ dàng. Với AWS CloudFormation, bạn có thể tạo template dưới dạng diagrams, cho phép edit bằng drap-and-drop các interface 1 cách đơn giản.

7.3 AWS CloudTrail

Service để store các "record AWS API" được call từ AWS account và deliver_log_file. Các thông tin được record bao gồm identity của account ID (API caller), thời điểm API call, source IP address của API caller, các parameter của request và response từ AWS service. Bạn có thể enable CloudTrail và store API log vào S3 để tracking history. Bao gồm thông tin API call qua AWS Managerment Console, AWS SDKs, command line tools và higher-level AWS services.

CloudTrail thì free, tuy nhiên sẽ phát sinh chi phí transfer và store logs tại S3 !

7.4 AWS Config

AWS config là full managed service, cung cấp thông tin history cấu hình, báo notify thì có thay đổi về configuration để đảm bảo security và governance. Với AWS Config, bạn có thể discover các resource AWS đang tồn tại, export toàn bộ AWS resource với tất cả cấu hình detail và xác định như thế nào 1 tài nguyên được cấu hình vào thời điểm cụ thể. Tính năng này cho phép audit, security analysis, resource change tracking và troubleshooting. AWS Config Rule cho phép bạn set các rule dựa trên AWS common hoặc custom rule do bạn define. Ví dụ, bạn có thể đảm bảo AWS EBS được encrypted, EC2 Instance được gán tag, EIP được attach đến EC2, .... Ngoài ra, cho phép monitor sự thay đổi của AWS resource và cung cấp 1 new dashboard để track.

7.5 AWS OpsWorks

Service chuyên dùng cho Chef, có thể define cấu trúc của application và chỉ định các component cụ thể bao gồm package installation, software configuration và các resource như storage. Dễ dàng start template cho các common technologies như application server & database, ... AWS OptWorks bao gồm tự động scale application dựa trên thời gian hoặc load và tự động cấu hình scale theo environment.

7.6 AWS Service Catalog

AWS service cho phép tạo và quản lý các catalog IT services mà được cho phép sử dụng trên AWS. IT Service có thể bao gồm mọi thứ như Virtual machine image, server, software và database cho mô hình infra multi-tier.

7.7 AWS Trusted Advisor

AWS Trusted Advisor hổ trợ AWS operator team kiểm tra AWS environment và detect các vấn đề nhằm tiết kiệm cost, cải thiện system performance, reliability hoặc security.

8. Security and Identity

8.1 AWS Identity and Access Management

AWS IAM cho phép bạn control quyền access đến AWS service và quản lý user. Với IAM, bạn có thể tạo và quản lý AWS user, group và có thể allow/deny quyền access đến AWS resource.

  • Quản lý IAM user: Tạo IAM, gán security credentials (access keys, passworks and MFA devices) hoặc request các temporary_security_credentail để cho phép user access đến AWS resource.
  • Quản lý IAM Roles: Bạn có thể tạo ra các AMI Role, với policy đi kèm, để control các action giữa các AWS Service hoặc cho phép access vào AWS service, mà được assume một IAM Role.
  • Quản lý Federated User: Bạn có thể enable identity federation để cho phép identity đang tồn tại (AWS user, AD, SAML, ...) access đến AWS Managerment Console, để call AWS API, access resource mà không cần tạo IAM user cho mỗi identity.

AWS IAM (với quyền administrator) ở cấp thấp hơn AWS root account, và đây là 2 khái niệm khác nhau. temporary_security_credentail: tạm hiểu là key bảo mật tạm thời, chỉ sử dụng trong 1 khoảng thời gian cố định

8.2 AWS Key Management Service (KMS)

AWS KMS dễ dàng để tạo và quản lý encryption key, được sử dụng để encrypt data. KMS tích hợp với các service khác bao gồm AWS EBS, S3, Redshift. KMS cũng tích hợp với AWS CloudTrail để log tất cả các access liên quan đến Key.

8.3 AWS Directory Service

AWS Directory Service là 1 service quản lý mà cho phép bạn connect đến AWS resouce với Microsoft Active Directory đã trên on-premises hoặc để setup mới một standalone directory trong AWS cloud. Một khi kết nối được thiết lập, tất cả user có thể access AWS resources và application bằng chính credential của công ty/tổ chức.

8.4 AWS WAF

Firewall cho web application, giúp bảo vệ web application khỏi các cuộc "tấn công thông thường" mà có thể ảnh hưởng đến service, security hoặc gây tăng workload server. AWS WAF cho phép control traffic (allow hoặc deny) đến web application dựa trên việc định nghĩa các rule security. Bạn cũng có thể sử dụng AWS WAF nhằm tạo các custom rules để block các phương thức tấn công cơ bản như SQL injection hoặc cross-site scripting, … Khi bạn add một rule mới, nó sẽ được apply ngay lập tức, giúp bạn kịp thời ngăn chặn các cuộc tấn công trong vài phút.

8.5 AWS CloudHSM

AWS CloudHSM cho phép bạn bảo vệ encryption key với HSM mà được thiết kế và chuẩn hóa theo chuẩn của government để quản lý security key. AWS CloudHSM đáp ứng các yêu cầu của công ty/ tổ chức về bảo mật dữ liệu bằng cách sử dụng ứng dụng HSM (Hardware Security Module) được dành riêng trên một phần cứng vật lý (dedicated) trên môi trường AWS. Bạn có thể generate, store và manage các cryptographic_key được sử dụng cho encryption data mà chỉ có thể access bởi chính bạn. AWS CloudHSM được thiết kế với Hardward dành riêng, nằm trong VPC với IP address mà bạn chỉ định, cho phép dễ dàng access đến EC2 instance trong môi trường Cloud của bạn.

Continue ...