Путеводитель CNCF по решениям Open Source (и не только) для cloud native

    8 марта фонд CNCF, созданный при The Linux Foundation, представил значительно обновлённую версию своей «карты ранее неизведанной территории облачных (cloud native) технологий» — Cloud Native Landscape 2.0. Собранная в рамках этого проекта информация ориентирована на компании, которые только начинают свой путь в мир инфраструктуры для cloud native-приложений, и призвана познакомить их с множеством имеющихся решений с открытым исходным кодом и не только.



    Путь к cloud native


    Для начала разберёмся, что же называют «cloud native» в фонде с созвучным названием (Cloud Native Computing Foundation). В понимании CNCF это приложения (и сопутствующая инфраструктура), которые наделены следующими свойствами:

    • возможность эксплуатации, т.е. управления жизненным циклом приложения/системы внешними инструментами;
    • возможность наблюдения, т.е. наличие механизмов получения текущего состояния и производительности;
    • эластичность, позволяющая увеличиваться и уменьшаться в размерах в рамках доступных ресурсов и в зависимости от меняющейся нагрузки;
    • отказоустойчивость, гарантирующая быстрое автоматическое восстановление в случае падений;
    • динамичность, включающая в себя быстрые развёртывания (деплой), итерации, изменения конфигурации.

    Введением во всё многообразие существующих продуктов, которые помогают приложениям соответствовать этим требованиям, служит следующее описание основных шагов на пути к cloud native (перевод см. под картинкой).



    Итак, рекомендуемый в CNCF Trail Map — процесс освоения облачной инфраструктуры — выглядит следующим образом:

    1. Контейнеризация. Обычно реализуется с помощью Docker. Упаковать в контейнеры можно приложения и их зависимости любого размера (хоть код для PDP-11, запускаемый в эмуляторе). Со временем рекомендуется разбивать на части существующие функции, а новые — реализовывать как микросервисы.
    2. CI/CD. Настройте непрерывную интеграцию и доставку (Continuous Integration / Continuous Delivery), чтобы изменения в исходном коде автоматически превращались в собранный с ними контейнер, тестировались и развёртывались на staging и в конечном счете, возможно, на production. Настройте автоматизированные выкаты, откаты и тестирование.
    3. Оркестровка. Выберите решение для оркестровки. Лидером рынка тут называется Kubernetes, а в качестве его дистрибутивов рекомендуются сертифицированные варианты.
    4. Наблюдение и анализ. Выберите решения для мониторинга, логирования, трассировки. Среди проектов CNCF — Prometheus (мониторинг), Fluentd (логирование), Jaeger (трассировка).
    5. Service mesh. Эти продукты решают вопросы взаимодействия между сервисами и их доступности извне (из интернета), в том числе — обнаружение сервисов, проверка их состояния, маршрутизация, балансировка нагрузки. CNCF предлагает Envoy, Linkerd и CoreDNS (мы также недавно писали про Conduit, который, впрочем, [пока что?] не числится в списке проектов CNCF).
    6. Сеть. Более гибкие сетевые возможности помогают обеспечить совместимые с CNI решения: Calico, Flannel, Weave Net.
    7. Распределённая база данных. Когда одной СУБД перестаёт хватать, для запуска MySQL в больших масштабах рекомендуется проект Vitess.
    8. Обмен сообщениями. Для достижения лучшей производительности, чем в случае JSON-REST, в CNCF предлагают попробовать gRPC.
    9. Исполняемая среда контейнеров (container runtime). Альтернативные среды для запуска контейнеров, совместимые с OCI, — containerd, rkt и CRI-O.
    10. Распространение ПО. Для безопасного распространения собираемого программного обеспечения можно задействовать Notary (мы писали о нём в конце этой статьи).

    Первые 3 пункта являются базовыми, а остальные — выполняются по усмотрению, в зависимости от ситуации.

    Cloud Native Landscape


    Сам же «ландшафт» — это довольно обширный каталог продуктов, не ограниченных проектами самой CNCF и даже свободными лицензиями (хотя большинство из них относятся к Open Source). Для удобства они разбиты по категориям:

    • Разработка приложений: базы данных и хранилища данных (Vitess, CockroachDB…), очереди (RabbitMQ, Kafka…), управление исходным кодом (GitLab, GitHub…), моделирование/определение приложений (Docker Compose, Bitnami…), непрерывная интеграция и доставка (GitLab Runner, Jenkins…);
    • Оркестровка и управление: планирование/оркестровка (Kubernetes, Mesos…), взаимодействие и обнаружение сервисов (CoreDNS, Consul…), управление сервисами (gRPC, Linkerd…);
    • Окружение для исполнения: облачные хранилища (Rook, Ceph…), runtime для контейнеров (containerd, rkt…), облачные сетевые решения (CNI, open vSwitch…);
    • Provisioning: tooling и управление для хостов (Ansible, Chef…), инфраструктурная автоматизация (Helm, Terraform…), реестры контейнеров (Docker Registry, Quay…), безопасность образов (Notary, Clair…), управление ключами (Vault, Spire…);
    • Платформы: сертифицированные дистрибутивы Kubernetes (OpenShift, Tectonic…), сертифицированные платформы Kubernetes (Google Kubernetes Engine, Azure Container Service…), несертифицированные реализации Kubernetes (Amazon EKS, ContainerShip…), PaaS и контейнерные сервисы (Heroku, Hyper.sh…);
    • Наблюдение и анализ: мониторинг (Prometheus, Datadog…), логирование (fluentd, Graylog…), трассировка (Jaeger, Zipkin…), serverless (множество подкатегорий вынесено в отдельную таблицу);
    • Облака: публичные (AWS, Google Cloud…) и частные (OpenStack, MAAS…);
    • Сертифицированные сервис-провайдеры Kubernetes (Heptio, Huawei…).

    Вся эта подборка представлена графически:


    (Полное изображение в GitHub.)

    (Примечание: в этой таблице можно также увидеть, что Kubernetes стал первым в истории CNCF проектом, достигнувшим статуса graduated, т.е. «выпускника». Об этом было объявлено совсем недавно — 6 марта. Все остальные проекты CNCF относятся к категориям incubating и inception.)

    Интерактивный Landscape


    Кроме того, со второй версией Cloud Native Landscape в CNCF запустили интерактивную веб-версию каталога, доступную как landscape.cncf.io (для serverless — s.cncf.io).

    Контент для Landscape


    Каталоги Cloud Native Landscape генерируются на основе данных, получаемых из специального YAML, к которому добавляются сведения из внешних сервисов (информация о проекте в GitHub, финансовые показатели из Crunchbase и Yahoo Finance), в результате чего получается новый YAML, а также JSON, который уже и используется приложением для вывода данных.

    В CNCF приветствуют добавление новых проектов, что делается через pull request к упомянутому landscape.yml. У проекта должно быть хотя бы 250 звёздочек на GitHub и он должен соответствовать одной из имеющихся категорий (подробнее о предъявляемых требованиях см. здесь).

    Основная таблица Cloud Native Landscape, как и её аналог для serverless, и упомянутый ранее Trail Map, доступны в разных форматах. Все данные проекта распространяются на условиях свободной лицензии Apache License 2.0 за исключением графических файлов и YAML (они лицензированы под Creative Commons Attribution 4.0), сведений от Crunchbase и логотипов проектов/продуктов.

    P.S.


    Читайте также в нашем блоге:

    Флант 334,38
    Специалисты по DevOps и высоким нагрузкам в вебе
    Поделиться публикацией
    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое