Chúng tôi đang chạy vào một cuộc tranh cãi thú vị và rơi vào hai phe. Tôi quan tâm đến bất kỳ vấn đề cụ thể nào với ý tưởng hoặc vấn đề mà chúng tôi có thể thiếu. Thực sự, bất cứ điều gì có thể giúp chúng tôi đưa ra quyết định hoặc chỉ ra những điều chúng tôi không hạch toán. Tôi biết điều này theo quy tắc "không có ý kiến" một chút chặt chẽ nhưng tôi hy vọng nó vẫn là một câu hỏi chấp nhận được. Xin lỗi về chiều dài là tốt, có một chút sắc thái.
1) Một bên (của tôi - tôi không phải không có thành kiến) thấy mô hình máy chủ bất biến rất thú vị cho các hệ thống đám mây. Cuối cùng, chúng tôi đã chuyển mẫu tất cả các thành phần cơ sở hạ tầng của mình sang Docker. Các ứng dụng tùy chỉnh của chúng tôi xây dựng thông qua Jenkins trực tiếp thành hình ảnh Docker triển khai đến Docker Registry cục bộ. Sau đó, chúng tôi đã tạo ra một tập hợp lớn các vai trò Ansible và một playbook có khả năng tiếp cận với một máy chủ trống, cài đặt Docker và sau đó bảo Docker cài đặt tất cả các container khi cần. Sau một vài phút, toàn bộ ứng dụng và tất cả các cơ sở hạ tầng hỗ trợ của nó được nối dây và hoạt động - ghi nhật ký, giám sát, tạo / dân số cơ sở, v.v. Máy hoàn thành là một môi trường QA hoặc dev khép kín với một bản sao chính xác của ứng dụng. Kế hoạch của chúng tôi để mở rộng quy mô này sẽ là tạo Playbook mới để xây dựng các máy chủ AWS mới từ một AMI cơ sở đáng tin cậy (có thể là một hình ảnh rất trần trụi), triển khai ứng dụng sản xuất để xử lý quản lý và phát hành cấu hình và thường không bao giờ chỉnh sửa máy chủ nữa - chỉ cần làm cho họ một lần nữa Tôi không quan tâm đến việc có được những gì tôi mô tả làm việc trong thực tế - chỉ khi đó là một mô hình hợp lý.
2) Trại khác muốn sử dụng Puppet để xử lý quản lý cấu hình, Ansible để triển khai các ứng dụng tùy chỉnh của chúng tôi là tarball được tạo từ quá trình xây dựng của chúng tôi, Foreman để xử lý toàn bộ quá trình kích hoạt và quản lý quy trình và Katello để thực hiện một số lượng cơ sở quản lý hình ảnh. Các bản phát hành sẽ liên quan đến việc thay đổi cấu hình rối khi cần thiết và Ansible triển khai các thành phần được cập nhật với một số lượng phối hợp Foreman. Máy chủ sẽ được xây dựng một cách hợp lý nhanh chóng nếu chúng ta cần những cái mới nhưng mục đích không phải là biến chúng thành một phần của quy trình chuẩn. Điều này gần với mô hình máy chủ phượng hơn mặc dù có tuổi thọ cao.
Vì vậy, câu hỏi của tôi thực sự đi đến vấn đề này: mô hình máy chủ bất biến với các công cụ như tôi đã mô tả ở trên có thực sự như thực tế như nó xuất hiện không? Tôi thích ý tưởng rằng quy trình dàn dựng của chúng tôi thực sự có thể xây dựng toàn bộ bản sao của các ứng dụng trực tiếp, hãy để QA đập nó, sau đó chỉ cần lật bộ lưu trữ cơ sở dữ liệu và một số cài đặt DNS để làm cho nó hoạt động.
Hay mô hình máy chủ bất biến thất bại trong thực tế? Chúng tôi có nhiều kinh nghiệm với cả môi trường AWS và đám mây nên điều đó không thực sự đáng lo ngại - vấn đề là làm thế nào để có được một ứng dụng hợp lý tinh vi được triển khai một cách đáng tin cậy trong tương lai. Điều này được quan tâm đặc biệt vì chúng tôi phát hành khá thường xuyên.
Chúng tôi có Ansible làm hầu hết mọi thứ cần thiết ngoại trừ thực sự tạo máy chủ EC2 cho chúng tôi và điều đó không khó. Tôi đang gặp khó khăn để hiểu lý do tại sao bạn thực sự CẦN Puppet / Foreman / Katello trong mô hình này. Docker sạch sẽ và đơn giản hơn nhiều so với các kịch bản triển khai tùy chỉnh trong thực sự bất kỳ công cụ nào ngoài đó mà tôi có thể nói. Ansible dường như sử dụng đơn giản hơn nhiều so với Puppet khi bạn ngừng lo lắng về việc phải cấu hình chúng tại chỗ và chỉ cần xây dựng lại chúng với cấu hình mới. Tôi là người hâm mộ hiệu trưởng KISS - đặc biệt là tự động hóa nơi Luật Murphy hoạt động rầm rộ. Càng ít máy móc thì IMO càng tốt.
Bất kỳ suy nghĩ / ý kiến hoặc đề xuất về cách tiếp cận sẽ được đánh giá rất cao!