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.

.: Francesco Colista

.: Francesco Colista