Amazon Web Services
Looking for experts in Amazon Web Services? Blueberry has the skills to design your application.
Amazon Web Services (AWS) is a platform for cloud computing over the Web. AWS has a natural appeal for business projects, but has also been successfully used for applications in scientific and state contexts, some of which provide excellent demonstrations of what can be done in the cloud.
A noteworthy example of this is how Cycle Computing along with Hitachi Global Storage Technologies (HGST) built a record-breaking 70,000 core cluster computer in AWS (using spot instances), in an attempt to simulate intensive hard drive workload. The University of Chicago has also been using the Amazon Elastic Compute Cloud (EC2) service to develop systems for genomics analysis, which has helped the agile development and running of production web services for science.
We'll discuss the advantages to launching your core business systems on AWS below.
In our view Amazon has achieved and maintains a very strong vision for AWS. Unfortunately, this vision isn’t particularly well understood by the media, and Amazon is frequently misrepresented, particularly on the question of reliability and security.
Despite this there are some positive signs that the tide is starting to turn in terms of public perception, mainly because of some high profile successes launched using AWS, with organisations ranging in size and type, from Netflix and Expedia to high street retailers such as Marks and Spencer.
Amazon Web Services – A Platform for Delivering Redundancy
AWS offers a range of potential benefits in cost, scalability, flexibility and reliability. Let's look at each one in detail:
Cost is one of the primary attractions to Amazon Web Services. There are no upfront costs, and you only pay for what you use. Because the service has such huge amounts of computing resources to hand, it is able to allocate them as and when applications need them. You pay for what you use, and then when your application stops using resources, you stop paying for them.
This point is where traditional hosting platforms can't really compete with a cloud service such as Amazon, particularly where a business, small or large, is undergoing change. The ability to use immense computing power without having to lay out an investment means smaller businesses can grow quickly. If your service only incurs costs when it is making money, this removes barriers that may otherwise have been prohibitive.
The reason Amazon is able to offer this incredible value is simply the scale of the operation itself. Amazon has the resources to provide these services on a pay-as-you-go basis and will make money when the applications running on the platform make money, so they are able to pass the effect of this economy of scale onto their clients. It's a smart strategy, as they are creating an environment which makes innovation possible, and in those cases where it works, Amazon will naturally also reap the benefits – it's a win win situation for all.
All business services have ups and downs in demand, particularly where new ventures are being explored. AWS-based systems are far more scalable than traditional hosted solutions.
With non-cloud hosting packages, you typically have to pay for a set amount of storage, data transfer and other server utilities, whether or not these relate accurately to your operation. This off-the-shelf approach inevitably means that there are times when you're paying for more than you need.
It also means that if your service undergoes sudden growth, you're faced with the immediate problem of not having enough available resources. Some hosts are better than others, but the process of upgrading can be a troublesome, time-consuming one. And what happens if all you've experienced was an isolated spike? If your business then reverts to a slower pace of uptake you're back to paying for more than you need.
This is where the Amazon model offers real value, as systems can be scaled up or down on demand. Developers can engineer your systems to facilitate this scaling process in conjunction with Amazon's programming interfaces (APIs).
AWS allows developers to choose freely between the technologies available for delivering your systems.
You can build applications using multiple languages and frameworks, communicating with other services as necessary - letting you choose the right implementation tools for each of your services.
The fact that services are loosely coupled means that you can change approaches without significant maintenance issues in most cases. If your business undergoes major structural change, having your services deployed over the cloud puts you in a far better position to adapt.
Reliability is obviously one of the central goals of anyone using, creating or supplying a hosting service. Unfortunately, it’s actually very hard to achieve – in particular, it gets harder and harder to achieve the closer you try to get to 100% reliability.
Most traditional hosting companies quote reliabilities of 99.95%. Laypeople think this sounds good – but when you do the maths, it still leaves 5 hours downtime during a year – which is enough to create a headline when it happens to a major service, and enough to have a severe impact on a smaller one.
Amazon’s approach to this problem is slightly different. They do not promise that their cloud servers will be 100% reliable. In fact, they specifically state that they won’t be. What Amazon does is provide a set of tools which their customers can use to design reliable systems. For example:
- You can create Amazon cloud servers in multiple data centres and regions.
- There is a comprehensive tool (CloudWatch) which will monitor metrics and generate alerts when a server stops working.
- Using a tool called Elastic Load Balancer, your application can scale up and down as required, thereby potentially eliminating downtime caused by resource unavailability.
- AWS provides CloudFormation, which allows you to declare the minimum resources your application requires, and by how much it should potentially scale, after which AWS will automatically provision and set up these resources for you according to parameters you define, thereby reducing administration overhead.
- You can utilise AWS’ programming interface to automatically snapshot your volumes every n minutes, as required by your backup strategy.
- You can design your system to make it restart servers in case of a major fault.
- Use a dashboard (Trusted Advisor) to provision resources against best practice and have AWS advise you on good security practice.
What all of this means is that the system facilitates effective coping strategies for server failure, and allowing you to design models to prevent it from impairing your services.
AWS uses redundancy to deliver this improved level of reliability. Redundancy involves the system taking a copy of your server images so that your applications can continue functioning even if a server (or entire data centre) in the network goes down. The Amazon Web Services cloud is particularly well positioned to implement this practice on account of its unique features, which we'll look at next.
AWS Platform Features
Amazon provides two very compelling features – EBS and S3. Both of these relate to the ways in which data is modelled, stored and accessed for AWS applications.
Amazon Simple Storage Service (S3) is often compared to a cloakroom. When you put some data into S3 using a unique developer key, you get a ticket. When you want your data back, you present the ticket to collect it. S3 is designed to replicate your data onto multiple computers so that the chance of there being a problem finding it is vanishingly small.
S3 also brings the benefit of scalability to the data storage aspect of your applications, as you can save and retrieve any number of data items, with potential sizes ranging from a single byte to 5 terabytes.
You can access your data from anywhere on the Web, and can reduce latency by targeting specific regions.
Amazon Elastic Block Store (EBS) is a slightly different storage facility, which is used to store the data servers need while they are working. This is particularly relevant to applications involving databases and files.
The really clever trick is that Amazon allows developers to snapshot a whole server onto S3, from EBS. This one feature is critical in the delivery of reliable systems. Normal hosting companies often provide backup, but it tends to be more traditional and significantly more rigid than the S3 approach.
Another feature of AWS worth mentioning is CloudWatch. The AWS resource of course functions on the basis that developers do not have physical access to the hardware delivering your applications. For this to work, the interfaces for creating, managing and administering your systems have to be very powerful – and they are.
CloudWatch facilitates monitoring and metrics for AWS applications, often removing the need to develop dedicated systems for these tasks. The utility includes tools for performance measurement, allowing you to analyse and maximise on your use of the platform.
Using the platform's Auto Scaling function your systems can add and remove server instances dynamically, with this process informed by the metrics captured through CloudWatch.
Alongside this, Amazon’s relatively new feature ‘AWS Lambda’ looks to redefine how cloud computing is performed by operating as a “zero administration” tool for developers. Now allowing them to run code and have backend resources automatically provisioned in response to their events, reducing their amount of backend work, but more importantly allowing developers to create better applications with a reduced amount of programming. Developers can instead focus on writing application code, instead of worrying about the underlying system which hosts their code.
Issues With Amazon Web Services
Impressive as it is, AWS has not been without its issues, some of them widely reported in the press. In truth, many of these problems have been caused by external factors and poor design by users of the system, not the system itself, so in-house AWS issues now form a minority of cases.
Amazon had a number of system failures in 2015 - there was a big outage affecting the US East Coast data centre in September due to a DynamoDB event, and a security oversight that exposed the private healthcare records of over 1.5 million Americans, which was inadvertently made available through a contractor error, but could have been easily prevented with proper use of Amazon’s Identity and Access Management (IAM) service.
The reality is that other major companies are indeed affected by these issues – they just don’t get the media attention. The fact that some major sites failed doesn’t mean Amazon is badly designed – just that the people using it needed to make better use of the tools provided.
This is a key point about AWS. Concerns over reliability and security are some of the major myths that have been propagated within the media. The ability to design systems to cope with server failure and manage security processes are some of the major selling points of the platform, but because the tools are complicated and perhaps overwhelming, so many development teams have failed to make effective use of them, and the service itself has ended up being poorly represented by people, in turn, misinterpreting these failures.
AWS with Blueberry
If you have a web application which will need to scale up to meet high demand – we have the skills to design that application to exploit the unique features of Amazon Web Services.
If you have internal servers and are interested in making use of the Amazon platform, we can help with migration of your infrastructure to Amazon as well as configuring redundancy. Many companies are opting to do this at the moment, as it can be an effective strategy for change management with regard to IT systems.
We can manage your Amazon hosting services in a way that will let you gain the most benefit from the utility. Cloud hosting helps businesses to become more dynamic, not just coping with unpredictable events, but actively promoting an adaptive culture.
Helping to exemplify these skills further is our own software product for AWS – Cloud Machine Manager (CMM), a tool developed as a result of our own experience with virtual machines. We often saw dramatically increased EC2 server’s bills for Instances we used for testing but then were not properly switched off - in effect remaining active but unused!
Our solution was to develop CMM, a tool which offers users an easy way to switch-off their EC2 servers via their desktop or smartphone device in real-time, resulting in savings up to 90% in some cases.
You can demo CMM for yourself here.
AWS Case Study
Blueberry is currently working with a major localisation company who are shifting their server hosting onto the Cloud using AWS. This is a typical example of the way in which many organisations are looking to utilise the AWS platform at the moment. The company has traditionally used their own physical hardware so are looking to minimise the resources required for maintaining it. By moving to the Cloud, the company can focus development resources on their systems and ultimately on their business processes.
Blueberry has carried out migration of a multiuser database application to AWS as part of this project. The importance of transferring such systems to the Cloud reliably and securely of course cannot be overstated, so working knowledge of the AWS platform is vital.
We are also in the process of implementing the redundancy plan for this company, a key element in gaining the most benefit from AWS. By taking a snapshot of the system servers and restoring them to the US region, we can deliver full reliability even if server failure occurs.
Having also implemented AWS infrastructure systems for a variety of smaller companies, Blueberry is well placed for development in the Cloud. Give us a call if you'd like to discuss the potential of AWS for your business.
Test Drive Our Web App Software
We're a technical company and we build software for people just like you!