DevOps On AWS 01 : Giới thiệu về AWS và IAM
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ì?
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
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 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
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?
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í | AWS | Google Cloud Platform | Microsoft 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+ |
Regions | 34 regions | 40+ regions | 60+ regions |
Availability Zones | 108 AZs | 121 zones | 140+ AZs |
Điểm mạnh | Ecosystem rộng, First-mover | AI/ML, Data Analytics, Innovation | Enterprise integration, Office 365 |
Pricing | Pay-as-you-go, Reserved, Spot | Sustained use discounts, Preemptible | Competitive, Hybrid benefits |
Enterprise Focus | Universal (SMB to Enterprise) | Developer và data-focused | Strong enterprise focus |
AI/GenAI | $4B đầu tư vào Anthropic | Gemini, 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
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 (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
- Không sử dụng Root Account
- Hãy bật MFA (multi-factor authentication)
- 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)
- 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:
- Tạo AWS Free Tier account nếu chưa có
- Setup AWS CLI và thực hành các commands cơ bản
- Explore AWS Console để làm quen với giao diện
- Đọc thêm AWS Well-Architected Framework để hiểu design principles
- 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