Poczytałem trochę o mikroserwisach i jestem trochę zaintrygowany, wydaje się, że to ciekawa koncepcja. Ale zastanawiam się, jakie są zalety i wady korzystania z mikrousług w porównaniu z architekturą monolityczną i odwrotnie.
Kiedy mikrousługi są lepsze i gdzie lepiej iść z architekturą monolityczną.
microservices
user902383
źródło
źródło
Odpowiedzi:
Chociaż jestem stosunkowo nowy w świecie mikrousług, postaram się odpowiedzieć na Twoje pytanie tak kompletnie, jak to możliwe.
Korzystając z architektury mikrousług, zwiększysz odsprzęganie i separację problemów. Ponieważ zbytnio dzielisz swoją aplikację.
Powoduje to, że Twoja baza kodu będzie łatwiejsza w zarządzaniu (każda aplikacja jest niezależna od innych, aby zapewnić nieprzerwane działanie). Dlatego jeśli zrobisz to dobrze , w przyszłości łatwiej będzie dodać nowe funkcje do swojej aplikacji. Podczas gdy w przypadku architektury monolitycznej może to być bardzo trudne, jeśli twoja aplikacja jest duża (i możesz założyć, że w pewnym momencie tak będzie).
Również wdrażanie aplikacji jest łatwiejsze , ponieważ niezależne mikrousługi są budowane osobno i wdrażane na oddzielnych serwerach. Oznacza to, że możesz tworzyć i wdrażać usługi, kiedy tylko chcesz, bez konieczności przebudowywania reszty aplikacji.
Ponieważ różne usługi są małe i wdrażane osobno, jest oczywiste, że łatwiej jest je skalować , z tą zaletą, że można skalować określone usługi aplikacji (z monolitem skalujesz całą „rzecz”, nawet jeśli jest to tylko określona część w ramach aplikacja, która jest nadmiernie obciążana).
Jednak w przypadku aplikacji, które nie mają stać się zbyt duże, aby można było nimi zarządzać w przyszłości. Lepiej jest zachować architekturę monolityczną. Ponieważ architektura mikrousług wiąże się z poważnymi trudnościami. Stwierdziłem, że łatwiej jest wdrażać mikrousługi, ale jest to prawdą tylko w porównaniu z dużymi monolitami. Korzystając z mikrousług, masz dodatkową złożoność dystrybucji usług na różne serwery w różnych lokalizacjach i musisz znaleźć sposób na zarządzanie tym wszystkim. Budowanie mikrousług pomoże Ci na dłuższą metę, jeśli Twoja aplikacja stanie się duża, ale w przypadku mniejszych aplikacji po prostu łatwiej jest pozostać monolitycznym.
źródło
Jest to bardzo ważne pytanie, ponieważ kilka osób zostaje zwabionych przez cały szum wokół mikrousług i trzeba rozważyć kompromisy. Jakie są więc zalety i wyzwania mikrousług (w porównaniu z modelem monolitycznym)?
Korzyści
Wyzwania
Kiedy zrozumiemy te kompromisy , jest jeszcze jedna rzecz, którą musimy wiedzieć, aby odpowiedzieć na drugie pytanie: co jest lepsze, mikrousługi czy monolit? Musimy znać niefunkcjonalne wymagania (wymagania atrybutów jakości) aplikacji. Kiedy zrozumiesz, na przykład, jak ważna jest wydajność w porównaniu ze skalowalnością, możesz rozważyć kompromisy i podjąć świadomą decyzję projektową.
źródło
@Luxo jest na miejscu. Chciałbym tylko zaproponować niewielką zmianę i przedstawić perspektywę organizacyjną. Mikrousługi nie tylko pozwalają na rozdzielenie aplikacji, ale mogą również pomóc na poziomie organizacyjnym. Na przykład organizacja byłaby w stanie podzielić się na wiele zespołów, z których każdy może rozwijać się na zestawie mikrousług, które zespół może zapewnić.
Na przykład w większych sklepach, takich jak Amazon, możesz mieć zespół ds. Personalizacji, zespół e-commerce, zespół usług infrastrukturalnych itp. Jeśli chcesz skorzystać z mikrousług, Amazon jest tego bardzo dobrym przykładem. Jeff Bezos zobowiązał zespoły do komunikowania się z usługami innego zespołu, jeśli potrzebują dostępu do współdzielonej funkcjonalności. Zobacz tutaj krótki opis.
Ponadto inżynierowie z Etsy i Netflix również przeprowadzili małą debatę w czasach, gdy mikrousługi kontra monolit na Twitterze. Debata jest trochę mniej techniczna, ale może również dostarczyć kilku spostrzeżeń.
źródło