Автор этой статьи:Cody Chan
Эта статья только дляПросто и популярно, цель - дать немного прочувствовать людям, которые не имеют или мало соприкасаются с этим аспектом, и читать будет легче.Автор знает, что короткие статьи ничему толком научить не могут, поэтому они не появятся.RTFMСодержание.
концепция
Некоторым людям это может быть незнакомо, когда речь заходит о Cloud Native, но если считается, что Serverless известен многим людям, на самом деле они не эквивалентны. Бессерверные технологии — это концепция или форма предоставления услуг, цель которой — защитить оборудование, а также детали эксплуатации и обслуживания, в то время как облачные технологии — это спецификация и инфраструктура для достижения этих целей.
Идем дальше, между естественной изоляцией и эффективностью Docker иKubernetesстать фактическиDockerСтандарты оркестровки почти везде, где вы видите облачные или бессерверные решения, можно рассматривать как практику, основанную на Docker + Kubernetes.
Эволюция
Говорить об одном моменте слишком скучно, поэтому давайте посмотрим, почему существуют облачные технологии с исторической точки зрения.
Docker
Во-первых, Docker — это контейнерная технология (в частности, она может быть глубокоnamespacesа такжеcgroups), а не технология виртуализации, реальная виртуализация более распространенаXenа такжеKVM, некоторые учащиеся могут поднять руки: учитель, считаются ли VirtualBox и VMware, которые мы часто используем, виртуализацией? Конечно! Однако по большей части они используются в виртуализации рабочих столов. Не торопитесь, я говорю о большинстве, а решений для виртуализации много.
Может быть, вы уже часто сталкивались с такой сценой: почему у меня это работает, а у вас нет? Почему это не может работать только сейчас? В конце концов, большинство проблем было вызвано несоответствиями в среде. Среда здесь включает в себя операционную систему в дополнение к среде разработки.
Поэтому, передавая код другим, как правило, необходимо сообщить другим версию операционной системы, на которой код может работать, версии различных программ, от которых он зависит, и даже требования к каталогам, дискам, памяти и процессору!
Конечно, есть более прямой способ решить эту проблему, то есть запустить код на виртуальной машине, а затем упаковать виртуальную машину! (Не смейтесь, кто-то действительно так делает) Почему вы смеетесь в этот момент, потому что виртуальная машина слишком тяжелая, как с точки зрения размера пакета, так и с точки зрения ресурсов времени выполнения.
Есть ли прослушиваемая "виртуальная машина"? Ну, как в названии, но мы называем это контейнеризацией, возможности:
- Изоляция на уровне процесса;
- За исключением приложения, работающего внутри, оно почти не занимает ресурсы хоста;
- Структурированный конфигурационный файл (Dockerfile);
- Без состояния и без побочных эффектов (основной способ);
- многоуровневая объединенная файловая система;
- ...
Docker делает среду выполнения программируемой!
взять недавно развернутыйSourcegraphКак пример из моего опыта, есть официальный разработчиксписок, куча зависимостей и настроек среды взорвется в соответствии с этим развертыванием. К счастью, официальный также предоставляет образы, которые можно быстро развернуть. Это так просто:
Kubernetes
Слишком длинная, далее К8С, подобные аббревиатуры тоже естьмного.
Хотя Docker очень мощен, в глазах взрослых он всего лишь детская игрушка.В чуть более крупной компании может быть больше сервисов внутри, особенноМикросервисная архитектураПосле того, как стал популярным.
Докер решает только проблему доставки одного сервиса, приложение с полной формой неизбежно будет включать различные сервисные зависимости, искусственная организация этих зависимостей тоже убьет людей. Docker освобождает нас от всевозможных взаимосвязей с окружающей средой, но оставляет нас запутанными в многомерных зависимостях сервисов.
Пользователю Docker всем стоит подумать над решением этой проблемы.Как хотите, тут ситуация трех королевств, конкурирующих за гегемонию:Docker Swarm,Apache Mesosа такжеGoogle Kubernetes, в определенной степени K8S стал основным стандартом оркестровки Docker. Интересно, что K8S означает рулевой, а Docker означает контейнер, так что разумнее их совмещать?
Что еще интереснее, процесс управления Docker K8S также абстрагируется слой за слоем. Чтобы решить задачу планирования набора тесно связанных наборов контейнеров, наименьшая единица планирования K8S — этоPodВместо контейнеров ресурсы контейнеров в том же POD могут получить доступ к друг другу. Для управления выпуском, откатом и масштабированием, абстракция была добавлена поверх этого.Deployment, что на самом деле является единицей, которую мы используем наиболее непосредственно. Для управления балансировкой нагрузки и планированием используется другая абстракция, называемаяService.
Вышеуказанные концепции являются базовыми концепциями K8S, но я хочу подчеркнуть это:Многие сложные проблемы решаются на уровнях абстракции., это расширение тоже может о многом сказать.
Самая крайняя точка K8S заключается в том, что все вышеперечисленные ресурсы управляются через декларативную конфигурацию.K8S позволяет программировать работу контейнера и его техническое обслуживание!
Cloud Native
На данный момент, если вы хотите использовать K8S непосредственно в производственной среде, это в принципе нормально, давайте поговорим о другом.
Мы все знаем, что широко используемый веб-фреймворк для бэкенда Java — это Spring MVC, ставший антиквариатом 2002 года! Даже с Spring Boot сейчас его можно рассматривать как апгрейд: по сравнению с тремя фронтенд-фреймворками, которые процветали в последние годы, словесных перепалок гораздо меньше.
Большая часть причины цветения сотен цветов заключается в том, что передняя часть не сформировала сильногоЛучшие практики! С инженерной точки зрения слишком большое количество дублирующих колес может легко привести к ухудшению ремонтопригодности проекта. Характеристики стабильности веб-бэкенда не очень толерантны к таким вещам, то же самое верно и для облака.
Cloud Native — это лучшая практика облака (или K8S в узком смысле), рожденная как облако, так называемое облако Native!
Для этой цели существуютCNCF (Фонд облачных вычислений), С организацией гораздо надежнее. Эта организация имеет коллекцию (или инкубацию) различных лучших практик.Облачная панорама. Например, более интересныйhelm, как менеджер пакетов приложений K8S, он абстрагирует приложение K8S в пакет, и приложение может быть развернуто одним щелчком мыши.Как и многие менеджеры пакетов, он также имеет исходный кодKubeApps Hub(даже предоставлено Alibaba Cloudвнутренний источник).
Serverless
При использовании облачных технологий подходящие передовые практики можно найти практически в различных бизнес-сценариях, и бессерверные технологии являются одним из них. Лично я не понимаю, почему это слово переводится как: бессерверная архитектура.Бессерверная защита от эксплуатации и обслуживания, поэтому правильнее называть это архитектурой эксплуатации и обслуживания. Вынужденный принять китайский перевод, текст по-прежнему использует Serverless.
Вам может быть интересно, почему здесь вытащили Serverless, ведь это любимец CNCF! В рамках CNCF слишком много проектов, но большинство из них все еще сложные, и обычному бизнесу сложно их использовать и реализовывать, поэтому я взял модель, которую можно реализовать, и набросалбелая бумага, тем, кто заинтересован, рекомендуется ознакомиться с ним поближе.
Прежде чем говорить об эксплуатации и техническом обслуживании экранирования, давайте рассмотрим, какие операции и техническое обслуживание обычно включают в себя:
- Приложение сервера, сети, хранилища и других физических ресурсов (IaaS);
- Тестируйте, выпускайте, расширяйте и уменьшайте;
- мониторинг, логирование;
- ...
Для обеспечения защищенной эксплуатации и обслуживания, как правило, нет необходимости заботиться о вышеуказанных моментах.В настоящее время основные формы в отрасли включают BaaS и FaaS:
- BaaS (серверная часть как услуга): практика этой службы заключается в абстрагировании общих внутренних служб, таких как хранилище данных, хранилище файлов, сообщений и т. д., когда клиент использует эти службы, это похоже на использование обычного SDK/API. .
Изображение изCloudflare
- FaaS (функция как услуга): BaaS полезен только в большинстве сценариев. Некоторые особые сценарии могут быть проблематичными. Некоторые возможности могут не предоставляться, но они должны быть прописаны на бэкэнде. Нет необходимости полностью заботиться обо всей структуре внутреннего кода, поэтому вы можете абстрагировать простые функции одну за другой для выполнения пользователями. В настоящее время Google используетKnative, вот сравнение других схемстатья.
Конкретный метод зависит от бизнес-формы, обычно гибкость подменяется удобством, а различные облачные сервисы ранжируются по степени гибкости:IaaS(各种云主机) > CaaS(Docker 等容器服务) > PaaS(BAE、SAE、GAE 等 APP Engine) > FaaS > BaaS > SaaS(各种 Web APP,如 Google Doc)
.
Кривая девятиуровневая архитектура облачных вычислений, темное представление оставлено на усмотрение пользователя,источник вдохновения
Serverless предоставляет разработчикам облачный сервис, который защищает операции и поддерживает определенную степень гибкости.
Статус отрасли
Эта статья посвящена только облачным продуктам, то есть продуктам выше Docker/K8S. Ниже приведены некоторые основные продукты:
- K8S && CaaS
- FaaS
- BaaS
- BaaS + FaaS
Если у вас есть условия, вы можете испытать это, я приведу два личных примера:
- В дополнение ко многим общедоступным облачным службам, которые вы видели, существует множество служб, которые не подходят для общедоступного облака и должны быть развернуты в частном порядке. Помню, раньше делал проект на какой-то блок.Когда он был доставлен, в нем устанавливалась система, устанавливался софт, а также требовалась различная совместная отладка на месте.Ехало много времени туда-сюда. Теперь это очень легко поставить с Docker + K8S, вам нужно только иметь набор кластера K8S, остальные упакованы с образами Docker, а файл конфигурации может легко организовать расположение!
- Оглядываясь назад на системы, которые вы построили, много ли систем, которые почти бесполезны, но все же не могут работать в автономном режиме? Правда ли, что некоторые системы могут иметь только несколько интерфейсов и должны пройти весь процесс от подачи заявки на машину до подачи заявки на различное промежуточное ПО? Назовем эти приложения с длинным хвостом, и эти приложения являются важным фактором исторической нагрузки на команду. Если вы сделаете это по пути FaaS или BaaS, вы обретете новую жизнь и соответствующие вспомогательные средства, основными в отрасли являются CLI и WebIDE, в зависимости от того, какой из них сделает вас счастливым.
Хотя приведенные выше два примера лишь частично отражают текущую ситуацию в отрасли, она очевидна.
Суммировать
В этой статье кратко представлены некоторые основные концепции облачных технологий и объясняется, почему существуют облачные технологии с точки зрения эволюции. Суть заключается в абстракции и абстракции. Наконец, я исследую основной статус-кво в стране и за рубежом. Читатели практикуются самостоятельно.
использованная литература
Текст указан в виде внешних ссылок.
Эта статья была опубликована сКоманда внешнего интерфейса NetEase Cloud Music, Любое несанкционированное воспроизведение статьи запрещено. Мы всегда нанимаем, если вы готовы сменить работу и вам нравится облачная музыка, тоПрисоединяйтесь к нам!