Pets vs. Cattle and the story about Elastic Cloud


Nhớ lại những ngày cũ, trước khi các dịch vụ như của AWS hay GCE trở nên phổ biến như bây giờ, phương cách quản trị các hệ thống và ứng dụng mang các nét đặc trưng truyền thống như:
+ GUI driven
+ Ticket based
+ Hand crafted
+ Reserved
+ Scale up

Các đặc tính này làm cho việc vận hành hệ thống/ứng dụng giống như kiểu chăm sóc một loài thú cưng (pet) được nuôi trong nhà vậy. Phải có không gian riêng cho nó (reserved). Phải bón cho nó ăn (hand crafted). Quan tâm tới vẻ bề ngoài của nơi ở cho nó (GUI driven). Khi nó bình thường thì không sao, còn mỗi khi ốm đau thì phải chạy vạy thuốc thang, dò hỏi bác sĩ (ticket based), tái khám định kỳ, tăng cường bồi bổ (scale up hardware), v.v… Như vầy là khá mất thời gian và công sức trong suốt quãng thời gian nó sống với mình.

Giờ đây, với sự phổ biến của cái gọi là cloud computing service model với các đặc trưng như:
+ API driven
+ Self service
+ Automated
+ On demand
+ Scale out

Lúc này việc vận hành hệ thống/ứng dụng có thể ví như chuyện chăn nuôi gia súc (cattle), ví dụ đàn bò hay lợn vậy. Bề ngoài của nông trại (hosting provider) không quan trọng bằng các tiện ích linh hoạt mà nó mang lại (ví dụ, API driven). Các con bò có thể tự chạy tới máng để ăn (self service). Một số công việc có thể được tự động hóa như quạt mát, tắm rửa, vắt sữa bò (automated). Khi nhu cầu tăng thì nuôi thêm và ngược lại thì trả lại không gian cho nông trại (on demand). Đặc biệt, khi đàn gia súc có một số con bị mắc bệnh kiểu H5N1 thì không ngại ngần tiêu hủy chúng và thay bằng các con mới, khỏe mạnh (scale out). Đây là một trong các nét khác biệt rõ nhất giữa môi trường elastic cloud (gia súc ở nông trại) so với môi trường old-fashioned (thú cưng ở trong nhà).

Khả năng vận dụng tập API và tận dụng lợi thế elastic của cloud đã được một số công ty hiện thực, ví dụ như dịch vụ của Netflix chạy trên hạ tầng của AWS. Theo đó, Netflix đã thiết kế ứng dụng và các công cụ hỗ trợ với ý định rằng chúng sẽ được chạy trong môi trường elastic cloud. Vì vậy, chúng cần có khả năng định kỳ kiểm tra và nhận diện được các instance của dịch vụ mà có vấn đề về sức khỏe (Doctor Monkey) hay độ an toàn (Security Monkey) để mau chóng bỏ nó đi (kill) và khởi chạy một instance mới khỏe mạnh hơn. Netflix đã tiến thêm một bước là trong trạng thái bình thường thì instance cũng có thể bị kill đi một cách cố ý để nhằm mục đích đánh giá khả năng chịu lỗi (fault tolerance) của cloud infrastructure.

Tóm lại là nên thiết kế cloud-aware application để chủ động trong chuyện failover & scaling hay giữ lại traditional application và để infrastructure lo các vấn đề còn lại (failover & scaling)?

PS: Netflix đã chọc ngoáy và nhận thấy rằng có sự không đồng đều về performance của các instance có cùng cấu hình trên AWS, điều này có gốc rễ từ chuyện các instance nằm trên cùng một physical server dưới sự quản lý của lớp hypervisor thay vì nằm trên các server tách biệt theo như truyền thống.

Bài viết dựa trên câu chuyện của @randybias.

-mt.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s