Архитектура для стартапов
Создание стартапа является уникальной задачей. Основная задача состоит в том, чтобы найти место для инноваций в качестве продукта или услуги на рынке. Этот процесс требует тестирования нескольких предположений, встроенных в инновации. Успешный стартап должен итерировать через эти предположения, и расти и масштабироваться по мере того, как его продукт получает продукт и рыночный подход. После поиска такого соответствия стартап должен масштабироваться, чтобы захватить спрос на рынок.
На различных этапах жизни запуска разработчики, архитекторы и главные технические специалисты (CTOS) обрабатывают различные этапы разработки. Эти этапы требуют принципиально разных подходов и различных вариантов технологий. Часть задачи — установить этап запуска. Выберите технологии, подходы и архитектуры, соответствующие фазе.
Этапы инноваций
Кент Бек описывает трехэтапный процесс инноваций программного продукта. Эти этапы являются изучением, расширением и извлечением. Вы можете подумать о различных частях этого процесса в виде графа:
График, показывающий сигмоидную кривую, выложенную на оси Y "Определенность/инвестиции/риск изменения" и ось x "Time". График содержит три области: начальная часть перед перегибом вверх с меткой "Обзор", высокая часть сигмоидной кривой с меткой "Развернуть" и плато с меткой "Извлечь".
Этап изучения начинается с низкого склона, где вы пытаетесь найти то, что работает. Уверенность низка, вы инвестируете только небольшие суммы, и риск от любых изменений, которые вы вносите, также низкий.
При обнаружении соответствия рынка продукта граф увеличивается быстрее. Этот быстрый рост является этапом расширения . Ваша уверенность значительно увеличивается, вы инвестируете гораздо больше, и вы гораздо более осведомлены о рисках.
Наконец, по мере того как граф сглаживается и запуск достигает зрелости, вы достигнете этапа извлечения . Уверенность, инвестиции и риск от изменений все высокие, но темпы роста достигли плато.
Анализ
Когда ваш стартап находится на этапе исследования, ваш императив заключается в том, чтобы инвестировать небольшое количество времени и усилий на множество различных идей продукта. Тот факт, что большинство идей не будут правильными дисками исследования. Только путем итерации и обучения можно найти продукт и рыночный подход. Делая множество небольших ставок, вы стремитесь найти идею продукта, которая платит.
Для этого этапа требуется дисциплина. Легко переинвестировать идею, что можно протестировать с меньшим временем и энергией. Технолог находит, что особенно легко попасть в эту ловушку. Чтобы сделать выбор архитектуры, которые упрощают изучение, помните, что вы изучаете. Вы еще не знаете, является ли текущая идея продукта масштабируемой.
С точки зрения архитектуры выберите службы, которые оптимизируют скорость, стоимость и параметры. Используйте управляемые службы и платформы в качестве службы (PaaS), такие как приложение Azure service, чтобы быстро приступить к работе, не беспокоясь о сложной инфраструктуре. Управление затратами путем выбора бесплатных уровней и небольших размеров экземпляров во время изучения. Контейнеры поддерживают разработку с помощью любых инструментов и предоставляют гибкие варианты развертывания в будущем.
Создание первого стека
Как и в случае с первой версией продукта, первый стек технологий должен быть твердо коренен в исследовании. Это означает, что стек технологий должен облегчить быструю итерацию продукта, не тратя усилий. Вы не хотите тратить время или усилия на инфраструктуру или архитектуру, которая не требуется для ответа на текущие вопросы.
На этапе исследования необходимо оптимизировать скорость, стоимость и необязательность. Скорость заключается в том, как быстро вы можете построить и двигаться вперед с идеей, или перейти к следующей идее. Стоимость заключается в том, сколько вы тратите на запуск инфраструктуры. Необязательность описывает, как быстро можно изменить направления, учитывая текущую архитектуру.
Важно сбалансировать затраты, скорость и необязательность. Слишком много внимания уделяется ограничениям скорости и необязательности затрат. Слишком много внимания на скорости может привести к увеличению затрат и меньшего количества вариантов. Проектирование для слишком большого количества вариантов создает сложность, что повышает затраты и снижает скорость.
Рассмотрите возможность использования нашего предлагаемого первого стека технологий. Эта архитектура использует службы PaaS для простоты реализации, можно приступить к минимальному масштабу и использовать технологии контейнера и открытый код технологии, которые можно легко развертывать в разных стеках технологий при подготовке.
Разверните
После того как ваш стартап находит рынок продуктов подходящим и последующим ростом через исследование, вы сдвигаете шестеренки на расширение. Вы сосредоточьтесь на удалении любых блокировок для продолжения роста вашего продукта и компании. С технической точки зрения вы решаете проблемы масштабирования инфраструктуры и повышаете скорость разработки. Эти цели предназначены для удовлетворения потребностей новых клиентов и продвижения стратегии вашего продукта.
Расширение архитектуры
Когда вы выполняете итерацию по продукту, вы неизбежно найдете области, где архитектура нуждается в расширении. Возможно, вам потребуется выполнить длительные задачи в фоновом режиме или обрабатывать частые обновления с устройств Интернета вещей .. Возможно, вам потребуется добавить полнотекстовый поиск или искусственный интеллект в продукт.
Возможно, вам потребуется изменить архитектуру для размещения элементов в вашей стратегии. Сопротивляйтесь соблазну внести эти изменения слишком далеко заранее. Расширения рискуют добавить сложность в архитектуру и затраты на инфраструктуру в баланс.
На ранних этапах запуска любое расширение архитектуры должно быть jit-время. Расширение должно занять только столько времени и энергии, сколько необходимо для проверки следующей гипотезы. Будьте готовы к удалению расширений для уменьшения сложности. Найдите функции продукта, которые ваши клиенты не используют в качестве возможностей для упрощения архитектуры и сокращения расходов на инфраструктуру.
Архитектура может быть расширена различными способами, например:
- Добавление искусственного интеллекта с помощью получения дополненного поколения (RAG)
- Повышение устойчивости путем развертывания, избыточного между зонами
- Повышение устойчивости благодаря развертыванию с высоким уровнем доступности в нескольких регионах
- Повышение безопасности с помощью сетевого затверденного стека технологий
Extract
На этапе извлечения темп роста замедляется по мере достижения пределов возможностей рынка. Так как вы расширились на предыдущем этапе, теперь много потерять, поэтому вы занимаетесь более осторожным подходом. Расширение маржи, снижение затрат и повышение эффективности характеризуют этап извлечения. На этапе извлечения будьте осторожны, чтобы не скомпрометировать продукт для клиентов, которые вы выиграли на этапе расширения.
Обработка роста и зрелый стек
Когда продукт достигает соответствия продукта и рынка, многие требования управляют его архитектурой. Увеличение использования может потребовать масштабирования инфраструктуры для обработки нагрузки. Новые требования к соответствию требованиям предприятия могут потребовать большей изоляции. Эти изменения являются общими шагами при созревании успешного приложения.
Изменения, внесенные для обработки роста и добавления зрелости, отличаются от расширения архитектуры. Эти изменения не являются функциональными требованиями, но относятся к разблокировке масштаба. Увеличение масштаба может поступать от чистых новых клиентов, увеличения использования существующих клиентов и клиентов с более высокими нормативными требованиями.
Сопротивляйтесь соблазну, чтобы оптимизировать преждевременно. Обязательно выполните шаги роста и зрелости, которые помогут вам продолжить итерацию и улучшение продукта.
Следующие шаги
- Ознакомьтесь с примером архитектуры стека запуска Core и разверните его.