Поделиться через


Архитектура для стартапов

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

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

Этапы инноваций

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

График, показывающий этапы разработки продукта:

График, показывающий сигмоидную кривую, выложенную на оси Y "Определенность/инвестиции/риск изменения" и ось x "Time". График содержит три области: начальная часть перед перегибом вверх с меткой "Обзор", высокая часть сигмоидной кривой с меткой "Развернуть" и плато с меткой "Извлечь".

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

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

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

Исследовать

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

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

С точки зрения архитектуры выберите службы, которые оптимизируют скорость, стоимость и параметры. Используйте управляемые службы и платформы в качестве службы (PaaS), такие как Служба приложений Azure, чтобы быстро приступить к работе, не беспокоясь о сложной инфраструктуре. Управление затратами путем выбора бесплатных уровней и небольших размеров экземпляров во время изучения. Контейнеры поддерживают разработку с использованием любых подходящих для вас инструментов и предоставляют гибкие возможности развертывания для будущего.

Постройте свой первый стек

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

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

Важно сбалансировать затраты, скорость и необязательность. Слишком большое внимание к затратам ограничивает скорость и гибкость. Слишком большое внимание на скорость может привести к увеличению затрат и к уменьшению количества вариантов. Проектирование для слишком большого количества вариантов создает сложность, что повышает затраты и снижает скорость.

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

Развернуть

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

Расширение архитектуры

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

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

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

Архитектура может быть расширена различными способами, например:

Экстракт

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

Управляйте ростом и развивайте свой стек

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

Изменения, сделанные для управления ростом и достижения зрелости, отличаются от расширения архитектуры. Эти изменения не являются функциональными требованиями, но относятся к разблокировке масштаба. Увеличение масштаба может поступать от чистых новых клиентов, увеличения использования существующих клиентов и клиентов с более высокими нормативными требованиями.

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

Дальнейшие действия