8.0 Giới thiệu Phần 8: Tự động hóa
Phần mềm chỉ tạo giá trị khi nó đến tay người dùng. Con đường từ một thay đổi đã commit đến mã chạy trong môi trường sản xuất là nơi các tổ chức lớn thường đánh mất tốc độ, sự an toàn và cả sự tỉnh táo. Ở quy mô hàng trăm kỹ sư, hàng chục đội và hàng nghìn tài nguyên hạ tầng, những thói quen không chính thức hiệu quả với một nhóm nhỏ sụp đổ hoàn toàn. Bản dựng thủ công, máy chủ cấu hình bằng tay và tập lệnh triển khai dùng một lần làm bạn chậm lại, và tệ hơn, chúng trở nên không lặp lại được, không có tài liệu và không thể kiểm toán. Phần này nói về việc thay sự mong manh đó bằng tự động hóa: biến công việc lộn xộn, dễ lỗi của dựng, cung cấp, triển khai và vận hành phần mềm thành các hệ thống được mã hóa, lặp lại được, rà soát được.
Rủi ro với các đội lớn, và với tổ chức doanh nghiệp và chính phủ, là cụ thể. Khi nhiều đội dùng chung các hệ thống chồng lấn, chi phí của tích hợp thủ công và vận hành thủ công tăng phi tuyến, và một thay đổi chưa rà soát duy nhất có thể lặng lẽ làm hỏng công việc của đội khác hoặc cả một bản phát hành. Các tổ chức chịu quy định gánh thêm một gánh nặng. Kiểm toán viên, cán bộ bảo mật và cơ quan quản lý cần bằng chứng rằng thay đổi đã được rà soát, kiểm thử và phê duyệt, và rằng hiện vật chạy trong môi trường sản xuất chính là hiện vật đã được dựng và thẩm định. Tự động hóa là thứ biến những nghĩa vụ tuân thủ này từ gánh nặng giấy tờ thành sản phẩm phụ tự động của quy trình kỹ thuật bình thường. Bạn chuyển từ bắt vi phạm sau sự việc sang ngăn chúng trước khi bất cứ thứ gì được cung cấp hay phát hành.
Phần 8 đi theo bộ máy phân phối từ đầu đến cuối: từ đường ống tích hợp và phát hành mã, qua hạ tầng được mã hóa nó chạy trên, đến nền tảng container lưu trữ nó, nền tảng nội bộ làm tất cả những điều này dùng được cho các đội bình thường, và tự động hóa giữ chất lượng và kiểm soát không sụp đổ dưới quy mô. Mạch xuyên suốt đơn giản. Bất cứ thứ gì bạn làm lặp đi lặp lại và khả đoán nên được mã hóa, để nó chạy nhất quán, nhanh chóng và không cần lao động nhàm chán của con người.
Các chương trong phần này
8.1 CI/CD và phân phối: Xây dựng đường ống tự động tích hợp mọi thay đổi vào nhánh chính dùng chung, kiểm thử nó, và giữ nó ở trạng thái triển khai được, để phát hành trở thành một quyết định kinh doanh an toàn thay vì một cuộc chạy vạy kỹ thuật, và là một quyết định kiểm toán được.
8.2 Hạ tầng dưới dạng mã và cấu hình: Xác định và cung cấp hạ tầng qua các định nghĩa đọc được bằng máy, có phiên bản, rà soát được thay vì nhấp chuột thủ công, để môi trường nhất quán, tái lập được và dùng một lần, với quy tắc quản trị được nhúng và kiểm tra trước khi bất cứ thứ gì tồn tại.
8.3 Container, điều phối và cloud-native: Đóng gói ứng dụng cùng phụ thuộc của chúng thành các đơn vị di động, cô lập và chạy chúng ở quy mô trên các nền tảng điều phối như Kubernetes, trao cho nhiều đội một nền chung để triển khai, co giãn và phục hồi, trong khi quản trị nguồn gốc, cô lập và chi phí.
8.4 Kỹ thuật nền tảng và trải nghiệm lập trình viên: Xây dựng và vận hành một nền tảng lập trình viên nội bộ cung cấp các con đường vàng tự phục vụ, được chọn lọc (các tuyến có chính kiến, được hỗ trợ với mặc định hợp lý được nướng vào), hấp thụ độ phức tạp dùng chung để các đội tập trung vào miền của mình trong khi thừa hưởng theo mặc định tiêu chuẩn của tổ chức về bảo mật, độ tin cậy và tuân thủ.
8.5 Tự động hóa kiểm thử và quy trình: Thay công việc kiểm thử và vận hành thủ công lặp đi lặp lại bằng quy trình đáng tin cậy do máy thực thi, từ bộ kiểm thử liên tục đến sổ tay vận hành, khắc phục và thu thập bằng chứng tuân thủ, để chất lượng và kiểm soát mở rộng và các kỹ sư có kỹ năng được giải phóng cho các vấn đề đòi hỏi phán đoán.
8.6 Quản lý phát hành và phân phối tăng dần: Tách triển khai khỏi phát hành để việc phát hành mã tách biệt với việc phơi bày một tính năng, và tung thay đổi dần dần bằng cờ tính năng, triển khai canary và xanh-lam, kiểm tra sức khỏe và hoàn tác tự động, và phát hành được chặn cổng bởi ngân sách lỗi, thu nhỏ bán kính ảnh hưởng của bất kỳ thay đổi nào.
8.7 Hệ thống xây dựng và quản lý artifact: Làm bản dựng tái lập được, nhanh và lưu đệm được, và coi artifact là bất biến, có phiên bản và được ký, dựng một lần và thăng cấp qua các môi trường với nguồn gốc và tính toàn vẹn chuỗi cung ứng.
Các chương này liên hệ với nhau thế nào
Các chương này mô tả các lớp của một hệ thống phân phối duy nhất, mỗi lớp dựa trên những lớp bên dưới. Tích hợp liên tục và phân phối liên tục (CI/CD, chương 8.1) là mô liên kết mang thay đổi từ commit đến môi trường sản xuất. Nhưng một đường ống cần thứ gì đó để triển khai lên, và hạ tầng dưới dạng mã (8.2) cung cấp đích đó dưới dạng định nghĩa có phiên bản, tái lập được thay vì những bông tuyết thủ công. Container và điều phối (8.3) là nền tảng thời gian chạy mà cả đường ống lẫn hạ tầng được mã hóa ngày càng giả định, cho mọi đội một hợp đồng đóng gói và triển khai nhất quán. Kỹ thuật nền tảng (8.4) rồi bọc tất cả những điều này thành một sản phẩm nội bộ mạch lạc, để các đội bình thường dùng đường ống, hạ tầng và điều phối qua những con đường lát sẵn thay vì lắp ráp từ đầu. Tự động hóa kiểm thử và quy trình (8.5) chạy qua mọi lớp, nhúng cổng chất lượng vào đường ống và mã hóa công việc vận hành và tuân thủ giữ cả hệ sinh thái khỏe mạnh. Một điểm yếu ở bất kỳ lớp nào làm suy yếu các lớp phía trên. Một đường ống mong manh, một môi trường bông tuyết, hay một nền tảng không được quản trị mỗi thứ đều tái đưa vào đúng rủi ro thủ công mà tự động hóa tồn tại để loại bỏ.
Phần này cũng kết nối ra ngoài. Kỷ luật phân phối ở đây là sự hiện thực hóa kỹ thuật của tư duy luồng và đường ống phân phối trong Phần 11, đặc biệt chương 11.2, và nó phụ thuộc vào cùng động lực hàng đợi chi phối bất kỳ hệ thống thông lượng cao nào. Những gì các chương này xây nhằm để được vận hành, nên chúng dẫn thẳng vào vận hành và độ tin cậy trong Phần 9 (kỹ thuật độ tin cậy site trong chương 9.1 và khả năng quan sát trong chương 9.2), xử lý hệ thống đang chạy mà tự động hóa triển khai. Các chủ đề quản trị và tuân thủ-dưới-dạng-mã xuyên suốt Phần 8 thỏa mãn các ràng buộc bảo mật và quy định đặt ra ở nơi khác trong cẩm nang, và các nền tảng được mô tả ở đây cũng là nơi khối lượng công việc AI và dữ liệu ngày càng chạy, nối phần này với các mối quan tâm MLOps (vận hành học máy) và hạ tầng trong Phần 6. Đọc cùng nhau, các chương này cho thấy một tổ chức lớn phát hành phần mềm nhanh chóng thế nào mà không từ bỏ sự an toàn, nhất quán hay kiểm soát.