Старт проекта
Разработка начинается уже на первых этапах с проверки технических, интеграционных и архитектурных возможностей, чтобы убрать критические проектные риски и гарантировать успешную реализацию концепции.
На этом этапе создаются быстрые проверочные технические решения – proof of concept, – и архитектурных моделей, создаются интеграционные тесты, проверяющие работоспособность и достаточность API и т.д. Именно поэтому ядро команды включает в себя тимлида – разработчика уровня Senior, который в будущем будет управлять технической стороной процесса разработки. Он участвует на всех этапах создания, развертывания и сопровождения продукта.
Процесс производства
На входе у нас уже есть бизнес-цели или бизнес-проблемы, концепция решения, архитектура, дизайн и аналитика в нужном для проекта виде. Далее типовой процесс примерно такой:
1. Планирование
Тимлид совместно с руководителем проекта и архитектором планирует в рамках методологии Agile ближайшие спринты на разработку. Исходя из емкости команды и поставленных на спринт целей распределяет между разработчиками ранее декомпозированные задачи. Контроль процесса, как правило, происходит на утренних планерках с командой разработки.
2. Описание постановки на разработку и декомпозиция
Аналитики предварительно описывают постановки на разработку, а команда разработки их декомпозирует на технические задачи и реализует их в рамках заданного шаблона проекта или тем подходом, который определил тимлид. Работаем по методологии разработки на основе главной ветки – Trunk-based-development (TBD).
3. Логирование и фиче-флаги
В рамках реализации фичи разработчик дополнительно делает стандартную обвязку – реализует логирование и возможность включения/выключения ее с помощью фиче-флага (feature toggle). Фиче-флаги позволяют тестировать функциональность, чтобы проверить, как работает та или иная фича при включенном или выключенном флаге.
4. Подготовка к слиянию
Так как мы работаем по TBD и ветка должна быть готова к релизу в любой момент, то перед слиянием с master-веткой всегда должны выполняться:
- Сборка проекта
- Прохождение автоматических Unit и интеграционных тестов
- Проверки на безопасность инструментами GitLeaks, Sonar, Trivy
- Код-ревью
Если хоть одно из условий не выполнено, слияние отклоняется и отправляется на доработку.
5. Разработка конвейера CI/CD
При этом в зависимости от окружений и политики информационной безопасности часть репозиториев находится у нас внутри, часть внутри инфраструктуры заказчика, и при необходимости настроена интеграция между ними.
6. Выкат на окружения
В рамках выката по конвейеру CI/CD весь код проходит через Quality Gates, т.е. автоматические системы проверки кода и решения в целом. После выката на окружения осуществляются end-to-end-тесты, которые проверяют ПО от начала до конца, включая интеграцию с внешними системами
7. Документирование
В рамках реализации проекта создается вся необходимая для клиента документация – от первоначальной концепции до тест-планов тестирования конкретных сценариев. В зависимости от назначения документа и его формата в документировании участвует нужный специалист команды – архитектор, тимлид, аналитик, QA, DevOps или специалист сопровождения.
8. Прозрачное информирование клиента
У нас настроены автоматическая генерация и извещение по email релиз-нотесов при выкате. Есть дополнительные отчеты заказчику от руководителя проекта и службы технической поддержки, дается доступ в наш трекер TFS и возможность посмотреть статусы задач и burndown графики спринта, проводятся post mortem-разборы критичных инцидентов, настроены панели технического и бизнес-мониторинга системы в Kibana.
Виды разработки
1. Разработка web‑frontend
При разработке уникальных лендингов и web-инструментов обычно применяется один из двух фреймворков – ReactJS или Angular. После проработки концепции мы создаем UIKit в полном соответствии с брендбуком заказчика и применяем его в разработке.
2. Разработка backend
Реализация логики работы инструментов и интеграционных сервисов. Архитектура зависит от задачи, для Enterprise-решений чаще всего применяется микросервисная архитектура, которая позволяет создавать гибкие, масштабируемые решения, интегрированные в существующую ИТ-экосистему предприятия. Если требуется реализовать портал, сайт или часть решения, работающая на постоянно дополняемом или изменяемом контенте, то может быть использована headless CMS типа Directus, предоставляющая все базовые инструменты работы.
3. Разработка backend for frontend
На уровне реализации – это отдельный слой для работы с web-интерфейсами и мобильными приложениями. Такой подход позволяет гибко и быстро развивать мобильные приложения и web-frontend без рефакторинга и дополнительного тестирования ядра решения.
4. Разработка нативных мобильных приложений
iOS, Android, Аврора
Красивые, отзывчивые, быстрые приложения в полном соответствии с гайдлайнами производителей телефонов и планшетов. Поддержка свежих версий операционных систем и возможностей, которые они предоставляются.
Основные технические классы задач
1. Авторизация и аутентификация
Развертывание и построение решений на базе open-source провайдеров авторизации, таких как KeyCloak или WSO2, интеграция с существующими identity провайдерами, поддержка SSO, поддержка двухфакторной авторизации, пин-кода, входа на мобильных приложениях по отпечатку пальца и т.д.
2. Разработка логики работы решения
Реализации основных функций работы системы, безопасное хранение и передача данных, программирование алгоритмов трансформации и расчета данных, создание необходимых инструментов работы пользователей, системы и сервисов продукта.
3. Разработка интеграционных сервисов и API
Реализация сервисов и инструментов синхронного и асинхронного взаимодействия с внешними системами. Обеспечение информационной безопасности взаимодействия на всех этапах работы интеграционных сервисов.
4. Работа с окружениями и инфраструктурой
Создание окружений работы продукта локально (on-premises), в облаке или в гибридном формате. Настройка конвейеров CI/CD и развертывание обвязки, необходимой для работы решения в инфраструктуре – базы данных, системы логирования, системы мониторинга и алертинга, шины данных, отказоустройчивые кэши, хранилище секретов, BLOB хранилище, провайдеры авторизации и т.д.
5. Работа с промышленным оборудованием через IoT-платформы
Разработка промежуточного слоя для работы с IoT-платформой с одной стороны (локальное решение или облачное, к примеру, от «Яндекса») и ядром решения (backend), которое работает с пользователем или другими системами. Обеспечивает контроль транспорта сообщений и обогащает их необходимой информацией для работоспособности всех частей решения и комплексного логирования для последующей работы службы технической поддержки.
6. Логирование и метрики
Изначально в сервисы закладываются дополнительная функциональность и данные, позволяющие в будущем настроить технический и бизнес-мониторинг. Логирование строится по единым принципам, реализовано в виде стандартных библиотек и расширяется под конкретный продукт в рамках проекта. Единый подход и ядро логирования обеспечивает хранение и обработку в унифицированной форме общую информации о продукте, сервисе, его версии, пользователе, роли и т.д. Это облегчает работы всех уровней поддержки и сопровождения продукта и позволяет унифицировать и однозначно трактовать базовые метрики в мониторинге продукта.
7. Высокопроизводительные вычисления
Иногда требуется сделать большие и тяжелые расчеты на большом объеме данных. В этом случае стандартные подходы не всегда применимы, т.к. расчеты занимают часы, а иногда и дни. Для высокопроизводительных расчетов строится специальная архитектура и реализуются спец. подходы, к примеру параллельные вычисления с использованием Hazelcast.
8. Поддержка изменяемой бизнес-логики и интеграция с движками автоматизации процессов
Low-code платформы и конструкторы бизнес-логики тоже имеют свою нишу в той части, где идет постоянное изменение и настройка бизнес-логики. Мы создаем отдельные сервисы и модули и интегрируем их в решения, давая возможность пользователям изменять работу логики систему в необходимых пределах.
Что нам позволяет быть лучшими в нашем деле
1. Поддержка актуального стека разработки
Техрадар – технологии, библиотеки, паттерны. Непрерывное отслеживание best practices в части Enterprise разработки. R&D и эксперименты на внутренних проектах. Мы читаем, отслеживаем, пробуем на себе или на небольших MVP для наших клиентов. И они это ценят. Это позволяет раньше других на рынке получать конкурентные преимущества за счет технологий и нас как технологического партнера.
2. Развитие продукта
Проактивная разработка и реализация техстратегии развития продукта и работа с техдолгом.
3. Оптимизация проекта и применение собственных разработок
Шаблоны проектов, UIKit’ы, FF, Центр уведомлений, Deeplinks, Библиотеки логирования, Генерация PDF
Мы будем рады быть вам полезны и сделаем всё настолько хорошо, насколько сейчас умеют информационные технологии и специалисты, нацеленные на результат.