Success. We all dream about it. And this guide is here to ensure your dreams don’t become a nightmare.
The nightmare in question? It was originally popularized as the Slashdot effect, now most notoriously known as the Reddit Hug of Death. From the Wikipedia page: “The Slashdot effect … occurs when a popular website links to a smaller website, causing a massive increase in traffic. This overloads the smaller site, causing it to slow down or even temporarily become unavailable.”
A massive increase in traffic. That’s the dream. That’s what we are all working to achieve! But imagine the very fruits of your labors shutting you down. For those who are unaware and unprepared, traffic is a double-edged sword to fear, indeed.
How Massive Influxes of Traffic Occur
To begin, let’s understand some various ways in which this situation takes place:
- Popular news sites linking to your website (as described above)
- A successful advertising campaign
- Successful SEO on very high traffic keywords
- Hackers launching a DDoS attack on your website
Interestingly, this guide is focused on how to defend your website against one specific type of DDoS attack as defined here: UDoS. An “unintentional denial of service” is exactly what a successful marketing or advertising campaign generates, and it’s exactly what you, as a marketer, are working to achieve. Well, that along with your ongoing efforts that grow your business bit by bit over a long period of time, of course, but c’mon — let’s be honest here. Who wouldn’t want a huge spike in traffic?
What Will Happen Next
Unfortunately, if the website owner is not prepared, the exact same thing happens every single time they receive such a huge spike in traffic: their site goes down. For a very large business, downtime can literally cost millions of dollars per minute! Of course, a huge business already has a dedicated team of IT staff to make sure it’s nearly impossible for the company’s website to go down, and they measure their downtime in seconds — sometimes fractions of a second — per year. This is the meaning behind phrases such as 99.9999% uptime and “High Availability”. (The more 9’s, the less fractions of a second of downtime per year.)
But when it comes to a website going down, the biggest losers are not huge businesses. No, the paltry millions they would lose over 3 minutes of downtime (and quickly recoup via price fluctuations and stock manipulations during the next 3 minutes) is nothing compared to the opportunity a small, struggling business would lose in the same situation. It’s the little guys who need their websites up and running during their first successful marketing campaign more than anyone.
Therefore I will lay out the best tools and services with which to build and host your website so that you, the mere mortal, will never again get blindsided by the massive backhand-slap of such an irony: that the very life-giving traffic you so desperately need gets instantly negated due to the force of its own gravity crushing your website.
Today’s best answer lies in cloud hosting. As opposed to traditional web hosting, in which your business’ website would be using resources available to you on a single dedicated web server (or even sharing the resources of a single web server with many other users, aka “shared hosting”), cloud hosting is where a vast number of servers — an ever-expanding grid of high performance supercomputer superservers all maintained by super highly paid, ultra-nerdy engineers and computer / data scientists — are all networked together to provide resources on demand, as needed, to any of the customers renting space on the system.
In a traditional hosting environment, the onus is on you to ensure you pay enough money for a strong enough web server for your needs. In a cloud hosting environment, the onus is on the cloud provider to ensure their holistic, interconnected system of servers is strong enough to meet the needs of all their customers, whether it be Coca Cola or “grandmas-cute-kittens.com”.
And when the cloud hosting provider in question is a mega-conglomerate ultra-corporation like Google or Amazon, you can rest assured that their infrastructure will not fail you, provided you know how to set it all up, hence this guide 😉
Elements of Cloud Hosting
Cloud hosting typically refers to the combination of distinct cloud services, namely:
- Cloud Servers
- Cloud Storage
- Cloud Computing
This guide will focus primarily on cloud servers and storage. Cloud computing is important for web applications, like Facebook (social networking), advanced web games, or large scale web data processing. If your business is providing such services, your team surely has the technical know-how to set up cloud hosting without this guide.
But if you’re a typical small business owner focused on digital marketing for e-commerce, eBooks, mailing lists, blogs, etc., then you may be the exact type of website owner who needs this guide, and you’ll primarily need to know about cloud hosting for servers and storage. This guide is for you.
Cloud Hosting Leader
No cloud hosting guide can be complete without a focus on the industry leader, Amazon Web Services (AWS). Upon a quick glance at the AWS website, it truly looks like a barrage of super high tech mumbo jumbo; one receives the impression that it is designed by ultra professional IT staff for ultra professional IT staff and has no place in a small business owner’s digital arsenal.
In this day and age, however, nothing could be further from the truth. The savvy ones will be using AWS to ensure they survive those delectable hugs of death.
And here’s a quick way for you to become one of the savvy.
I came across this great explanatory website a couple of years back and I’m happy to share a link to it now. And I’ll boil it down even further here. To get started with AWS you’ll need:
In other words, a cloud server (EC2) instead of a web server, and a cloud drive (S3) instead of a normal drive in a normal server. And optionally you may want:
If you plan to create effective marketing in multiple countries (or even states), CloudFront will help your website remain fast in every location. Think of it like having a copy of your cloud drive (S3) on servers all around the world. If you host an image, or a video, or a book, or anything for download on S3, CloudFront will automatically make those files download fast in those different places. Fortunately, Amazon has recently made it extremely easy to get started with all three, and we’ll walk through the process next.
The AWS Step By Step Guide
And now, ladies and gentlemen, the fastest step by step guide to getting your website running on AWS with its most basic services. This guide will assume you’re brand new to AWS and are creating a new account.
Step 1: Create an Account
Go to https://aws.amazon.com and click “Create an AWS Account.”
If you’re a new user, fill out the small form on the next page, and then another form on the following page designating whether you’re creating a personal or company account. On a 3rd page, enter your payment information. AWS will not bill you for anything as they offer one year of free services on the free tier. If you use AWS resources later, you may incur charges but they are very inexpensive (sometimes pennies) unless you get substantial web traffic.
Finally, you’ll reach a screen to provide a telephone number. The system will call (not text) you, and you must input the 4 digit PIN shown on the screen to validate that you are you.
Next, you’ll be presented a list of choices for telephone support. Go ahead and choose “Basic” (free) for now. Finally, click “Subscribe” at the bottom of the page.
You’re subscribed, and it will take a few minutes to activate your account. You are presented with a button to sign into the AWS console, which goes to this link: https://console.aws.amazon.com. You’ll have to actually enter your email and password you chose earlier to get in.
Step 2: In the Console
As of Summer 2017, the console should look like this:
Your next task will be to set up a basic static website. (Meaning an informational only website with no database functionality, like WordPress or shopping cart.)
Building a Static Website on AWS
Let’s get back to the AWS console using the quickstart link that was displayed earlier in the setup process: https://console.aws.amazon.com/quickstart-website/new
This is the easiest, simplest project you can start on AWS. It’s a simple, static website builder, meaning no database and no webserver (such as WordPress would require). As you can see in the image below, it uses only S3, CloudFront, and Route53. (Route53 is Amazon’s DNS service, which you can use to buy a domain name. This is far, far better than using the “industry leader”, GoDaddy. You’ll never be inundated with registration spam, countless upsells, or annoying pop-ups! Welcome to your new, non-insane Internet lifestyle 🙂
Furthermore, if you scroll down to the bottom of this page, you’ll notice the blurb: “Most websites cost less than $1 a month. Use the AWS Cost Calculator to estimate your website cost.” The calculator is a little bit in-depth, so let’s just take their word at the whole $1 a month prediction for now.
Scroll back up to the top of the page and just name your website “test,” leave “Example Website” highlighted, and then click “Create your website.” You can modify it later.
You’ll see a small progress indicator, and after a moment, voila! The example website is live and hosted! You can see my version of it here.
You’ll notice that there’s a separate progress bar indicating that the website files are being copied to CloudFront. As described above, this will ensure the website loads fast by using a network of distributed servers around the world that host copies of your website files. Once this progress bar is finished, you’ll get a unique CloudFront address that loads the same website as the link above. Here is mine.
Below, I’ll give you a run-down on how to connect your website (“my-website.com”) to this special CloudFront URL.
You’ll also notice a box that allows you to drag and drop a zip file of your website to modify it, but let’s set you up so that you can use your favorite FTP program to upload, download, delete, and modify your website files one at a time. First, you’ll need to go to your security credentials screen, which accesses by clicking on your account name on the upper right.
Next, click on the Access Keys section (see screenshot)
Next, click the “+” to open this section, then click the blue button “Create New Access Key.” (See screenshot)
Finally, you’ll see a window with your access key and secret key displayed in a yellow box. (See screenshot.) NOW, before you close anything, click “Download Key File”. You’ll get a file named “rootkey.csv” saved to your downloads folder, which just contains the access and secret key. Once you close the window, you’ll never be able to see your secret key again. Never share this information with anyone, except your most trusted IT people!
Now, let’s access our website on S3 using your favorite FTP client. My personal favorite is Transmit, by Panic Software. It is generally hailed as the best and most beautiful FTP client ever created, and I agree. A brand new version, Transmit 5, has been released, and I will quickly show you how to connect to S3 with this client. Other FTP programs will be very similar, and you can always search google for “how to connect to Amazon s3 with _insert FTP program name here_” if you have trouble.
Open Transmit 5 and click “Quick Connect” on the top. Choose S3 from the protocol drop down and you’ll see the screen below.
Fill in your Access ID and Secret Key. (Older FTP programs will just take this as username and password.) Finally, click “Add to Servers,” so that you save this connection as a bookmark. Then click “connect.” In Transmit and pretty much any FTP program, you’ll see a list of your files once you connect, as in the next screenshot.
Our test website is aptly named “aws-website-test-****.” Clicking on that shows our files in the next column. As you might know, “index.html” is the main website file that loads when you visit the example site.
Connecting your site to CloudFront
Go to the AWS CloudFront console here.
Click on the ID name of your distribution, as shown in the screenshot.
You’ll see the general settings of your CloudFront Distribution. Click the little “Edit” button on the top left, as in the screenshot.
Next, define your alternate domain name, as shown in the screenshot. I chose “awstest.plu.sx.” It’s possible to set this to *.your-domain.com, beginning with asterisk dot, or perhaps “www.”, so that your entire website is hosted by CloudFront, not only a specific subdomain. Scroll down to the bottom and click the blue button to save changes.
Finally, you’ll be back at the main distributions list, but you’ll notice your subdomain is listed under the CNAMES column! (See screenshot.)
The final step is to create your CNAME in your DNS control panel. Where this is, depends on where you purchased your domain name “my-website.com.” You can do this right in AWS with Amazon Route53. If you already bought your domain with GoDaddy for example, they will have their own DNS control panel. But basically, you’ll just need to add a CNAME entry as follows:
This is how the setup looks in Cloudflare, an awesome DNS service. Most services will be very similar. First, edit your DNS Zone (basically the settings for your domain name), add a CNAME record that matches what you put in for AWS CloudFront in the settings above, paste in your CloudFront URL as the value of the CNAME, and then save.
And voila! My new link, http://awstest.plu.sx, is live!
And because this website is hosted on Amazon AWS, it would be virtually immune to the Reddit Hug of Death. If here I published the next famous animated GIF or a brilliant manifesto, and 100,000 users bombarded my website, they would all be able to see it. The only caveat is that my bill with Amazon might be a little higher for that time period.
There are a significant number of AWS alternatives out there. Here are the top large scale providers that truly compete with Amazon:
- Probably the top competitor to AWS. I mean, c’mon. It’s Google!
- Microsoft was behind Amazon by 4 years to this industry but has a solid offering now as well.
- The third large competitor, IBM is now going for super high performance to beat the rest with Bluemix.
- These services are geared more to application developers. Mobile app developers love to build on top of these guys.
- These services have the ability to manage multiple cloud platforms.
And finally, Cloudorado offers a nice comparison matrix of a lot more cloud services.
Stress Testing: Does Your Cloud Withstand It?
Stress testing (or load testing) is the simulation of DoS (denial of service) on your website. If you are serious about digital marketing success, you’ll set up your website in the cloud. If you are beyond serious, you’ll go the extra length to test your site against high levels of stress before you actually succeed in driving massive traffic to your site, and then you can rest easy knowing you did all you possibly could to be prepared for the HUG OF DEATH!
I’ve researched several load testing options and the best (and most simple) are:
LoadImpact is a hosted service, meaning you sign up for their service and the testing runs from their servers. It is quite expensive, however, to do a test with thousands of users.
The Paessler Webserver Stress Tool, however, is free. You run it off your personal computer. And if you have access to a super high-speed internet service, you can run a pretty powerful stress test on your own. From their site:
How much load can webserver stress tool generate?
We have successfully tested Webserver Stress Tool 8 with
- More than 500 Mbit/s network load
- More than 1,000,000 pageviews per hour and
- Up to 10,000 simultaneous users
If you can manage to get this stress tool to hit 1M pageviews and 10K users, you’ll be insured against all but the most tremendously huge traffic from the most successful marketing campaigns possible.
If you’re serious about doing business online and achieving success with Internet Marketing, then you must be prepared (and excited) for the possibility of a UDoS (unintentional denial of service), and if you don’t have your web hosting setup on a powerful, robust system such as a cloud hosting platform, then you’re actually not serious at all. The leader in cloud hosting is Amazon Web Services (AWS), and it’s very easy to set up your website on it if you just push through the initial technical hurdle.
If you’re not able to recruit at least one IT person to do this for you, you must learn to do it yourself. It’s not that difficult, and especially (I hope) not with this guide! There are several other cloud hosting options I’ve laid out as well in case AWS isn’t the best choice for you.
If you need personal consultation on this matter please don’t hesitate to contact firstname.lastname@example.org.
I wish you all the best in advancing your business’ technical baseline!
About the Author: Carlos Augusto, formerly a pioneer developer for some of the original companies that sculpted the web including Boingo, MySpace, Napster, and DIRECTV, I now apply myself to helping people maximize the impact of their marketing online. I seek to extract passion and creativity from everything I write, everything I produce. More at carlosaugusto.net