Pomatio is hosted on a customised AWS (Amazon Web Services) auto-scaled infrastructure.
Our applications have moved from being a traditional LAMP stack to a highly scalable and decoupled architecture, using message queuing and using the best of AWS technologies, which continue to improve.
Here we tell you the most techie details.
Users visit your website and see your content in the blink of an eye. And between one click and another they will not have to wait but an instant!
They arrive at the CDN (Content Delivery Network) of AWS CloudFront, which is basically a series of servers located in different parts of the planet that contain all the contents of your website (texts, videos, images, music, documents, etc.), so that the contents of your website are served to users in a much faster way and closer to their location (e.g. if someone visits your website from Chile, the information will be downloaded from a nearby server).
A load balancer decides which server to ask for your website information, and therefore distributes user requests, based on their geographical location, and also on the load that each server has at that time.
All the Pomatio code is replicated in multiple instances (servers) and, as necessary, through an autoscaled configuration with redundant web fronts, new instances are created or eliminated automatically.
What does this mean? That your website, regardless of the traffic it has, will always be ready and will work at full speed, since these fronts managed by an autoscaler ensure continuous performance and offer automated response to dropped instances and demand peaks.
NFS (Network File System) unit for storage / propagation of application and user files (files that you upload to the media of your website) to the web fronts.
In other words, all files are stored on a separate and optimized system.
Database server with Amazon Aurora (RDS) , which allows all the data on your website (such as texts, orders, users, etc.) can be used and scaled in the cloud. The service provides capacity in a scalable manner while automating tasks such as hardware provisioning, database configuration, patching, and backups, and gives them fast performance, high availability, and security.
Elasticache Redis is an incredibly fast in-memory data warehouse system that offers less than a millisecond latency for real-time applications.
The “cron events” are those tasks that your website executes in the background, such as sending a notification email (through Amazon SES or Simple Email Service), renewing a subscription, publishing a post that you had scheduled, synchronizing your sitemap.xml with Google Search Console…
These are processed by a system called Cavalcade, which is a scalable job queue system and has a runner, which is a service that constantly monitors in real time the jobs it has to execute.
The runner constantly checks the database for new jobs, and is responsible for generating, managing, and processing jobs when it is their turn.
All this is done in instances independent of those in charge of processing the web, also in an autoscaled way, but completely separate, guaranteeing that everything that must happen in the background happens, and when it should happen.
All of our code repositories are on AWS CodeCommit, which is a highly scalable, managed, and secure code control service for hosting private Git (code version control system) repositories.
CodeDeploy automates the software updates that we launch in Pomatio in all the instances of the different servers that we have around the world, and facilitates the rapid launch of new features, and allows us to avoid downtime during the implementation of an update.
CodePipeline is a continuous delivery service that allows us to automate, together with the previous point, fast and reliable updates, automating the compilation, testing and implementation phases of the release process each time a code change is made.
We have a staging environment (pre-production) in an infrastructure with an independent web front and database.
In essence, all code goes through this staging environment, it is tested, we guarantee that it works as it should, and then goes up to production.
Daily backups are made to the database using snapshots. Snapshots are retained for the last 30 days.
In the NFS instance (files that you upload to the media of your website such as images, PDFs…) daily backups are made through snapshots. Snapshots are retained for the last 10 days, and are taken at 4:30 UTC time.