Проект для поддержки бизнеса или производства - это не просто отдельное веб-, мобильное приложение или система документооборота на базе существующего продукта. Зачастую такие системы состоят из набора различных компонент и приложений, реализующих уникальную логику.
Это включает в себя веб приложения, мобильные приложения, API, бэкенд с базой данных и пр. Часто такие системы подразумевают высокую нагрузку и должны быть легко масштабируемыми. Соответственно, они должны иметь подходящую архитектуру и инфраструктуру.
Мы имеем большой опыт разработки подобных систем и выполняем полный спектр работ, в том числе проектирование подходящей архитектуры и инфраструктуры (on-premise, SberCloud, Yandex Cloud и др.)
В решении комплексных задач мы стараемся ответить на следующие вопросы: микросервисная или монолитная архитектура, кроссплатформенный фреймворк или нативная разработка (если решение включает мобильную часть), облачная инфраструктура или on-premise, какие DevOps подходы применять?
Очень многие задачи решаются в on-premise инфраструктуре, но есть пласт задач, для которых лучше подходят “облака”, например SberCloud или Yandex Cloud.
Под каждую задачу мы подбираем оптимальный стэк технологий, соответствующий общей архитектуре и инфраструктуре решения.
Для сложных решений выбор подходящей архитектуры играет ключевую роль. Стоимость ошибки на этом этапе может оказаться достаточно высокой. Это касается как недопроектирования, так и перепроектирования, что сказывается на стоимости разработки и поддержки.
При проектировании мы оцениваем множество факторов и исходя из них предлагаем архитектуру.
Как правило, на входе нам нужно ответить на некоторые концептуальные вопросы, например:
Оценив параметры численно, мы понимаем, какая архитектура наиболее уместна. Это может быть как монолитная архитектура, так и микро-сервисная. Или эволюция от монолитного MVP к масштабируемости и микро-сервисам. Наша цель - выбрать архитектуру максимально подходящую под конкретную задачу, бюджет и сроки и избежать ситуации “архитектура ради архитектуры”
На основании выбранной архитектуры, мы подбираем наиболее подходящую инфраструктуру и исполнительную среду. Здесь немаловажную роль имеет тип системы - публичная или интранет; манипулирует ли система чувствительными данными или нет и т.д. В зависимости от этих параметров выбор инфраструктуры может варьироваться, например:
Здесь, как и в случае с архитектурой, мы также ищем “золотую середину” под конкретную задачу.
Мы выполняем весь комплекс работ по созданию продукта от предпроектного анализа до технического сопровождения. Наша команда укомплектована всеми необходимыми специалистами - это аналитики, UX/UI дизайнеры, разработчики, DevOps и QA инженеры.
Процесс разработки мы разделяем на следующие стадии:
Первый шаг – анализ и исследование. Цель – получить согласованное видение проекта между вами и нами. На данном этапе мы исследуем ваши требования с точки зрения бизнес задачи и технической реализации. Мы изучаем предметную область, задаем вопросы о ваших идеях, целевой аудитории, количестве пользователей и других параметрах.
Результаты этапа:
Наше видение согласовано. Следующий этап – спецификация проекта. На этом этапе мы детально прорабатываем функциональные требования, сценарии пользователя и создаем прототипы пользовательского интерфейса (схематическое представление экранов). Мы также описываем верхнеуровневую архитектуру решения.
Результаты этапа:
Далее мы вдыхаем жизнь в разработанные прототипы пользовательского интерфейса – разрабатываем финальный UI дизайн приложений. Если система подразумевает наличие мобильных приложений, то UI дизайн разрабатывается с учетом гайдлайнов для конкретной платформы (iOS/Android).
Результат этапа - готовый к реализации UI дизайн.
Следующий и самый трудоемкий этап - разработка. Разработка разбита на итерации по 2 – 4 недели. В рамках каждой итерации мы выполняем все необходимые работы по реализации запланированных сценариев, включая тестирование, стабилизацию и демонстрацию рабочего результата вам. После каждой демонстрации вы сможете внести корректировки для следующей итерации. Таким образом, мы минимизируем риски «уйти не туда».
Результаты этапа:
После окончания разработки мы внедряем решение для приемочного тестирования. На данном этапе ваши специалисты или другие заинтересованные лица смогут проверить систему на соответствие спецификациям.
Результат этапа - готовое к внедрению решение.
Далее мы выпускаем/внедряем решение, а именно:
Результат этапа - готовое к использованию конечными пользователями решение.
Важным моментом жизненного цикла программного продукта является его сопровождение и обслуживание после запуска. Мы настраиваем системы мониторинга для слежения за ключевыми параметрами продукта и поддерживаем его в рабочем состоянии. Тем временем, вы наблюдаете за реакцией и отзывами пользователей и, если необходимо, планируете улучшения продукта.
Результат этапа - успешно работающий продукт.