Я починаю новий проект на роботі, і, ймовірно, буду майже єдиним розробником проекту, хоча одному або двом іншим розробникам потрібно буде інтегрувати існуючі програми або прості сценарії в основний проект. Проект повинен обробляти об'ємне та оброблюване об'ємні та потокові дані, а також виконання кодів на основі подій та виконання запитів. Деякі частини основи будуть сильно пов'язані з процесором, а деякі частини можуть бути сильно пов'язаними введення-виводу; більшість даних повинні працювати на одній машині, але ми можемо створити кластер і підключити VM для збільшення доступної обчислювальної потужності. Напевно, буде одне або кілька невеликих веб-додатків, які залежать від послуг, що надаються в цій основної рамки. Основна мова буде Python для майже всього.
Моє запитання - чи варто використовувати мікросервісний підхід до подібних зусиль або дотримуватися монолітного додатку, враховуючи, що більшу частину розробки я буду робити сам. Думаю, що мікросервіси (за допомогою Nameko) забезпечують природний поділ між елементами фреймворку, які мають різні моделі виконання (трубопроводи даних, запущені події, на вимогу, веб-додатки тощо) та чіткий спосіб розподілу навантаження та спілкування через декілька процесів. Я занепокоєний тим, що я, мабуть, закінчуватимуться кластером Kubernetes для управління (я знайомий з Docker, але все ще досить новим у Kubernetes), безліч служб (rabbitmq, redis тощо), необхідних просто для полегшення роботи системи, і, можливо, багато маленьких фрагментів коду, щоб реально реалізувати всі необхідні можливості, які ми '
Чи для мікропрограмного проекту, який має трохи більше одного розробника, спрощення розробки та підтримки складної системи, як ця? Чи існують методи / системи / рамки, які я повинен використовувати замість цього, або зменшити накладні витрати, пов'язані з проектуванням системи таким чином?