The Solution
The project consisted of designing and implementing a solution that exposes a single REST-based API for managing all communication channels in one place.
This was designed to be simple, well documented with the following in mind: the developer is the end-user. Along with the API, we also built a self-service backoffice for the developers and their teams.
The initial tech stack for this project was:
- ASP .NET Core, for the API
- Azure AppService, for hosting
- Azure SQL Database, as the primary database
- React, for the Backoffice
- Apigee, for API Management
The API was the first module to be built. Afterwards, two new modules were developed:
- Batch support for SMS by integrating with a specific provider using SMSC protocol
- Inbox for notifications (a.k.a Notifications Center)
The tech stack for these new modules included additional technology:
- Azure CosmosDb
- Azure EventHubs
- Azure DataFactory
- Azure Container Apps
The initial iteration of the core module—the API—was developed by a compact and autonomous team utilizing the Kanban method. The adoption of Kanban, a streamlined framework, facilitated rapid progress while maintaining oversight. This initiative marked the establishment of a platform-oriented team as per the Team Topologies model, taking charge of the Communications Hub and additional integrated services.
The project's rapid progress can be attributed to the team's modest size and significant autonomy, with infrastructure as the primary dependency. The effective partnership between the development team and the infrastructure team played a crucial role in minimizing this dependency.