Arquitectura para startups

La creación de una startup es un desafío único. La tarea principal es encontrar el sitio para una innovación como un producto o servicio en el mercado. Este proceso requiere probar varias suposiciones que están integradas en la innovación. Una startup de éxito debe iterar a través de estas suposiciones y crecer y escalar a medida que su producto evoluciona y se adapta al mercado. Después de adaptarse, la startup debe escalar para satisfacer las demandas del mercado.

En las distintas fases de la vida de la startup, los desarrolladores, arquitectos y directores técnicos controlan distintas fases del desarrollo. Estas fases requieren enfoques fundamentalmente diferentes y distintas opciones tecnológicas. Parte de la tarea consiste en establecer en qué fase se encuentra la startup. Elija las tecnologías y arquitecturas que coincidan con esa fase.

Fases de innovación

Kent Beck describe un proceso de tres fases de innovación de productos de software. Estas fases son exploración, expansión y extracción. Puede considerar las distintas partes de este proceso como un grafo:

Un grafo que muestra las fases del desarrollo de un producto: exploración, expansión y extracción.

Grafo que muestra una curva sigmoid trazada en un eje Y "Certeza/Inversión/Riesgo de cambio" y un eje X "Hora". El grafo tiene tres áreas resaltadas: la parte inicial antes de la inflexión ascendente llamada "Exploración", la parte de alto crecimiento de la curva sigmoid llamada "Expansión" y la parte más estable, "Extracción".

  • La fase de Exploración comienza con una leve pendiente, en la que se intenta encontrar lo que funciona. La certeza es baja, solo se invierten pequeñas cantidades y el riesgo de los cambios que se realizan también es bajo.

  • Llega un momento en que el grafo aumenta más rápidamente. Este crecimiento rápido es la fase de Expansión. La certeza aumenta considerablemente, se invierte mucho más y se es mucho más consciente de los riesgos.

  • Por último, a medida que el grafo se aplana, se llega a la fase de Extracción. La certeza, la inversión y el riesgo del cambio son altos, pero el nivel de crecimiento ha alcanzado una estabilidad.

Explorar

Cuando la startup está en la fase de exploración, lo fundamental es invertir pequeñas cantidades de tiempo y esfuerzo en muchas ideas de producto diferentes. El hecho de que la mayoría de las ideas no sean las adecuadas impulsa la exploración. Solo mediante la iteración y el aprendizaje puede encontrar el producto y el mercado adecuados. Al realizar varias pequeñas apuestas, el objetivo es encontrar una idea de producto que valga la pena.

Esta fase requiere disciplina. Es fácil invertir demasiado en una idea que podría probar con menos tiempo y energía. A un tecnólogo le parece especialmente fácil caer en esta trampa. Para tomar decisiones arquitectónicas que faciliten la exploración, recuerde que está explorando. Todavía no sabe si la idea actual del producto va a escalar.

Desde una perspectiva arquitectónica, elija servicios que optimicen la velocidad, el costo y las opciones. Use servicios administrados y plataformas como servicio (PaaS) como Azure App Service para empezar a trabajar con rapidez sin preocuparse por una infraestructura compleja. Administre los costes al elegir niveles de servicio gratuitos y tamaños de instancia más pequeños mientras realiza la exploración. Los contenedores admiten el desarrollo con cualquier herramienta que tenga sentido para usted y proporcionan opciones de implementación flexibles para el futuro.

Creación de la primera pila

Al igual que con la primera versión del producto, la primera pila tecnológica debe basarse firmemente en la exploración. Esto significa que la pila tecnológica debe facilitar la iteración rápida del producto sin malgastar el esfuerzo. No va a querer dedicar tiempo ni esfuerzo a una infraestructura o arquitectura que no sean necesarias para responder a preguntas actuales.

Durante la fase de exploración, debe optimizar la velocidad, el costo y la opcionalidad. La velocidad se refiere a la rapidez con la que puede crear una idea y desarrollarla, o pasar a la siguiente idea. El costo se refiere a cuánto gasta en ejecutar la infraestructura. La opcionalidad describe la rapidez con la que puede cambiar de dirección, dada la arquitectura actual.

Es importante equilibrar el costo, la velocidad y la opcionalidad. Si nos centramos demasiado en los costos, se limita la velocidad y la opcionalidad. Si recae demasiada atención sobre la velocidad, puede haber aumento en los costos y menos opciones. El diseño de demasiadas opciones genera complejidad, lo que aumenta los costos y reduce la velocidad.

Considere la posibilidad de usar nuestra pila de primera tecnología sugerida. Esta arquitectura usa servicios de PaaS para facilitar la implementación, se puede iniciar con una escala mínima y usa tecnologías de contenedor y código abierto que se pueden implementar fácilmente en diferentes pilas tecnológicas a medida que madura.

Expanda

Una vez que la startup empieza a crecer a través de la exploración, puede pasar a la expansión. Debe centrarse en eliminar cualquier elemento que bloquee el crecimiento continuo del producto y la empresa. Desde una perspectiva técnica, debe resolver los desafíos de escala de infraestructura y aumentar el progreso del desarrollo. Los objetivos son satisfacer las necesidades de los nuevos clientes y avanzar en la hoja de ruta del producto.

Extensión de la arquitectura

A lo largo del desarrollo del producto, inevitablemente encontrará áreas en las que la arquitectura necesita una extensión. Es posible que tenga que completar tareas de ejecución larga en segundo plano o controlar actualizaciones frecuentes desde dispositivos de Internet de las cosas (IoT). Puede que tenga que agregar búsqueda de texto completo o inteligencia artificial al producto.

Es posible que necesite hacer cambios en la arquitectura para dar cabida a elementos de la hoja de ruta. Resístase a la tentación de realizar esos cambios con demasiada antelación. Existe el riesgo de que las extensiones agreguen complejidad a la arquitectura y costos de infraestructura al balance.

En las primeras fases de la startup, cualquier extensión de la arquitectura debe hacerse cuando es necesario. La extensión debería tomar solo el tiempo y la energía necesarios para probar la siguiente hipótesis. Prepárese para eliminar extensiones que reduzcan la complejidad. Detecte características de producto que los clientes no usan, que se convertirán en oportunidades para simplificar la arquitectura y reducir los gastos en infraestructura.

La arquitectura podría expandirse de muchas maneras, como:

Extracción

En la fase de extracción, el ritmo de crecimiento se ralentiza a medida que se alcanzan los límites de la oportunidad de mercado. Debido a que hubo una expansión en la fase anterior, ahora hay mucho en juego, por lo que debe adoptar un enfoque más prudente. La expansión de los márgenes, la reducción de costos y el aumento de la eficiencia caracterizan la fase de extracción. Durante la fase de extracción, tenga cuidado de no comprometer el producto por los clientes que obtuvo en la fase de expansión.

Controle el crecimiento y desarrolle la pila

Una vez que un producto se ha desarrollado y se ha adaptado al mercado, varias demandas impulsan la arquitectura. El incremento del uso puede requerir el escalado de la infraestructura para controlar la carga. Es posible que los nuevos requisitos de cumplimiento empresarial necesiten un mayor aislamiento. Estos cambios son pasos comunes para desarrollar una aplicación de éxito.

Los cambios que realice para controlar el crecimiento y agregar madurez son diferentes de la ampliación de la arquitectura. Estos cambios no son requisitos funcionales, sino que están relacionados con el desbloqueo de la escala. El aumento de la escala puede proceder de nuevos clientes netos, el aumento del uso de los clientes existentes y clientes con requisitos normativos más altos.

No se precipite y resístase a la tentación de hacer optimizaciones antes de tiempo. Asegúrese de seguir los pasos de crecimiento y desarrollo que pueden ayudarle a continuar con la iteración y a mejorar el producto.

Pasos siguientes