{УСКОРИТЕЛЬ КОДЕРОВ}

Как работает и экономит время разработчиков созданная украинцами платформа MEF. DEV

Украинцы придумали сервис, который помогает компаниям получить программное решение для бизнеса (и не только) в несколько раз быстрее, чем если бы его делала команда внутренних или наемных разработчиков.

Секрет прост — нанять на проект или разработку конкретного продукта сразу несколько команд, каждая из которых будет писать свой кусок кода, затем они автоматически совмещаются в единое целое. Таким образом заказчик, во-первых, экономит время и быстрее получает продукт, а во-вторых, получает вдвое больше полезного ресурса для разработки. Разработчики же учатся работать в максимальной синхронизации с другими командами при обновляемом в реальном режиме документации, тем самым минимизируя переделки и получая возможность работать каждой конкретной командой в любое удобное для нее время из любой точки мира. Dev.ua разузнал, как устроена платформа MEF.DEV и как сервис облегчает жизнь айтишников и бизнеса.

Идеологом платформы MEF.DEV в 2019 году выступил Сергей Половников с командой инженеров NATEC R&D.

Мы с 1999 года работаем над созданием биллинговых систем и знаем о биллинге достаточно, чтобы делать эту работу отлично. Чтобы ускорить и упростить процесс разработки, мы создали проект, который позволяет в разы ускорить создание сложного ИТ продукта

Сергей Половников, директор по инжинирингу NATEC

Преимущества использования MEF.DEV неочевидны невооруженным взглядом. По словам Половникова, платформа имеет четыре основных преимущества над другими способами генерации кода для программных продуктов и решений.

5 {ПЛЮШЕК} MEF.DEV

Во-первых, в системе MEF.DEV один продукт или проект пишут одновременно разные команды разработчиков

«Мы говорим, что есть узкоспециализированные микрокоманды из 5-12 человек, которые могут сделать кусок работы за определенный срок. И для того, чтобы сделать больший объем работ в отведенный отрезок времени, берутся несколько таких микрокоманд и пилят проект одновременно», — рассказывает Половников.

По его словам, к такой практике прибегают многие, но получается не у всех. «Для того, чтобы команды совместно могли работать, они должны следовать общим требованиям реализации проекта. «Наша платформа дает такой мануал (или референсную архитектуру) от проектирования до реального использования», — говорит он. «Разработчики могут писать код отдельно и не зависеть друг от друга. Платформа сама совмещает части кода. Все команды друг от друга отвязаны организационно. Это сильно ускоряет процесс».

Второе преимущество — использование слабо связанного кода, который автоматически собирается в единое целое

Как рассказывает Половников, платформа реализует объединение слабо зависимых друг от друга кусков кода на лету за счет технологий управления инверсией inversion of control и внедрения зависимостей dependency injection. При этом подобный инструмент может использоваться при написании кода на разных языках.

Таким образом, используя MEF.DEV, слабосвязанный код легко пересобирать после любых обновлений, в отличие от кода, который требует повторной сборки с помощью разных инструментов после их обновления. По словам Сергея, код в текущей версии MEF.DEV пишется на языках программирования Microsoft с использованием фреймворка .Net Core. Это накладывает ограничение по стеку — поэтому разработчики Java или Python используют платформу стандартно в рамках микро-сервисной архитектуры, для чего платформа автоматически генерирует API интерфейсы с различными форматами обмена данных.

Третий плюс — код в MEF.DEV может генерироваться и хоститься не в облаке, а in-house, т.е внутри предприятия

«Не все наши заказчики могут использовать облака для обработки данных, и мы сделали для них такое решение in-house», — говорит Половников.

Четвертое преимущество — прозрачность моделей данных и авто-генерация технической спецификации каждой версии такого слабо связанного кода

«Для того, чтобы облегчить процесс синхронизации разработчиков на уровне технических спецификаций, мы придумали некий контейнер бизнес-логики, который стандартно сочетается друг с другом», — говорит Сергей. 

По его словам, это стало возможным благодаря подходу к проектированию, которое построено на основе domain driven design. «При бизнес-анализе мы создаем набор сущностей и действий, который может реализовать контейнер бизнес-логики (иными словами отдельный кубик). И такие кубики от разных команд могут сочетаться между собой», — объясняет он принцип работы платформы.

Пятое преимущество — автоматическая кодогенерация обновляемых моделей данных, поддерживающие такие паттерны как model-first и database-first, в том числе с использованием reverse engineering подхода

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

На этом функциональность и польза для разработчиков не заканчивается. По словам основателя проекта, сейчас команда работает над отлаживанием референсной (последовательной за уже готовым решением) архитектуры для отстройки процессов в крупных компаниях. А вскоре в MEF.DEV появится опция автоматизированных тестов для разрабатываемых сторонними разработчиками продуктов.

КТО И КАК ИСПОЛЬЗУЕТ MEF.DEV

Компании, которые привлекали к решению своих задач MEF.DEV, сервисом очень довольны. 

«Мы сотрудничали с платформой в рамках замены биллинговой системы и ряда систем провиженинга. Опыт положительный. За 6 месяцев мы смогли сделать миграцию абонентской базы на новый биллинг и новый провиженинг», — говорит Дмитрий Зубков, руководитель департамента внедрения проектов и IT-продуктов в «Киевстар».

Он рассказывает, что с помощью MEF.DEV крупнейшему телеком-оператору удалось быстро заменить биллинговую систему, которая жила 20 лет. «Никто детально не знал, как это работает на уровне процедур и функций. Сапорт поддерживал базовые процессы, развитие занималось дополнительными фичами, а экспертиза потерялась. И когда стал вопрос о переносе всех этих процессов на новую платформу, базовой командой мы этого сделать не смогли», — делится Зубков.

По его словам, подрядчик сам подсказал подход к аналитике кода на старой платформе. «Там было много микросервисов, каждая сущность жила в отдельной ветке. Абоненты, лицевые счета лежали в структуре баз данных отдельно и фиксировались как отдельные ветки. И подход ребят помог быстро и эффективно внедрить обновления», — говорит он.

Среди плюсов использования MEF.DEV — гибкость подхода к реализации и максимально простая реализация на уровне кода

«Когда мы подписывали с ними контракт, Сергей Половников сказал одну простую фразу: «Если я пообещал, что сделаю, то я сделаю это, чего бы мне это не стоило. Он вытянул проект в нужные сроки при первоначальном бюджете, несмотря на неопределенность и кучу внешних дестабилизирующих факторов», — рассказывает Зубков.  Еще один вариант применения MEF.DEV — в телеком компании, например, для провиженинга сервисов. Как рассказал dev.ua бывший технический директор Volia Виталий Лакей, оператором цифрового телевидения нужно предоставлять каждому пользователю определенные пакеты услуг. «Есть подписка на пакет услуг линейного ТВ — базовый, расширенный, спортивный, для взрослых, детский и так далее. Также есть транзакционные покупки на отдельные тайтлы. И за доступ клиента к контенту отвечает некая внешняя middleware платформа», — говорит он. С этой системой интегрируется биллинговая система. «Так случилось, что нам нужно было перейти на новую middleware платформу, которая позволит запускать новые сервисы, работать с новыми типами клиентских устройств. Обратной совместимости у старых устройств не было, поэтому бесшовную миграцию и непрерывность бизнеса можно было обеспечить только путём параллельной эксплуатации двух платформ на переходной период в несколько лет. При этом обеспечить синхронный провиженинг на абсолютно разных идеологически платформах. И обеспечить консистентность данных, учитывая всю бизнес-логику.- приводит пример экс-техдиректор Volia. «Мы были более гибки, так как биллинговую платформу разрабатывает и поддерживает локальная ІТ-команда. Потратили много усилий, чтобы бесшовно запустить две платформы параллельно. При этом, пришлось изменить уровень абстракции сервисов. Если представить, что все системы в окружении вендорные, где гибкость, стоимость и длительность сложного change request оставляет желать лучшего, то это может стать существенным препятствием. На такой случай очень хорошим решением становятся интеграционная платформа по типу MEF.DEV. Она является тем самым связующим звеном, которое помогает легко интегрировать между собой сложные системы. Поддержка legacy платформ, версионности интерфейсов, транзакционности операций, low-code решения — все это обеспечивает быстроту и бесшовность таких миграций», — говорит он. Еще один кейс Volia, где MEF.DEV могла бы сэкономить время и деньги, — интеграция с сервисами массовых рассылок. «Мы рассылали миллионы сообщений нашим клиентам через внешнего подрядчика. Была зафиксирована определенная стоимость услуг. Раз в какой-то период компания проводит тендер на выбор нового поставщика или пересмотр цен. Так как цены на этом рынке достаточно волатильные, новый подрядчик дает предложение, например, на копейку дешевле. А в масштабах года это могут быть десятки тысяч долларов. Но для того, чтобы перейти с одного поставщика на другого, нужно сделать новую интеграцию, обеспечить бесшовный переход. Порой платили по более высокому тарифу, ввиду стоимости и срока новой интеграции.

И снова-таки, интеграционная платформа MEF.DEV решает такую задачу в разы быстрее и дешевле», — говорит ex-CTO Volia.

Еще один запрос, который легко и быстро можно было бы реализовать с помощью MEF.DEV, — создание сервиса по генерации коротких ссылок.

«У нас есть продукт для В2В, и один из его модулей — генерация шортлинков. Есть API-сервисы типа bitly, но у нас требования к безопасности выше. И наш линк — это токен, нам нужно было над этим поработать», — рассказывает Святослав Лобач, VP of Product в Revenue Grid. По словам собеседника dev.ua, клиенты жаловались, что не могли друг другу отправлять линки на токены и не могли их запомнить. Подобные задумки реализуют и другие сервисы. Но если это делать через полный цикл разработки, то это очень долго. «Поэтому оптимально было бы запустить это через платформу MEF.DEV на наших серверах в базу с коннекшн-стрингом. В итоге мы получили бы готовый пакет внутри продукта с минимальной доработкой и обошли бы длинную историю подключения, настройки, вовлечения множества специалистов», — говорит Святослав.  Он говорит, что теперь, если для других продуктов понадобится такой функционал, его можно будет легко использовать.  По словам Лобача, главная задача — скорость разработки. «Это именно то, что дает сама платформа. Мы сократим релиз-цикл, потому что не надо будет девелоперам разбираться с подключением сервисных пакетов», — говорит он. 

MEF.DEV БУДЕТ ЛУЧШЕ

Многие бизнесы пока с опаской смотрят на новый сервис, которым уже вовсю пользуется «Киевстар». Причина такого отношения — недоверие к внешним продуктам у компаний, который умеют писать код самостоятельно. «SLA (договор об уровне услуг) у компаний часто очень жесткий. И большие компании, как обычно, выбирают другие большие компании. Но не факт, что те другие — лучше и качественнее с точки зрения каких-то задач», — говорит Виталий Лакей. «Хотелось бы каким-то образом развенчать вот эти страхи».

Впрочем, для MEF.DEV такие опасения — только толчок к развитию. В планах разработчиков в ближайший год развивать платформу как open source проект. «Сейчас готовимся к выходу на GitHub, и будем развиваться на основе контрибуции. Но плагины конкретных разработчиков могут быть платными или бесплатными — это на их усмотрение», — рассказывает о планах Сергей Половников.

Текст: Мария Бровинская