Razvoj softverskih rešenja poboljšava se iz decenije u deceniju. Pronalaze se novi načini kako da nešto uradimo brže i učinkovitije.
Timovi za razvoj pod pritiskom su da rešenja isporučuju odmah i hitno, tako da se neretko dešava da završe sa kodom koji je brljav i bez ikakvog reda. Timovi napišu kod u jednom zamahu i isporuče ga klijentu. Monolitna aplikacija je primer takvog razvoja.
Sve radi bez greške u prvih nekoliko meseci ili godina, ali kako klijent naručuje nove izmene, tako se stvara podloga za haos.
Tako je nastala mikroservisna arhitektura koja ne ugrožava brzu isporuku, ali je otpornija na složene zahteve klijenata. Umesto u jednom komadu softver se razvija u nekoliko različitih delova iliti servisa koji su međusobno nezavisni.
Monolitna aplikacija otprema se kao jedna zaokružena celina i uglavnom ima jedan izvor podataka.
Mikroservisna aplikacija sastoji se od više mikroservisa od kojih svaki ima svoju bazu podataka. Međusobno komuniciraju preko API-ja i otpremaju se zasebno. Ipak, imaju i oni svoje nedostatke.
Prednosti mikroservisa
Dodavanje novih funkcionalnosti manje je rizično i lakše se izvodi. Lakše se prilagođavaju novim tehnologijama.
Nedostaci
Nedostaci mikroservisa su da je testiranje i debagovanje složenije i dugotrajnije. To se naročito odnosi na testiranje od početka do kraja (end to end testing). Takođe je i komplikovanija isporuka softvera i više se treba voditi računa o bezbednosti.