Architettura per startup

La creazione di una startup è una sfida unica. Il compito principale è quello di trovare un posto per un'innovazione come prodotto o servizio nel mercato. Questo processo richiede il test di più presupposti integrati nell'innovazione. Una startup di successo deve scorrere questi presupposti e crescere e ridimensionare man mano che il prodotto ottiene prodotto e adattarsi al mercato. Dopo aver trovato questa soluzione, l'avvio deve ridimensionarsi per soddisfare le esigenze di mercato.

Nelle diverse fasi di vita di avvio, sviluppatori, architetti e responsabili tecnici (CTO) gestiscono fasi distinte di sviluppo. Queste fasi richiedono approcci fondamentalmente diversi e diverse scelte tecnologico. Parte dell'attività consiste nel stabilire in quale fase si trova l'avvio. Scegliere le tecnologie e le architetture corrispondenti a quella fase.

Fasi di innovazione

Kent Beck descrive un processo a tre fasi di innovazione del prodotto software. Queste fasi vengono esplorate, espanse ed estratte. È possibile considerare le diverse parti di questo processo come grafico:

Grafico che mostra le fasi Esplora, Espandi ed Estrai dello sviluppo di prodotti.

Grafico che mostra una curva sigmoide tracciata rispetto a un asse y "Certezza/Investimento/Rischio di cambiamento" e un asse X "Time". Il grafico ha tre aree evidenziate: la parte iniziale prima dell'inflessione verso l'alto con etichetta "Explore", la parte di crescita elevata della curva sigmoide con etichetta "Expand" e l'plateau con etichetta "Extract".

  • La fase Di esplorazione inizia con una pendenza bassa, in cui si sta cercando di trovare ciò che funziona. La certezza è bassa, si investono solo piccoli importi e il rischio di eventuali modifiche apportate è anche basso.

  • A un certo punto, il grafico aumenta più rapidamente. Questa rapida crescita è la fase di espansione . La tua certezza aumenta notevolmente, investi molto di più e sei molto più consapevole dei rischi.

  • Infine, man mano che il grafico si appiattisce, si raggiunge la fase Di estrazione . La certezza, gli investimenti e i rischi derivanti dal cambiamento sono tutti elevati, ma il tasso di crescita ha raggiunto un altipiano.

Esplora

Quando la tua startup è nella fase di esplorazione, il tuo imperativo è investire piccole quantità di tempo e impegno su molte idee di prodotto diverse. Il fatto che la maggior parte delle idee non sarà giusta guida l'esplorazione. Solo iterando e imparando puoi trovare prodotto e adattarsi al mercato. Facendo molte piccole scommesse, si mira a trovare un'idea di prodotto che paga.

Questa fase richiede disciplina. È facile sovrainvestire in un'idea che si potrebbe testare con meno tempo e energia. Un tecnico trova che è particolarmente facile cadere in questa trappola. Per effettuare scelte architetturali che semplificano l'esplorazione, tenere presente che si sta esplorando. Non si sa ancora se l'idea del prodotto corrente è una che verrà ridimensionata.

Dal punto di vista dell'architettura, scegliere servizi ottimizzati per velocità, costi e opzioni. Usare servizi gestiti e piattaforme come servizio (PaaS) come app Azure Servizio per iniziare rapidamente senza preoccuparsi di un'infrastruttura complessa. Gestire i costi scegliendo i livelli gratuiti e le dimensioni delle istanze più piccole durante l'esplorazione. I contenitori supportano lo sviluppo con qualsiasi strumento appropriato per l'utente e offrono opzioni di distribuzione flessibili per il futuro.

Creare il primo stack

Come per la prima versione del prodotto, il primo stack di tecnologie deve essere saldamente radicato nell'esplorazione. Ciò significa che lo stack di tecnologie dovrebbe semplificare l'iterazione rapida del prodotto senza sprecare sforzo. Non si vuole dedicare tempo o impegno all'infrastruttura o all'architettura che non è necessaria per rispondere alle domande correnti.

Durante la fase di esplorazione, è necessario ottimizzare la velocità, i costi e la facoltatività. La velocità è la velocità con cui è possibile costruire e proseguire con un'idea o passare all'idea successiva. Il costo è la spesa per l'esecuzione dell'infrastruttura. La facoltatività descrive la velocità con cui è possibile modificare le direzioni in base all'architettura corrente.

È importante bilanciare costi, velocità e facoltatività. Troppo attenzione ai limiti dei costi e alla facoltatività.To much focus on cost limits speed and optionality. Troppa attenzione alla velocità può portare ad un aumento dei costi e a un minor numero di opzioni. La progettazione per troppe opzioni crea complessità, aumentando i costi e riducendo la velocità.

Prendere in considerazione l'uso del primo stack di tecnologie suggerito. Questa architettura usa servizi PaaS per semplificare l'implementazione, può essere avviata con una scalabilità minima e usa tecnologie open source e contenitore che possono essere facilmente distribuite in stack di tecnologie diversi man mano che si maturano.

Espandere

Una volta che l'avvio trova la crescita attraverso l'esplorazione, si spostano gli ingranaggi all'espansione. Ci si concentra sulla rimozione di eventuali blocchi per la continua crescita del prodotto e dell'azienda. Dal punto di vista tecnico, è possibile risolvere i problemi di scalabilità dell'infrastruttura e aumentare la velocità di sviluppo. Gli obiettivi sono soddisfare le esigenze dei nuovi clienti e far avanzare la roadmap del prodotto.

Estendere l'architettura

Durante l'iterazione del prodotto, si troveranno inevitabilmente aree in cui è necessaria l'estensione dell'architettura. Potrebbe essere necessario completare attività a esecuzione prolungata in background o gestire aggiornamenti frequenti da dispositivi IoT (Internet of things). Potrebbe essere necessario aggiungere la ricerca full-text o l'intelligenza artificiale al prodotto.

Potrebbero essere necessarie modifiche dell'architettura per contenere gli elementi nella roadmap. Resistere alla tentazione di apportare tali cambiamenti troppo in anticipo. Le estensioni rischiano di aggiungere complessità ai costi dell'architettura e dell'infrastruttura al bilancio.

Nelle fasi iniziali dell'avvio, qualsiasi estensione dell'architettura deve essere just-in-time. L'estensione dovrebbe richiedere solo il tempo e l'energia necessari per testare l'ipotesi successiva. Essere pronti per rimuovere le estensioni per ridurre la complessità. Cercare le funzionalità del prodotto che i clienti non usano come opportunità per semplificare l'architettura e ridurre la spesa per l'infrastruttura.

L'architettura può essere espansa in molti modi, ad esempio:

Estrazione

Nella fase di estrazione, il ritmo di crescita rallenta man mano che si raggiungono i limiti dell'opportunità di mercato. Poiché si è espansa attraverso la fase precedente, ora c'è molto da perdere, quindi si prende un approccio più prudente. L'espansione dei margini, la riduzione dei costi e i miglioramenti dell'efficienza caratterizzano la fase di estrazione. Durante la fase di estrazione, prestare attenzione a non compromettere il prodotto per i clienti che hai vinto nella fase di espansione.

Gestire la crescita e maturare lo stack

Una volta che un prodotto raggiunge l'adattamento del prodotto e del mercato, molte richieste guidano la sua architettura. Un maggiore utilizzo potrebbe richiedere il ridimensionamento dell'infrastruttura per gestire il carico. I nuovi requisiti di conformità dell'organizzazione potrebbero richiedere un maggiore isolamento. Queste modifiche sono passaggi comuni per la maturità di un'applicazione riuscita.

Le modifiche apportate per gestire la crescita e l'aggiunta della maturità sono diverse dall'estensione dell'architettura. Queste modifiche non sono requisiti funzionali, ma si riferiscono allo sblocco della scalabilità. Una maggiore scalabilità può provenire da nuovi clienti netti, un maggiore utilizzo da clienti esistenti e clienti con requisiti normativi più elevati.

Resistere alla tentazione di ottimizzare prematuramente. Assicurati di intraprendere passi di crescita e di maturità che possono aiutarti a continuare a iterare e migliorare il tuo prodotto.

Passaggi successivi