Как пишется отечественный софт? И что это такое?

Еще пару лет назад словосочетание «отечественный продукт» у многих вызывало оскомину и приравнивалось к чему-то несовременному и не заслуживающему доверия. Однако в нынешних реалиях отношение к этой фразе кардинально изменилось, и многие компании, выбирая поставщиков товаров или услуг, ищут именно российские разработки. Особенно актуален этот вопрос в сфере программного обеспечения. Поэтому мы не будем углубляться в анализ, насколько конкурентны на данный момент, к примеру, российские сыры или отечественный автопром по сравнению с иностранными аналогами. Скажем за себя. То есть объясним, как строится цифровая экосистема Starliner и насколько к нашему софту применимо определение «отечественное ПО». Ликбез проводит руководитель отдела информационных технологий, ведущий программист Starliner Дмитрий Шамин.

Не стоит заново изобретать велосипед

Дмитрий Шамин: Я бы сразу акцентировал внимание, что лично для меня отечественная разработка – это не значит, что всё, начиная с серверов, библиотек кодов и заканчивая языками программирования, – создано на территории России. Отечественная разработка – это, прежде всего, программы, которые разработаны отечественными специалистами. А «железо», языки программирования и сервисные программы можно использовать любые. Конечно, идеальная история – это российский язык программирования, на российском «железе», с использованием только библиотек, созданных российскими программистами. Но это значит отказаться от того многообразия уже существующих инструментов и придумывать всё заново, что, конечно, скажется на сроках разработки. Такое возможно, наверное, только в каких-то критически-важных ситуациях, например, в военной разработке, но не для бизнеса, который за частую, кроме качества, требует ещё и высокую скорость выпуска программ на рынок.

Руководитель отдела информационных технологий, ведущий программист Starliner Дмитрий Шамин

Дарья Дедова: Дмитрий, расскажите подробнее, что это за библиотеки кода? Явно ведь речь не про книжки на полках. 

Дмитрий Шамин: В мире существует очень много готового кода, который уже кем-то когда-то написан. И, естественно, когда я начинаю писать программу для Starliner, ни мне, ни моим коллегам нет необходимости заново «изобретать велосипед», отказываясь от уже существующих программных библиотек. Во всем мире, Россия – не исключение, все программисты используют то, что было написано до нас. Мне не нужно с нуля писать программу, которая будет двигать курсор мыши, или мне не нужно заново изобретать программу, которая будет высчитывать синус угла. Библиотек – огромное количество. Есть сугубо математические библиотеки, есть те, который организуют работу со строками, с датой, с календарем и прочее. Если не использовать библиотеки, разработка ПО будет растягиваться на десятилетия.

Внимание! Лицензия

Дарья Дедова: А разве нет опасности, что эти библиотеки могут закрыть для российских пользователей? Возьмут и расширят санкции.

Дмитрий Шамин: Все программисты находятся в едином информационном поле, так как сеть интернета не знает границ. По крайней мере, пока. И на сегодняшний день я спокойно могу использовать библиотеку китайского программиста, чешского, американского. Часто я даже не знаю, кто конкретно и в какой стране её создал.

Библиотеки бывают разные. Если широкими мазками, то есть проприетарное программное обеспечение под закрытыми платными лицензиями (яркий пример – программы Microsoft или Oracle), и есть бесплатное (свободное) программное обеспечение, которым можно пользоваться и переписывать как хочешь. Так как цифровая экосистема Starliner – коммерческая программа, мы 100% не можем использовать библиотеки, которые требуют публикации нашего кода в открытом доступе в ответ, такие тоже есть. Мы внимательно смотрим, под какими лицензиями работает библиотека, прежде чем брать код в работу.

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

Так же и с базами данных. Есть базы, которые закрыты лицензиями, есть свободные. Например, база данных MySQL, с которой, среди прочих работаем мы, может использоваться бесплатно (при соблюдении некоторых условий). При этом компания, которая владеет MySQL, предлагает и коммерческую лицензию на поддержку ПО: когда возникнет сложная ситуация, служба поддержки сможет адресно помочь советом или настройкой базы данных.

Языки программирования тоже не имеют национальности и территориальной привязки.

Набор библиотек не может приравниваться к цифровой системе

С этой точки зрения наш софт, конечно же, не на 100% написан отечественными программистами. Но сколько бы сторонних библиотек ты не использовал, сама по себе цифровая экосистема Starliner не возникнет. Да, определённая библиотека умеет показывать календарик с возможностью выбора дат, но она не сможет искать билеты на эти даты. Поэтому всю обвязку, весь костяк, все ядро программы, интерфейс, модули для поиска авиационных и ж/д билетов, бронирования гостиниц, создания отчётов, ведения аналитики, внутренних алгоритмов взаимодействия и т.д. мы пишем своими силами.

Представьте, российский талантливый художник создал уникальную работу. И мы с гордостью говорим, как он молодец, какой вклад русских художников совершен в мировую культуру! Нам ведь мало интересно, где был произведен холст для рисования и краски с кисточками. Главное, что сам шедевр – отечественный.

Естественно, для ускорения работы мы используем сторонние библиотеки. Да, бывает, что библиотека перестаёт поддерживаться и обновляться. Человек мог написать её 10 лет назад, и ему элементарно надоело эту библиотеку поддерживать или просто не стало этого программиста. Ситуации бывают разные. В этом случае её можно заменить на другую библиотеку. Или, если код старой библиотеки доступен, то могут найтись программисты, которые сделают копию этой библиотеки и начнут развивать её дальше под другим именем.

Библиотеки кодов – вне политики

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

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

На библиотеку надейся, но зеркала сохраняй!

В любом случае, когда мы создаём программу, мы внимательнейшим образом изучаем библиотеки, которые мы используем. Нам нужно знать, что и как там сделано, проверить на благонадёжность. Кроме того, если нам даже закроют доступ к тому же GitHub, то абсолютно все библиотеки, которые мы задействуем в своём проекте, скачаны в наш собственный репозиторий. То есть мы сделали зеркала (копии) всех библиотек, которые у нас используются. Наша программа автоматически загружает к нам в стек все выбранные коды и следит за обновлениями.

Теперь представим, что нам реально закрывают доступ к международным библиотекам. И наша программа, когда мы её публикуем, не может достучаться до библиотеки на GitHub (обрезали интернет или автор заблокировал её). В этом случае мы обращаемся к своим серверам, которые мы  контролируем на 100%, и на которых хранятся зеркала тех библиотек, доступ к которым потерян на GitHub. Да, автоматического обновления уже не будет, но на этот случай тоже есть лазейки: через VPN, через proxy-сервер мы можем зайти и проверить обновления, чтобы скачать их себе для поддержания собственного репозиторий. Это, конечно, сложнее и приводит к увеличению объёма работы, но в принципе ничего страшного в этом нет.

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

Дарья Дедова: Код, софт, программное обеспечение – это все же интеллектуальные активы, которые, как мы уже поняли, Starliner не потеряет ни при каких условиях. А что с «железом»? Ведь те же серверы, о которых сегодня так много говорят в виду их резкого подорожания и частью отсутствия стабильных поставок, это ведь физический продукт – мощный системный блок. Как у нас обстоят дела в этой области?

Не все так плохо

Дмитрий Шамин: У нас правительство подготовилось ко всей этой истории заранее. Достаточно вспомнить нашумевший пакет Яровой, обязывающий операторов и провайдеров интернета хранить на серверах все данные за какие-то сумасшедшие временные периоды. Все провайдеры хватались за головы: это же сколько нужно закупить нового оборудования, сделать резервов и т.д?!. А сейчас, когда все бумкнуло, резервы оказались в наличии. И эти резервы ещё и высвободили постановлением кабмина РФ от 28 марта 2022 №498. Правительство РФ разрешило операторам связи не хранить трафик общедоступных теле- и радиоканалов, а также стриминговых сервисов в рамках этого самого пакета Яровой. То есть эти серверы теперь могут использовать для реальной работы, а не для архива. Грубо говоря, в России сегодня есть запас оборудования.

Дарья Дедова: Ну, мы-то с вами не провайдер и стриминговый сервис…

Дмитрий Шамин: Все вопросы, связанные с «железом», – на стороне нашего провайдера. Мы не размещаем боевые системы Starliner на собственных серверах и мощностях, а арендуем их у Selectel. Кстати, это один из лучших провайдеров в стране. К примеру, на его серверах хостится тот же ВКонтакте.

Та инфраструктура, которая находится у нас, больше связана с самой разработкой софта и его тестированием. Чтобы подготовить программу и предоставить её пользователям, мы должны её не только написать, но и всячески отладить, найти ошибки, исправить их, прогнать кучу тестов и прочее. Для этого мы используем собственные серверные мощности. Кстати, мы их значительно увеличили в этом марте, за счёт чего подготовили новую инфраструктуру для тестирования, которая позволяет оптимизировать процесс разработки.

Принятые в Starliner алгоритмы работы позволяют гарантировать высокую степень устойчивости и надёжности цифровой экосистемы. Грубо говоря, у нас ничего не отвалится, не исчезнет, не перестанет функционировать. Что называется – настоящий отечественный продукт в самом лучшем смысле этого слова.

Отключить Россию от глобального интернета практически нереально

Дарья Дедова: И последний вопрос: могут ли нас отключить от глобального интернета?

Дмитрий Шамин: Я скептически отношусь к тому, что нас отрубят. Тем более, что Россия подготовилась и к такому повороту событий. Несколько лет назад даже проходили учения на случай такого развития событий. Созданы и зарезервированы специальные узлы, сделаны дополнительные каналы связи через дружественные страны, сделаны копии DNC-серверов, которые хранят маршрутизацию по интернету и прочее. Если, к примеру, так называемый коллективный Запад решит отключить Россию от глобального интернета, это будет сделать очень тяжело. И, на мой взгляд, практически нереально.