When a prominent teletherapy group’s telehealth solution had been sunsetted, they needed a replacement.
After facing multiple communication issues with their first development team, this mental health group was struggling to get a new stable working solution.
They were already behind the eight ball and needed someone to come in with speed and a lot of expertise. We successfully built a stable platform that is currently used by 1000s of users daily and helps agents and other team members to communicate daily online or by phone.
This client needed a custom real-time communication solution to replace their current one and integrate with the rest of their systems. This included other proprietary solutions and integration with SIP and PSTN networks. On top of that, they wanted a mobile native application to work alongside.
Large scale video conferencing (+15 users)
Large scale broadcasting (+100 users)
Refactor of application architecture
Support of 1000s of concurrent calls
Mobile native applications
Dial in and dial out
Automatic reconnection when call drops
The client already had an existing solution with a defined tech stack:
- Java + Spring Boot for applications
- H2 database engine
- Kurento Media Server and Coturn for
- WebRTC backend servers
- RabbitMQ as the piece that communicates all the components
- Freeswitch for integration with SIP
- Flutter, Kotlin and Swift for mobile development.
One of the first things we did was to assess the existing application to decide if it was appropriate for the requirements. We decided to move forward with most of the current stack, except for the database layer that was changed from memory-based H2 to MongoDB.
All the components were initially running in a single docker-compose definition file. This was migrated to a Kubernetes cluster and after that, RabbitMQ, Coturn and MongoDB were moved to their own servers while the rest remained as docker containers.
The CI/CD pipeline runs in Azure DevOps with an on premise agent.