Блог

У России три пути: NGINX, Postgres и FastAPI

В конце ноября 2022 года Рубен Арутюнян принял участие в онлайн-конференции Bussines&IT Day Open Technologies and Low-code (организатор NWComm). Наш IT-директор убежден, что у России три пути: NGINX, Postgres и FastAPI.
Процесс внедрения различных open-source решений в компании начался около 20 лет назад и не всегда шел гладко. Я руковожу отделом IT, занимаюсь разработкой и кастомизацией инструментов оценки, являюсь одним из авторов системы онлайн-оценки SHLTOOLS. Сейчас все наши сервисы — про оценку, в том числе айтишников. Компания работает на рынке России уже 30 лет, 20 из которых мы предлагаем клиентам систему онлайн-оценки. И она лет 15 уже основана на open-source продуктах. Более одного миллиона тестов проходятся кандидатами в нашей системе ежегодно.

В самом начале пути (в начале двухтысячных) мне лично пришлось столкнуться с FreeBSD во время засилья Windows. Мне она так понравилась, что с тех пор мы даже пару серверов держим на ней, остальные мигрировали на Linux. Просто потому, что она мне и моему коллеге сисадмину нравится. Должен быть один сервер, где можно отдохнуть душой. С тех пор мы постепенно обрастали программными продуктами и сервисами на open source компонентах и случилось это по следующим причинам.

Во-первых, прозрачность процесса разработки. Да, нужно иметь программистов, которые понимают, что в этом процессе происходит, которые могут разобраться, кто и что накодил. Однако, есть последние тенденции перехода всего в веб, а особенности веба предполагают, что есть много маленьких компонентов, из которых все складывается. Если что-то критичное происходит, можно посмотреть один компонент «руками», это удобно.

Во-вторых всегда можно форкнуть нужный компонент, если есть вопросы к тому, куда идет его разработка. Это тяжело, дорого, но, как минимум, возможно, если проект не поддерживается, а разработчик на него забил. Он форкается, и вы продолжаете жить дальше, даже если оригинальная команда уже не присутствует. Если очень надо, если это приносит деньги, конечно. Такие проекты редко исчезают, потому что их форкают те, кто готов на этом зарабатывать. Могу привести пример MySQL, который после покупки Oracle бы форкнут и назван MariaDB.

Третья причина: успешные open-source проекты редко активно рекламируются, поэтому становятся популярными именно благодаря качеству, а не оттого, что кто-то вложил много денег в популяризацию и рекламу, как было с Java, например.

Четвертое — доступ к обучению. Доступ к самим программным продуктам позволяет людям учиться и узнавать, как это работает, потому что не нужно иметь сервер за пару сотен тысяч (именно ПО) от Microsoft, хотя у них есть урезанные версии, но они урезанные. У open-source есть возможность тестировать все на реальных нагрузках и реальных процессах. Люди могут этим пользоваться, легче учиться и получать готовых специалистов, которые стоят дешевле, хотя с качеством бывают проблемы.

Вокруг хороших open-source проектов вырастают экосистемы, и вырастают они сами. Появляется какая-нибудь библиотека для отрисовки интерфейса (React, Vue). И тут же начинают вокруг расти субпроекты от людей, которые не связаны с оригинальными разработчиками, но делают тоже что-то классное, чем можно пользоваться (Next, Remix, Nuxt и т. д.). Это крайне удобно. Потом подтягиваются те, кто клепает интерфейсы (MUI, Ant Design) и процесс разработки web-продуктов становится быстрее.

И последнее. Это бесплатно. Это один из моментов, который меня привлек 20 лет назад. Тогда я не очень себе представлял, что такое TCO (total cost of ownership). В итоге, к счастью, получается не бесплатно, но значительно дешевле, особенно когда нужно быстро что-то поправить в продукте, если оно не работает, или если у продукта закончился срок поддержки.

Что мы используем для клиентов?

На бэке (backend) у нас Django, Django Rest Framework, Celery, Pandas. На фронте (frontend): Vue, Nuxt, Vuetify и apexcharts. И инфраструктура: Docker, Nginx, Postgres, HAProxy и Redis.
Если бы мы делали это сейчас, стек технологий, наверное, был бы другим, но несколько лет назад многих вещей еще просто не было. Сейчас появляются новые классные open-source решения, например FireBase от Google, но если начал использовать, уехать с него тяжело, надо всю инфраструктуру менять (*комментарий автора*: FireBase, конечно, не open source, но хороший продукт тем не менее :). Появился open-source SupaBase, который позволяет вопросы авторизации, баз данных, и даже предоставляет REST API, что сильно ускоряет и облегчает процессы. Почти уверен, что мы бы его использовали, если бы делали свои продукты сейчас. И в новых проектах с нуля его использовать — хорошая идея. Его можно развернуть у себя, что актуально в условиях санкционного давления и с учетом требований держать персональные данные пользователей на территории РФ.

Как продавать open-source внутри?

Приученным к продуктам Microsoft пользователям сложно отвыкать и на что-то другое переходить. Есть три варианта. Первый — заставить, и это работает. Люди привыкнут, но нужно заручиться поддержкой руководства. Руководству придется заставлять людей сверху, иначе переход не состоится. Я не сторонник этого подхода — портить имидж IT-отдела в компании не очень хорошо, а уж если что-то пойдет не так, то будет полный провал. Второй вариант — лишить альтернатив, с этим нам помогли недружественные страны. Импортозамещать чем-то своим, российским open-source в идеале. Третий вариант — сделать что-то слишком удобным, чтоб можно было отказаться.

Основная проблема — это пользователи. Как всегда: «незнакомые кнопки, ничего не понимаю». Две проблемы: нежелание осваивать новое (люди ленивы и привыкают) и отсутствие привычного функционала.

Айтишник сам должен быть ленивым, я считаю, и использовать самый лучший инструмент, которые позволяет ему быстро решать задачу. Еще насколько лет назад, если я видел при подборе программистов, что у кандидата только WhatsApp для связи, то у меня был вопрос, почему он использует продукт, у которого есть лучшие альтернативы, вроде Telegram? Если просто потому, что привык, то велика вероятность, что у него возникнут проблемы с обучением на новом месте работы.

Что касается функционала, то дело в привычке: люди и про формулы в Excel за рамками «суммы» и «поделить» знают очень условно. Часто им не нужен функционал, они просто привыкли, что он есть в определенном месте и включается определенным образом. Сводные таблицы есть и в Google, и в других продуктах, у них хороший функционал, но к Excel привыкли.

Что делать IT-отделу с пользователями, если происходит переход на новое ПО?

У меня был опыт работы в поддержке, поэтому у меня была возможность создать в нашей компании некоторую культуру того, как люди работают со своими проблемами в IT.

Первое: правило двух минут — после поступления запроса в техподдержку ничего не делать две минуты. Если пользователю что-то очень нужно, он попробует решить проблему своими силами. В процессе он чему-то научится, что-то поймет. Пусть даже он сам не сможет решить проблему, но за попытку стоит его похвалить. По моим наблюдениям, наша бухгалтерия (все сотрудники давно работают в компании) — это самый беспроблемный отдел в плане IT, они умеют почти всё решать сами, даже разбираются с новым ПО. Обращаются в IT-отдел только в крайних случаях. С новыми сотрудниками сложнее.

Второе правило, которое я внедрил в нашей компании: пользователь должен внимательно читать уведомления об ошибках. Обычно там все прозрачно написано: конфликт файлов или какая-то типичная ситуация, которую пользователь может решить сам.

И последнее правило: все перенести в браузер. Это привычная для всех среда, все умеют зайти на какой-то ресурс в интернете. Не нужно запускать каких-то отдельных приложений.

Представьте, если вы 15 лет назад переехали на гуглодоки, для вашей компании этого было достаточно, представьте, сколько вы сэкономили на стоимости офисных пакетов ПО? Поликлиники, обратите внимание, на Linux, там все в веб-приложении, минимальные проблемы. У нас небольшая компания, от 60 до 70 сотрудников, перейти на open-source быстрее и проще, чем крупной компании. Но крупной компании я бы все-таки предложил сделать пилот, найти команду энтузиастов, которые попробуют сделать проект и оценить его эффективность.

Теперь о том, что у нас стоит внутри. Для IT-отдела используем: Linux (Astra, Mint), FreeBSD, GitLab. Были сложности с отдельными библиотеками — туда после 24 февраля пытались пихать политические лозунги и вредоносный код, однако open source сообщество показало себя с лучшей стороны: доступ к внесению изменений был ограничен, а пакеты откатили до последней рабочей версии. Все прекрасно понимают, что развал этой инфраструктуры и потеря доверия к ней отбросит отрасль на много лет назад. И так многое случилось, техногиганты увольняют людей, мир распался. В open-source были примеры удаления данных с жестких дисков open source библиотекой, но реакция была быстрой: закрыли доступ, откатили ее к предыдущим версиям.

Для остальных коллег используем: EGroupware, Nextcloud. EGroupware — для нас это удобный календарь-планировщик, где можно было посмотреть: список людей и календарь их загрузки на весь месяц в виде полосок. Он всем так понравился, что не можем «развнедрить». С Nextcloud было больше проблем. Это синхронизация файлов между компьютерами, адаптация прошла за 3 недели, научили сначала 3−4 пользователей, потом они научили остальных.

Коллеги спрашивали про low-code. Я не большой фанат термина, но все open-source инструменты — это по сути уже low code, писать код руками не нужно, многое уже сделано. Мы как сообщество open-source продвигаемся достаточно активно. Excel я бы тоже назвал low code в какой-то степени с его функциями.

Могу сказать с высоты 18-летнего опыта работы с open-source: спасибо ему за то, что у нас есть работа, что мы не зависим от вендоров, которые внезапно ушли или сократили поддержку, за то, что можно жить относительно спокойно на фоне всего происходящего.

В ближайшие три года, мне кажется, все начнут использовать, т. к .доверие к вендорам умерло. А вендоры вынуждены подчиняться тем рынкам, которые важнее, чем Россия. Наверное, можно доверять вендорам, которые «про бизнес», например, китайским. Но мне кажется, что будет развертывание систем на уровне стран, потому что глобальным системам больше доверять нельзя (как MongoDB, которая ушла). Не знаю, что сделали те, кто использовал FireBase от Google, кому пришлось резко все переделывать.

С кадрами сейчас интересно. Рынок остался глобальным благодаря интернету и удаленной работе. Думаю, что на рынке появится много кадров, прошедших курсы. Рынок кандидатов на волне популярности обучения IT-специальностям, на время превратился в рынок работодателей. У компаний будет возможность привлекать людей на уровне джун, воспитывать их лояльность и выращивать классных специалистов.

Анонсированный Российский репозиторий открытого кода повлияет в первую очередь на тех, чей код туда попадет. Они не смогут его продавать многократно. Но код, как известно, нужно развивать и поддерживать, так что не исключаю, что эти разработчики получат также какое-то государственное финансирование. В целом идея хорошая и давно пора, потому что мы не знаем, что будет дальше с GitHub в России. Нашей компании этот репозитарий не нужен, мы ничего выкладывать не планируем. Но интересно посмотреть, как это будет работать.