[Из песочницы] Отчёт с Moscow Django MeetUp № 25
Десятого февраля в медиа-центре ФРИИ (Фонд Развития Интернет-Инициатив) на Серебрянической набережной прошел юбилейный 25-й Moscow Django Meetup. Это ежемесячная встреча Django-разработчиков. Каждую встречу несколько человек выступают перед публикой с докладами, так или иначе связанными с веб-разработкой, Python и Django.Кратко о самом фонде. ФРИИ помогает онлайн-стартапам на ранних стадиях развития. Фонд уже запустил свой первый стартап-акселератор в Москве и в дальнейшем собирается проводить несколько наборов в год. ФРИИ также откроет акселераторы в других городах уже в ближайшем будущем. Приоритеты ФРИИ — это поддержка образовательных и инфраструктурных проектов, содействующих развитию в России полноценного рынка малого и среднего интернет-бизнеса.
«Либо Docker, либо алкоголь«На повестке дня было два доклада, первый из которых был посвящен Docker, самому активно развивающемуся open-source проекту за последний год. По словам докладчика Александра Чистякова, главного инженера консалтинговой компании «Git In Sky», новый способ виртуализации на уровне ОС заметно облегчает жизнь во время разработки веб-приложений. С его помощью в «Git In Sky» стремятся повысить свою эффективность управления инфраструктурой клиентов.До Docker было несколько поколений технологий и серверов виртуализации. Самые известные из них — XEN, KVM, LinuxV-server, OpenVZ, LXC.
Раньше Docker использовал LXC, но затем придумали собственное средство — libcontainer. Теперь Docker может использовать и другие бэкэнды — Libvirt, LXC, systemd-nspawn и другие. Docker контейнеры работают по довольно старой схеме dependency injection, т.е контейнер не знает ничего об окружении (мысль чисто программистская, сисадмин так бы не сделал).
Платформа предназначена для запуска приложений в отдельных контейнерах, в значительной степени изменившая настройку серверов, их поддержку и принцип развёртывания приложений. Docker может помочь в разработке и развертывании веб-приложений и сервисов. Контейнеры используют, чтобы разделить архитектуру приложения на меньшие части (микро-сервисы). Программное обеспечение при этом остаётся изолированным от базовой системы. Это позволяет достичь большего ускорения и параллельности выполнения. Важно, что образы докера описываются через декларативный dockerfile и наследуются от единственного предка. Контейнеры самодостаточны и их можно без изменений переносить с одного сервера на другой или, например, в облако. Разработчики могут спать спокойно, контейнерезировав приложение один раз, можно не беспокоиться, что приложение не запустится на другой машине. Контейнеры придуманы таким образом, чтобы запускаться на любом сервере именно в последней рабочей, протестированной конфигурации. Значит, теперь у сисадминов будет гораздо меньше головных болей из-за поддержки софта.
Docker поддерживается дистрибутивами Linux с ядром версии 3.8 и выше на множестве разных платформ. Иными словами, это значит, что вы можете развернуть контейнеризированное приложение на любой Linux-машине от ноутбука до Amazon Elastic Compute Cloud. По словам докладчика Александра Чистякова, главного инженера консалтинговой компании «Git In Sky», новый способ виртуализации на уровне ОС заметно облегчает жизнь во время разработки веб-приложений. Как сказал сам спикер, Docker — это и гриб, и радиоволна. Этой отсылкой он подвел к тому, что Docker решает целый ряд задач:
Автоматизация запаковки и разворачивания приложений; Масштабирование веб-сервисов, баз данных и бекенд составляющей; Возможность непрерывной интеграции и развертывания на боевом сервере; Обеспечивает работу сервисов в фоновом режиме, например, PostgreSQL; Публиковать пользовательские образы в частный репозиторий или в hub.docker.com (Очень много жалоб о том, что хаб работает нестабильно); Создание образов виртуальных машин (контейнеров). Docker используют как средство сокрытия абстракции сети (работа контейнеров с сетью абстрагирована; вы даже можете не знать, какой ip у вашего контейнера).Имейте ввиду, что если перезапустить Docker, все контейнеры упадут.
GitHubОфициальный сайт
Экосистема Docker Project Atomic от инженеров Red Hat интегрирует инструменты и структуры контейнера-приложения со службами развертывания, что даёт возможность эффективнее управлять процессом деплоя контейнеров. Ещё Project Atomic позволяет делать атомарные апгрейды системы (rpm-ostree). Доступен для Fedora, CentOS, и Red Hat Enterprise.GitHubОфициальный сайт
Система окестрации Consul от Mitchell Hashimoto, автора «Vagrant», написаная на Go, в целом представляет собой инструмент настройки служб в инфраструктуре. Она поддерживает работу с несколькими датацентрами «из коробки». При помощи Consul приложения могут использовать иерархическое хранилище-ключ / значение.
При помощи Consul можно автомаитзировать распределение контейнеров по хостам и порядок их запуска, регистрировать сервисы и находить их, использовать как средство эмуляции DNS для контейнеров.
GitHubОфициальный сайт
Продолжил встречу Алексей Кинёв со своим докладом о высокопроизводительном веб сервере Tornado.
Tornado — неблокирующий, широко масштабируемый веб-сервер, предоставляющий разработчику набор инструментов. Приложения фреймворка, представляют из себя обычный файл web.py (он же веб приложение Google), но имеют доступ к ряду дополнительных инструментов, повышающих эффективность работы, раскрывающих потенциал длительно сессионной инфраструктуры платформы.
Алексей поделился своим видением фреймворка Tornado, с которым он работает с 2012 года. Докладчик предложил сравнить Tornado и Django, что, если честно, не совсем корректно. Хоть оба фреймворка используются в веб-разработке, всё же они имеют разную архитектуру и исторически развивались в разных направлениях, что заметил сам докладчик. В отличие от Django — full stack«a, Tornado не сильно гибок и универсален, но зато сделан с заточкой на скорость. Скорость достигается благодаря принципу использования длительной обработки запроса (каждый активный пользователь использует открытое соединение с сервером), что делает возможным солидное ускорение. Это позволяет ему оперировать тысячами единовременных соединений, а это значит, что фреймворк хорошо подходит для создания real-time веб-сервисов. При правильной оптимизации Tornado может выдать производительность сравнимую с node.js производительность.
Как и Django, Tornado умеет работать с веб сокетами, поддерживает шаблон MVC. Особое внимание в докладе было уделено предостережениям о более низкоуровневом подходе к разработке и наличии строго определённой точки входа в приложение (в Tornado приложение начинается с конструкции Handler), в отличие от Django, где такой точки нет.
Tornado в основном работает при помощи модуля ioloop. Этот модуль обслуживает всю работу приложения, отслеживая изменения цикла, обеспечивающего возможность длительно обрабатывать запрос. Из этого цикла также выходят call back«и (они приходят на уровне событий в ОС т.к на них не создаётся отдельных тредов, что позволяет выиграть в скорости).
Резюмируя: Tornado — это не замена Django. Данный фреймворк в большей степени подходит для более мелких задач, между которыми нужно быстро переключаться.
Часто в разработке используются следующие моули: httpserver — НТТР сервер, (надстройка над модулем web), httpclient — НТТР клиент (работает с модулями httpserver и web). Поддерживает длительные сессии. Web — модуль, включающий в себя основные функции Tornado (классы RequestHandler и Application), template — управление шаблонами синтаксисом Python, а также вкусности, вроде модуля escape (методы, отвечающие за кодирование/декодирование XHTML, URL, JSON и YAML), locale (локализация) и auth —аутентификация при помощи схем OpenID and OAuth.
GitHubОфициальный сайт
Личные впечатления Мероприятие прошло на высоте. Докладчики охватили довольно большой круг задач, связанных с заявленными темами. Было интересно, общение проходило в непринужденной обстановке. Как и ожидалось, наибольший интерес у публики вызвало обсуждение и сравнение Django с Tornado. Площадка выходит на новый уровень, уже не ограничиваясь обсуждением только Python или Django.Организаторы позиционируют Django Meetup как тусовку, куда каждый может прийти и поделиться своим рабочим опытом, понять, что происходит в индустрии, получить информацию из первых рук (на 25-й meetup, например, пришёл Сергей Собко из РБК, выступавший на 23-й встрече).
Рекомендую всем не пропускать такие мероприятия и стараться посещать, а по возможности — выступать. Выступление на подобных площадках — это отличное подспорье для выступлений на более серьёзных. Отличный опыт и много интересного.
Special thanks организаторам за их труд по сбору и развитию комьюнити.