I microservizi si ridimensionano?

6

Ho letto sull'architettura dei microservizi, che negli ultimi anni ha ottenuto molti riconoscimenti. Come un grande fan della filosofia UNIX, lo trovo molto pulito e ragionevole. Tuttavia, l'esistenza di pubblicazioni e di librerie / framework sembra trattare i microservizi come soluzione per "big data", "scala web" e problemi simili di buzzword. Quando parli di ridimensionare un'app, il contesto lo ridimensiona sempre per funzionare su più server in un ambiente distribuito e in rete.

Ha senso utilizzare i microservizi su scala molto minore? Cioè Voglio scrivere un'applicazione hobbista distribuita su una singola istanza VPS e utilizzata in totale da poche centinaia di persone al massimo. I vantaggi architetturali dei microservizi sono ovviamente mantenuti, ma per quanto riguarda le prestazioni rispetto ai tradizionali server e framework di threading?

    
posta Red 31.07.2015 - 08:29
fonte

3 risposte

8

I microservizi comportano una penalità sia in termini di prestazioni che di complessità che di solito vengono scambiati per essere in grado di scalare più facilmente (aggiungendo più istanze di vari microservizi indipendentemente). Se stai creando un piccolo sistema, evita il runtime e il sovraccarico cognitivo semplicemente costruendo la tua app come un "monolite". (una parola terribile che la gente ora sfortunatamente attribuisce una connotazione negativa a)

    
risposta data 31.07.2015 - 09:39
fonte
5

Direi un solido no. I microservizi hanno più o meno bisogno intrinsecamente di un team di supporto per devops 24/7; un nome alternativo per l'approccio è monitoraggio-driven-development . Questa è la cosa che prende un nuovo caso di errore e limita intelligentemente la portata del fallimento a qualcosa che il 99,99% dei clienti non sarà mai a conoscenza.

Un progetto hobbistico non avrà questo, e inoltre non avrà milioni di clienti, il che significa che l'1% di loro farà più e migliori test in un'ora di quanto un edificio pieno di team di QA potrebbe fare in una settimana . E certamente non avranno un vasto sistema che sarebbe meno cattivo di molti grandi, molti grandi e poche decine di piccoli.

Senza nessuno di questi, i microservizi sono solo un modo per prendere un piccolo sistema e trasformarlo in diversi sistemi leggermente più grandi, più lenti e bugger.

Nessuno di questi ha mai detto unix cat :

ok, I need to read input and then write output. So I need two main processes, and then another that connects the two together...

    
risposta data 31.07.2015 - 14:26
fonte
1

L'utilizzo di microservizi nel tuo contesto potrebbe essere ancora utile nel tuo contesto se il sistema è abbastanza grande da avere senso per:

  • Rendi le parti del sistema mantenute da diversi sviluppatori o persino team,

  • oppure scrivi le diverse parti utilizzando lingue diverse; ad esempio, puoi avere un servizio scritto in Python e ospitato su una VM Linux che interagisce con un servizio scritto in ASP.NET MVC e ospitato su server Microsoft Azure.

  • O essere in grado di mantenere o addirittura sostituire completamente una parte del sistema senza influire su tutte le altre parti.

Se il sistema non è abbastanza grande, l'utilizzo dei microservizi potrebbe non essere così utile. Probabilmente, sarebbe meglio con un singolo servizio, mettendo al contempo le astrazioni e le interfacce appropriate per rendere più semplice il maintsin dell'applicazione più tardi.

    
risposta data 31.07.2015 - 10:45
fonte