Dear all,
I hope this email finds you well. I am reaching out to gather
insights and suggestions regarding a potential redesign of our VoIP
system to improve scalability, ease of management, and upgradeability.
Current Setup:
- Our system is not multi-tenant and is based on Kamailio and FreeSWITCH in a distributed architecture (as example of distributed architecture, see: https://ufdcimages.uflib.ufl.edu/UF/E0/04/92/89/00001/THOMPSON_C.pdf).
- Everything runs inside LXC containers across multiple nodes.
- One of the challenges we face is OS upgrades, which are cumbersome and require significant manual intervention.
- At the moment the code for voip is done with ansible
Given these challenges, I am considering whether a microservices-based architecture could be a viable option. However, I have some concerns regarding:
- SIP and RTP handling with NATed containers (e.g., Kubernetes, Docker Swarm) and potential issues with media traversal.
- Performance impact when shifting real-time traffic handling to containerized environments.
- Upgrade and deployment strategies—how to achieve smoother, rolling upgrades without service interruptions.
- Alternative approaches that might be more effective, such as a hybrid model combining LXC with containerized microservices for specific functions.
If anyone has experience transitioning a VoIP system to microservices or has insights on best practices for scalable, maintainable VoIP architectures,
I would greatly appreciate your thoughts. What worked for you? What
pitfalls should we be aware of?Do you have any documentation that I can
check?
Looking forward to learning from your experiences.
Thank you.