At Bosch, we have developed a solution that allows brick-and-mortar retailers to gain insights about customer journeys throughout their stores. The system uses IP cameras to capture anonymized metadata about customer movements, then transmits it to the cloud for analysis and visualization. Our agile team has taken a "pragmatic microservices" approach to gradually migrate the original organically grown monolith into a decoupled event-driven architecture. In our solution, each retailer is a single tenant, receiving its own set of cloud resources. Currently each system is deployed to Amazon Web Services, where messaging-, data-, and infrastructure-as-a-service offerings are used.
Recently, it was decided to have the ability to deploy the application to other clouds, with Azure as the first step. To achieve this, we found that we had to rely as little as possible on vendor-specific offerings, develop API-agnostic data access layers, and manually adapt our infrastructure automation code. Ultimately we may need a fully containerized architecture to achieve portability, maintainability, operatability, and consistent performance among all deployments. However, in the short term it was necessary to take this intermediate "manual port" step in order to meet deadlines and learn as a team how to make the application's messaging and data access layers cloud agnostic.
See the slides.Watch the video.