It takes many technologies to make a complex and reliable web application like PureCloud. Here is a summary of the important pieces and links to explore them more deeply.
AWS - Amazon Web Services
PureCloud is built on top of Amazon’s Cloud Web Services (AWS). We have been working closely with AWS since 2012 and have active discussions on security and scaling with Amazon product planners. We are frequent presenters at AWS conferences as an example of high-velocity, scalable, and secure development practices.
Traditional software was built in a monolithic package to take full advantage of the limited resources available on a single computer. With continued improvements in networking and virtual machine OS systems monolithic architectures still dominated, but some larger applications began to re-deploy using multiple tiers and separate distributed applications for specific data tasks. Higher level performance was still limited and, critically, a single point of failure could take down these multi-hop integrated applications.
Comparing these earlier architectures with the development of MapReduce data approaches, led by Google for their search system, it became clear that even complex tasks could be broken down into pools of much simpler stateless applications. This new software design is ideally suited to cloud processing, and came to be known as microservices architecture.
Elastic Load Balancing and Failure Recovery
Microservices systems require active load balancing to assign tasks to pools of services, growing and shrinking the pool with load changes. As the systems for monitoring and scaling microservices grew and became more powerful the industry started calling those systems Elastic Load Balancers, or ELB. Today ELB technology supports geographic and...
But even a massively parallel application approach like microservices architecture can fail and result in outages for customers. With the monitoring of Elastic Load Balancers and stateless microservices the problem shifted from a single point of failure to detecting when a process is not responding and reassigning the task with the same context - and doing that so quickly that a human does not know that anything went wrong. In a large and diverse system there are many things that could potentially go wrong, and it can be daunting to test all the possible failures.
In order to test complex failure scenarios large cloud services companies like Netflix started working the other side of the problem; building tools that randomly ‘knocked over processes’ all the time in development and production systems to ensure that they recovered gracefully. Tools like ‘Chaos Monkey’ force developers to resolve stateless recovery issues early and often, so by the time a new process or edit makes it into production the ability to recover has been thoroughly tested. Even the language of failure has been changed by this approach, as we now discuss microservices as ‘falling over’ instead of failing to differentiate between a full failure versus a failure with recovery.
PureCloud services are redundant:
- Much of our service tier is built as a stateless architecture — work can be done by any member of a cluster in the event of a single node failure.
- Our data tier makes use of both redundancy and replication strategies — loss of a data node doesn’t impact data availability or result in data loss.
AWS Availability Zones (AZs) consist of one or more discrete data centers, each with redundant power, networking and connectivity, housed in separate facilities.
- All PureCloud services are deployed into multiple AZs; this makes them tolerant in the event of a data center or even entire AZ failure.
- PureCloud uses Auto Scaling Groups (ASGs) for:
- Dynamically scaling our clusters in and out as demand changes
- Automatically detecting failures and launching replacement instances
- PureCloud uses Elastic Load Balancers (ELBs) to route internal and external traffic to healthy servers. Elastic load balancing detects unhealthy instances within its pool of Amazon EC2 instances and automatically reroutes traffic to healthy instances until the unhealthy instances have been restored. Instances that fail behind an ELB can be seamlessly replaced without affecting the ability to handle traffic in the interim.
- PureCloud uses Amazon Simple Queueing Service (SQS) and Apache Kafka, which are durable message queueing systems that support request queuing and point-to-multipoint notifications, respectively. Message queues allow us to both load-balance requests/events and handle bursty load without data loss.
- PureCloud uses Amazon Simple Storage Service (S3). S3 stores objects redundantly on multiple devices across multiple facilities in an Amazon S3 Region, delivering eleven 9’s of durability.
Data Secure Regions
PureCloud runs on AWS Regions to satisfy data security and privacy regulations for various nations. When an organization sets up their PureCloud account they should choose the region that matches the region to their incorporation headquarters. All requests for any of their people or systems are then made through AWS sites in that region, regardless of where those members may be working on the planet earth.
AWS Regions contain multiple operating Zones that PureCloud utilizes. Data and processes are distributed to multiple Zones to improve performance and reliability.
PureCloud is continually designing, upgrading, and testing security in an evolving world of attacks. We are actively working with multiple certification organizations, and with companies and services to improve our security through penetration tests...
PureCloud has a fully-secured Restful Public API with full online developer documentation.
Multi-Tenant Security and Continuous Deployment
PureCloud is committed to continuous deployment and automated testing to push changes into production every day. An important part of that strategy is maintaining a consistent production environment where all customers are running with the same settings and resources. Running multi-tenant cloud applications also improves scaling and reliability since periodic jobs with high loads are spread out among customers with different sizes and timetables, and elastic load balancing can run against much larger pools of microservices.
From the earliest designs in 2012 we have developed our services and communications architecture to enforce separation between data requests for different organizations. Our APIs and microservices will not respond to a request or return data with more than one organization in a call. OrgID and RequesterID are embedded into every secured request and validated by the services for each call.
Roles and Permissions
Permissions control what members of an organization can do in PureCloud. Permissions are grouped into containers called Roles that are usually assigned to many people. Each person can have multiple Roles assigned to them.
There are working default Roles with configured Permissions built into PureCloud. You can also create and assign Custom Roles as needed to match your business processes.
PureCloud has a dedicated microservices-based permissions service that consolidates all of the roles and permissions for each person into a compact object that is used by the PureCloud APIs to control access to features.
Many browsers meet these requirements:
PureCloud also has an installable desktop application with versions for the Macintosh and Windows:
To integrate PureCloud with your on-site phone systems usually requires a telephony appliance. The PureCloud Edge appliance provides flexible configurations that can connect to existing phone systems with SIP protocols.
PureCloud Edge uses a cloud-based admin tool that is fully integrated with PureCloud telephony rules for people, groups, and agent queues. In the event of a disconnect from web access, PureCloud Edge runs off the last update of configured rules so phone service remains uninterrupted. PureCloud Edge can connect directly to local PSTN services, or to cloud-based voice services.
Learn More about PureCloud Edge
Interactive Intelligence can provide cloud-based voice services through the PureCloud Voice service.
Learn More about PureCloud Voice
You have useful data in many places already so we have powerful data syncing for both Cloud-to-Cloud and Cloud-to-On-Premises data - with rules that you set up and control.
PureCloud provides multiple methods for integrating data:
- User Data - Synchronize data between your HR or IT systems and PureCloud user profiles. Populate profiles one time only, or keep profiles in sync with your data when updates occur. Control settings to sync updates from PureCloud back into other systems, including tie-breaking rules.
- CRM - Provide advanced call controls inside third-party customer relationship management (CRM) systems. Enable basic call log support, click-to-dial, callbacks, screen pop, email-to-case, and more.
- Data Dip - Pull data and make it available for use within a call flow. For example, when a call comes into an IVR, the caller’s information is pulled from an external system based on the phone number used for the call. The caller is then routed to the appropriate workgroup based on the caller’s account type.
- Object Routing - Automatically route objects from your CRM to the PureCloud ACD (Automated Call Distribution) engine. For example, if a customer emails Support, that email is routed to the appropriate queue based on workgroup skills or utilization.
- Screen Pop - Bring a customer’s information in your CRM to the forefront of a recipient’s screen. For example, after a caller enters identifying information into your IVR, the caller’s information in your CRM automatically appears on the agent’s screen.
Developer Information for Extending Integrations:
We use open source code in PureCloud to speed development and allow us to focus on the specialized code that makes our features work well for people and organizations. Open source tools used in PureCloud include:
- Apache Kafka - Events Messaging Queue
- Hadoop - MapReduce Database Work
- Elasticsearch - Faceted Search Aggregation
- Redis - Data Structure Store
- Apache Cassandra - Fault-tolerant Active Database
- Amazon DynamoDB - NoSQL Database
We fully support the open source communities. We share open source code back to the open source projects we use in PureCloud and we also post open source sample projects on GitHub to integrate with PureCloud APIs.