İşyerinde yeni bir projeye başlıyorum ve muhtemelen bir veya iki geliştiricinin mevcut uygulamaları veya basit komut dosyalarını ana projeye dahil etmesi gerekecek olsa da, projenin neredeyse tek geliştiricisi olacak. Projenin küçük ölçekli toplu ve akış verilerini alma / işleme ve hem olaya dayalı ve isteğe bağlı kod yürütme işlemlerini gerçekleştirmesi gerekir. Çerçevenin bazı bölümleri yoğun şekilde CPU'ya bağlı olacak ve bazı bölümler yoğun bir şekilde G / Ç'ye bağlı olabilir; Verilerin çoğu tek bir makinede yaşamak zorundadır, ancak kullanılabilir bilgi işlem gücünü artırmak için bir küme oluşturabilir ve VM'leri bağlayabiliriz. Muhtemelen bu temel çerçeveyi sağlayan hizmetlere bağlı bir ya da daha fazla küçük web uygulaması olacaktır. Ana dil hemen hemen her şey için Python olacaktır.
Sorum şu: bu tür bir çabaya bir mikro hizmet yaklaşımı benim alıp almamam gerektiği ya da gelişimin çoğunu kendim yapacağım göz önüne alındığında, monolitik bir uygulamayla yapışmam gerekip gerekmediği. Benim düşüncem, mikro hizmetlerin (Nameko kullanarak) farklı uygulama modellerine (veri boru hatları, etkinliğe başlatılan, talep üzerine, web uygulamaları vb.) Sahip olan unsurları ile iş yükünü dağıtmanın açık bir yolu arasında doğal bir ayrılık sağladığıdır. çoklu işlemlerde iletişim. Benim endişem, muhtemelen sistemi yönetmek için gerekli olan birden fazla hizmeti (rabbitmq, redis, vb.) Yönetmek için bir Kubernetes kümesini (Docker'ı biliyorum ama yine de Kubernet'lere oldukça yeniyim) sahip olacağım. ve potansiyel olarak, biz gerekli tüm yetenekleri gerçekten yerine getirecek küçük kod parçaları.
Tek bir geliştiriciden biraz daha fazlasını içeren bir proje için, mikro hizmetler hala böyle karmaşık bir sistemin geliştirilmesini ve sürdürülmesini kolaylaştırıyor mu? Bunun yerine kullanmayı düşünmem gereken ya da sistemi bu şekilde tasarlamanın yükünü azaltmak için kullanmam gereken yöntemler / sistemler / çerçeveler var mı?