Chuyển tới nội dung chính

DevOps On AWS 01 : Giới thiệu về AWS và IAM

· 18 phút để đọc

Chào mừng bạn đến với series "DevOps On AWS" - chuỗi bài viết toàn diện về việc triển khai và vận hành hệ thống trên nền tảng Amazon Web Services. Trong bài đầu tiên này, chúng ta sẽ cùng nhau khám phá những khái niệm nền tảng: Cloud Computing là gì, DevOps hoạt động như thế nào, tại sao AWS lại trở thành lựa chọn hàng đầu của các doanh nghiệp toàn cầu, và đi sâu vào IAM - hệ thống quản lý truy cập quan trọng nhất của AWS.

Series này được thiết kế dành cho các DevOps Engineers, System Administrators, và những ai muốn nắm vững cách xây dựng và vận hành hạ tầng hiện đại trên nền tảng đám mây. Hãy cùng bắt đầu hành trình này từ những kiến thức cơ bản nhất!

1. Cloud Computing - Điện toán đám mây là gì?

Cloud Computing

1.1. Định nghĩa Cloud Computing

Điện toán đám mây là việc cung cấp tài nguyên CNTT theo yêu cầu qua Internet với cách tính "pay-as-you-go" (trả theo sử dụng). Thay vì mua, sở hữu và bảo trị các trung tâm dữ liệu và máy chủ vật lý, ta có thể truy cập các dịch vụ công nghệ, như năng lực máy chủ tính toán (compute instance), dịch vụ lưu trữ và cơ sở dữ liệu, theo nhu cầu từ nhà cung cấp đám mây.

1.2. Ưu điểm của Cloud Computing

Về mặt quản lý:

  • Giảm thiểu thời gian, công sức vận hành và bảo trì các thiết bị phần cứng
  • Chỉ cần thanh toán chi phí cho lượng tài nguyên thực tế sử dụng
  • Dễ dàng tự động hóa hoặc chủ động nâng/hạ tài nguyên của hệ thống
  • Không có ràng buộc về mặt địa lý: dễ dàng triển khai hậu hết các ứng dụng trên toàn cầu
  • Giảm time-to-market bằng việc rút ngắn thời gian trong việc triển khai hạ tầng và ứng dụng

Về mặt chi phí:

  • Chỉ cần thanh toán chi phí cho lượng tài nguyên thực tế sử dụng
  • Không cần đầu tư ban đầu lớn cho hạ tầng vật lý
  • Chi phí vận hành có thể dự đoán và tối ưu hóa được

1.3. Nhược điểm của Cloud Computing

Phụ thuộc hoàn toàn vào nhà cung cấp:

  • Chất lượng dịch vụ, độ ổn định của hạ tầng phụ thuộc vào provider
  • Chi phí sử dụng có thể nằm ngoài dự tính
  • Các quy định và sự ràng buộc của pháp luật

1.4. Các dạng Cloud Computing

Các dạng Cloud Computing

Cloud Computing được chia thành các mô hình dịch vụ chính:

Infrastructure-as-a-Service (IaaS): Người dùng cần cài đặt và triển khai mã nguồn lên hạ tầng mà nhà cung cấp cloud sẽ cung cấp và quản lý, bao gồm máy chủ, mạng và hệ thống lưu trữ.

Platform-as-a-Service (PaaS): Người dùng cần triển khai mã nguồn, nhà cung cấp cloud quản lý cả nền tảng và hạ tầng.

Software-as-a-Service (SaaS): Người dùng chỉ cần connect ứng dụng và sử dụng, mọi thứ đều được nhà cung cấp quản lý.

2. DevOps - Phương pháp kết hợp phát triển và vận hành

2.1. DevOps là gì?

DevOps

DevOps là phương pháp kết hợp phát triển phần mềm (Development) và vận hành hệ thống (Operations) nhằm tối ưu hóa quy trình phát triển và triển khai.

DevOps bao gồm nhiều yếu tố như văn hóa làm việc, phương pháp triển khai và các công cụ hỗ trợ.

2.2. Triết lý DevOps

Tăng tốc độ phát triển phần mềm: Cải thiện chất lượng và giảm thời gian đưa sản phẩm ra thị trường

Các nguyên tắc chính của DevOps:

  • Tự động hóa: Tích hợp liên tục (CI), triển khai liên tục (CD)
  • Văn hóa làm việc hợp tác giữa team Development và Operations
  • Giám sát liên tục để phát hiện và xử lý vấn đề sớm

2.3. Vòng đời DevOps

DevOps hoạt động theo vòng đời liên tục bao gồm:

  • Plan: Lập kế hoạch và phân tích yêu cầu
  • Code: Phát triển và viết mã nguồn
  • Build: Xây dựng và biên dịch ứng dụng
  • Test: Kiểm thử tự động và thủ công
  • Release: Chuẩn bị phát hành phiên bản
  • Deploy: Triển khai lên môi trường production
  • Operate: Vận hành và quản lý hệ thống
  • Monitor: Giám sát và phân tích hiệu suất

3. AWS - Nền tảng điện toán đám mây dẫn đầu thị trường

AWS

3.1. AWS (Amazon Web Services) là gì?

Trong báo cáo Magic Quadrant for Strategic Cloud Platform Services của Gartner năm 2023 thì AWS (Amazon Web Service):

  • Được xếp hạng cao nhất về khả năng thực thi
  • Được xếp hạng Leader 13 lần liên tiếp tính đến 2023
  • Chiếm 40% thị phần toàn cầu và không ngừng mở rộng

3.2. Tại sao chọn AWS?

So sánh AWS với các Cloud Provider

Nguồn báo cáo:

AWS dẫn đầu về:

  • Độ tin cậy và ổn định cao
  • Hệ sinh thái dịch vụ phong phú và đa dạng
  • Cộng đồng lớn và hỗ trợ tốt
  • Bảo mật được đầu tư mạnh mẽ
  • Khả năng mở rộng toàn cầu

3.3. So sánh AWS với các Cloud Provider khác (2024)

Tiêu chíAWSGoogle Cloud PlatformMicrosoft Azure
Thị phần~30% (Q4 2024)~12%~21%
Gartner Ranking#1 Leaders (Highest)#2 Leaders (Vượt Azure về execution)#3 Leaders
Số dịch vụ200+150+200+
Regions34 regions40+ regions60+ regions
Availability Zones108 AZs121 zones140+ AZs
Điểm mạnhEcosystem rộng, First-moverAI/ML, Data Analytics, InnovationEnterprise integration, Office 365
PricingPay-as-you-go, Reserved, SpotSustained use discounts, PreemptibleCompetitive, Hybrid benefits
Enterprise FocusUniversal (SMB to Enterprise)Developer và data-focusedStrong enterprise focus
AI/GenAI$4B đầu tư vào AnthropicGemini, Vertex AI, TPUs$13B đầu tư vào OpenAI
Revenue 2024~$105B (ước tính)~$35B~$35B (Intelligent Cloud)

Phân tích theo Gartner Magic Quadrant 2024:

  • AWS: Tiếp tục dẫn đầu với khả năng thực thi và tầm nhìn hoàn chỉnh nhất
  • Google Cloud: Vượt lên vị trí #2, mạnh về AI/ML và khả năng thực thi technical innovation
  • Microsoft Azure: Vẫn trong nhóm Leaders nhưng tụt xuống #3, mạnh về enterprise integration

Tại sao AWS vẫn được lựa chọn nhiều nhất:

  • Mature ecosystem: AWS ra mắt từ 2006, có thời gian dài để phát triển và hoàn thiện
  • Vendor lock-in ít: Nhiều công cụ open-source và third-party hỗ trợ AWS
  • Documentation và community: Tài liệu phong phú, cộng đồng lớn
  • Innovation leader: Thường xuyên ra mắt dịch vụ mới và cải tiến

3.3.1. Tác động của GenAI lên thị trường Cloud 2024

Tăng trưởng thị trường:

  • Thị trường cloud đạt $330 billion trong 2024 (tăng $60B so với 2023)
  • GenAI đóng góp 50% tăng trưởng trong 2 năm qua
  • Nhu cầu GPU và computing power tăng mạnh

Chiến lược AI của các nhà cung cấp:

AWS:

  • Amazon Bedrock: Nền tảng quản lý các mô hình AI nền tảng (foundation models)
  • AWS Trainium và Inferentia: Chip chuyên dụng cho khối lượng công việc AI
  • Hợp tác với Anthropic: Đầu tư 4 tỷ USD vào nghiên cứu AI an toàn

Microsoft Azure:

  • Hợp tác OpenAI: Đối tác chiến lược và Azure OpenAI Service
  • Copilot tích hợp: Trí tuệ nhân tạo xuyên suốt Microsoft 365
  • Azure AI Studio: Nền tảng phát triển mô hình AI tùy chỉnh

Google Cloud:

  • Mô hình Gemini AI: Dòng sản phẩm AI tiên tiến và nền tảng Vertex AI
  • TPU (Tensor Processing Units): Đơn vị xử lý tensor chuyên dụng cho AI
  • Duet AI: Trợ lý thông minh tích hợp trong Google Workspace

Tác động đến thị phần:

  • Microsoft Azure hưởng lợi nhiều nhất từ OpenAI partnership
  • Google Cloud tăng trưởng mạnh nhờ AI/ML expertise
  • AWS duy trì vị thế nhờ comprehensive AI services portfolio

3.4. Kiến trúc toàn cầu của AWS (2024)

AWS Regions (Khu vực):

  • AWS có 34 Regions trên toàn cầu (tính đến 2024)
  • Mỗi Region là một khu vực địa lý riêng biệt
  • Dữ liệu không tự động replicate giữa các Regions (tuân thủ pháp luật địa phương)
  • Planned Regions: Thêm 8 regions dự kiến ra mắt

Availability Zones (AZ - Vùng khả dụng):

  • 108 Availability Zones trên toàn cầu
  • Mỗi AZ là một hoặc nhiều data center độc lập
  • Kết nối với nhau bằng mạng tốc độ cao, độ trễ thấp (dưới 10ms)
  • Thiết kế chịu lỗi: nếu một AZ gặp sự cố, các AZ khác vẫn hoạt động

Edge Locations:

  • 450+ Edge Locations và regional edge caches
  • Phục vụ cho CloudFront CDN và Route 53 DNS
  • Giảm độ trễ cho người dùng cuối xuống dưới 50ms

Ví dụ thực tế:

Region: us-east-1 (N. Virginia)
- AZ: us-east-1a
- AZ: us-east-1b
- AZ: us-east-1c
- AZ: us-east-1d
- AZ: us-east-1e
- AZ: us-east-1f

3.5. Mô hình giá cả của AWS

1. Pay-as-you-go (Trả theo sử dụng):

  • Chỉ trả cho tài nguyên thực tế sử dụng
  • Không có phí setup hay minimum commitment
  • Tính theo giờ/phút/giây tùy dịch vụ

2. Reserved Instances:

  • Cam kết sử dụng 1-3 năm để được giảm giá 30-70%
  • Phù hợp cho workload ổn định, dự đoán được

3. Spot Instances:

  • Sử dụng capacity dư thừa với giá giảm đến 90%
  • AWS có thể thu hồi với thông báo 2 phút
  • Phù hợp cho batch processing, CI/CD

4. Savings Plans:

  • Cam kết chi tiêu một số tiền nhất định/giờ
  • Flexibility cao hơn Reserved Instances
  • Áp dụng cho EC2, Lambda, Fargate

Ví dụ tính giá EC2 t3.micro:

On-Demand: $0.0104/hour
Reserved (1 year): $0.0067/hour (35% savings)
Spot: $0.0031/hour (70% savings)

4. Các dịch vụ của AWS được sử dụng phổ biến trong doanh nghiệp

So sánh AWS với các Cloud Provider

AWS cung cấp hơn 200 dịch vụ đám mây, được tổ chức thành các nhóm chính. Dưới đây là các dịch vụ cốt lõi được sử dụng phổ biến nhất:

4.1. Dịch vụ tính toán (Compute)

EC2 (Elastic Compute Cloud):

  • Dịch vụ máy chủ ảo linh hoạt, backbone của AWS
  • Hỗ trợ nhiều OS: Linux, Windows, macOS
  • Nhiều instance types cho các workload khác nhau
  • Use cases: Web servers, application servers, batch processing

Lambda:

  • Serverless computing - chạy code mà không cần quản lý server
  • Tính phí theo execution time (mili giây)
  • Auto-scaling từ 0 đến hàng ngàn requests
  • Use cases: API backends, data processing, scheduled tasks

ECS/EKS:

  • ECS: Container orchestration của AWS, dễ tích hợp với AWS services
  • EKS: Managed Kubernetes service, standards-based
  • Use cases: Microservices, containerized applications

4.2. Dịch vụ lưu trữ (Storage)

S3 (Simple Storage Service):

  • Object storage với durability 99.999999999% (11 9s)
  • Nhiều storage classes: Standard, IA, Glacier, Deep Archive
  • Static website hosting, CDN origin, backup destination
  • Use cases: Data lakes, backup/archive, static websites

EBS (Elastic Block Store):

  • Block storage cho EC2 instances
  • Nhiều loại: gp3 (general), io2 (high IOPS), st1 (throughput)
  • Snapshot và encryption support
  • Use cases: Database storage, file systems, boot volumes

EFS (Elastic File System):

  • Managed NFS cho multiple EC2 instances
  • Automatically scales, pay for what you use
  • Use cases: Content repositories, web serving, data analytics

4.3. Database Services

RDS (Relational Database Service):

  • Managed database cho MySQL, PostgreSQL, Oracle, SQL Server, MariaDB
  • Multi-AZ deployments cho high availability
  • Read replicas cho scaling reads
  • Use cases: Traditional applications, data warehousing

DynamoDB:

  • NoSQL database với single-digit millisecond latency
  • Fully serverless, auto-scaling
  • Global tables cho multi-region replication
  • Use cases: Gaming leaderboards, IoT applications, real-time analytics

Aurora:

  • MySQL/PostgreSQL compatible với performance gấp 5x
  • Serverless option available
  • Use cases: High-performance applications, SaaS applications

4.4. Networking & Content Delivery

VPC (Virtual Private Cloud):

  • Isolated network environment trong AWS
  • Subnets, Route Tables, Security Groups
  • Use cases: Network segmentation, security isolation

CloudFront:

  • Global CDN với 400+ edge locations
  • Caching, DDoS protection, SSL/TLS termination
  • Use cases: Website acceleration, video streaming, API acceleration

Route 53:

  • Managed DNS service với 100% uptime SLA
  • Health checks, traffic routing policies
  • Use cases: Domain registration, DNS routing, health monitoring

4.5. Ví dụ kiến trúc thực tế

Kiến trúc Web Application đơn giản:

Internet Gateway

Application Load Balancer (Public Subnet)

EC2 Instances (Private Subnet)

RDS Database (Private Subnet)

S3 Bucket (Static Assets)

Kiến trúc Serverless:

CloudFront (CDN)

API Gateway

Lambda Functions

DynamoDB / RDS

S3 (Storage)

5. AWS IAM: Giải pháp cho quản lý truy cập

5.1. IAM là gì?

IAM

IAM (Identity and Access Management) là một dịch vụ dùng để kiểm soát truy cập vào các tài nguyên của AWS, không chỉ là truy cập của người dùng, mà còn là truy cập từ dịch vụ AWS này, sang dịch vụ AWS khác (ví dụ upload file lên S3 từ một EC2 instance).

5.2. Các khái niệm cơ bản của AWS IAM

AWS Account: Là tài khoản người dùng đăng ký trực tiếp với AWS để sử dụng và thanh toán các dịch vụ.

IAM User: Là một loại tài khoản dùng để truy cập vào AWS Account thông qua username, password (khi đăng nhập qua AWS Console) hoặc Access key ID, Secret key ID (khi sử dụng AWS CLI và các thư viện).

IAM User Group: Là nhóm của các IAM User, được dùng để phân quyền cho nhiều IAM User. Một IAM User có thể nằm trong một hoặc nhiều group (hoặc không thuộc về group nào).

IAM Role: Tương tự như IAM User, nhưng không đăng nhập mà sử dụng thông qua một cơ chế gọi là Assume role.

Policy: Được viết bằng JSON, dùng để định nghĩa các quyền cụ thể, gồm 2 loại chính:

  • IAM permissions policy: Policy định nghĩa các quyền cụ thể và thêm vào các IAM user, group và role
  • Resource-based policies: Policy định nghĩa các quyền cụ thể và gắn trực tiếp vào các dịch vụ của AWS

5.3. Cấu trúc của IAM Policy Document (JSON)

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FirstStatement",
"Effect": "Allow",
"Action": ["iam:ChangePassword"],
"Resource": "*"
},
{
"Sid": "SecondStatement",
"Effect": "Allow",
"Action": ["s3:ListAllMyBuckets"],
"Resource": "*"
},
{
"Sid": "ThirdStatement",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket-confidential-data",
"arn:aws:s3:::amzn-s3-demo-bucket-confidential-data/*"
],
"Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
}
]
}

Các thành phần chính:

  • "Version": Phiên bản của ngôn ngữ sử dụng để định nghĩa Policy (không phải là phiên bản của Policy). Luôn sử dụng phiên bản mới nhất là "2012-10-17"
  • "Id": Tên của policy
  • "Statement": Thành phần chính dung để quy định các quyền
    • "Sid": Tên của statement
    • "Effect": Có hai giá trị là "Allow" hoặc "Deny" để xác định việc cho phép hoặc ngăn chặn truy cập
    • "Principal": Quy định policy này sẽ được áp dụng cho IAM user, role, group nào
    • "Actions": Những hành động sẽ được "Allow" hoặc "Deny"
    • "Resources": Nơi mà các "Actions" được áp dụng
    • "Condition": Điều kiện để "Statement" có thể được áp dụng

5.4. Cơ chế Assume Role của IAM Role

Assume Role là cơ chế cho phép một thực thể (có thể là một người dùng IAM, một service AWS, hoặc một tài khoản AWS khác) tạm thời đảm nhận các quyền truy cập mà IAM Role được chỉ định.

Cơ chế này cho phép các thực thể mượn quyền từ IAM Role để thực hiện các hành động mà họ không có quyền trực tiếp.

Lợi ích chính của cơ chế này là giúp quản lý quyền truy cập TẠM THỜI một cách linh hoạt, bảo vệ tài nguyên AWS một cách an toàn mà không cần cung cấp quyền trực tiếp cho thực thể.

Một số ví dụ về cách sử dụng Assume Role:

Sử dụng giữa các tài khoản AWS: Khi một doanh nghiệp có nhiều tài khoản AWS, quản trị viên có thể cấu hình Cross-Account Access, cho phép người dùng hoặc dịch vụ từ tài khoản A assume role trong tài khoản B để truy cập tài nguyên mà không cần tạo user trực tiếp trong tài khoản B.

EC2 Instance Assume Role: Khi chạy các ứng dụng trên EC2 instance, thay vì gán trực tiếp các quyền cho từng người dùng, ta có thể cấu hình EC2 để assume role và cấp quyền cho EC2 instance thực hiện các hành động như đọc dữ liệu từ S3.

5.5. Một số best practice cho IAM

  1. Không sử dụng Root Account
  2. Hãy bật MFA (multi-factor authentication)
  3. Sử dụng credentials tạm thời, nghĩa là không sử dụng IAM User (ngoại trừ các trường hợp không thể assume role):
    • Đối với người dùng: sử dụng federated identity (người dùng đăng nhập thông qua IdP và assume role)
    • Đối với các application: sử dụng assume role, instance role hoặc IRSA (IAM Roles for Service Accounts)
  4. Sử dụng chiến lược least-privilege permissions

5.6. Ví dụ IAM Policies thực tế

Policy cho DevOps Engineer:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*",
"s3:*",
"rds:*",
"lambda:*",
"cloudformation:*",
"cloudwatch:*"
],
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"iam:CreateUser",
"iam:DeleteUser",
"account:*"
],
"Resource": "*"
}
]
}

Policy cho Developer (chỉ đọc):

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"s3:GetObject",
"s3:ListBucket",
"cloudwatch:GetMetricStatistics",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": "*"
}
]
}

6. Use Cases thực tế trong doanh nghiệp

6.1. Startup → Scale-up Journey

Phase 1: MVP (0-10 users)

Frontend: S3 + CloudFront
Backend: Lambda + API Gateway
Database: DynamoDB
Monitoring: CloudWatch

Phase 2: Growth (10-1000 users)

Frontend: S3 + CloudFront
Backend: EC2 + Application Load Balancer
Database: RDS với Read Replicas
Cache: ElastiCache
Monitoring: CloudWatch + X-Ray

Phase 3: Scale (1000+ users)

Frontend: S3 + CloudFront + WAF
Backend: ECS/EKS cluster
Database: Aurora với Multi-AZ
Cache: ElastiCache cluster
Search: Elasticsearch
Monitoring: CloudWatch + Prometheus
CI/CD: CodePipeline + CodeDeploy

6.2. Enterprise Migration

Lift and Shift:

  • Physical servers → EC2 instances
  • On-premises storage → EBS/EFS/S3
  • Network → VPC với VPN/Direct Connect

Re-architecting:

  • Monolith → Microservices với containers
  • Traditional DB → Managed services (RDS, DynamoDB)
  • Batch jobs → Lambda functions

6.3. Cost Optimization Strategies

Compute Optimization:

  • Right-sizing instances
  • Spot instances cho batch processing
  • Reserved instances cho predictable workloads
  • Auto Scaling groups

Storage Optimization:

  • S3 Intelligent Tiering
  • EBS gp3 thay vì gp2
  • Lifecycle policies cho archiving

Networking Optimization:

  • CloudFront cho content delivery
  • VPC endpoints cho internal traffic
  • Data transfer optimization

Kết luận

Trong bài viết đầu tiên của series "DevOps On AWS", chúng ta đã có một cái nhìn toàn diện về những kiến thức nền tảng cần thiết để bắt đầu hành trình DevOps trên nền tảng Amazon Web Services. Từ những khái niệm cơ bản về Cloud Computing và DevOps, đến hiểu rõ về AWS như một nền tảng dẫn đầu thị trường, và đi sâu vào IAM - hệ thống quản lý truy cập cốt lõi của AWS.

Những điểm chính cần nhớ:

  • Cloud Computing mang lại sự linh hoạt, tiết kiệm chi phí và khả năng mở rộng vượt trội so với infrastructure truyền thống
  • DevOps là triết lý kết hợp phát triển và vận hành để tăng tốc độ delivery và cải thiện chất lượng sản phẩm
  • AWS dẫn đầu thị trường cloud với 30% market share (Q4 2024), hệ sinh thái dịch vụ phong phú với 200+ services
  • Kiến trúc global của AWS với 34 Regions, 108 AZs và 450+ Edge Locations đảm bảo performance và reliability
  • IAM là nền tảng bảo mật cơ bản, cần được cấu hình đúng cách theo best practices
  • GenAI đang thúc đẩy 50% tăng trưởng thị trường cloud, tạo cơ hội mới cho DevOps Engineers

💡 Action Items cho bạn:

  1. Tạo AWS Free Tier account nếu chưa có
  2. Setup AWS CLI và thực hành các commands cơ bản
  3. Explore AWS Console để làm quen với giao diện
  4. Đọc thêm AWS Well-Architected Framework để hiểu design principles
  5. Join AWS User Groups trong khu vực của bạn

Hãy tiếp tục theo dõi series "DevOps On AWS" để không bỏ lỡ những kiến thức quý giá trong hành trình trở thành một AWS Cloud Engineer chuyên nghiệp! 🚀

Xem nhiều hơn bài viết của tôi tại đây nhé: codeeasy.blog