We are excited to announce that WebViewer Server is now available in the AWS Marketplace as a turn-key backend for viewing and annotating 30+ file formats inside web apps. Deploying from the AWS Marketplace lowers development costs and allows you to go-to-market faster by providing an optimized AWS-based document rendering backend right out-of-the-box.
It also offers built-in auto-scaling for a WebViewer solution that requires less resources, ensuring high availability during sudden activity spikes.
WebViewer Server in the AWS Marketplace is a pre-packaged machine image that builds the WebViewer Server Docker container, along with a CloudFormation Template for building the surrounding architecture. Through Amazon CloudFormation, you are able to construct an entire WebViewer Server infrastructure with just a few clicks. You need only point your WebViewer-based application to the deployed backend.
The system is largely based in the Elastic Container Service (ECS), and takes full advantage of its ability to maintain high availability of the system. By using ECS and our key performance metrics, we are able to dynamically spin up new containers when server load is high (with no downtime), and then dynamically scale back down when the load is no longer present. This provides higher availability at a lower total cost of ownership.
The AWS Load Balancer acts as a point of entry for all traffic to the backend. It monitors the health of all servers in the HAProxy cluster so it can redirect traffic to these internal balancers without issue.
The HAProxy cluster includes all containers used for internal load balancing. Traffic from the AWS Load Balancer comes here first, after which it is redirected to the appropriate WebViewer server based on the health of the servers in the cluster, and the user’s prior usage of the backend.
The WebViewer Server (PDF) cluster contains all containers for the WebViewer Server. Document rendering and processing occurs on these containers.
The Performance Monitoring Lambda and Service Discovery Lambda functions handle WebViewer Server discovery for the HAProxy cluster, decisions on auto-scaling, and system health.
These systems all work in tandem to offer your users a fast and seamless experience. The diagram below details how all these systems work together. You can read more about it in our documentation.
Performance metrics for tracking how long jobs take to execute on the server queues are executed through a series of staggered probes on each node, which are continuously monitored. When these metrics exceed an acceptable level, we call the Elastic Container Service and request a horizontal scale. Within moments, a new container is created and the load is relieved with no downtime.
The entire network is kept within a private VPC and only whitelisted servers are allowed to communicate. The only entry point is the front facing load balancer, which can support both HTTP and HTTPS.
All logs from the ECS containers are forwarded to a single log group, enabling easy collection and analysis. With a few tweaks, it's even possible to redirect all these logs to the log driver of your choice.
After subscribing to WebViewer Server in the AWS Marketplace, it takes only a few clicks to finish the build process. Once it's up and running, you just need to point your WebViewer based application at the public DNS address of the AWS load balancer. We have provided a guide on the setup process for WebViewer Server on AWS.
This can be done by modifying the pdftronServer option shown below to the proper address.
options.pdftronServer = 'http://localhost:8090/'; var myWebViewer = new PDFTron.WebViewer(options, viewerElement);
See It In Action