Cơ sở hạ tầng bất biến là gì?
Trong cơ sở hạ tầng server có thể thay đổi truyền thống, các server liên tục được cập nhật và sửa đổi tại chỗ. Các kỹ sư và administrator làm việc với loại cơ sở hạ tầng này có thể SSH vào server của họ, nâng cấp hoặc hạ cấp các gói theo cách thủ công, chỉnh sửa file cấu hình trên cơ sở từng server và triển khai mã mới trực tiếp trên các server hiện có. Nói cách khác, các server này có thể thay đổi được; chúng có thể được thay đổi sau khi chúng được tạo. Cơ sở hạ tầng bao gồm các server có thể thay đổi được có thể được gọi là cơ sở hạ tầng có thể thay đổi, truyền thống hoặc (chê bai) tận thu.Cơ sở hạ tầng bất biến là một mô hình cơ sở hạ tầng khác, trong đó các server không bao giờ được sửa đổi sau khi chúng được triển khai. Nếu điều gì đó cần được cập nhật, sửa chữa hoặc sửa đổi theo bất kỳ cách nào, các server mới được xây dựng từ một hình ảnh chung với các thay đổi thích hợp sẽ được cung cấp để thay thế các server cũ. Sau khi chúng được xác nhận, chúng sẽ được đưa vào sử dụng và những cái cũ sẽ ngừng hoạt động.
Những lợi ích của cơ sở hạ tầng bất biến bao gồm tính nhất quán và độ tin cậy cao hơn trong cơ sở hạ tầng của bạn và quy trình triển khai đơn giản hơn, dễ dự đoán hơn. Nó giảm thiểu hoặc ngăn chặn hoàn toàn các vấn đề thường gặp trong cơ sở hạ tầng có thể thay đổi, như trôi dạt cấu hình và server bông tuyết. Tuy nhiên, sử dụng nó một cách hiệu quả thường bao gồm tự động hóa triển khai toàn diện, cung cấp server nhanh trong môi trường điện toán cloud và các giải pháp để xử lý dữ liệu trạng thái hoặc tạm thời như log .
Phần còn lại của bài viết này sẽ:
- Giải thích sự khác biệt về khái niệm và thực tế giữa cơ sở hạ tầng có thể thay đổi và bất biến
- Mô tả những lợi thế của việc sử dụng một cơ sở hạ tầng bất biến và ngữ cảnh hóa các phức tạp
- Cung cấp tổng quan cấp cao về chi tiết triển khai và các thành phần cần thiết cho một cơ sở hạ tầng bất biến
Sự khác biệt giữa cơ sở hạ tầng có thể thay đổi và bất biến
Sự khác biệt cơ bản nhất giữa cơ sở hạ tầng có thể thay đổi và bất biến là ở policy trung tâm của chúng: các thành phần của cơ sở hạ tầng trước đây được thiết kế để thay đổi sau khi triển khai; các thành phần của cái sau được thiết kế để không thay đổi và cuối cùng được thay thế. Hướng dẫn này tập trung vào các thành phần đó như là server , nhưng có những cách khác để triển khai cơ sở hạ tầng bất biến, như với các containers , áp dụng các khái niệm cấp cao tương tự.
Để đi sâu hơn, có cả sự khác biệt thực tế và khái niệm giữa cơ sở hạ tầng có thể thay đổi và bất biến dựa trên server .
Nói về mặt khái niệm, hai loại cơ sở hạ tầng khác nhau rất nhiều trong cách tiếp cận của chúng đối với cách xử lý server (ví dụ: được tạo, duy trì, cập nhật, phá hủy). Điều này thường được minh họa bằng phép tương tự "vật nuôi so với gia súc".
Thực tế mà nói, cơ sở hạ tầng có thể thay đổi là một mô hình cơ sở hạ tầng cũ hơn nhiều so với các công nghệ cốt lõi, như ảo hóa và điện toán cloud , giúp cho các cơ sở hạ tầng bất biến trở nên khả thi và thực tế. Biết được lịch sử này sẽ giúp bối cảnh hóa sự khác biệt về khái niệm giữa hai loại và ý nghĩa của việc sử dụng cái này hay cái kia trong cơ sở hạ tầng hiện đại.
Hai phần tiếp theo sẽ nói chi tiết hơn về những khác biệt này.
Sự khác biệt thực tế: Embracing the Cloud
Trước khi ảo hóa và điện toán cloud trở nên khả thi và phổ biến rộng rãi, cơ sở hạ tầng server tập trung xung quanh các server vật lý. Những server vật lý này rất tốn kém và tốn thời gian để tạo ra; cài đặt ban đầu có thể mất nhiều ngày hoặc nhiều tuần vì mất bao lâu để đặt hàng phần cứng mới, cấu hình máy, và sau đó cài đặt nó trong một colo hoặc vị trí tương tự.
Cơ sở hạ tầng có thể thay đổi được kế thừa từ đây. Bởi vì chi phí thay thế một server rất cao, nên thực tế nhất là tiếp tục sử dụng các server bạn đã chạy càng lâu càng tốt với thời gian ngừng hoạt động càng ít càng tốt.Điều này nghĩa là có rất nhiều thay đổi tại chỗ đối với các bản cập nhật và triển khai thường xuyên, cũng như các bản sửa lỗi, chỉnh sửa và bản vá đặc biệt khi có sự cố. Hệ quả của việc thay đổi thủ công thường xuyên là các server có thể trở nên khó sao chép, khiến mỗi server trở thành một thành phần duy nhất và mong manh của cơ sở hạ tầng tổng thể.
Sự ra đời của ảo hóa và điện toán cloud / theo yêu cầu đại diện cho một bước ngoặt trong kiến trúc server . Server ảo ít tốn kém hơn, thậm chí ở quy mô lớn và chúng có thể được tạo và phá hủy trong vài phút thay vì vài ngày hoặc vài tuần. Điều này lần đầu tiên có thể thực hiện các quy trình triển khai mới và kỹ thuật quản lý server , như sử dụng quản lý cấu hình hoặc API cloud để cung cấp các server mới một cách nhanh chóng, theo chương trình và tự động. Tốc độ và chi phí thấp của việc tạo các server ảo mới là điều làm cho nguyên tắc bất biến trở nên thực tế.
Cơ sở hạ tầng có thể thay đổi truyền thống ban đầu được phát triển khi việc sử dụng các server vật lý quyết định những gì có thể trong quản lý của chúng và tiếp tục phát triển khi công nghệ được cải thiện theo thời gian. Mô hình sửa đổi server sau khi triển khai vẫn còn phổ biến trong cơ sở hạ tầng ngày nay. Ngược lại, các cơ sở hạ tầng bất biến được thiết kế ngay từ đầu để dựa trên các công nghệ dựa trên ảo hóa để cung cấp nhanh các thành phần kiến trúc, như server ảo của điện toán cloud .
Sự khác biệt về khái niệm: Thú cưng vs Gia súc, Bông tuyết vs Phượng hoàng
Thay đổi khái niệm cơ bản mà điện toán cloud nâng cao là server có thể được coi là dùng một lần. Việc xem xét loại bỏ và thay thế các server vật lý là hoàn toàn không thực tế, nhưng với các server ảo, việc này không chỉ khả thi mà còn dễ dàng và hiệu quả.
Các server trong cơ sở hạ tầng có thể thay đổi được truyền thống là những hệ thống không thể thay thế, duy nhất luôn phải chạy. Theo cách này, chúng giống như những con vật cưng: có một không hai, không thể bắt chước và được chăm sóc bằng tay. Mất một người có thể rất tàn khốc. Mặt khác, các server trong cơ sở hạ tầng bất biến, dùng một lần và dễ sao chép hoặc mở rộng quy mô bằng các công cụ tự động. Theo cách này, chúng giống như gia súc: một trong số nhiều con trong đàn mà không có cá thể nào là duy nhất hoặc không thể thiếu.
Để trích dẫn Randy Bias , người đầu tiên áp dụng sự tương tự giữa vật nuôi và gia súc vào điện toán cloud :
Theo cách làm cũ, ta coi server của bạn như thú cưng, chẳng hạn như server thư Bob. Nếu Bob đi xuống, tất cả đều đã sẵn sàng. Giám đốc điều hành không thể nhận được email của bạn và đó là ngày tận thế. Theo cách mới, các server được đánh số, giống như gia súc trong đàn. Ví dụ: www001 thành www100. Khi một server gặp sự cố, nó sẽ được gỡ bỏ, bắn và thay thế trên đường truyền.
Một cách tương tự khác để minh họa ý nghĩa của sự khác biệt giữa cách server được xử lý với khái niệm server bông tuyết và server phượng hoàng.
Server Snowflake tương tự như vật nuôi. Chúng là những server được quản lý bằng tay, thường xuyên được cập nhật và chỉnh sửa tại chỗ, dẫn đến một môi trường độc đáo. Server Phoenix tương tự như trâu bò. Chúng là những server luôn được xây dựng từ đầu và dễ dàng tạo lại (hoặc “trỗi dậy từ đống tro tàn”) thông qua các quy trình tự động.
Cơ sở hạ tầng bất biến được tạo ra gần như hoàn toàn bằng server gia súc hoặc phượng hoàng, trong khi cơ sở hạ tầng có thể thay đổi cho phép một số (hoặc nhiều) vật nuôi hoặc server bông tuyết.Phần tiếp theo thảo luận về ý nghĩa của cả hai.
Ưu điểm của cơ sở hạ tầng bất biến
Để hiểu được những ưu điểm của cơ sở hạ tầng bất biến, cần phải bối cảnh hóa những nhược điểm của cơ sở hạ tầng có thể thay đổi.
Server trong cơ sở hạ tầng có thể thay đổi có thể bị trôi dạt cấu hình, đó là khi những thay đổi ngẫu nhiên, không có tài liệu khiến cấu hình của server ngày càng khác biệt với nhau và với cấu hình đã được xem xét, phê duyệt và triển khai ban đầu. Những server ngày càng giống như bông tuyết này rất khó để tái tạo và thay thế, khiến những việc như mở rộng quy mô và khôi phục sau các sự cố trở nên khó khăn. Ngay cả việc nhân rộng các vấn đề để gỡ lỗi chúng cũng trở nên khó khăn vì khó tạo môi trường dàn dựng phù hợp với môi trường production .
Tầm quan trọng hoặc sự cần thiết của các cấu hình khác nhau của server trở nên không rõ ràng sau nhiều lần sửa đổi thủ công, vì vậy việc cập nhật hoặc thay đổi bất kỳ cấu hình nào trong số đó có thể có tác dụng phụ ngoài ý muốn. Ngay cả trong trường hợp tốt nhất, việc áp dụng các thay đổi đối với hệ thống hiện có cũng không được đảm bảo hoạt động, nghĩa là các triển khai dựa vào đó có nguy cơ thất bại hoặc đưa server vào trạng thái không xác định.
Với suy nghĩ này, lợi ích chính của việc sử dụng cơ sở hạ tầng bất biến là sự đơn giản khi triển khai, độ tin cậy và tính nhất quán, tất cả cuối cùng đều giảm thiểu hoặc loại bỏ nhiều điểm khó khăn và điểm thất bại phổ biến.
Trạng thái server tốt đã biết và ít lỗi triển khai hơn
Tất cả các triển khai trong một cơ sở hạ tầng bất biến được thực thi bằng cách cung cấp các server mới dựa trên hình ảnh được kiểm soát và xác thực theo version . Kết quả là, các triển khai này không phụ thuộc vào trạng thái trước đó của server và do đó không thể thất bại - hoặc chỉ hoàn thành một phần - vì nó.
Khi các server mới được cung cấp, chúng có thể được kiểm tra trước khi đưa vào sử dụng, giảm quá trình triển khai thực tế thành một bản cập nhật duy nhất để cung cấp server mới, giống như cập nhật bộ cân bằng tải. Nói cách khác, các triển khai trở thành nguyên tử : hoặc chúng hoàn thành hoặc không có gì thay đổi.
Điều này làm cho việc triển khai tin cậy hơn nhiều và cũng đảm bảo trạng thái của mọi server trong cơ sở hạ tầng luôn được biết. Ngoài ra, quá trình này giúp bạn dễ dàng triển khai màu xanh lam hoặc bản phát hành luân phiên , nghĩa là không có thời gian chết.
Không có cấu hình trôi dạt hoặc server bông tuyết
Tất cả các thay đổi cấu hình trong cơ sở hạ tầng không thay đổi được thực hiện bằng cách kiểm tra hình ảnh cập nhật vào kiểm soát version với tài liệu và sử dụng quy trình triển khai tự động, thống nhất để triển khai các server thay thế bằng hình ảnh đó. Quyền truy cập của Shell vào các server đôi khi bị hạn chế hoàn toàn.
Điều này ngăn các cài đặt phức tạp hoặc khó tái tạo bằng cách loại bỏ nguy cơ server bông tuyết và trôi cấu hình. Điều này cũng ngăn ngừa các tình huống mà ai đó cần sửa đổi server production chưa được hiểu rõ, server này có nguy cơ cao xảy ra lỗi và gây ra thời gian chết hoặc hành vi không mong muốn.
Môi trường dàn dựng nhất quán và dễ dàng mở rộng theo chiều ngang
Bởi vì tất cả các server sử dụng cùng một quy trình tạo, không có trường hợp cạnh triển khai. Điều này ngăn chặn các môi trường dàn dựng lộn xộn hoặc không nhất quán bằng cách làm cho việc sao chép môi trường production trở nên tầm thường và cũng đơn giản hóa quy mô theo chiều ngang bằng cách cho phép bạn thêm nhiều server giống hệt nhau hơn vào cơ sở hạ tầng của bạn .
Quy trình khôi phục và khôi phục đơn giản
Sử dụng kiểm soát version để lưu giữ lịch sử hình ảnh cũng giúp xử lý các vấn đề về production . Quy trình tương tự được sử dụng để triển khai hình ảnh mới cũng được dùng để quay trở lại các version cũ hơn, bổ sung thêm khả năng phục hồi và giảm thời gian khôi phục khi xử lý thời gian chết.
Chi tiết triển khai cơ sở hạ tầng bất biến
Cơ sở hạ tầng bất biến đi kèm với một số yêu cầu và sắc thái trong chi tiết triển khai của nó, đặc biệt là so với cơ sở hạ tầng có thể thay đổi truyền thống.
Về mặt kỹ thuật, có thể triển khai một cơ sở hạ tầng bất biến độc lập với bất kỳ nguyên tắc tự động hóa, công cụ hoặc thiết kế phần mềm nào bằng cách chỉ cần tuân theo nguyên tắc chính là bất biến. Tuy nhiên, các thành phần dưới đây (gần đúng theo thứ tự ưu tiên) được khuyến khích thực hiện trên quy mô lớn:
Server trong môi trường điện toán cloud hoặc một môi trường ảo hóa khác ( như containers , mặc dù điều đó thay đổi một số yêu cầu khác bên dưới). Key ở đây là có các version riêng biệt với cấp phép nhanh chóng từ hình ảnh tùy chỉnh, cũng như quản lý tự động để tạo và hủy thông qua API hoặc tương tự.
Tự động hóa hoàn toàn toàn bộ quy trình triển khai của bạn , lý tưởng là bao gồm xác thực hình ảnh sau khi tạo. Việc cài đặt tự động hóa này làm tăng thêm đáng kể chi phí trả trước của việc triển khai cơ sở hạ tầng này, nhưng đó là chi phí một lần được phân bổ nhanh chóng.
Kiến trúc hướng dịch vụ , tách cơ sở hạ tầng của bạn thành các đơn vị rời rạc theo module , hợp lý giao tiếp qua mạng. Điều này cho phép bạn tận dụng tối đa các dịch vụ của điện toán cloud , vốn hướng tới dịch vụ tương tự (ví dụ: IaaS, PaaS).
Một lớp ứng dụng không trạng thái , dễ bay hơi bao gồm các server bất biến của bạn. Mọi thứ ở đây đều có thể bị phá hủy và xây dựng lại nhanh chóng bất cứ lúc nào (dễ bay hơi) mà không mất dữ liệu (không trạng thái).
Lớp dữ liệu liên tục bao gồm:
- Ghi log tập trung với các chi tiết bổ sung về việc triển khai của server , như nhận dạng hình ảnh thông qua một version hoặc Git commit SHA. Bởi vì server dùng một lần (và thường xuyên được xử lý) trong cơ sở hạ tầng này, việc lưu trữ log và số liệu bên ngoài cho phép gỡ lỗi ngay cả khi quyền truy cập shell bị hạn chế hoặc sau khi server bị phá hủy.
- Lưu trữ dữ liệu bên ngoài cho database và bất kỳ dữ liệu trạng thái hoặc tạm thời nào khác, như DBaaS / database cloud vàlưu trữ đối tượng hoặc khối (do cloud cung cấp hoặc tự quản lý). Bạn không thể dựa vào bộ nhớ local khi server dễ bay hơi, vì vậy bạn cần lưu trữ dữ liệu đó ở nơi khác.
Sự tận tâm từ các group kỹ thuật và vận hành để cộng tác và commit thực hiện phương pháp này. Vì tất cả sự đơn giản của sản phẩm cuối cùng, có rất nhiều bộ phận chuyển động trong một cơ sở hạ tầng không thể thay đổi và không ai có thể biết tất cả chúng. Ngoài ra, một số khía cạnh của hoạt động bên trong cơ sở hạ tầng này có thể là mới hoặc nằm ngoài vùng thoải mái của mọi người, như gỡ lỗi hoặc thực hiện các việc một lần mà không cần truy cập shell.
Có nhiều cách khác nhau để thực hiện từng thành phần này. Việc lựa chọn một phần lớn phụ thuộc vào sở thích và sự quen thuộc của cá nhân cũng như mức độ cơ sở hạ tầng mà bạn muốn tự xây dựng so với việc dựa vào dịch vụ trả phí.
Các công cụ CI / CD có thể là một nơi tốt để tham khảo cho quá trình tự động hóa đường ống triển khai; Soạn là một tùy chọn cho giải pháp DBaaS; rsyslog và ELK là những lựa chọn phổ biến để ghi log tập trung; Chaos Monkey của Netflix , giết chết ngẫu nhiên các server trong môi trường production của bạn, là một thử nghiệm thực sự cho cài đặt cuối cùng của bạn.
Kết luận
Bài viết này đề cập đến cơ sở hạ tầng bất biến là gì, sự khác biệt về khái niệm và thực tế giữa nó và cơ sở hạ tầng có thể thay đổi kiểu cũ hơn, lợi thế của việc sử dụng nó và chi tiết về việc triển khai nó.
Việc biết liệu bạn có nên cân nhắc chuyển sang một cơ sở hạ tầng bất biến có thể khó khăn hay không và không có ai xác định rõ ràng về điểm cắt hoặc điểm uốn. Một cách để bắt đầu là thực hiện một số phương pháp thiết kế được đề xuất trong bài viết này, như quản lý cấu hình, ngay cả khi bạn vẫn đang làm việc trong một môi trường có thể thay đổi lớn. Điều này sẽ giúp quá trình chuyển đổi sang tính bất biến dễ dàng hơn trong tương lai.
Nếu bạn có một cơ sở hạ tầng với hầu hết các thành phần ở trên và bạn thấy mình đang gặp phải các vấn đề về mở rộng quy mô hoặc cảm thấy thất vọng với sự rườm rà trong quá trình triển khai của bạn , thì đó có thể là thời điểm tốt để bắt đầu đánh giá xem tính bất biến có thể cải thiện cơ sở hạ tầng của bạn như thế nào.
Bạn có thể tìm hiểu thêm từ một số công ty (bao gồm Codeship , Chef , Koddi và Fugue ) đã viết về việc triển khai cơ sở hạ tầng bất biến của họ.
Các tin liên quan