DevOps - это домашние животные на ваших серверах, коровы или муравьи?

Развивающиеся программные платформы и их потребности в обслуживании можно сравнить с тремя типами животных, которые имеют все более высокий уровень автономии и самообслуживания.

Создаваемые вами программные платформы требуют определенных усилий, которые меняются по мере усложнения. Если вы будете следовать гибким процессам и сделать их все более автоматизированными, ваши платформы потребуют меньше работы, поскольку они эволюционируют от одного сервера к множеству, а затем к ферме серверов. Чтобы создать общую картину того, как выглядят эти изменения, в этой статье сравниваются потребности каждого уровня разработки платформы для трех типов животных: домашних животных, коров и колоний муравьев.

Развитие сервера

Серверы развивающейся платформы также должны развиваться и масштабироваться с течением времени. Маленькие приложения запускаются с одного сервера. Если ваша платформа растет, она расширяется и включает несколько серверов. Если вы создадите сложную, хорошо спроектированную платформу DevOps, вы получите ферму серверов. В процессе роста ваши серверы развиваются от поведения домашних животных (кошек или собак) до поведения крупного рогатого скота и, наконец, до муравьиной колонии. Это сравнение может показаться безумным, но, когда вы продолжите читать, оно будет иметь смысл.

Собака - один официант -

Вначале у вас, вероятно, есть только один сервер. У него может быть понятное имя, например «myplatform-production». И вы, вероятно, уделите ему много внимания, например, настройте все детали и убедитесь, что он работает хорошо. Этот сервер находится в фазе питомца. Вы быстро узнаете его по названию, и ему нужно много любви. Если возникнут какие-либо проблемы, вам придется немедленно проверить, что не так, и попытаться исправить. Это как иметь собаку и отвечать за ее кормление, здоровье и эмоциональные потребности.

Если быть более конкретным, вы подключитесь к своему серверу с помощью SSH, загрузите последний код и убедитесь, что все работает без сбоев. Вы даже можете использовать PaaS (платформу как услугу), например Heroku. Может быть, вы хотите создать сценарии для автоматизации отдельных частей этого процесса, но это по-прежнему требует большой любви и часто вас будут звать из-за того, что сервер не работает (вероятно, из-за нехватки памяти из-за больших файлов журналов).

Крупный рогатый скот - много серверов

После того, как вы немного масштабируете платформу, вы больше не сможете обращаться с ней как с собакой. Возможно, вам понадобится несколько сред, и вы дадите им более общие имена. Вы не будете называть свой сервер его именем (может быть, просто значимым ярлыком), и вам придется создать инструменты для автоматизации большей части работы. Должно быть проще настроить новый сервер или обновить существующий. Теперь, когда у вас есть несколько серверов, вы будете относиться к ним как к крупному рогатому скоту. Вы не дадите им столько любви, и вам потребуются механизмы и автоматизация, чтобы о них позаботиться. Если бы они были крупным рогатым скотом, вам потребовались бы близкий источник воды, трава и зерно, чтобы они могли кормиться, и, возможно, пастушья собака. Они сами себя кормят и поят, поэтому некоторая работа выполняется автоматически, но вам все равно нужно выполнять некоторую работу и присматривать за ними. Эта степень внимания и любви аналогична тому, что нужно вашим серверам, когда вы достигнете определенного уровня автоматизации.

Если вы достигли этого уровня, у вас есть автоматизированный процесс развертывания, мониторы работоспособности серверов и ваша платформа, вероятно, по-прежнему будет работать после сбоя оборудования (или, по крайней мере, автоматически восстановиться через несколько минут). В идеале вы используете контейнеры и оркестровку (докеры, Kubernetes), у вас есть надежная архитектура с несколькими компонентами (централизованное ведение журнала, например стек ELK, облачная база данных, например Amazon RDS) и балансировщики нагрузки. Вы будете гордиться своим сервером непрерывной интеграции, а ваша платформа довольно устойчива к сбоям.

Колония муравьев - серверная ферма

В конечном итоге ваша цель - создать ферму серверов, которые работают как колония муравьев. Вы не даете им никакой любви, у них нет имен, которые вы узнаете, и они могут выжить, что бы ни случилось. Вам не нужно беспокоиться о необходимых ресурсах, потому что колония муравьев решает свои собственные проблемы. Этот тип эффективной среды автоматически масштабируется и выдерживает бедствия. Создание самоуправляемой скоординированной платформы помогает гарантировать долгосрочную работу вашей системы.

На этом этапе вы управляете всей своей инфраструктурой автоматически, от кода до производства. Вы интенсивно использовали Terraform или Ansible, и любые изменения - скажем, обновление пакета Linux на сотнях серверов - могут быть организованы с помощью инструментов. В вашем приложении есть уровень автоматизации тестирования и управления конвейером, который приведет вас к среде CI / CD, которая автоматически управляет, создает, уничтожает и продвигает несколько сред по запросу на основе требований непрерывного мониторинга и масштабируемости.

Поздравляю! Вы сделали это! Теперь дождитесь следующего сбоя, бреши в безопасности или проблемы с масштабируемостью, чтобы заново спроектировать, воссоздать и трансформировать свой бизнес. Всегда помните, что разработка программного обеспечения гибкая.

Пример колонии муравьев

Отличный пример - Netflix. Платформа запускает Chaos Monkey, который случайным образом завершает экземпляры виртуальных машин и контейнеры, работающие в производственной среде Netflix. Как пользователь, вы не заметите, как эта сумасшедшая программа произвольно завершает работу рабочих серверов. Сложные системы, поддерживающие такие платформы, как Netflix, должны быть устойчивыми по своей конструкции. Они должны быть построены как колония муравьев.

Наука о муравьях

Коммуникационные пути и пищевое поведение колоний муравьев вдохновили алгоритм Ant Colony System [Dorigo1996a] [Gambardella1995], который вдохновил автоматизированное компьютерное программирование. Программирование колонии муравьев автоматически создает компьютерные программы исходя из указанных вами целей.

Ваша долгосрочная цель DevOps - заставить ваши серверы работать с автоматизированной наукой о муравьях.

Подпишитесь на нас в Twitter 🐦 и Facebook 👥 и присоединитесь к нашей группе Facebook 💬 .

Чтобы присоединиться к нашему сообществу Slack 🗣️ и читать наши еженедельные темы о Фавнах 🗞️, нажмите здесь⬇

Если этот пост был полезен, пожалуйста, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору! ⬇