TGTGInsightаналитика telegramLIVE / telegram public index
← Программирование для гуманитариев
Программирование для гуманитариев avatar

TGINSIGHT POST

Post #284

@it_human

Программирование для гуманитариев

Просмотры3,520Количество просмотров
Опубликован30 окт.30.10.2020, 11:15
Содержимое поста

Содержимое

[продолжение предыдущего поста] Брокеры сообщений Расскажу, для чего нужен RabbitMQ. Например, у нас есть веб-сайт, который позволяет конвертировать и сжимать изображение. К нам приходит пользователь, и загружает через сайт свою картинку, которую он хочет конвертировать из png в jpeg, уменьшить масштаб на 50% и еще сжать. Картинка попадает к нам на бэкенд, и на бэкенде запущены 3 микросервиса (небольших программы) - 1 из них умеет обрезать картинку, другой - конвертировать, а третий - сжимать. Нам нужно последовательно передать каждому сервису картинку, и запустить её обработку. Для этой цели часто используют брокеры сообщений или т.н. очереди. Брокер сообщений (RabbitMQ) - это как система конвееров на заводе. Мы берем нашу картинку, «кладём» её на конвеер вместе с заданием: «сохранить в формате jpeg» - и отправляем по конвееру в первый микросервис. Потом забираем готовую картинку и кладём её на другой контейнер, который подведён к микросервису, обрезающему картинки - и так далее, пока обработка полностью не завершится. Если у нас много пользователей, и мы не можем мгновенно обработать все задачи - каждая картинка некоторое время ожидает своей очереди на обработку - за её хранение в очереди и доставку как раз отвечает RabbitMQ. Контейнеры Есть такой анекдот: если бы врачи работали как программисты, то когда к ним приходил бы пациент с больной ногой, они бы отвечали: «не знаю, у меня такая же нога, но она не болит». Мы пишем программы на своем компьютере, а запускать в итоге будем где-то в другом месте, на сервере. На сервере может стоять другая ОС, там могут быть установлены другие пакеты и настройки - и в итоге там наша программа работать не захочет. Придётся долго и муторно подгонять настройки на сервере под нашу программу - с переменным успехом. Поэтому и были придуманы docker-контейнеры. Контейнер - это как бы маленький линукс (любой версии, на выбор) - который мы запускаем внутри своей операционной системы. На этом маленьком линуксе мы устанавливаем все настройки и зависимости, которые нужны, чтобы программа работала правильно. И в итоге что на своём компьютере, что на сервере мы запускаем программу внутри этого докер-контейнера - и неважно, где запускаем, работать программа будет одинаково. Освоить докер не сложно, главное для начала - освоить линукс. Kubernetes Когда все программы у какой-нибудь компании запускаются в контейнерах, получается, у нас есть сотни и более докер-контейнеров, за запуском которых нужно следить - перезапускать, если они сломались, мониторить, что они живы и делают всё правильно, обновлять старые версии на новые. Для удобного управления множеством докер-контейнеров используется Kubernetes - продукт от гугла. CI/CD СI/CD расшифровывается как continuous integration/continuos delivery - и по сути это набор инструментов, который позволяет быстро обновлять ПО. Например, можно настроить процесс так, что когда программисты изменяют код в git-репозитории, после каждого изменения автоматически запускается сборка приложения, затем тесты, а дальше - замена старой версии программы на новую в продакшене, а в случае, если во время деплоя происходит сбой - приложение автоматически откатывается до предыдущей версии. Для этой цели я работала с Jenkins, но есть и другие аналоги, например, gitlab.