Quy ước đặt tên cho các tài nguyên trên AWS
TL,DR
- Trình bày về quy ước đặt tên, gắn tag tài nguyên trên AWS theo các best practices để thuận tiện cho việc quản lý, vận hành.
- Cung cấp bảng quy ước đặt tên để tham khảo.
Tại sao cần quy ước đặt tên, gắn tag?
The sad reality is that we humans are forgetful creatures. - Essentialism: The Disciplined Pursuit of Less
Những lý do cần có một quy ước đặt tên:
- Tên các resourse khó phân biệt
- Con người nhanh quên, bạn không muốn một dự án đang triển khai có 10 EC2 instances cùng 1 tên là webserver hoặc tệ hơn là không có tên
- Tăng khả năng mắc lỗi khi vận hành. Do dễ nhầm lẫn các tài nguyên với nhau
- Tăng khả năng xoá nhầm máy chủ ở môi trường production thay vì các môi trường khác
- Áp dụng quy ước đặt tên giúp các tài nguyên được tổ chức tốt hơn, giúp việc vận hành trở nên dễ dàng hơn
- Tên và tag có thể sử dụng trong AWS Cost and Usage Report để có thể quản lý về tài chính hoặc thống kê các tài nguyên được sử dụng
Chính vì vậy, không chỉ các doanh nghiệp lớn với hệ thống phức tạp trên AWS mà các cá nhân, dự án nhỏ cũng nên áp dụng những quy ước đặt tên (naming convention) cho các tài nguyên dịch vụ trên AWS. Kể các khi các tài nguyên được quản lý bằng các tài khoản AWS riêng biệt, bạn cũng nên đặt tên và tag đầy đủ cho tài nguyên. Điều này nhằm hạn chế tối đa những sai sót trong quá trình vận hành cũng như quản lý.
Nó là một thói quen tốt, mất ít thời gian để thực hiện, thậm chí hiệu quả làm việc còn được tăng lên một cách rõ rệt
Các quy ước đặt tên, gắn tag
Thông thường sẽ có 3 quy chuẩn đặt tên: camelCase, snake_case và kebab-case.
Trong trường hợp này, nên dùng kebab-case.
Lý do: tên của S3 bucket không được chứa chữ hoa (UPPERCASE) và dấu gạch dưới a.k.a shift trừ (_)
→ Để tăng tính nhất quán giữa các tài nguyên, kebab-case là lựa chọn tốt nhất
Quy ước gắn tag
-
AWS tags có phân biệt chữ hoa với chữ thường (case sensitive) → hãy đảm bảo tính thống nhất của việc đặt tên (VD: CostCenter và costcenter sẽ khác nhau)
-
Tag Name được sử dụng để thể hiện tên gọi của nhiều tài nguyên (VD: EC2), tag name thì không
-
Các tag được AWS tạo tự động theo các quy ước sau:
- Chỉ sử dụng chữ thường (lowercase)
- Sử dụng dấu gạch ngang ("-") để thay cho khoảng trắng, phân tách các từ (kebab-case)
- Các tiền tố (prefixes) được sử dụng để thể hiện tài nguyên gốc của các tag
-
Ví dụ:
- aws:cloudformation:stack-name định danh CloudFormation stack đã tạo tài nguyên
- lambda-console:blueprint định danh blueprint được dùng cho Lambda funtion
- elasticbeanstalk:environment-name định danh ứng dụng (application) đã tạo ra tài nguyên
Chúng ta có thể áp dụng 3 quy ước mặc định của AWS vào việc gắn tag và đặt tên các tài nguyên.
- Ví dụ:
- anycompany:cost-center để định danh mã cost center nội bộ cho việc quản lý tài chính
- anycompany:environment-type để định danh môi trường (development, test hoặc production) của tài nguyên
- anycompany:application-id để định danh ứng dụng (application) đã tạo tài nguyên
Quy ước đặt tên
Thông tin cần thiết
Ta cần biết những thông tin sau qua tên của tài nguyên:
- Tên hệ thống, ứng dụng (sysname)
- Định danh thống nhất của hệ thống, ứng dụng đã tạo tài nguyên (VD: xxxsystem)
- Môi trường (env)
- Production, test, development (prod/stg/dev)
- Layer mạng (nlayer)
- Public, protected, private (public/protected/private)
- Loại (type)
- Application, Bastion, Mail (app/bastion/mail)
- Mục đích (use)
- Dùng để lưu trữ, quản lý log, phân phối nội dung (log/contents)
Để phân tách các phần thông tin trong tên ta có thể chọn giải pháp dùng dấu gạch ngang (-)
Áp dụng thêm 3 quy ước của việc đặt tag ta có bảng sau
Bảng quy ước đặt tên
Kết luận
Hệ thống vẫn sẽ hoạt động tốt nếu bạn không áp dụng quy ước đặt tên hoặc gắn tags. Nhưng khi có sự cố phát sinh hoặc yêu cầu mới xuất hiện, bạn sẽ mất nhiều thời gian để có thể tìm kiếm và khắc phục.
Để tránh rơi vào hoàn cảnh đó hoặc đơn giản là tạo ra một môi trường làm việc đỡ độc hại hơn (cho bản thân và đồng nghiệp), hãy tạo thói quen ngăn nắp, sạch sẽ trên khi sử dụng các tài nguyên. Có thể sẽ mất thời gian để làm quen, nhưng nó rất đáng để áp dụng.
Hãy dùng bảng quy ước ở trên và share hoặc để lại comment tại bài viết nếu bạn thấy có ích :D