4 инструмента будущего, которые упростят жизнь разработчикам
Поговорим об инструментах, которые в будущем смогут написать код или разобраться в legacy вместо разработчиков.
6К открытий9К показов
Вадим Сагидулин
ВрИО руководителя центра RnD
Добрый день! Я Вадим Сагидулин, в информационных технологиях с 1998 года, а в МТС с 2005. Сейчас занимаюсь R&D-исследованиями внутри компании.
Сегодня поговорим о технологиях и инструментах, которые могут серьёзно упростить жизнь разработчиков в будущем. Например, написать код или разобраться в потоках legacy. Некоторые из них есть в форме прототипов, и их можно «потрогать», другие — существуют в виде идей, которые нам хотелось бы воплотить. Начнём.
Генератор кода
Представьте сервис, который пишет код самостоятельно. Вам нужно создать задачу и наблюдать, как машина её выполняет. Сейчас мы в МТС планируем создать такой. Уже есть исследования по этой теме, которыми занимается один из вузов страны.
Но существуют и готовые прототипы. Самый яркий — GitHub Copilot, который продвигает Microsoft. Технология только появилась в открытом доступе, но один из наших сотрудников успел протестировать её заранее — пока она находилась в ограниченой бете. Выглядит многообещающе.
UPD: Сейчас подписка на GitHub Copilot стоит $10 в месяц или $100 в год (есть пробная версия на 60 дней). Для студентов с пакетом GitHub Student Developer Pack и авторов популярных проектов с открытым исходным кодом на площадке подписка бесплатная.
GitHub Copilot — это модель, обученная определённым образом. Вы открываете IDE, начинаете писать код, и система выдаёт его примерное продолжение. Другой способ — обозначить желаемый результат в виде комментариев. Модель сама напишет под них функции.
Код GitHub Copilot неидеальный — человек всё равно должен его проверить. И результат будет напрямую зависеть от того, насколько подробно и понятно вы описали машине техзадание.
Инструмент для анализа безопасности кода
Безопасность кода — это всегда проблема. Для анализа используется отдельный программно-аппаратный комплекс, на работу с которым нужно тратить время. А некоторые ошибки и вовсе отлавливаются массовым тестированием — уже после выхода продукта.
Сейчас мы настраиваем конвейер разработки и говорим системе: «Вот тебе репозиторий, который находится на внутреннем GitLab, пожалуйста, отслеживай коммиты и по мере их накопления проводи анализ».
Результат проверки приходит на почту, где описаны внутренние проблемы. Процессы идут постфактум, когда ты сохранил код и сам проверил несколько раз.
Хочется, чтобы система работала внутри IDE, в режиме реального времени и без лишних затрат (и ложных срабатываний). Мы в МТС пока ищем такой и сами думаем, как его можно сделать.
Инструмент реализации Infrastructure-as-Code
Пока мы не видели ни одного инструмента, который бы позволил нам создавать виртуальную инфраструктуру, просто говоря: «Компьютер! Я хочу сделать четыре виртуальных сервера. В каждом из них должно быть столько оперативной памяти и столько жёстких дисков. А ещё — вот такой программный стек».
Пока мы вместо этого пишем очень много кода:
На примере установка WordPress c помощью шаблонов. Грубо говоря, мы пишем «Компьютер, создай мне, пожалуйста, базу данных. И собственный движок WordPress. И веб-сервер, который будет предоставлять информацию наружу».
Также мы указываем механизм получения сертификата, описываем, как нужно распределить хранение, как системы должны взаимодействовать друг с другом внутри сети. И всё вручную.
Инструмент, который делает это сам, стал бы очень полезным — мы смогли бы привлекать клиентов, у которых нет своего квалифицированного IT-штата. И, кажется, её возможно создать. Настроить алгоритм машинного обучения, объяснить ему, что и как нужно делать, валидировать его работу и так далее.
Предиктор ошибок
Следующий пункт — про эксплуатацию, а не написание кода. Существует проблема: понять, почему что-то десять минут назад работало, а сейчас перестало. А предугадать, что какая-то часть системы сломается в ближайшее время, и вовсе невозможно.
Существуют инструменты, которые оценивают проблемы постфактум. А также объясняют, что нужно сделать, чтобы такого не повторялось. Но это мало помогает, если всё лежит прямо сейчас.
Хотелось бы видеть инструмент, который проанализирует систему и скажет: «Дорого́й друг, через десять минут всё упадёт. Добавь ресурсов, — или, — включи кондиционер».
Попытки такое создать есть. По крайней мере, у российских компаний существуют наработки в сфере информационной безопасности. Они пробуют сделать систему класса the extended analyze and respond. По идее, она будет анализировать огромный поток данных, которые генерируются в виде логов. А также искать аномалии и адекватно на них реагировать, например, блокировать сетевой доступ для подозрительного лица.
И пара уже существующих инструментов, которыми пока мало кто пользуется
Есть компания Open AI, в которую вкладывают миллиарды крупные игроки рынка, такие как Microsoft. Её разработчики обучили модель, которая изучила открытые репозитории кода. И создала возможность писать с помощью них ПО (в основе GitHub CoPilot лежит как раз технология OpenAI Codex).
Расскажу о паре инструментов Open AI — что-то похожее на них хотелось бы внедрить внутри компании.
Поисковые запросы из описания
Родной мне кейс — создание поисковых запросов. Некоторое время назад я отвечал за биллинговую систему, и поэтому всегда тесно взаимодействовал с маркетологами. Коллеги писали нам запросы, а мы искали по ним информацию и выдавали результаты в виде таблицы.
У Open AI есть инструмент, который позволяет делать это автоматически. Благодаря ему любой человек может «попросить» какие-либо данные, например, всех, кто летал в Турцию в апреле. И машина довольно быстро это выдаст.
Анализ кода
Представим, что вы разработчик, который только пришёл в новую компанию. От предыдущего сотрудника остался огромный пласт legacy, в котором нужно разобраться.
Инструмент, который создали Open AI, делает это за вас. Он анализирует код и вкратце объясняет, для чего тот нужен.
Ещё есть инструмент, который переводит код из одного языка программирования в другой. Или помогает оптимизировать код — например, оставить 50 строк вместо 120.
Вместо вывода
Хочется видеть больше инструментов, которые бы упростили жизнь разработчиков: избавляли от рутины и необходимости заниматься долгими, но не особо эффективными вещами (например, копанием в legacy). И передать подобную работу машине.
К тому же время заставляет думать о том, как поддерживать готовую инфраструктуру в будущем. И производить самим элементы операторской сети.
Разные команды МТС, в том числе RnD-специалисты ищут новые и нетривиальные решения, которые помогут выполнять простую и не очень работу, не тратя время и нервы сотрудников.
А какие инструменты мечтаете увидеть вы? Делитесь хотелками и идеями.
6К открытий9К показов