About a year back, I started working on the Good HQ project, SCVO’s new charity social media site. This is no small task, and as an experimental project, it uses a number of pretty new technologies. As it doesn’t rely on the SCVO’s existing infrastructure, it needs its own database, its own servers, testing sites, web addresses, and basically everything a stand-alone platform requires, so there’s the question of how to achieve all this? For most of the time I’ve been the only developer on this project, for the last couple of months I’ve been ably assisted by Calum on the design and appearance of the site, but it would be a lot of work for one developer to set all of this up, it’d also cost a lot in terms of servers. This is where cloud services platforms like AWS and Azure come in.
Part of the initial mandate of this project was that we would try to think of the project as a start-up company would, and so the technologies chosen weren’t based on the current SCVO systems, but web research. Both Amazon’s AWS and Microsoft’s Azure platforms are commonly used for projects of this type. Azure is a popular choice for larger companies, but as Amazon’s AWS service is commonly used for start-ups, we made the decision to go with that.
The Old Way
In the old days, if you wanted to set up a web platform like GoodHQ, one of the things you’d need would be a Systems Administrator, a person whose job it would be to get hold of the servers, take the code written by the developer (me) and get it up and running on these servers, and keep a check of them to make sure they’re running correctly. If the business did well, we’d have to decide between getting a bigger server, or trying to run the application on multiple servers.
The New Way
Cloud services like Amazon AWS, do away with the need for a Systems Administrator for small projects like ours, and makes the job of a SysAdmin easier for more developed projects. To achieve this aim, it provides a mulitude of linked services which make setting up a platform like Good HQ much easier, by taking the work away from me. For this project alone we’ve used the following AWS services:
S3 this is like an online hard-drive, it means that I’ve got a secure place to store user profile images, videos or other large files which I don’t need to worry about back-ups for. Without S3 I’d need to make sure I had a server, and check that it had the space to handle all of this information. I’d also need to provide a second place, to make sure this information was backed up.
Elastic Beanstalk allows for simple deployment. This means that rather than having to take care of multiple servers, and write complex automation code to get my the application online, I can use simple commands to upload the code (a little setup, then just typing “eb deploy”), and then it’ll be sent to the AWS servers. Without Elastic Beanstalk I’d have to make sure I’d created my own servers, check they were working, and if traffic got heavy, buy another server, and then find a way to direct the traffic between the old server and the new. Elastic Beanstalk saves me a great deal of time, money and effort.
SES means I don’t have to worry about setting up my own email server, once again saves effort and money.
GrapheneDB is a third party service, which exists both on AWS and Azure. It provides us with a Neo4J database, and does the maintenance (backups, restarts, configuration for us). Without Graphene, I would have to set up and maintain our database on one of our servers.
These services together, constitute some of the many technologies which are making it much easier for small companies, or even sole developers to rapidly develop and get applications online. The upshot of this is that it’s far easier and cheaper to start projects like Good HQ than it has ever been in the past, and this is helping to drive the ever increasing number of new tech startups which we’ve seen over the last couple of years.