It takes a combination of technologies to build the next big thing.
We’re deep nerds at PureCloud and love this stuff – here’s a basic introduction to the cloud tech we use. We’ve tried to stick to the practical and important points, but sometimes we just can’t stop ourselves from gushing about our tech.
Of course we also have links to explore everything more deeply (if you have time).
AWS - Amazon Web Services
PureCloud is built on Amazon’s Cloud Web Services (AWS). Working closely with AWS since 2012 we’ve continuously evaluated Amazon’s tools against a variety of open source and 3rd-party cloud technologies to make sure we are using the most stable, reliable, and powerful platform tools available.
Object-oriented programming is a great tool, but if you are still building tightly-coupled compiled code to optimize computing resources it is difficult to scale beyond single servers.
Most software is 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.
Microservices do not have dependencies, so you can edit them without breaking other processes. When you need a new function you could add it to an existing service, or better, create a new microservice and add it to the network. Microservices are ideal for cloud deployment and scale excellently!
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 in developer-speak.
Running multi-tenant cloud applications 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.
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.
Things break – 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.
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 – by the time a new process or code change makes it into production the ability to recover has been thoroughly tested.
Layers of Redundant Redundancy
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.
PureCloud also uses AWS for site redundancy
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 Availability Zones; 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.
And we use 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.
WebRTC IP Phone and Video Chat Utilities
WebRTC is a defined standard for utilities that manage the connections and data for IP-based phone calls and video calls. WebRTC has been available as an installable plug-in for multiple operating systems, but has really taken hold over the past two years as updated browsers have been deployed with built-in WebRTC stacks.
PureCloud now uses WebRTC technology in our web client so users can receive and make phone calls (and video chats) through any computer and most tablets.
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 and other techniques.
Amazon AWS Compliance (external link)
PureCloud Resource Center – Security and Compliance
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. To ensure full testing we block organization-unique customized code. This does not mean that all customers have the same features and experience – through configurations the product can have very different behaviors, but product configurations are part of the base code and included in testing.
We 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.
PureCloud Resource Center – Multi-Tenant Security
Blog Post – Why you want a Multitenant System
Blog Post – Why Continuous Delivery Matters
Industry Insider – PureCloud Continuous Delivery Process
User 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.
PureCloud has a fully-secured Restful Public API with full online developer documentation.
We built PureCloud as a platform and we encourage partners and customers to build anything they can think of on top of our robust system – dream big!
Many browsers meet these requirements:
PureCloud Resource Center – Browser Requirements
PureCloud also has an installable desktop application with versions for the Macintosh and Windows – this installs a custom version of Chromium browser with limited browsing capability. It does include WebRTC:
PureCloud Resource Center – Desktop App
Following the theory that led us to a Public API, PureCloud also has a very extensible data architecture – It’s driven by organization-specific configuration and supports any data types we’ve ever needed. The configurations are in the API too, so you can build your own data model and apply our scalable search engines to your own feeds.
We know 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 and simple and powerful web-forms for common systems.
We provide multiple methods for integrating data:
PureCloud Resource Center – About Integrations
PureCloud Developer Center – Bridge Connectors
PureCloud Developer Center – Webhooks
PureCloud Developer Center – Data Dip
PureCloud Developer Center – Web Chat
We have a lot of experience with a variety of phone systems, from PBX to SIP, and frankly we hope that they all go away eventually. For a simpler approach you can use PureCloud Voice to connect to carriers directly and use WebRTC phones through browsers on your devices (and have no deskphones at all!).
Learn More about cloud-based phones through PureCloud Voice
Still, we know most organizations have existing phone systems. 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.
- Uses a cloud-based browser 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, it runs off the last update of configured rules so phone service remains uninterrupted
- Can connect directly to local PSTN services, or to cloud-based voice services
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.
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
PureCloud Developer Center – Open Source