Docker, Kubernetes на кой черт это мне?

oxy

Продвинутый
🏆
📜
💎
  • Надмозг
Пора нести очередную псевдонаучную хуйню информацию в массы! Сразу оговорюсь что эта статья не для людей которые просят настроить им игру, тут уровень чуть выше нужен, но для общего образования может быть и не лишним почитать это. Так что усаживайтесь удобней, берите кота, если нет своего можно арендовать тут и приступим)

Статья сугубо информационная, особых примеров как с этим всем работать я не буду давать, по крайней мере если не попросите в комментах))

Начнем, пожалуй, с описания что это все такое и почему некоторые считают что это круто.

Docker

В далеком '13 году добрые дядьки решили "А че это мы тут пишем какие то баш(бат) скрипты когда нужно что то однотипное ставить? Давайте хуйнем замену этому всему.." В итоге получилась весьма крутая штука которая позволяет установить практически что угодно одной командой на твой сервер. Более того сделать это весьма секьюрно и красиво, без прямого доступа к контейнерам из вне, и еще очень многими плюшками. Самое главное - оно будет сразу работать из коробки и не конфликтовать с другими прогами, гигами порнухи и прочими жителями твоего уютненького сервера..

Что бы развернуть ту же БД достаточно написать в консольке:
docker run --name=mysql -d mysql/mysql-server
Все настроено и готово к работе. Не нужно курить огромные мануалы и трахать себе мозг. Нужна еще одна бд? Легко! Более того можно сделать ее с репликацией (что то типа синхронизации), да да, основная проблема в ваших БК - база данных, а как сделать их две-три, на разных машинах мало кто знает.. Тут же это делается одним флагом при запуске...

Саму игру так же легко впиздячить в докер и разворачивать ее сколько угодно раз сразу в готовом к бою состоянии. Т.е. уже не нужно идти к сисадминами и говорить поставь мне апаче + мускуль, плюс php и какой нибудь мемкешед или редис. Все сразу заработает с одной команды docker run.

Микросервисы
Докер конечно дал новый виток микросервисам, для тех кто не знает что это за дерьмо, - объясню на простых примерах (я тут опишу не прям микросервисы 1 в 1, но для простого и общего понимания этого достаточно).

Вот у тебя есть сайт, который решает бухать тебе сегодня исходя из погоды в Биробиджане. Все стандартно - на пхп генерится страничка и ждет какого то ответа (пусть будет твое имя). Как только ты вводишь данные в форму они летят к тому же скрипту что все генерил и он же отдает результат со словами "Пить или не пить..". Ну и заебись же? Все легко и просто. Но по мере роста онлайна ты решаешь сделать приложение на ведроид.

Ты можешь сделать из говна и палок и при запросе с своему index.php передавать ему что то типа "?source=web" тогда он отдаст html или source=android тогда вернет json. Это очень плохой подход который потом тебе не раз даст по ебальнику если ты захочешь что то переделать или возьмешь на работу очередного джуна...

Костылить не хочется, хочется сделать сразу все как надо, ведь потом может еще будет и на гейфоны, и на винду приложуха, и плагины для браузеров.
В общем ты делишь на две части свой проект, на фронт и бек. Фронт по сути html файлик который с помощью js (ajax) ходит к серверной части (она вообще может быть в другом датацентре) и получив запрос генерит на лету тебе ответ, бухаешь ты сегодня или нет.

Бекенд же имеет подобие некого апи который при запросе к /api/checkOpportunity сам идет к гисметео, проверяет погоду в Биробиджане и выдает тебе столь важный и желанный результат в формате JSON '{status: "success", message: "Сегодня бухаем"}'. И теперь добавляй сколь угодно блекджека и шлюх в виде приложух на телефоны и т.д., все они будут работать напрямую с апи. Потом решишь что неплохо бы не ходить каждый раз к серверу погоды а иметь какой то кеш, и создашь еще один контейнер который будет ходить за погодой, и второй что будет отдавать эти закешированные данные. В итоге у тебя куча мелкой не особо зависимой фигни друг от друга.
Если ты захочешь сменить дизайн сайта при обновлении твой сайт не ляжет в даунтайм на пару секунд (это важно в больших проектах), ведь обновится только html файлик. Плюшек там очень много и для больших и серьезных проектов это что то типа best practices...

Так что если у вас проект с микросервисной архитектурой в докере вы найдете Будду) Развернуть UI, API, BackEnd, Базу, Брокер сообщений и еще кучу всякого мелкого дерьма поможет docker-compose. Естественно одной командой. Естественно все это можно удобно обвешать алертами и в любой момент знать что происходит неебическая хуйня задолго до того как ситуация выйдет из под контроля и ляжет какой то сервис.

Kubernetes
Но в какой то момент ты дорастешь до того что тебе потребуется вторая БД. Докупишь сервер, настроишь репликацию и с ужасом поймешь что с 9 утра и до 20 вечера она реально нужна, а ночью второй сервер тупо стоит без дела ведь нет людей. Другими словами в месяц ты 15 дней платишь просто так. А в год это уже 182 дня. Простите но серваки нынче нифига не дешево обходятся) Что делать?
Корпорация добра предоставила опенсурсный (на халяву брад!) выход - Kubernetes
Работает он с контейнерами docker'a, умеет собрать их в полностью рабочую большую систему с всякими там балансерами квотами и т.д., и главное умеет скейлиться!
Ты можешь настроить его таким образом, что когда нагрузка резко прыгает он добавляет копии контейнеров и разбрасывает нагрузки между ними. Может выделить отдельную мощную ноду для твоей скрипящей от нагрузки БД, а на ноду послабее поставить контейнер который раз в 5 минут кеширует погоду и твой хтмл файлик))

Работает конечно он луче всего с облачными серверами.
Т.е. днем у тебя 20 контейнеров = 20 нод (для простоты скажем серверов), а ночью 1... Профит ясен)) Как и в докере - все работает внутри определенной виртуальной сети к которой подлый хацкер хрен достучится, а наружу высовываются только 80 и 433 порты



Итог очень прост, если у тебя более ли менее большой проект, то стоит задуматься о использовании новых технологий которые будут экономить тебе бабло и время на разработку)
Все большие дядьки так делают, Карл)
 

oxy

Продвинутый
🏆
📜
💎
  • Надмозг
Не знаю может тут даже и не место для такой статьи, но если кого заинтересует - расскажу подробней)
 

Bayer

Специалист
⚖️
🏆
📜
💎
  • Надмозг
Ля, как же меня радует, что кто то все таки растёт в знаниях, а не топчется с бэка на одном месте изучая пэхнапэ 5
 

habilis

Интересующийся
📜
Ах*тельная стотья, главное в 2к20 спачанами мутить ах*нное!
Монолит был крут в 2007 © в СТУЛКЕРЕ
Типерь никто больше так не мутит...

К ста Хабиля тут с пачанами после уроков забигал в Майкрософт, на доклад одного шустрогана

ваще-ваще нирияльный шустроган

Хабиле очень панравилось как докладчик охароктиризовал ДевОпс в Рияльном мире
 
Последнее редактирование:
  • Like
Реакции: oxy
Сверху