Jednym z typowych argumentów przemawiających za wykorzystaniem mikrousług jest lepsza skalowalność. Ale zastanawiam się, czy ten argument jest naprawdę ważny.
Powiedzmy, że mieliśmy aplikację składającą się z 10 mikrousług, z których 9 ma każde dwa wystąpienia (dla nadmiarowości) i jedno z 4 wystąpieniami do obsługi obciążenia (skalowalność). Argument pro-mikroserwisowy polega na tym, że możesz skalować to miroservice niezależnie od innych usług.
Powiedzmy jednak, że wszystkie 10 mikrousług były modułami w jednym monolicie i że wdrożono kilka (np. 22 jak suma z góry) instancji tego monolitu. System powinien być w stanie poradzić sobie z obciążeniem dla jednej części krytycznej, ponieważ jest wystarczająca liczba takich przypadków. Jeśli instancje zawierają logikę programu, niepotrzebną, jedynym minusem byłoby to, że plik binarny i ilość potrzebnej pamięci RAM byłyby nieco większe. Ale z drugiej strony różnica nie powinna być zbyt duża w większości przypadków - przynajmniej nie w porównaniu z resztą stosu (pomyśl o Spring Boot). Zaletą skalowanego monlitu byłby prostszy system bez (większości) błędów systemu rozproszonego.
Czy coś brakuje?