I recently started this blog and was looking at various platforms for hosting a WordPress site. There are plenty of blog posts showing you how to get a WordPress blog up and running on AWS Lightsail. Even AWS shows you how to point-and-click your way through getting a Lightsail instance running with a preconfigured WordPress application. This is not one of those posts.
The more interesting question is should I use Lightsail for my blog? What are the pros and cons? Is Lightsail an appropriate hosting platform for my blog or other applications? Can I scale it up or scale it out? Why would I even use Lightsail, why not just spin up an EC2 instance? What other alternatives compare to Lightsail outside of AWS?
My goal is to address these questions and give readers a feel for why they would use Lightsail.
**DISCLAIMER** I do not work for AWS and therefore I am not a Lightsail expert. I am an end user with a few AWS certifications. My goal is to take what I have learned in AWS and share with others, not to be the single source of truth on these topics. I’m still working things out with this blog and I have comments disabled, hit me up on LinkedIn or Twitter with any feedback you may have.
What is AWS Lightsail?
Think of Lightsail as a dumbed-down version of AWS for bloggers and developers who don’t want to deal with the complexity of EC2 compute, EBS storage, and VPC networking. AWS components aren’t that difficult to use but there is definitely a learning curve to get started. Lightsail removes that learning curve by simplifying the management and cost to get you productive quickly. Simply said, Lightsail is cheap, quick, and easy.
The Lightsail “create instance” wizard lets you spin up a host in the AWS cloud in a matter of minutes without really knowing anything about AWS. Pick a region, select an operating system (Windows or Linux), select an optional open source application bundle or development stack (WordPress, Node.js, Nginx, etc), choose an instance pricing plan, and deploy. You can even bind your instance to a public facing static IP address and register your DNS name. Easy right?
Lightsail makes AWS cost budgeting and billing easy since you pay a fixed price per month if you stay within your plan boundaries. Lets face it – AWS billing is extremely complicated. Just to run a single small EC2 instance requires spreadsheets and calculators to find the monthly price and that is really just an estimate. If you stay within your Lightsail plan boundaries you can simply pay your fixed price per month and not worry about cost variations or unexpected charges. You can overrun your plan and pay more than the fixed price but if you are running small blog or development project you most likely won’t see a nasty AWS bill at the end of a month when using Lightsail.
Is Lightsail really that easy to use?
Spinning up a small instance in AWS isn’t that difficult but you really do need a foundation in AWS to fully understand what is going on. AWS has their own lingo and quirks when it comes to configuring compute, storage, networking, and security. Even just to get around in the AWS console you need a class or some type of primer in how the AWS ecosystem works.
Lightsail on the other hand is the easy button for creating and running an instance. What makes it so much easier? The Lightsail management console. This console is a completely separate management interface from the traditional AWS console with most of the AWS complexities hidden from the user. Choices and options in the interface are kept to a bare minimum to avoid overwhelming the end user with options and lingo. You can get around Lightsail without reading the manual.
We already talked about how easy it is to create a new instance with the “new instance” wizard. Your networking options are also simple, you can add/remove static IP addresses, you can create/delete DNS zone, and you can create/delete load balancers. And you don’t have to touch a VPC, Route 53, or EC2 to get any of this done.
Storage options are also simple. You automatically get an OS disk for your instance and the size will depend on the plan selected. For more capacity, you can create an additional disk for your instance with a fixed price per month and attach it to your OS without knowing anything about the many EC2 and EBS options available to you. And you can create snapshots (backups) of your instance with a few clicks in the Lightsail console.
Not only is it easy to create and manage instances but its just as easy to add optional canned applications and stacks when you first create your image. During deployment of your instance you can optionally chose to roll out WordPress or a LAMP stack during the initial creation of your OS. This avoids having to SSH/RDP into your OS and doing the manual installation yourself which can save you some time. You can only use this feature for your initial rollout of your instance, if you want to add packages to your OS later you will have to do so manually. Rolling out preconfigured software is similar to deploying a prebuilt AMIs on the AWS marketplace but is limited to a subset of open source choices available for Lightsail.
So Lightsail is a quick and easy way to get an instance running in AWS with a prebuilt application and/or development stack without much training in AWS. Lightsail takes all the headaches away to roll out an OS and application to get you productive in a few minutes time.
Lightsail has the same architecture of traditional AWS with most of the details hidden from the user. In fact Lightsail (to me) seems like an adjacent but logically separate stack of AWS hardware and software with a simplified management interface. Lightsail resources do not show up in your “normal” AWS console and the Lightsail console only shows Lightsail resources.
Lightsail is supported in a subset of the existing AWS regions (at this time) and seems to use all of the availability zones in those regions. The available regions are shown in the graphic below, if I look at US-East-2 I can see that all three US-East-2 availability zones are options which is the same as if I went to deploy an EC2 instance.
Public internet connectivity to your instance is done via a static public IP address attached to your instance. Your static IP address seems to reside in some special type of Lightsail VPC but it is hidden from you in the Lightsail console. However, you can peer this Lightsail VPC to your “real” VPCs in the main AWS console. Which is about the only interaction your Lightsail resources can have with your other AWS resources.
Storage is the same in Lightsail as it is with EC2/EBS. Root disks are create during instance creation and are EBS SSD volumes. Optional additional EBS SSD disks can be attached to an instance after creation for more storage. Snapshots in Lightsail are supported and can be used to deploy new instances in other Lightsail supported regions or in the same region.
Lightsail instances map to T2 instances with fixed block storage starting points. An entry level Lightsail instance is a t2.nano, the next step up is a t2.micro, then a t2.small, a t2.medium, and finally a t2.large. Each Lightsail T2 instance comes with a fixed amount of SSD block storage as the root disk but you can add-on additional disks afterwards without bumping up to the next T2 instance type.
My guess is that the Lightsail infrastructure (storage, servers, networking) resides in selected AWS regional datacenters (availability zones) and is kept both physically and logically separate from the main AWS hardware. AWS must have built a separate stripped down management interface to manage Lightsail infrastructure but they seem to use the same technology underneath for compute, networking, and storage. Lightsail seems like the same AWS technology that is limited to a certain set of AWS hardware and has an easier management interface and its own APIs.
You may be coming to the conclusion that Lightsail is for AWS newbies that don’t want to learn how to spin up a proper EC2 instance. Ease of use is definitely a factor when looking at Lightsail and the automatic app stack deployment makes pushing out a prebuilt app image even easier. Building an EC2 image while learning the AWS ecosystem can be frustrating if you have to go back and redo your work, Lightsail hides the details and lets you get working on your blog or code faster than trying to figure out how to build instances in AWS.
But the other compelling Lightsail value is the price. At the time of this writing, you can get a Linux VM running WordPress completely configured and running in a few minute for $5/month which includes 512MB RAM, 1 vCPU, 20GB SSD, and 1TB transfer (egress). This is the minimum bare bones plan, the largest instance you can run in Lightsail is 8GB RAM, 2 vCPUs, 80GB SSD, and 5TB transfer (out) for $80/month. Still a pretty good deal. The first month is free if you chose the $5/month plan which means you can spend a month testing the smallest instance to decide if you need something larger.
What if I pick a wimpy instance plan and want to scale-up? Scaling up simply means adding more and more resources to the same host, think of just bolting on more CPU/RAM/disk to make the existing instance beefier. You can always add more storage (disk) to an existing instance, you’ll just pay for the additional storage and don’t necessarily need to upgrade your plan. But to increase CPU, RAM, storage, and egress you can simply take a snapshot of your instance and then use the snapshot to launch a new larger instance with a beefier instance plan. All of which is really easy in the Lightsail console and can be done in a few minutes in the wizard without much effort. Of course you will pay more for the additional CPU/RAM/storage resources but its still fairly cheap and predictable when compared to building your own EC2 instance.
What is Lightsail good for?
AWS is going after individual bloggers and developers who don’t want to deal with the complexity of dealing with the full blown AWS console and ecosystem. Companies like DigitalOcean were doing well in this niche and Lightsail is a direct attack on DigialOcean business. AWS is now competing for small scale business, individuals or (very) small businesses who want a tiny dev/web footprint in the cloud for hobby site and dev/test.
All of which means to say Lightsail is good for small business sites, blogs, and development projects. If the specs for a single instance meet your requirements it is much easier and cheaper to use Lightsail at a predictable price than it is to use EC2. Once common complaint about EC2 is the hidden charges bewildering variable prices, Lightsail bundles up a very easy to deploy instance experience and charges you a nice fixed price per month with limited features that are very easy to use. So it is a great choice for small blog sites like this one.
What is Lightsail not good for?
I wouldn’t use Lightsail for production workloads that need enterprise or web-scale type features. You might love the ease of use and the price and decide to move some prod workloads to Lightsail – don’t. Why? You cannot follow the AWS guidelines for a well-architected application framework. Here are a few highlights so you don’t have to read the entire document.
A Lightsail instance is a single point of failure (SPOF)
No matter how you build a single Lightsail instance it is a SPOF. There is nothing magical about AWS, your instance lives on a physical server in an AWS datacenter (AZ) and your instance will go down if that server has problems. If your instance OS has a problem or your application crashes you will have downtime. All the same things that happen to servers, operating systems, and applications in your datacenter will happen in AWS. So its probably not a great idea to run (in production) a single monolithic app on a single instance in Lightsail if you expect any resiliency.
Yes you can implement a Lightsail load balancer in Lightsail and increase your resiliency within an AWS region but you will most likely be over-provisioning at that point. Do you want to run (and pay for) two Lightsail instances 24×7 so support your application? Public cloud and AWS give an incredible amount flexibility in designing a resilient application that goes above and beyond just two instances behind a load balancer. It doesn’t make much sense to do this in Lightsail unless you are doing a proof of concept or development and can afford to pay double for Lightsail.
Lightsail is not web-scale
Deploying apps in the cloud is all about agility and scale. You don’t get these with Lightsail, you need to architect for scale using EC2. Lightsail only scales up, you can bolt on more CPU/RAM/disk resources to your instance but you until you hit a point where you can’t add any more resources to the largest Lightsail instance. Lightsail doesn’t spin down or turn off when it is underutilized. Lightsail doesn’t spin up additional instances when certain metrics are hit (CPU, network traffic, etc). So really Lightsail is not intended to be web-scale, won’t scale up or scale down, and isn’t ideal for building a production cloud application.
One thing I haven’t explored is how to integrate Lightsail with the rest of the AWS ecosystem (RDS, DynamoDB, Lambda, etc) but I’d imagine it isn’t well integrated even if it is possible.
You can’t easily convert Lightsail to EC2
What happens if you love your Lightsail instance so much you want to deploy to production in EC2? Well, this isn’t really a use case and as far as I can tell at the time of this writing it isn’t really possible. Amazon keeps Lightsail intensionally separated from other AWS services and I haven’t seen an easy way to move Lightsail snapshots over to EC2. I’m sure there are some creative ways to do this that I would categorize as hacks, maybe AWS will implement this feature in the future. So don’t plan on using Lightsail as your test/dev environment since Lightsail snapshots currently aren’t very portable over to EC2.
**UPDATE November 30, 2018 – Hot off the press, you can do this now! Amazon announced support for creating EC2 instances from Lightsail snapshots, see this link**
I’m running this blog using an Lightsail instance with WordPress. I wanted a fixed price per month without worrying about my bill fluctuating every month. I wanted to get a blog up quickly without having to spend too much time getting all my AWS components configured correctly and then getting WordPress installed correctly. And I the Lightsail console ease of use was very attractive since I was already familiar with the complexity of the AWS ecosystem. Lastly, I don’t care about resiliency since this is just a hobby blog and I don’t expect lots of traffic and I’m not losing money if my site goes down temporarily.
Lightsail has met all of my expectations thus far, stay tuned for more posts!