Выбрать страницу

Задачи кастомной разработки софта как формата, предполагающего создание собственного ПО под специфические нужды бизнеса вместо покупки готовых продуктов, выходят сегодня на первый план ИТ-стратегии множества компаний. В связи с недоступностью привычных инструментов и сред разработки ПО встает задача организации процесса своими силами. Что нужно знать о развитии кастома прямо сейчас?

Инфраструктура как база

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

Разработчики пишут код, который быстро собирается в единое решение: оно тестируется, выявляются возможные проблемы, происходит доработка – и после нового раунда тестирования происходит запуск готового продукта.

Стандартно современный DevOps-конвейер предоставляет следующие инструменты автоматизированного контроля качества перед релизом:

проверку качества кода;

выполнение юнит-тестирования;

расчет покрытия тестами;

проверку сборки;

выполнение компонентных, интеграционных и контрактных тестов;

cтатическое и динамическое тестирование безопасности.

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

Оптимизация архитектур и шаблоны

В целях повышения скорости создания качественного кода и его надежного исполнения имеет смысл создавать шаблоны типовых ИТ-решений для тиража в производственные команды путем анализа и проработки стандартной структуры целевого софтверного продукта. Такие шаблоны могут включать в себя все необходимые библиотеки с кодом, API, БД, инструментами оркестрации, а также служебными функциями мониторинга, ролевой модели, трассировки и журналирования. При этом необходимо учитывать, что современные корпоративные приложения – это преимущественно cloud-native-решения, использующие микросервисную архитекутру и реализующие разные паттерны управления бизнес-процессом (оркестрация, хореография сервисов или комбинированные варианты).

Вручную управлять даже десятком микросервисов довольно трудоемко, а в крупных системах, как правило, счет микросервисов может вестись на сотни. В этих случаях требуются дополнительные инструменты контейнеризации и управления контейнерами, такие как OpenShift и Kubernetes. Они позволяют реализовать подход Service Mesh, обеспечивающий автоматическое масштабирование, защиту от простоев, проверку «здоровья» системы, контроль скорости запросов, а также защищенность соединений.

На уровне инфраструктуры при расчете типовой архитектуры нужно учитывать такие моменты, как использование нескольких ЦОДов и необходимость настройки конфигураций инфраструктурных сервисов (БД, очереди, оркестраторы и т. д.) так, чтобы они поддерживали работу распределенных кластерных решений.

Искушение многообразием

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

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

В каждом микросервисе используется множество служебных методов и вспомогательных библиотек. Они позволяют переиспользовать типовую функциональность – например, преобразование форматов данных или даже реализацию общих интеграционных сценариев.

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

Платформа под ключ как решение

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

Один из вариантов компоновки такой платформы представлен на иллюстрации ниже:

Корпоративное облако предоставляет инфраструктуру как сервис, позволяя автоматизировано развернуть среды нужной конфигурации для приложений. Как правило, разворачиваются одна среда разработки, несколько сред тестирования и одна производственная среда.

Могут использоваться конфигурации, предусматривающие развертывание нескольких релизов. В зависимости от интенсивности релизов может развертываться несколько сред с одинаковым назначением, например несколько сред нагрузочного тестирования.

А вот так может выглядеть набор служебных библиотек и сервисов:

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

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

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

Заключение

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

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