Hosting on Amazon Web Services (AWS)

A few weeks back I posted “So What’s the Business?” and briefly discussed hosting my site in the cloud as opposed to trying to build my own infrastructure, and I touched on the serverless option as well, but I didn’t go into depth at all. Now I’d like to do that a bit regarding hosting.

There are thousands of options for hosting a site in the cloud. Just do a web search on “web hosting” and there are thousands in the United States alone. There are the big companies, smaller ones, and probably even Trump’s 400-pound guy has a server available to host your site.

But seriously, there are a lot of options to choose from. I am going to be hosting my business on one of these options, so it is vital that it has these qualities:

  • Dependable
  • Reliable
  • Can handle large fluctuations in traffic
  • Excellent support available
  • Great documentation available
  • Good community of users
  • A good track record
  • Mature in its offerings
  • Ease of use
  • Affordable
  • Familiar
  • Has serverless capabilities

I’m sure there are more but this is what comes to mind right now. If I am going to have my business completely dependent upon another business to make sure it is always available and operating properly it had better be damn good.

This list, especially the last one regarding serverless, leads me to the big company options: AWS, Google Cloud or Azure. Having gone to the ServerlessConf I learned a lot about what is available.  AWS is the most mature, though the others are catching up. I got to work with AWS during my workshops at the conferences, I have worked with AWS at work and I have been studying it via LinuxAcademy for which my current job is providing an account for training. I feel comfortable with AWS and am impressed with it. Also it meets all of my criteria.

icon-cloud-aws

If you are interested to learn more, this is a good chart of the three with links to their various offerings (I got the table here).

Microsoft Azure Amazon Web Services (AWS) Google Compute
Available Regions Azure Regions AWS Global Infrastructure Google Compute Regions and Zones
Compute Services Virtual Machines (VMs) Elastic Compute Cloud (EC2) Compute Engine
App Hosting Cloud Services
Azure Websites and Apps
Azure Batch
Azure Scheduler
Logic Apps
Amazon Elastic Beanstalk Google App Engine
Serverless Computing Azure Functions AWS Lambda Google Cloud Functions
 ALM & Code Editor Azure Visual Studio Online AWS CodeDeploy None
Container Support Docker Virtual Machine Extension (how to) EC2 Container Service

Container Engine
Container Registry
Scaling Options Azure Autoscale (how to) Auto Scaling Autoscaler
Analytics/Hadoop Options HDInsight (Hadoop) Elastic MapReduce (EMR) Google Cloud Dataproc
Government Services Azure Government AWS GovCloud None
App/Desktop Services Azure RemoteApp Amazon WorkSpaces
Amazon AppStream
None
Object Storage Azure Storage (Blobs, Tables, Queues, Files) Amazon Simple Storage (S3) Cloud Storage
Block Storage Azure Blob Storage (how to) Amazon Elastic Block Storage (EBS) Persistent Disk
Hybrid Cloud Storage StorSimple AWS Storage Gateway None
Backup Options Azure Backup Amazon Glacier Google Cloud Storage
Disaster Recovery Planning Azure Site Recovery None None
Content Delivery Network (CDN ) Azure CDN Amazon CloudFront Cloud CDN
Database Options Azure SQL Database Amazon Relational Database Service (RDS)
Amazon Redshift
Cloud SQL
Cloud Spanner
NoSQL Database Options Azure DocumentDB Amazon Dynamo DB Cloud Bigtable
Cloud Datastore
Caching Azure Managed Cache (Redis Cache) Amazon Elastic Cache None
Data Orchestration Azure Data Factory AWS Data Pipeline BigQuery
Cloud Dataflow
Networking Options Azure Virtual Network Amazon VPC Cloud Virtual Network
Azure ExpressRoute AWS Direct Connect Cloud Interconnect
Azure Traffic Manager Amazon Route 53 Cloud DNS
Load Balancing Load Balancing for Azure (how to) Elastic Load Balancing Cloud Load Balancing
Administration & Security Azure Active Directory AWS Directory Service
AWS Identity and Access Management (IAM)
Cloud Identity & Access Management (IAM)
Multi-Factor Authentication Azure Multi-Factor Authentication AWS Multi-Factor Authentication Cloud Identity-Aware Proxy (IAP) (Beta)
Security Key Enforcement
Monitoring Azure Operational Insights Amazon CloudTrail Cloud Console
Azure Application Insights Amazon CloudWatch Stackdriver Monitoring
Stackdriver Logging
Queueing Azure Service Bus
Azure Event Hubs
Amazon Simple Queue Service (SQS) Cloud Pub/Sub
Notifications Azure Notification Hubs Amazon Simple Notification Service (SNS) None
Secure Credentials Azure Key Vault (Preview) AWS Key Management Service Cloud Key Management Service
Compliance Azure Trust Center AWS CloudHSM Google Cloud Platform Security
Management Services & Options Azure Resource Manager Amazon CloudFormation Cloud Deployment Manager
API Management Azure API Management Amazon API Gateway Cloud Endpoints
Automation Azure Automation AWS OpsWorks
AWS Config
Compute Engine Management with Puppet, Chef, Salt, and Ansible
Automated Image Builds with Jenkins, Packer, and Kubernetes
Search Service Azure Search Amazon CloudSearch None
Analytics Azure Stream Analytics Amazon Kinesis Cloud Dataflow
Cloud Dataprep (Beta)
Email Services None Amazon Simple Email Services (SES) None
Media Services Azure Media Services Amazon Elastic Transcoder Cloud Video Intelligence API
Machine Learning Azure Machine Learning (Preview) Amazon Machine Learning Cloud Machine Learning Engine
Workflow Azure BizTalk Services Amazon Simple Workflow (SWF) None

Free Tiers

All three of them have free options that allow you to do development and test without paying anything or at least very little. Here’s an article that compares the three free tiers.

I however am interested in AWS specifically and this is their free tier. Some last for just 12 months and some are always free.

Where I Am Now

So far I have been using AWS mostly through my own study. I am currently working through this book and will share what I learn in future posts. As I go through the book I am going to design my site so that once I get through the book I can start implementing it. I hope to have a basic version of the site complete by the end of August.

 

So What’s the Business?

So far I haven’t given much of an indication as to what the business is going to be. That is intentional as I plan to build up to that as I build the business. But I will give you some hints as to what my idea is and I will definitely detail how I plan to build it.

iStock_000069453941_Large

The business will initially be strictly online and something that anyone can find something to enjoy, learn from, and even profit from. It’ll also give you a way to give to your favorite charities or other non-profit organizations in a very creative way that will entice others to give as well.

Given the business will be online, I obviously have a website to build! Good thing I’ve been involved in that kind of work for quite a while now. But the tools I plan to use are very new, some are just being made available and not fully mature. Why would I risk a new business on untested technology?

As the name of this blog reveals, I am bootstrapping this new business. What exactly does that mean? I am not getting any outside funding, its all what I can put into it myself and what I can earn from it that will keep it going.

As a result, I need to keep expenses as minimal as possible. With a website there are definite costs, such as hosting, scaling, storage, support, etc. These costs can vary quite a bit, so how to minimize?

Hosting on Home Servers Option

I could do what used to be done, buy or build my own server and host it at home. I’d have total control over it but then I’d also be the sole support of it. Also what happens as the business grows (hopefully)? Do I buy more servers to allow it to scale, more storage as the needs grow? Where does that end?

Maybe this would be something I would want to do eventually when the business can afford to operate its own infrastructure with full support and personnel, but that is a long way off. There has to be something else.

Hosting on the Cloud Option

How about the cloud? This is a mature technology now and I have had multiple years of experience working in it. There is no equipment to buy or maintain, just pay for the virtual machines and services that you use. Someone else makes sure it is always up and running and is there to help when you need it, plus you can automate it to quickly scale as the load fluctuates. I wouldn’t want my website going down right when its getting busy or running at full capacity when no one is on it.

This sounds much better but there is a small problem. When you create virtual servers in the cloud to host your application, you pay for it 24 x 7, as long as it is running and you ALWAYS want it running. As your business grows you’ll need more servers, and that cost will increase. Is there any way to get these costs down?

The Serverless Option

severless

What is serverless? Does this mean hosting computers without a server? NO! It does not. You still have to have a server, hopefully multiples of them as your business is booming. What it means is that the details of the server are abstracted away from you. You no longer have to manage it, you don’t have to handle the scaling, you just have to use it (and of course monitor it).

And you only pay for exactly what you use!! If no one is visiting your site (hopefully that’ll never happen) then you don’t pay for it to be there. It’ll still be there when someone visits.

But to get the full benefit of this technology you have to design your site to take advantage of it. The old monolith apps of days gone by (well, today still) won’t give you any benefit. It’s all about microservices baby!

I’m going to delve into each of these topics over the coming weeks, and also talk about a couple of conferences I attended to learn about all of this: ServerlessConf and OSCON.

For now though I have to finish packing. I have to head to the airport in an hour! Have a wonderful Memorial Day weekend everyone!