Добрый день.
Предлагаю вашему вниманию перевод юмористического поста, посвященного облачным технологиям: Это будущее .
Все поправки и советы приветствуются.
Ээт! Привет! Мой босс сказал поговорить с тобой.
Он сказал, что вы много знаете о веб-приложениях.
— Да, сейчас это правда, я больше занимаюсь распределенными системами.
Я только что вернулся с ContainerCamp и GlueCon, а на следующей неделе собираюсь на DockerCon. Действительно впечатлен тем, как развивается бизнес – все становится намного проще и доступнее! Это будущее! Отлично.
Видите ли, я сейчас разрабатываю простое веб-приложение — обычный CRUD на Rails, собираюсь развернуть его на Heroku. Скажите, Heroku еще актуален? - О чем ты говоришь! Нет. Это уже старая школа.
Хероку — труп.
Никто его больше не использует. Теперь вам нужно изучить Docker. Это будущее! О, вот так вот. Ладно, хорошо.
Что это? — Docker — это новый способ контейнеризации.
Это похоже на LXC, но он также включает в себя формат контейнерной упаковки, а также платформу распространения и ряд утилит, упрощающих построение распределенной системы.
Консервация?.
- что? Что за LXE? - LXC Это как chroot на стероидах.
Что за чертовщина? — Понятно.
Смотри.
Докер.
Контейнеризация.
Это будущее.
Это как виртуализация, только быстрее и дешевле.
Ладно, что-то вроде Vagrant. - Нет, Вагрант - труп.
Теперь все готово для использования внутри контейнеров.
Это будущее! Хорошо, теперь мне не нужно ничего знать о виртуализации? - Ну.
Нет, нужно разбираться в виртуализации, потому что.
Контейнеры пока не обеспечивают полную защиту данных приложений.
Итак, если вы хотите запускать все в мультитенантной среде, вам необходимо убедиться, что пользователи не выходят из песочницы.
Итак, я как-то заблудился.
Давайте немного отмотаем назад. Итак, существует виртуализация, называемая контейнерами.
Могу ли я использовать это на Heroku? — Ну, Heroku поддерживает Docker, но помните, что я вам говорил.
Хероку — труп.
Вам необходимо запускать контейнеры на CoreOS. Что это? — Это самая крутая хост-ОС, которую можно использовать с Docker. Черт возьми, тебе даже не нужен Docker! Вы просто можете использовать rkt! Ракета? - Нет, ркт. Правильно, Ракета.
- Нет, теперь это называется ркт. Совсем другое дело.
Это альтернативный формат контейнеризации, который является конкурентом Docker. Это выглядит круто? - Конечно, круто.
Компонуемость — это будущее! Вы вообще используете этот ркт? - Я не знаю.
Я не думаю, что кто-то этим пользуется.
Эxxx. Так вы что-то говорили о CoreOS? — Да… Итак, это хост, который вы используете с Docker. Что такое хост? — CoreOS спроектирована для оптимальной работы с контейнерами.
Он настроен для работы с контейнерами.
Работа с контейнерами.
? - Да, у вас что-то есть в контейнерах.
Итак, вы как бы поднимаете такой экземпляр, как Amazon EC2, поднимаете там хост CoreOS, затем запускаете сервис Docker, а затем можете развернуть там образы Docker. Сколько в этом контейнере? - Все это.
Посмотрите, вы берете свое приложение, пишете Dockerfile, создаете локальный образ, а затем отправляете его на любой хост Docker. Ааа, как Хероку? - Нет. не Хероку.
Я говорил тебе, что Хероку — труп.
Вы запускаете собственное облако с помощью Docker. О_о? - Да, это действительно просто.
Читайте о #gifee. Гифи? — GIFEE — это инфраструктура Google для всех остальных.
Вы берете все эти утилиты и стеки технологий, использующие контейнеры, и у вас есть вся эта инфраструктура, как у Google. Почему бы просто не воспользоваться сервисами Google? — А если через полгода все полностью изменится? Хорошо, разве это больше никто не проводит? Мне очень не хочется все это принимать у себя.
— Ну, AmazonECS, но тебе придётся писать какую-то XML-хрень.
Что вы можете сказать об OpenStack? - Фу… Послушайте, я не хочу ничего размещать и поддерживать сам.
- Нет, это действительно просто.
Вы просто настраиваете кластер Kubernetes. Так нужен ли мне кластер? - Кластер Кубернетес.
Он управляет развертыванием всех ваших сервисов.
У меня только одна услуга.
- О чем ты говоришь? Слушайте, у вас есть веб-приложение, верно? Это означает, что у вас должно быть 8-12 сервисов.
Что? Нет! У меня есть одно приложение.
Сервис, блин, плевать! Всего одно чертово приложение! — Нет, посмотрите в сторону микросервисов.
Это будущее.
Вот как мы все сейчас работаем вокруг себя.
Вы берете свое супер-пупер приложение и делите его на 12 сервисов.
По одному на каждую задачу.
Ну это уже слишком.
— Это единственный способ гарантировать надежность конфигурации.
Итак, если ваша служба аутентификации выйдет из строя.
Служба аутентификации? Черт возьми, да, я просто собирался использовать тот же плагин, который использовал много раз раньше! - Супер.
Используй это.
Вынеси это в отдельный проект. Добавьте RestAPI поверх него.
Тогда другие ваши сервисы будут использовать этот API и очень изящно обрабатывать сбои.
Поместите его в контейнер и делайте CI/CD! Как хочешь.
Теперь у меня под рукой десятки неуправляемых сервисов, что дальше? — Да, я говорил о Kubernetes. Это позволяет вам удобно организовывать все ваши сервисы.
Провести оркестровку? - Да! Теперь у вас есть эти сервисы, и они должны быть отказоустойчивыми, поэтому вам нужно запускать несколько копий каждого из ваших сервисов одновременно! И Kubernetes гарантирует вам, что этих копий у вас будет достаточно, они распределены по хостам вашего парка и всегда доступны.
То есть мне нужен флот? - Да, для отказоустойчивости.
Но Kubernetes все сделает за вас.
Кроме того, вы уверены, что Kubernetes будет работать как надо, потому что это сделал Google, а также потому, что он работает поверх etcd. Что такое тдд? — Эта штука сделана на основе РАФТА.
Хорошо, что такое РАФТ? - Это как Паксос.
Боже, насколько глубокой будет эта гребаная кроличья нора, куда мы сейчас направляемся? Я просто хочу запустить одно чертово веб-приложение!!! Ваша мать!!! Ладно, глубокий вдох, выдох.
Ладно, что такое Паксос? — Paxos — это старое семейство распределенных протоколов 70-х годов, которое никто не понимает и не использует. Большой! Я так рада, что ты рассказал мне об этом! Так что же такое Рафт? - Поскольку никто не понимает Паксос.
эээ.
кроме Диего.
О! Так ты его знаешь? — Конечно нет, в CoreOS это работает. В любом случае, Диего предложил Рафта для своей докторской диссертации, потому что.
Паксос был слишком сложным.
Чертовски умный парень.
А потом он написал в качестве реализации etcd и тут Афир сказал, что это действительно не говно, а круто!!! Кто такой Афир? — Афир - ну, это тот самый парень, который написал "Call Me Maybe", ну.
ты же его знаешь, да? «Распределенные системы и БДСМ парень»? Ты только что сказал БДСМ? - Да, БДСМ.
Это Сан-Франциско.
Здесь все увлечены распределенными системами и БДСМ.
И он написал песню Кэти Перри? - Нет, он написал серию статей о том, что каждая база данных не справляется с CAP. Что за КАП? — Теорема о CAP (также известная как теорема Брюера).
Она говорит, что у вас может быть только 2 из 3: постоянство, доступность и устойчивость к расщеплению.
И все базы данных не справляются с этим CAP? Что, черт возьми, все это значит? «Это значит, что все это отстой».
Как МонгоДБ.
Я думал МонгоДБ горизонтально расширяемый .
- Никто кроме тебя.
ХОРОШО.
Так что там с etcd? — Да, так вот, etcd — это распределённое хранилище значений.
Прямо как Редис.
— Нет, совсем не так, как Redis. etcd — это распределенная система.
Redis теряет некоторую информацию, если сеть временно выходит из строя.
Хорошо, это распределенное хранилище ценностей.
Почему эта вещь так полезна? — Kubernetes настраивает стандартный кластер из пяти узлов, используя etcd в качестве шины обмена сообщениями.
В сочетании с парой собственных сервисов он обеспечивает очень надежную оркестровую систему.
5 узлов? У меня есть одно приложение.
Сколько машин мне нужно поднять для этого? — Ну, вы собираетесь поднять 12 сервисов, и вам естественно понадобится по паре дополнительных копий для каждого, пара балансировщиков и т. д., ваша база данных и кластер Kubernetes. Таким образом, одновременно может работать около 50 контейнеров.
Что за черт! - Да это уже не вопрос! Контейнеры действительно эффективны, поэтому вам не составит труда распределить все это между 8 машинами! Разве это не удивительно? И все же, это всего лишь ваше впечатление.
И учитывая все это, я смогу просто развернуть свое приложение? - Да, конечно! Правда, в случае с Docker и Kubernetes объемы хранения данных пока остаются открытым вопросом, да и нагрузка на сеть увеличивается, но эти вопросы будут решены совсем скоро! МММ ясно.
Ладно, думаю, теперь я все понимаю.
- Супер! Спасибо за подробный рассказ.
- Да нет проблем.
Позвольте мне подвести итог всему, о чем мы говорили, чтобы убедиться, что мы поняли друг друга.
- Конечно! Итак, мне просто нужно разделить мое простое CRUD-приложение на 12 микросервисов, каждый из которых должен быть обернут своим собственным API, которые должны вызывать друг друга с помощью этих API, но при этом обрабатывать ошибки каждого из них, т.е.
все в контейнерах Docker, запустить парк из 8 машин, которые являются Docker-хостами на базе CoreOS, «оркестрировать их» с помощью небольшого кластера Kubernetes на базе etcd, решить «пару открытых вопросов» по сетевой нагрузке и хранению информации, настроить CI /CD по нескольку копий каждого микросервиса с балансировщиками в парке.
Как будто? - Да! Разве это не великолепно? .
Собираюсь развернуть в Heroku. Теги: #ИТ-инфраструктура #облачные технологии #юмор
-
Итак, Вы Хотите Работать В Стартапе
19 Oct, 24 -
Эксплуатация Tesla В России: Факты И Ответы
19 Oct, 24 -
Джон Ресиг Для Usethis.com
19 Oct, 24 -
Как Преподавать Веб-Разработку Студентам?
19 Oct, 24 -
Первый В Истории Фестиваль Хакерства Reactos
19 Oct, 24