Всем привет.
Есть несколько вопросов по архитектуре, предложенной на рисунке (предложенное решение описанной ниже задачи).
Цели:
1. Основная задача - объединить все ИТ-проекты компании, разрабатываемые на различных языках и технологиях, в единую экосистему, которую можно будет поддерживать штатом своих разработчиков (сейчас же это outsource). Хочется уйти от текущего "зоопарка" технологий.
2. По возможности максимально перевести outsource-решения на аналогичные внутренние .NET-проекты (какие можно перевести), так как в штате C#-разработчики. Возможно, часть (но меньше) останется на outsource.
3. Желательно иметь общий бэкенд для всех фронтендов (возможно в виде расширения текущего WebAPI).
4. Хотелось бы уменьшить кол-во PHP кода (расширять штат PHP-шниками не планируется).
Текущие условия:
* У внутреннего WebAPI - бэк на
Asp.NET Core 3.1 (отдаётся потребителям в виде OpenAPI). БД - MSSQL.
* У интернет-магазина - свой бэк и фронт (1C-Bitrix, PHP). - outsource
* У ещё одного сайта по продаже - свой бэк и фронт (PHP, Oracle). - outsource
* У мобильных приложений (Android, iOS) - свой бэк и фронт (Java, Kotlin, Swift). - outsource
* У основного сайта - свой бэк и фронт (Java, ReactJS, Postgres). - outsource
* У ещё одного отдельного сайта - свой бэк и фронт (Java, AngularJS). - outsource
- Для обработки части бизнес-логики, регистрации/авторизации, получения данных о клиентах из CRM, связи с 1С и другими сервисами уже используется
ASP.NET Core 3.1 WebAPI в виде OpenAPI (представлен в Swagger UI). Все зависимые ИТ-проекты обращаются к нему (помимо своих бэков).
- Интернет-магазин размещает заказы в 1С тоже через WebAPI.
- Доступ к WebAPI сейчас только во внутренней сети (наружу не выглядывает). Используются JWT-токены для авторизации.
Пожелания:
1. Основной язык - C# (так как сейчас в штате разработчики C#, они же и будут поддерживать будущую экосистему).
2. Максимальный уход от множества бэкендов, консолидация логики в общем бэке.
3. Разработка мобильных приложений - кроссплатформенная (Flutter или Xamarin).
4. Интернет-магазин пока оставить на 1C-Bitrix (возможно потом поменяется).
Вопросы:
1. На предложенной схеме смущает добавление LaravelAPI (PHP), как прослойки между клиентами и сервисами. Можно ли напрямую давать сайтам и мобилкам доступ к WebAPI с точки зрения безопасности (сейчас он не выглядывает наружу) или нужен какой-то промежуточный слой?
2. Правильно ли объединять все имеющиеся бэкенды в общий бэк в виде WebAPI? Или стоит для каких-то решений оставить свой бэк?
3. Насколько оправдан выбор Apache Kafka? Стоит ли рассматривать RabbitMQ? И вообще стоит ли сразу закладывать в инфраструктуру наличие брокера сообщений или пока можно без него?
4. Нужен ли в текущих условиях распределённый кэш (например, в виде Redis)? Для каких сценариев?
5. Стоит ли рассматривать Xamarin (в будущем MAUI) для мобилок или это принесёт определённые "страдания" как разработчикам, так и клиентам?
6. Субъективно (ваше мнение): Имеет ли смысл рассматривать Blazor для фронтенда (ибо штат - .NET-чики) или лучше React, Vue?
7. Что ещё необходимо добавить (предусмотреть) в схеме разрабатываемой экосистемы? Чего не хватает? О чём необходимо подумать?
8. На будущее: Стоит ли рассматривать для интернет-магазина eCommerce решения на .NET (nopCommerce, Umbraco, Orchard Core, Piranha Core) или лучше оставить 1C-Bitrix?
P.S. Возможно, часть вопросов банальные, или ответы на них очевидные. Но мне ранее не приходилось ими задаваться, так как большая часть систем - outsource. Сейчас же пытаюсь во всём этом разобраться.
P.P.S. Буду очень признателен, если поможете с ответами на вопросы.