Bài viết đến từ anh Bùi Nguyễn Huy Hoàng – Quản lý DevSecOps DevSecOp team @Techcombank
I. Tại sao lại sử dụng Infrastructure as Code?
Những công việc như ảo hóa, điện toán đám mây (Cloud), container, tự động hóa (CI/CD) giúp đơn giản hóa công việc vận hành hành công nghệ thông tin (IT Operations). Việc triển khai, cấu hình, cập nhật và vận hành dịch vụ sẽ tiêu tốn ít thời gian và công sức hơn. Vấn đề sẽ được phát hiện và giải quyết nhanh chóng, các hệ thống luôn được cấu hình và cập nhật một cách đồng nhất. Những kỹ sư IT sẽ tiết kiệm được thời gian trong công việc vận hành hàng ngày, để có thể nhanh chóng thay đổi, học hỏi và cải tiến bản thân đáp ứng nhu cầu thay đổi liên tục của thế giới công nghệ.
Tuy nhiên, ngay cả với những công cụ và nền tảng mới nhất, các nhóm vận hành công nghệ vẫn thấy họ không thể đáp ứng nổi khối lượng công việc hàng ngày của mình. Họ không có thời gian để sửa chữa các vấn đề đã tồn tại lâu đời trong hệ thống cũ, chưa thể tái cấu trúc và tận dụng tối đa các công cụ và công nghệ mới. Trên thực tế thì việc dễ dàng khởi tạo tài nguyên trên Cloud sẽ khiến tình hình trở nên tồi tệ hơn. Do việc triển khai hạ tầng mới quá dễ dàng dẫn đến việc danh mục hệ thống và tài nguyên cần vận hành ngày càng tăng lên, điều này khiến việc duy trì mọi thứ ổn định đòi hỏi một lượng thời gian ngày càng lớn. Việc quản lý thay đổi một cách nhất quán và đáng tin cậy là một thách thức nan giải và cần có những quy trình, công cụ, thói quen để có thể giải quyết được vấn đề đó.
Một số công ty công nghệ đã đối mặt với thách thức này bằng cách áp dụng lại các quy trình, cấu trúc quản trị mà họ đã từng sử dụng để quản lý hạ tầng và phần mềm trước khi dịch vụ Cloud được trở nên phổ biến. Nhưng hạn chế là các nguyên tắc và quy trình này thường mất từ vài ngày đến vài tuần để có thể được chấp thuận triển khai tài nguyên mới, trong khi chỉ mất vài phút hoặc vài giây để triển khai trên Cloud. Các quy trình quản lý tài nguyên này thường bị bỏ qua hoặc xin sự chấp thuận ngoại lệ để không phải tuân theo từ nhóm những người cần hoàn thành công việc. Các công ty áp dụng thành công hơn thì lại cảm thấy đang bị thụt lùi do bị các đối thủ linh hoạt về công nghệ vượt mặt.
Các phương pháp quản lý cũ đã không thể đáp ứng được với tốc độ thay đổi do điện toán đám mây và tự động hóa mang lại. Nhưng vẫn cần phải giải quyết vấn đề về kiểm soát sự thay đổi và phát triển liên tục mà điện toán đám mây mang lại. Đó là lúc Infrastructure as Code(IaC) xuất hiện.
II. Infrastructure as Code là gì?
Infrastructure as Code là một phương phát tự động hóa hạ tầng dựa trên những nguyên lý của quá trình phát triển phần mềm, sử dụng các đoạn mã để khởi tạo, cung cấp các tài nguyên trong những trung tâm dữ liệu vật lý và các nền tảng Cloud một cách tự động, thay vì cài đặt và cấu hình thủ công. Nó tập trung vào các quy trình có tính lặp đi lặp lại và nhất quán cho việc cung cấp và thay đổi tài nguyên trên Cloud và cấu hình của chúng. Những thay đổi được thực hiện sẽ đi qua quá trình kiểm thử và xác thực kỹ lưỡng trước khi được đưa vào áp dụng.
Tiền đề việc này là những công cụ mới có thể xử lý tài nguyên hạ tầng như xử lý phần mềm và dữ liệu. Điều này cho phép áp dụng các công cụ, quy trình phát triển phần mềm như các hệ thống kiểm soát phiên bản (Version Control System), kiểm thử tự động và điều phối việc triển khai hạ tầng. Nó cũng mở ra cơ hội cho việc áp dụng các quy chuẩn phát triển phần mềm vào việc triển khai hạ tầng như Test Driven Design (TDD), tự động hóa(CI/CD).
Infrastructure as Code đã chứng minh được sự hữu dụng của mình trong những nơi có những yêu cầu cao về môi trường phát triển/triển khai và phát triển nhanh về công nghệ. Đối với ngân hàng số như Techcombank, các hệ thống công nghệ thông tin không chỉ là Business Critical mà chính là Business. Việc gián đoạn dịch vụ là không thể chấp nhận vì hệ thống ngân hàng xử lý hàng triệu giao dịch mỗi ngày. Vì vậy không có gì ngạc nhiên khi Techcombank đang tiên phong trong việc áp dụng các công nghệ mới, giải pháp mới để tăng tính tin cậy cho hạ tầng công nghệ thông tin quy có mô lớn.
Mục tiêu của việc áp dụng Infrastructure as Code trong Techcombank:
- Khuyến khích sự thay đổi của hệ thống công nghệ thông tin.
- Các kỹ sư công nghệ có thể dành thời gian cho các công việc quan trọng và phát triển năng lực của bản thân thay vì tốn thời gian cho những công việc nhỏ lặp đi lặp lại.
- Bản thân người có nhu cầu (thường là project team) có thể chủ động xác định, cung cấp, quản lý các tài nguyên họ cần mà không cần sự giúp đỡ từ các kỹ sư vận hành (IT Operation).
- Hạ tầng có thể dễ dàng phục hồi nhanh chóng sau sự cố.
- Các cải tiến, nâng cấp được áp dụng và thực hiện liên tục thay vì thông qua các dự án đắt đỏ và rủi ro.
- Các giải pháp cho vấn đề hạ tầng có thể được chứng minh thông qua kiểm thử, triển khai, đo lường tự động thay vì thông qua các cuộc họp và tài liệu.
III. Lợi ích của Infrastructure as Code
1. Tự động hóa hạ tầng công nghệ thông tin
Infrastructure as Code giúp tự động hóa các hoạt động liên quan đến hạ tầng công nghệ thông tin, bao gồm việc khởi tạo, cài đặt, triển khai, quản lý và giám sát hạ tầng thông qua mã nguồn. Với Infrastructure as Code, các nhóm phát triển không cần thực hiện các thao tác này thủ công, giảm thiểu thời gian và chi phí trong việc triển khai và quản lý hạ tầng. Việc tự động hóa này giúp đẩy nhanh quá trình cung cấp hạ tầng cũng như giảm thiểu rủi ro, khi hạn chế được tối đa sự can thiệp thủ công, đảm bảo tính ổn định của hạ tầng.
2. Kiểm soát phiên bản
Infrastructure as Code cho phép quản lý phiên bản, giúp các kỹ sư vận hành liên tục phát triển và quản lý đảm bảo tính nhất quán, kiểm soát các thay đổi. Khi sử dụng mã nguồn để quản lý hạ tầng, các phiên bản của mã nguồn đóng vai trò rất quan trọng trong việc kiểm soát và quản lý các thay đổi. Các phiên bản được theo dõi và đảm bảo rằng người dùng (đội dự án) đang sử dụng phiên bản mới nhất và người quản lý hạ tầng (đội vận hành) có thể xác minh tính nhất quán của hạ tầng và mối liên kết, liên quan, thay đổi giữa các phiên bản hạ tầng khác nhau. Từ đó có thể kiểm tra, giải quyết những vấn đề phát sinh liên quan đến việc triển khai sản phẩm.
3. Sản xuất nhanh
Infrastructure as Code cho phép các nhóm phát triển triển khai sản phẩm/ứng dụng một cách nhanh chóng và hiệu quả hơn. Khi việc cài đặt, triển khai hạ tầng được tự động hóa, các nhóm phát triển có thể giảm thiểu thời gian sản xuất và đưa được sản phẩm đến với khách hàng một cách nhanh chóng hơn. Điều này là rất quan trọng để đáp ứng kịp thời nhu cầu của khách hàng và tạo ưu thế cạnh tranh trong thị trường công nghệ khốc liệt hiện tại.
4. Xác định sự thay đổi
Infrastructure as Code giúp các nhóm vận hành xác định và quản lý sự khác biệt giữa các phiên bản hạ tầng. Chỉ cần kiểm tra phiên bản mới nhất và so sánh với phiên bản trước đó, các nhóm phát triển có thể xác định sự khác nhau và đưa ra các điều chỉnh cần thiết để giảm thiểu rủi ro trong việc triển khai. Điều này giúp giảm thiểu rủi ro, đảm bảo tính nhất quán của việc cài đặt và triển khai hạ tầng.
5. Tăng tính linh hoạt
Infrastructure as Code cho phép các tổ chức có thể nhanh chóng thay đổi hạ tầng mà không cần lo ngại về tính linh hoạt. Các yêu cầu mới có thể được triển khai nhanh chóng và có tính nhất quán với các phiên bản trước đó. Do đó, Infrastructure as Code trở thành một giải pháp hiệu quả cho các tổ chức muốn mang lại tính linh hoạt trong kinh doanh.
6. Giảm thiểu rủi ro
Infrastructure as Code giúp các tổ chức có thể giảm thiểu rủi ro liên quan đến cài đặt hạ tầng, đảm bảo tính nhất quán trong việc triển khai. Infrastructure as Code cho phép các nhóm thực hiện kiểm tra tự động, đảm bảo rằng hạ tầng đang hoạt động chính xác và ổn định. Sự hỗ trợ của Infrastructure as Code giúp đảm bảo tính toàn vẹn và độ tin cậy cho hạ tầng công nghệ thông tin.