Mantenerla semplice
Evitare l'overengineering della progettazione dell'architettura, del codice dell'applicazione e delle operazioni. |
---|
Spesso si tratta di ciò che si rimuove invece di quello che si aggiunge che porta alle soluzioni più affidabili. La semplicità riduce la superficie di attacco per il controllo, riducendo al minimo le inefficienze e potenziali configurazioni o interazioni impreviste. D'altra parte, la sovrasmplificazione può introdurre singoli punti di guasto. Mantenere un approccio bilanciato.
Scenario di esempio
Contoso Travel sta acquistando e integrando una piccola azienda di startup con un'app di viaggio basata sul Web più diffusa. La popolarità dell'app è dovuta al suo modello di business di negoziare sconti profondi con catene di hotel e compagnie aeree, e l'uso dei social media per fare campagne di marketing intense e altamente mirate.
La versione esistente del prodotto di avvio è stata sviluppata in nodejs ed è in esecuzione in macchine virtuali ospitate tra il data center locale e AWS.
Ridurre al minimo i componenti del carico di lavoro
Aggiungere componenti all'architettura solo se consentono di raggiungere i valori aziendali di destinazione. Mantenere snella il percorso critico.
La progettazione per i requisiti aziendali può portare a una soluzione semplice da implementare e gestire. Evitare di dover avere troppi componenti critici, perché ognuno di essi è un punto di errore significativo.
Sfida di Contoso
- Uno dei componenti dell'applicazione appena acquisita facilita la raccolta di feedback dagli utenti direttamente sul sito Web dopo aver effettuato una prenotazione. La funzionalità viene usata raramente perché la maggior parte degli utenti lo ignora. C'è un meccanismo di ciclo di feedback forte degli utenti che funziona attraverso gli account di social media aziendali, che viene ampiamente usato per l'interazione degli utenti di marketing. Questo meccanismo viene usato molto più frequentemente rispetto alla funzione di feedback del sito Web.
Applicazione dell'approccio e dei risultati
- Come parte della versione iniziale della versione di Contoso Travel-branded dell'app, il team decide di rimuovere il componente di feedback del sito Web del carico di lavoro.
- Una codebase più piccola riduce il costo della manutenzione e delle operazioni. In questo caso, non c'è alcun impatto sui requisiti aziendali.
Standardizzare il ciclo di vita di sviluppo software
Stabilire standard nell'implementazione del codice, nella distribuzione e nei processi e documentarli. Identificare le opportunità per applicare tali standard usando le convalide automatizzate.
Gli standard forniscono coerenza e riducono al minimo gli errori umani. Gli approcci come le convenzioni di denominazione standard e le guide di stile del codice consentono di mantenere la qualità e semplificare l'identificazione degli asset durante la risoluzione dei problemi.
Sfida di Contoso
- Il team di sviluppo dall'avvio non ha molti standard di sviluppo e processi definiti. Esistono numerose librerie usate che si sovrappongono alle funzionalità, gli stili di codifica non vengono applicati e le pipeline di versione non dispongono di controlli di rilascio formali che usano test automatizzati.
- Il team del carico di lavoro Contoso si rende conto che il costo della manutenzione della nuova codebase è troppo elevato a causa della mancanza di coerenza negli stili e dell'uso incoerente di librerie e modelli di progettazione.
- Ci sono eventi imprevisti frequenti dopo gli aggiornamenti principali nell'ambiente di produzione, a volte che richiedono rollback degli aggiornamenti o correzioni a caldo di mid-deployment. La frequenza di questi tipi di problemi di distribuzione forza il team a usare un modello di supporto pratico durante il rilascio degli aggiornamenti nell'ambiente di produzione. Per peggiorare le cose, i problemi frequenti influiscono negativamente sulla reputazione di Contoso attraverso un'esperienza utente scarsa.
Applicazione dell'approccio e dei risultati
- Il team che assume il supporto della nuova app fa uno sforzo per ottenere maggiore coerenza applicando stili di codifica, standardizzando su un set comune di librerie e modelli di progettazione e formalizzando l'uso di gate di rilascio basati su test automatizzati.
- Durante l'implementazione di queste modifiche, il team del carico di lavoro rispetta i requisiti della documentazione standard. Tutti i nuovi strumenti, i modelli di progettazione e gli stili adottati sono documentati accuratamente, consentendo al team di comprendere e gestire il carico di lavoro in modo più efficiente. Il team può ora identificare più facilmente le deviazioni negli standard durante l'esecuzione di revisioni del codice.
Ridurre al minimo le operazioni e il carico di sviluppo
Sfruttare le funzionalità fornite dalla piattaforma e gli asset predefiniti che consentono di soddisfare in modo efficace gli obiettivi aziendali.
Questo approccio riduce al minimo il tempo di sviluppo. Consente inoltre di basarsi su procedure collaudate e testate usate con carichi di lavoro simili.
Sfida di Contoso
- Per la versione iniziale in base alla personalizzazione di Contoso Travel, la soluzione nodejs verrà migrata dalle macchine virtuali alle servizio app, per sfruttare le numerose funzionalità di affidabilità native offerte dal servizio.
- La versione distribuita nelle macchine virtuali contiene una quantità significativa di codice personalizzato necessario per la strumentazione.
Applicazione dell'approccio e dei risultati
- Durante la migrazione iniziale alle servizio app, il team è riuscito a rimuovere tutto il codice di strumentazione personalizzato implementando l'installazione automatica di App Insights nelle servizio app.
- Il team è anche in grado di sfruttare diverse altre funzioni native servizio app come la scalabilità automatica, l'integrazione di Key Vault e la ridondanza di zona.