In the 5th and penultimate blog in our Designing for The Cloud series, we take a look at the challenges faced when designing for scale.
Consider this dichotomy:
- In order to make software components deliver at scale, the information dependencies between them must be minimised or nothing would happen in timely fashion
- But this then limits the ability of a platform to solve complex problems of resource allocation, such as load-balancing across ACD queues for service level adherence and blending.
Solving this problem is the holy grail of cloud contact center design.
Most people reading this statement will think ‘that is obviously a programmer writing this blog’ and ‘I don’t want to know. It’s your job to solve these problems!’ You’d be right on both counts. You’ll forgive me for writing a longer blog on this subject, but there is a story to tell that will resonate for those brave souls who deploy cloud solutions for their contact center business.
The reason why the dichotomy is important has to do with the approach that software development teams take to architecting their software. Much of the software we see in the market use designs that follow microservices patterns, providing infinite scale (in theory).
Following microservices patterns
If you write an ACD following microservice patterns, you end up producing ‘actors’ to model the activity of queues, agents, media sessions. These actors are self-contained and persist state, so they can be disposed of when not in use and reinstated at will. This model allows the ACD to be deployed in distributed fashion and because all of the components are small, self-contained and able to be reinstated on failure or the need to add server resources. Such an ACD has linear and potentially infinite scale and is inherently reliable.
What’s not to love about this? If you work with an ACD offer from one of the more recent entrants to the cloud ACD market they will likely have this sort of architecture. They are generally easy to get to grips with, have clean APIs, lots of add-on functionality that your business could use. But…
The problem of scale
A big clue as to why all may not be well in paradise is when you try to take such a platform and then use it to manage lots of queues, sessions across multiple channels and having agents handle multiple media sessions.
You will have to do this sort of resource management. The business wants:
- multiple live sessions at once
- bots to do some of the work
- 100% utilisation of human resource
- possibly integrating with some form of WFM for real-time adherence
You’ll find that the nice simple model your vendor offers you doesn’t automatically manage resource conflicts (agent has skills for multiple queues) or load-balance queues to SLA, but they do provide you with all the APIs you need to do this yourself.
It isn’t that difficult to do, so you roll up your sleeves and get on with writing some code. It works in test and you then deploy…
And here is where you run into what grey-haired ACD programmers call ‘the busy lamp bug’. On old PBXs, a receptionist console would have a busy lamp display. A company with 50 people might have one receptionist with a console with 50 lights. When the company doubles in size you might need 2 receptionists to manage the phone load, and each receptionist needs a console with 100 lights. Double the size of the system, quadruple the amount of work the PBX has to do to set all those lamps.
The same thing happens when you try to do ACD resource management for many queues/channels/sessions-per-agent via an API. The exponential increase in load means the promise of linear scaling is in fact a fairy tale.
If you stick with your cloud provider, you’ll be nickel-and-dimed for all those API call costs; remember they’re not for free. And with increasing call/media session volumes there will come a time where your service provider chokes on the exponential increase in API calls, leading to denial of service. That gets both the CFO and the COO upset.
Suddenly the old-school ACD that got mothballed because it couldn’t do multisession and was a pain to integrate with the rest of your systems doesn’t look so bad, but clearly you can’t go backwards.
The Sytel solution
So how does Sytel solve this problem?
The first thing to say is that as good cloud citizens we decompose services and follow a microservice model in our design.
Even our ACD (ASD®) engine follows an actor model, which provides separation of concerns and maintainability, but crucially we run all of this in a single process for each tenant, which means that state does not have to be cached. We also have our own automated load-balancing, again separated out for maintainability but run in-process alongside the ASD machinery.
We do some other clever stuff with just-in-time compiled rule processing to allow business-specific rules to run at native code speeds.
Examples of such rules might be
- using an agent’s average time to respond to chats to determine how many concurrent chats sessions they should handle, or
- setting house policy on whether or not users can be presented with email or chat when they are active on a voice or video session.
Our design imposes per-tenant limits but those limits are huge by comparison with the real-world limits that API load places on cloud ACD solutions that don’t provide automatic resource management and load-balancing. One of our end-user customers is in the process of deploying and ramping up a 7000-seat tenant as part of a multitenant system. We load-test to 10,000 agents / 30,000 sessions per tenant.
How we’ve come to this design is also important. It didn’t happen by accident and it didn’t happen overnight. We take the Kaizen approach to ACD development which means we focus on standardisation, maintainability and extensibility. Peer review and diversity of skills are important; our core team is made up of math and stats gurus, games programmers, compiler authors, realtime software specialists.
And we never stop learning – a key philosophy for developers at Sytel. We use lessons and techniques developed over 25 years of continuous improvement. And that equips us to climb mountains.
What We Offer
Sytel Limited develops and supplies Softdial Contact Center® (SCC) – multimedia, multichannel, fully blended cloud contact center solutions.
Available by subscription as CCaaS, fully managed and supported by Sytel, or for quick and easy deployment by partners and enterprise users.
All Sytel cloud components are secure, resilient and scale seamlessly from 10 agents to 10,000+, whether local, mobile or remote.
Flexible Contact Center Software
Softdial Contact Center™ – rich functionality, all-in-one, designed to deliver at scale
Contact Center as a Service (CCaaS)
CCaaS for subscribers – global service, with no upfront costs
Contact Center Platform – CCaaS Partners
Build your own CCaaS business using the power and flexibility of Sytel software
Contact Center Platform – Enterprise
High performance platform to drive contact center productivity – cloud, on-premise or hybrid
Blended Media Desktop
Fully customisable, multi-channel, multi-session workspace
Browser-based tools, no software installation required
Customise, Localise, White Label
Design all user interfaces to individual requirements
Integration via APIs
‘Swap out’ components and integrate with 3rd party apps
World Class Development
Continuous evolution pushing technical boundaries
Softdial Contact Center™ (SCC) is designed to be flexible, extensible and scalable, integrating with any legacy equipment, and meeting the most complex of requirements.
All Media Channels
Voice, chat, email, social, etc – fully integrated and blended
Work with multiple live contact sessions of any media channel
Dynamic Workforce Management
Optimise agent usage and balance workloads in real-time without human intervention, across all media channels
Best-of-breed performance under compliance
Optimised Inbound Routing
Smart rules and ‘best-available’ decisions to drive great customer service
Help agents achieve and maintain excellence
Voice and Screen Recording
See and hear exactly how agents are interacting
Analytics and Data Feeds
Measure and evaluate performance at every level
IVR, Bots & Conversational AI
Design effective automated flows or integrate with 3rd party providers
Customer Journey Tracking
Stored customer contact history, to aid routing and add context to conversations
Drive operational efficiency, increase customer satisfaction & improve agent performance
Highly flexible unified web UI for agents, supervisors and administrators
Create complex process flow scripts for agents, IVR, chatbots and other applications
Sytel AI Dialer™
Maximum predictive dialing performance, under any compliance rules
Precise routing rules for ‘best available’ connection
Softdial Media Server™
Core telephony functions to manage all inbound/outbound SIP calls
Softdial Reporter™ 5
Fully customisable performance stats, charts and reports, across all channels
Comprehensive data output to build your own reports
Softdial Recording Monitor™
Audio and screen recording of agent activity to ensure the highest standards
Softdial Campaign Manager™
Automation to optimise any outreach strategy
Central storage and configuration of common resources
Sytel Global Compliance™
Flexible ‘no contact’ rules to protect contact center and consumer
Performance and efficiency for a wide range of business applications
By Business Type
A full featured contact center software solution, designed for optimum performance at scale
Small/ Medium Business
Options for SMBs to subscribe to our full-featured cloud service managed and hosted by either one of our partners or by Sytel themselves
Connect quickly to well equipped agents
Best-of-breed predictive dialing with CATI integration
Automated inbound/ outbound blending integrated with any debt management app
Sales & Telemarketing
Maximise agent productivity with best-of-breed predictive dialing
Secure, highly-configurable multichannel communications for excellence in patient care