We’re often asked questions about our development, infrastructure and so on. In this post I’ll take you on a brief tour of our setup and what providers and products we use.
At Snapt we try to use leading tech and open source powered solutions wherever possible, as you know we are believers in the technology!
Our hosting requirements are relatively simple and broken down into three portions. The first is the the most basic, our website. We use a WordPress powered system with some custom plugins (and some public ones) and a custom theme. We host the website on our EC2 infrastucture which I’ll discuss a bit more later, and use the CloudFlare CDN to deliver it to users. O
The second is our client site. This is all developed in-house by the Snapt team and hosted at EC2 as well. This is a direct connection to our servers due to our requirements for security and privacy of our users. The payment gateway used on the client site is PayPal, which was primarily chosen for clients peace of mind.
The third and final portion is our update and license sites. These run at EC2 as well, and are offloaded using CloudFlare like the website (in certain cases). The license site is relatively simple – it’s an API to our client site which verifies licenses, allows downloads and so on. The “update” servers actually distribute all our plugins and updates as well as our initial downloads (like large VM Images and so on). The bandwidth requirements of these servers is high, and the redundancy requirement for the license server is high.
So what is our EC2 setup like? We have a Snapt load balancer sitting at the front accepting connections (of course). This directs traffic intelligently in the cloud to our various groups of servers and monitors their performance and uptime for us. We’re pretty avid users of Snapt 😉
Behind the load balancer are 3 types of servers:
- Web servers – these are either lighttpd or nginx webservers running fastcgi PHP for delivery of our content. All our websites are written in PHP.
- Database servers – these have two primary functions, the first is to act as an SQL database for the website and client site and the second is a Redis key/value store for the webservers to keep sessions on. This means that in the event of a server failure a client does not have to re-authenticate.
- NFS servers – we store our websites and products (plugins, images, etc) on NFS servers inside EC2 which the webservers communicate with.
For our development requirements we are users of Github. The git VCS is fantastic for working in groups on various plugins and feature sets (as we do) and github allows us to offload the task of managing the VCS while allowing it to be accessed from any of our developers, anywhere.
Our servers are split between running FreeBSD and Linux. We generally favour FreeBSD for networking operations or servers and Linux for development.
We’re always happy to chat, feel free to contact us if you have any questions – especially about our EC2 Snapt deployment!