Ми стикаємося з цікавим аргументом і потрапляємо в два табори. Мене цікавлять якісь конкретні проблеми, пов'язані з ідеєю, або ідеями, які можуть бути відсутніми. Дійсно, все, що може допомогти нам прийняти рішення або вказати на речі, які ми не обліковуємо. Я знаю, що в цій спідниці правило "без думки" є дещо ретельним, але я сподіваюся, що це все-таки прийнятне питання. Вибачте і за довжину, є неабиякий нюанс.
1) Одна сторона (моя - я не без упередженості) вважає незмінну модель сервера дуже цікавою для хмарних систем. З цією метою ми прототипували переміщення всіх компонентів нашої інфраструктури в Docker. Наші спеціальні програми створюються за допомогою Дженкінса безпосередньо в зображення Докера, які розгортаються в локальному реєстрі Докер. Тоді ми створили великий набір ролей Ansible та ігрову книжку, яка здатна вийти на порожній сервер, встановити Docker і потім сказати Docker встановити всі контейнери за потребою. Через пару хвилин весь додаток та вся його підтримуюча інфраструктура підключаються та працюють - ведення журналів, моніторинг, створення бази даних / популяція тощо. Готовий автомат - це автономне середовище QA або dev з точною копією застосування. Ми плануємо масштабувати це, щоб створити нові Playbooks для створення нових серверів AWS з базового надійного AMI (можливо, дуже голого зображення), робити прокатні виробничі програми для управління конфігурацією та випусками і, як правило, більше ніколи не редагувати сервери - просто зробіть їх заново. Мене не хвилює отримання того, що я описав, працюючи на практиці - лише якщо це розумна модель.
2) Інший табір хоче використовувати Puppet для управління конфігурацією, Ansible для розгортання наших користувацьких додатків, які є тарілками, згенерованими під час нашого процесу збирання, Foreman для обробки запуску та управління процесом в цілому і Katello для виконання деякої кількості бази управління зображеннями Випуски включатимуть необхідну зміну конфігурації ляльок та відповідне розгортання оновлених компонентів з деякою кількістю координації Foreman. Сервери будуть побудовані досить швидко, якби нам потрібні нові, але метою є не робити їх одноразовими як частину стандартного процесу. Це ближче до моделі сервера Phoenix, хоча з тривалим терміном експлуатації.
Тож моє запитання дійсно зводиться до цього: чи незмінна модель сервера з інструментами, як я описав їх вище, насправді настільки ж реалістична, як здається? Мені подобається думка, що наш процес постановки може буквально будувати весь клон додатків у прямому ефірі, нехай QA забиває його, а потім просто гортає сховище бази даних та деякі параметри DNS, щоб зробити це живим.
Або незмінна модель сервера виходить з ладу на практиці? Ми маємо великий досвід роботи як з AWS, так і з хмарними середовищами, тому це насправді не проблема - більше питання про те, як отримати досить складний додаток, надійно розгорнутесь вперед. Це викликає особливий інтерес, оскільки ми випускаємо досить часто.
У нас Ansible робить більшість необхідних речей, за винятком того, що насправді створює EC2-сервери для нас, і це не важко. У мене виникають проблеми з розумінням того, чому ви насправді НЕ потребуєте лялечки / бригадира / кателло у цій моделі. Докер набагато чистіший і простіший за спеціальні сценарії розгортання в будь-якому інструменті, про який я можу сказати. Відповідне здається набагато простішим у використанні, ніж Ляльковий, коли ви перестаєте турбуватися про необхідність налаштування їх на місці та просто побудувати їх заново з новою конфігурацією. Я шанувальник принципу KISS - особливо в галузі автоматизації, де розгульний закон Мерфі. Чим менше техніки, тим краще ІМО.
Будь-які думки / коментарі чи пропозиції щодо підходу були б вдячні!