CDK – Lời chào tạm biệt của CloudFormation?

Ở bài này mình sẽ chia sẻ một chút về CDK hay còn gọi là Cloud Development Kits, một thứ AWS gần đây rất hay ca ngợi và theo mình đây chắc chắn là xu thế của tương lai khi khởi tạo các hạ tầng trên Cloud.

Việc khởi tạo một hạ tầng trên cloud không còn quá xa lạ, chúng ta có thể tạo sẵn một script định nghĩa các dịch vụ, tương tác giữa chúng và khởi tạo trong 1 dòng code. Trước đây để cài đặt full một hạ tầng có thể mất hàng tuần, giờ đây hạ tầng có thể tạo ra tính bằng phút.

Quảng cáo là thế, nhưng sự thật thì rất chua cay. Để tạo được các script chạy tính bằng phút đó, các DevOps phải thử lên thử xuống các câu lệnh để xem chạy đúng không, mỗi lần chạy phát sinh hay thiếu xót gì lại phải chỉnh sửa kịch bản. Một dịch vụ rất nổi tiếng của AWS đó là CloudFormation chuyên viết và khởi tạo hạ tầng ở các định dạng file JSON hoặc YAML (đọc là: Ya Mồ).

Vấn đề với YAML đó chính là viết khó, thậm chí những người làm lâu năm nhìn vào đó cũng choáng và không nhớ hồi xưa sao mình viết được thế. Đây là hiện tượng gặp phải thường xuyên nếu bạn đã làm developer, đôi khi chúng ta ko biết tại sao chúng ta lại viết được thế, do một số khoảnh khắc xuất thần, hay do copy code đó trên mạng mà cũng chưa hiểu hết hàm ý của chúng.

CloudFormation theo mình nghĩa sinh ra trong bối cảnh của CI/CD với các kỹ sư tự động vận hành hay còn gọi là DevOps. Như các bạn biết hầu hết các hệ thống IT của doanh nghiệp lớn được vận hành bởi đội Ops thiên về system nhiều hơn là kiến thức lập trình các ngôn ngữ cấp cao (Python, Java, Go, JS). Nếu như các bạn vọc vạch về Linux về System nhiều thì việc viết các bash shell script là rất phổ biến, và điều gì đến cũng đến CloudFormation Yaml có cấu trúc cũng hướng system rất nhiều, rất dài dòng và thiếu tính cấu trúc. Thời điểm này theo mình Ops nhiều hơn là Dev. Việc đòi hỏi một sinh viên ra trường giỏi cả System lẫn cả lập trình thời điểm này e rằng là khó, doanh nghiệp thường lựa chọn ứng viên có tiềm năng một cái và đào tạo thêm cái còn lại. Việc chọn xuất phát điểm là Dev hay Ops không quá quan trọng bằng việc ứng viên đó có yêu thích học hỏi hay không. Cá nhân mình nếu được lựa chọn sẽ chọn Dev và dạy thêm Ops, còn mình vẫn quan trọng nhất ở sự phát triển trong tương lai thì hiện tại có tố chất hay tiềm năng gì không khi tuyển dụng.

Vậy quay lại là CloudFormation Yaml khá khó sử dụng, khó viết và khó maintenance sau này. Việc học quá nhiều ngôn ngữ lập trình để làm fullstack là điều khó khả thi vì một người thường sẽ chỉ master 1 và cùng lắm là 2 thứ ngôn ngữ. Và cách mình thấy AWS là họ rất appreciate đối tượng Dev, và khiến cho việc khai báo hạ tầng ngày càng dễ và dần dần việc đó là việc ăn kẹo (Infras As Code, dần sẽ là Infra Is Code). Vậy các bạn thử nghĩ xem về dân lập trình có bao nhiêu loại?

Theo mình trong thế giới lập trình tựu chung có 2 loại, backend và front end. CDK hỗ trợ viết bằng Typescript, Python, Java và .Net. Khá hay ho phải không anh em? Vậy có nghĩa là một dev frontend và backend đều có thể học và khởi tạo hạ tầng bằng chính ngôn ngữ thân thuộc của mình.

Trở về câu hỏi đầu topic vậy học CDK có cần phải quan tâm đến CloudFormation nữa hay không. Câu trả lời là có, nhưng không phải lo lắng đến CloudFormation khi viết Yaml nữa.

  • Bản chất CDK khi chạy sẽ convert code python/typescript về lại yaml để thực thi. CDK chỉ là cách để developer xây dựng hạ tầng dễ dàng hơn thôi.
  • Bạn vẫn có thể chỉnh sửa file yaml xuất bởi cdk

Kết bài 

CDK là một cách tối ưu và lắng nghe người dùng của AWS, từ đây các developer học về cloud hoàn toàn thân thiện và tạo một hạ tầng do chính ngôn ngữ mình làm chủ. Bạn có thể tìm hiểu thêm về AWS CDK tại link này: https://aws.amazon.com/cdk/features/

 

Gud luck and have fun!

 

Topics #.net #cdk #cloudformation #dev #devops #java #json #ops #python #typescript #yaml