An Architecture Vision Universal Cloud Communications Stack Cloud Telecom. Software that turns communications into a service. 1
Software Architecture That Matters Universal Cloud Communications Stack (UCCS), which sipxecs is based on, is a modern cloud application. It represents a complete communications and collaboration system, a production environment for real-time services, with all the required applications for voice, video, messaging, presence, conferencing, activity streams, file sharing and mobility. It runs virtualized in standard IaaS environments on Linux. It scales both UP and DOWN; it deploys automatically from a single host to a global cluster, fits into a minimal resource footprint, and it accommodates a wide range of different deployment scenarios and topologies. The major components are as follows: 1. The Web-based application and cluster manager is the centerpiece of the solution. It allows centralized configuration of everything, automates all relevant IT management processes, and makes the sipxecs solution the easiest to use. 2. A powerful SIP Session Manager for flexible SIP routing, including all the features necessary to fully replace a legacy PBX. 3. A scalable and proven XMPP server for presence, instant messaging, and group chat. 4. A powerful media server that offers horizontal scale for services such as unified messaging (voicemail), conferencing, auto-attendants, IVR, and call queuing. 5. Integrated NoSQL database (MongoDB) that is distributed, partition tolerant, and transaction efficient. This makes sipxecs the first globally scalable loadsharing system. Integrated DBaaS for all the system components and it is entirely free. 2
6. Integrated configuration management (CFEngine) to automate everything. We use CFEngine over some of the other automation tools because of its light footprint and its ability to be tightly integrated with many different programming languages. 7. A flexible application layer that is generic and allows adding many different applications to become fully integrated components of the resulting service. 8. An analytics layer to provide service assurance, service layer management, remote troubleshooting and reporting. sipxecs integrates Jasper Reports, SNMP alarms, and a sophisticated SIP capture tool for SIP call flow analysis. Our Initial Goals We wanted to build a software solution to produce communications and realtime services in the cloud, private, hybrid, and elastic as a service. At the outset we had some clearly articulated main goals in mind, resulting in an architecture that represents a significant departure from anything that was done before: 1. To look at the cloud not as a collection of virtual hosts, but an elastic compute environment that allows full automation of the deployment and management of a complex application using standard components, tools, and APIs for both public, hybrid, and private configurations. 2. To standardize the application component s runtime requirements allowing any service combination to run on any number of hosts, thereby optimizing the partitioning of resources into the most optimal configuration for scale, redundancy, and geographic distribution; and to allow dynamic changes to the cluster partitioning. 3
3. To allow geo-redundant clusters that are fully partition tolerant requiring only transaction state for DNS-based failover, relegating session state to the application layer, and thereby enabling branch or location resiliency without complicated reconfigurations. 4. To significantly reduce the complexity involved when deploying both small and large systems. We wanted an architecture that easily scales both UP and DOWN, a system that automatically expands from a first single host into a global cluster to scale UP, and a system with an absolutely minimal resource footprint to scale DOWN and meet production cost points required to target the SMB market. 9. To create an architecture that uses principles and concepts developed for Web applications to communicate between components, scale out, provide failover, and incorporate modern APIs. This included accommodations for WebRTC, creating a platform that is device and client agnostic and therefore without vertical integration. 4
Here is what we ended up with Deployments for several hundred thousand users across mid-size to large companies ranging from a few hundred users at the low end to tens of thousands of users at the high end have shown up to 80% reduction in required resources, physical or virtual, and up to a 10x reduction in overall cost. Here is how: 1. Multi-tenancy in the cloud era The requirement for multi-tenant operation needed to be reassessed and the architecture redefined as a consequence. We were able to combine the cost advantages of a multi-tenant application at the very low-end of the market (i.e. in the SMB segment), with the flexibility and security advantages of a singletenant private cloud application, as it is required by mid-size to large enterprise. 2. Scaling down and scaling up Scaling down is about shrinking the resource footprint as small as possible for a small group of users to create unit economics required to be competitive all the way down. Scaling up is about creating a flexible cluster where each service can scale individually both vertically and horizontally and across geographically distributed datacenters as necessary. sipxecs accomplishes the ultimate goal of running the entire system on a single host, including all the services, the full management system, and the transaction database. Resource requirements were reduced to 2 to 4 compute units with 2 to 4 GB of RAM and 16 GB of storage. 3. Integrated applications removes the complexity The communications and collaboration space is a patchwork of different applications ranging from voice to video/web conferencing and to all forms of messaging. They each offer different elements of the entire solution required by end users using different run-time environments, separate management solutions, and individual databases. Various SaaS services removed the enterprise admin from the complexity of these specific runtime environments and 5
operations, but left the task to integrate several siloed applications into one cohesive user experience to the administrator. sipxecs changes all that offering one cohesive application that operates in a homogenous and modern runtime environment that is lightweight. 4. Architecting for production efficiency in the cloud DevOps is a new concept in IT that combines development and operations into one, thereby increasing deployment speed for application at significantly reduced cost. Our starting point into DevOps was the standardization of the production tools required to operate sipxecs. We found that by bringing development and operations closer together, it is easily possible to productize the production environment. Instead of a one-off custom installation we ended up with a productized solution that can be launched into production by a SaaS provider in significantly less time than before and by re-using IT skills already available across the team. 5. Fulfilling the user s expectations We have seen entire offices with lots of desks but no phones on them. While a desk phone can be useful, it is not useful to design a communications system around the assumption that they stay around. Users want to communicate with whatever media is appropriate, dynamically changing, and using whatever device is closest. sipxecs is media agnostic; it is a system able to facilitate communication. Creating rich client applications for voice, video, Web conferencing, messaging and presence has become significantly easier and less costly with WebRTC. Creating video conferencing solutions has become a lot easier with new codecs switching from MCUs to lightweight stream switching relays. Users want to communicate and sipxecs allows just that. 6. Free run-time as the foundation for low cost SaaS economics are getting tighter and we wanted to provide the option of running on a completely free operating system and middleware environment. The 6
entire middleware stack required to produce sipxecs in the cloud is based on open source software. This incudes the database (MongoDB), configuration management (CFEngine), the reporting server (Jasper Reports), and all the other application components. Such a zero-cost environment represents the most optimal starting point to reduce cost and increase production margin. 7. Enabling a new business model: The App Store for the enterprise The opportunities to create App Stores for the enterprise are tremendous. SaaS providers (Managed Service Providers and Carriers) cannot compete against the software vendors and produce their individual applications either better or cheaper than they do. SaaS providers add value by aggregating several applications into a single service, optimized for a certain customer vertical, with an integrated user experience, and produced at lowest combined cost in a unified cloud production environment. sipxecs was built with a set of APIs and a standard production environment to enable this business model. 7
What next? Our passion is unabated and we see tremendous opportunity for further improvement of the UCCS architecture based on rapid advancements in modern cloud architecture, in particular the move from virtual machines to containers and the resulting operational benefits. Our goal is to package all components of sipxecs into Docker containers, rendering a system that can run everywhere. Why containers? 1. RUNS EVERYWHERE Offers the same predictable run-time environment going from developer s laptops, to test servers, to staging servers, and in production. Only dependent on kernel version, but OS independent and able to run in any environment. 2. FAST DEPLOYMENT FOR HOSTED SERVICES Facilitates DevOps integration with automated continuous integration that allows promoting individual patches to production in a responsible way. 3. UPGRADES CONSISTENTLY AND EASILY Containers are versioned and are started, shutdown and restarted fast and ondemand; upgrades can be rolled back instantly. 4. ALLOWS TO SERVE BOTH SMALL AND LARGE CUSTOMERS COST-EFFECTIVELY Allows partitioning of virtual machines into smaller and therefore cheaper units with the same resource isolation and security. Private cloud based multi-tenancy is now possible down to the smallest of SMBs; a personal private cloud offering. 5. OPTIMIZES RESOURCES AS IT SCALES TO LARGE Allows dynamic rebalancing of resources across a large compute infrastructure that runs many instances of sipxecs for different customers, thereby optimizing utilization of resources / harvesting of idle cycles. Many VMs turn into one big computer. 8
Instead of releasing two major releases a year, we want to be able to promote individual commits to production in a predictable, safe, and efficient process of continuous integration. Our goal is to move from virtual machines to containers. Additional items on our to-do-list 1. Our goal is to integrate additional services. sipxecs already represents a powerful platform to produce real-time applications as a service. Different applications are united to provide services such as voice, video, conferencing, different forms of messaging, and mobility. There are many more powerful applications available that can be produced in the sipxecs environment; some commercial some open source. Applications on the short list include Activity Streams and Enterprise Social Networking, Web / Video Conferencing, and document sharing. Our focus is shifting to creating the production environment to run real-time applications efficiently as a cloud service, and we will partner on the application side with commercial companies and other open source projects. 2. Our goal is to communications-enable everything. We are working on the complete separation of the front-end of sipxecs from the backend, creating the most comprehensive set of APIs that easily allows communications-enabling other apps. The value to end-users is obvious: To directly see other people s presence and initiate communications from within the application context they use every day to do their work. We want to enable our users to create custom front-ends for both the admin side and the user side of sipxecs using Web / mobile technologies. Communications-enabled everything is the goal where real-time communications capability is integrated into other applications. 3. User experience matters. Our goal is to develop a SIPfoundry client application leveraging Web and mobile technologies including WebRTC. It is now possible to easily re-use code across browsers and mobile devices. We are creating a meeting room application that offers instant meetings from any device and with any media that is easy to use. Whether you walk into a conference room and need 9
to share what is happening with others or initiate a meeting from your home office, it should be equally easy to do and render a high quality experience for every participant. Things of substance take time and require perseverance and a steady vision. I knew Telecom could be transformed. What I underestimated is the time it would take to do it. Martin J Steinmann, Ph.D., founder of SIPfoundry 10