Блог

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Анонсированный Российский репозиторий открытого кода повлияет в#nbsp;первую очередь на#nbsp;тех, чей код туда попадет. Они не#nbsp;смогут его продавать многократно. Но#nbsp;код, как известно, нужно развивать и#nbsp;поддерживать, так что не#nbsp;исключаю, что эти разработчики получат также какое-то государственное финансирование. В#nbsp;целом идея хорошая и#nbsp;давно пора, потому что мы#nbsp;не#nbsp;знаем, что будет дальше с#nbsp;GitHub в#nbsp;России. Нашей компании этот репозитарий не#nbsp;нужен, мы#nbsp;ничего выкладывать не#nbsp;планируем. Но#nbsp;интересно посмотреть, как это будет работать.
{$co}
2023-01-31 11:40