- PVSM.RU - https://www.pvsm.ru -

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

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

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

Путь к cloud native

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

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

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

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

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

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

Первые 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 [12], 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 (множество подкатегорий вынесено в отдельную таблицу [13]);
  • Облака: публичные (AWS, Google Cloud…) и частные (OpenStack, MAAS…);
  • Сертифицированные сервис-провайдеры Kubernetes (Heptio, Huawei [14]…).

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

Путеводитель CNCF по решениям Open Source (и не только) для cloud native - 3
(Полное изображение в GitHub [15].)

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

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

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

Контент для Landscape

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

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

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

P.S.

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

Автор: shurup

Источник [30]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/275100

Ссылки в тексте:

[1] представил: https://www.cncf.io/blog/2018/03/08/introducing-the-cloud-native-landscape-2-0-interactive-edition/

[2] Cloud Native Landscape: https://github.com/cncf/landscape

[3] сертифицированные варианты: https://www.cncf.io/certification/software-conformance/

[4] Linkerd: https://habrahabr.ru/company/flant/blog/327536/

[5] CoreDNS: https://habrahabr.ru/company/flant/blog/331872/

[6] Conduit: https://habrahabr.ru/company/flant/blog/349496/

[7] CNI: https://habrahabr.ru/company/flant/blog/329830/

[8] Flannel: https://habrahabr.ru/company/flant/blog/332432/

[9] containerd: https://habrahabr.ru/company/flant/blog/325358/

[10] CRI-O: https://habrahabr.ru/company/flant/blog/340010/

[11] этой статьи: https://habrahabr.ru/company/flant/blog/340366/

[12] Rook: https://habrahabr.ru/company/flant/blog/348044/

[13] отдельную таблицу: https://raw.githubusercontent.com/cncf/landscape/master/serverless/CloudNativeLandscape_Serverless_latest.png

[14] Huawei: https://habrahabr.ru/company/flant/blog/349940/

[15] Полное изображение в GitHub: https://raw.githubusercontent.com/cncf/landscape/master/landscape/CloudNativeLandscape_latest.png

[16] было объявлено: https://www.cncf.io/announcement/2018/03/06/cloud-native-computing-foundation-announces-kubernetes-first-graduated-project/

[17] landscape.cncf.io: https://landscape.cncf.io/

[18] s.cncf.io: https://s.cncf.io/

[19] специального YAML: https://github.com/cncf/landscape/blob/master/landscape.yml

[20] новый YAML: https://github.com/cncf/landscape/blob/master/processed_landscape.yml

[21] JSON: https://github.com/cncf/landscape/blob/master/src/data.json

[22] см. здесь: https://github.com/cncf/landscape#new-entries

[23] разных форматах: https://github.com/cncf/landscape#formats

[24] CNCF предложила бесплатное облако Open Source-проектам для DevOps/микросервисов: https://habrahabr.ru/company/flant/blog/335218/

[25] Сколько разработчиков думают, что Continuous Integration не нужна?: https://habrahabr.ru/company/flant/blog/346418/

[26] Какие известные компании используют Docker в production и для чего?: https://habrahabr.ru/company/flant/blog/326784/

[27] Зачем нужен Kubernetes и почему он больше, чем PaaS?: https://habrahabr.ru/company/flant/blog/327338/

[28] Статистика The New Stack о трудностях внедрения Kubernetes: https://habrahabr.ru/company/flant/blog/340270/

[29] Инфраструктура с Kubernetes как доступная услуга: https://habrahabr.ru/company/flant/blog/341760/

[30] Источник: https://habrahabr.ru/post/350928/?utm_campaign=350928