Я начинаю новый проект на работе и, вероятно, буду едва ли не единственным разработчиком проекта, хотя одному или двум другим разработчикам потребуется интегрировать существующие приложения или простые сценарии в основной проект. Проект должен обрабатывать небольшие объемные и потоковые данные, обрабатывать и обрабатывать их, а также выполнять код по запросу. Некоторые части платформы будут сильно связаны с процессором, а некоторые части могут быть сильно связаны с вводом / выводом; Большая часть данных должна храниться на одной машине, но мы можем создать кластер и подключить виртуальные машины для увеличения доступной вычислительной мощности. Вероятно, будет одно или несколько небольших веб-приложений, которые зависят от услуг, предоставляемых этой базовой платформой. Основным языком будет Python практически для всего.
Мой вопрос заключается в том, должен ли я использовать подход с микросервисами для таких усилий или придерживаться монолитного приложения, учитывая, что большую часть разработки я буду выполнять сам. Я считаю, что микросервисы (использующие Nameko) обеспечивают естественное разделение между элементами инфраструктуры, которые имеют разные модели выполнения (конвейеры данных, запуск событий, веб-приложения по требованию и т. Д.) И четким способом распределения рабочей нагрузки и связь между несколькими процессами. Меня беспокоит то, что я, вероятно, в конечном итоге получу кластер Kubernetes для управления (я знаком с Docker, но все еще довольно плохо знаком с Kubernetes), несколькими службами (rabbitmq, redis и т. Д.), Необходимыми только для облегчения работы системы, и потенциально много маленьких кусочков кода для реализации всех необходимых возможностей, которые мы
Для проекта с чуть более чем одним разработчиком микросервисы все еще упрощают разработку и обслуживание такой сложной системы, как эта? Существуют ли методы / системы / структуры, которые я должен рассмотреть вместо этого, или чтобы уменьшить накладные расходы, связанные с проектированием системы таким образом?