Zaczynam nowy projekt w pracy i prawdopodobnie będę prawie jedynym programistą w projekcie, chociaż jeden lub dwóch innych programistów będzie musiało zintegrować istniejące aplikacje lub proste skrypty z głównym projektem. Projekt musi poradzić sobie z przetwarzaniem / przetwarzaniem danych masowych i przesyłaniem strumieniowym na małą skalę, a także uruchamianiem kodu sterowanym zdarzeniami i na żądanie. Niektóre części frameworka będą mocno powiązane z procesorem, a niektóre mogą być mocno powiązane z I / O; większość danych musi znajdować się na jednym komputerze, ale jesteśmy w stanie utworzyć klaster i połączyć maszyny wirtualne, aby zwiększyć dostępną moc obliczeniową. Prawdopodobnie będzie istniała jedna lub więcej małych aplikacji internetowych, które zależą od usług zapewnianych przez tę podstawową strukturę. Głównym językiem będzie Python do wszystkiego.
Moje pytanie brzmi, czy powinienem zastosować podejście mikrousługowe do takiego wysiłku, czy też trzymać się monolitycznej aplikacji, biorąc pod uwagę, że większość rozwoju będę robił sam. Uważam, że mikrousługi (wykorzystujące Nameko) zapewniają naturalny rozdział między elementami frameworka, które mają różne modele wykonawcze (potoki danych, uruchamiane zdarzeniami, aplikacje na żądanie, aplikacje internetowe itp.) Oraz jasny sposób na rozłożenie obciążenia i komunikacja między wieloma procesami. Obawiam się, że prawdopodobnie skończę z klastrem Kubernetes do zarządzania (znam Docker, ale wciąż dość nowy w Kubernetes), wielu usług (królikmq, redis itp.) Wymaganych tylko w celu ułatwienia uruchomienia systemu, i potencjalnie wiele małych fragmentów kodu, aby faktycznie wdrożyć wszystkie niezbędne możliwości, które „
Czy w przypadku projektu z niewiele więcej niż jednym deweloperem mikrousługi nadal upraszczają tworzenie i utrzymywanie tak skomplikowanego systemu? Czy istnieją metody / systemy / frameworki, które należy rozważyć zamiast tego, lub aby zmniejszyć narzut związany z projektowaniem systemu w ten sposób?