Dicono che la rottura monolitico sistemi è difficile da fare

0
195

E ‘ stata un’industria mantra per anni: monoliti sono poco efficaci, inflessibile bestie che fermare qualsiasi e tutte le innovazioni nelle sue tracce. Ma molte aziende hanno monoliti in una forma o nell’altra, che hanno cercato di abbattere – come il tradizionale ERP e MRP o di sistemi su larga scala sistemi di transazione.

building-6th-ave-nyc-photo-by-joe-mckendrick.jpg

Foto: Joe McKendrick

Ci crediate o no, ci sono alcune buone cose da dire su di monoliti. Ellen Körbes, manager di relazioni tra sviluppatori e al Giardino, per uno, ha sottolineato in una recente presentazione che “c’è qualcosa che abbiamo avuto con monoliti a causa di questa semplicità la magia di programmazione c’era.” Lei ricorda come con monoliti, è facile da imparare, il sistema per la prima volta. Si dispone di un sistema di grandi dimensioni, in modo che si dispone di un linguaggio di programmazione, si dispone di una serie di regole, una serie di convenzioni, e si dispone di un grande uno-costruire comando.”

Naturalmente, Körbes non vedere monolitico sistemi di chiunque futuro, e offre una piattaforma open-source per abbattere e ricostruire un microservices architettura.

In una presentazione separata, Kelly Sutton, direttore tecnico di Gusto, discusso le implicazioni del monolite-smashing-in particolare quelli costruiti su Ruby on Rails — ma i suoi consigli possono essere applicati a molti linguaggi di programmazione e framework che sono cresciuti troppo grande per fallire.

Per cominciare, il problema con lo spostamento di funzionalità di un monolite e in microservices è che entrambe le versioni avranno bisogno di essere mantenuto e aggiornato, Sutton punti. “Abbiamo infatti creato un problema che è peggio che abbiamo avuto”, spiega. “Abbiamo letteralmente creato tribali conoscenza del nostro sistema. Ora ogni volta che si vuole andare a trovare un concetto di HR dobbiamo andare a chiedere a qualcuno, ‘hey, è che un HR v2 o è che nel vecchio HR appendice che è solo una sorta di attaccare in giro?'”

I problemi crescono come applicazioni o servizi di scala. Come viene presa la decisione di uscire una funzione come servizio, come le risorse umane nomi, indirizzi e numeri di identificazione personale, i dati e le funzioni possono ancora essere condivisa tra il nuovo e il vecchio applicazioni — HR v1 e HR v2.

Sutton illustra quali sono i problemi che derivano come monoliti sono suddivisi tra:

“Abbiamo enumerare tutte le cose che HR v1 oggi. Diciamo che è come 14 cose, e poi lentamente si avvia la connessione di nuovo l’applicazione principale, andando meticolosamente, uno per uno, e il trasferimento di queste 14 comportamenti. Ma di solito su come essere a metà strada attraverso di essa diventa qualcuno lavoro a tempo pieno solo per dire: ‘bene cosa HR v2 e che cosa è in HR v1.’ Andare un po ‘ oltre e si sta ancora ricevendo segnalazioni di bug contro il vecchio sistema HR, così ora stai dicendo: ‘va bene, quindi credo che abbiamo risolto il bug nel vecchio sistema HR, ma abbiamo bisogno di ricreare il nuovo e poi fix.'”

I seguenti sono consigli per spezzarsi monoliti senza complicare le cose ulteriormente:

Evitare di dipendenze circolari. Come si fa a dividere un monolitico sistema e sviluppare un microservices basato su architettura? “La risposta è “doloroso”, ha dichiarato il Körbes, che le note monolitico dipendenze sono sostituiti da un’altra forma di dipendenza. “Servizio dipendenze sono un dolore da gestire. Se cambio il mio servizio di spedizione, ho potuto aggiornare la mia ordini di servizio, e, in caso di ordini di servizio, ho potuto aggiornare il mio servizio front-end, perché le cose cascata. Non posso cambiare una cosa e si aspettano di non essere lì.” La differenza con monolitica applicazioni è “hai un compilatore, e il compilatore potrebbe fare il grafico di dipendenza per voi.”.

Utilizzare gli oggetti di valore per affrontare problemi di scaling. Come esempio, Sutton, dice, “abbiamo un servizio di classe o un oggetto che gestisce la ‘di quello che dovrebbe accadere quando una società si iscrive nella nostra applicazione?’ Stiamo per inviare una e-mail e incremento di alcune statistiche formatore contatore. Questo sembra abbastanza innocuo. Piccole applicazioni possono fare questo. Ma quello che abbiamo fatto è sempre accoppiato nostra azienda mailer nel nostro stats tracker per la struttura del nostro modello aziendale. Questo probabilmente non è così grande di un affare, ma come la nostra applicazione, si cresce, si può essere molto, molto difficile da districare. Così, invece, abbiamo la buccia di solo i valori che abbiamo bisogno di quelle ricca di record attivo oggetti, li trasformano in valori. forse dare quei fasci di valori, e quindi di passare solo quelli lungo per qualunque successiva classe o un metodo che devono fare il loro lavoro.”

Spostare lentamente. Rottura monoliti in servizi distribuiti è bisogno di un’attenta riflessione. “Avete un grande mucchio di codice e si divide in 20 diversi pezzi e di mettere un po’ di imbottitura e alcuni di questi pezzi sono ora un linguaggio di programmazione diverso,” dice Körbes. Quando si va a microservices, si sta aggiungendo qualcosa, così sarà più lento.” Inoltre, non vi è forse centinaia di ore di programmazione coinvolti, dice Sutton. “È necessario sedersi con il vostro team di prodotto e dire, ‘Ok, stiamo andando a fare questo e quindi le cose stanno andando per ottenere più velocemente nel tempo, ma per ora niente sta per cambiare. Stiamo andando per il refactoring del diritto. Avete bisogno di un grande business per caso come questo sta per aiutarvi a velocizzare e aiutarvi a sviluppare il software più sicuro, non importa quanto male il codice attuale è oggi.”

Argomenti Correlati:

Priorità

Cloud

Big Data Analytics

L’innovazione

Tecnologia e Lavoro

Collaborazione