Harder than you think it might be is having a grasshopper-fast web site. Here’s my research into what, exactly, “fast” means, and how to achieve it.
How Fast is Fast?
Here are some facts:
- IBM produced a paper distinguishing between >400ms and <400ms response time: http://daverupert.com/2015/06/doherty-threshold/ Computer response less than 400ms was “addicting”.
- This site recorded the median response time to stimulus is 266ms.
- Google’s PageRank algorithm says that page load speed is a factor in page ranking.
In short, faster is better, with no upper limit where benefits stop. My subjective experience is that there’s no instance I can generate for which improvement isn’t a benefit.
How Fast Is Your Site?
We’ve tested our sites with https://www.webpagetest.org/
What Are the Results?
All tested scenarios are with default WordPress install. The tested scenarios are:
- Dreamhost shared hosting with Dreamhost-provided MySQL
- AWS EC2 micro instance with local MySQL
- Dreamhost DreamCompute instance
I’ve had a nearly perfect experience using Postbox (https://www.postbox-inc.com/). The interface is slick, the license is per-user rather than per-machine, and it doesn’t bitch at me when I’ve deleted an email and immediately close the application. And it turns out that their support is excellent…
An employee has started using Microsoft Outlook 2016 for the Mac. At our company we haven’t been happy with the capabilities of using any other product for calendar invitations. It turns out, though, that shiny new Postbox coughs giant hairballs when trying to download and read invitation emails from Outlook 2016. It just simply fails to display the email or mark it as read. Postbox support gets kudos for their efforts on diagnosing the problem, but acknowledge I’m experiencing something wack. They’ve offered a refund.
I’ll be investigating other options forthwith…
Amazon AWS RDS costs:
||$0.017 per Hour, $12.24/month
Some common things you might want to be able to do:
Change the size of a the storage after configuring the instance
If I’m not wrong to assume that a book that’s primarily on Apache’s web servlet Tomcat project should have “Tomcat” in the title, this list of books and their publication years suggests that nobody’s writing new books or updating their old ones. By the way, I’m using Tomcat 8, for where there seem to be no books. Even Amazon.com has no English-language books with “Tomcat 8” as part of its title.
Beginning JSP, JSF and Tomcat: Java Web Development
Apache Tomcat 7 Essentials
Apache Tomcat 7
Tomcat 6 Developer’s Guide
Tomcat: The Definitive Guide, 2nd Edition
Professional Apache Tomcat 6
How Tomcat Works: A Guide to Developing Your Own Java Servlet Container
There are two ways to boot flavors of Linux on Mac hardware:
- Boot from an external device, such as a USB stick
Per answers like those provided at How-To Geek, the fundamental problem of booting non-Mac operating systems on Macs is the unique Apple EFI code.
My situation is complicated by having a 32-bit EFI on the original Mac Pro, which requires a hack even to boot a modern Mac OS X version.
Unfortunately, I’ve had little luck even on my recent Macbook Pro trying to boot from a USB drive. While Linux succeeds in the initial boot phase, it gets lost trying to start XWindows.
Supposedly, rEFInd is the relevant tool.
I really like Stackshare’s listing of technology stacks used by various companies from big to small, many of which we’ve heard of.
It’s not so much useful to take a large company’s usage of a technology as an endorsement. Amazon, for example, wrote their original web technology in PHP, and still has significant chunks left. According to an insider, PHP is “banned” for new functionality on the grounds that PHP can’t be adequately secured.
It is useful to see where new technologies have been adopted, and get some context on how other companies are evolving their technology. After all, there is something of a network effect for any technology or product: more users means more developers and support which means more users, etc.
I must say I’ve been happy with Amazon Web Services. I utilize accounts both for business and personal, and I’ve been very pleased with the progress of their development of additional services, including SQS, SES, and RDS. I’ve been aware of some of the holes in the stretched pizza dough, but like many consumers, there’s no reason to evaluate other options until things actually get painful.
To be clear, there have been points where the pain has come close to inspiring me at least to see what else is out there. Some examples come to mind:
- If you stop or reboot a running instance— which obviously stops your production instance— you’re required to confirm your intention. If you create a new machine image from a running instance— which in not-at-all-an-obvious way stops your instance— there’s no warning.
- If you use the Amazon Web Services console to manage your various tools, you’re shown only the obscure initials for the services— EC2, SES, S3. If you try to manage the administrative logs, you’re shown only the fully spelled out service names.
- Meeting all the recommended security points on their checklist requires that you turn off the default login. But if you already have a retail account connected with your AWS account— which is encouraged and can’t be separated— then you must use the default login.
The pain arrived today. According to AWS billing records, my otherwise innocent micro instance had been spending several days last month spewing obscene amounts of data for an unknown reason to an unknown destination, racking up a huge bill. While chances are this is something I might have been able to do something about, there’s little evidence immediately available to even corroborate that this data actually transferred. I haven’t submitted a ticket yet to Amazon to see if there’s anything they can do to, at a minimum, explain what happened.
In any case, this has inspired me to evaluate deploying my software on other platforms. It’s certainly advantageous to at least be very clear on the extent to which you’re committed to a vendor.
I’ve begun separating the actual requirements for the services I use from the niceties that AWS has been providing. To wit:
- SSH keys to access from any terminal and SFTP service
Niceties from AWS I’ll probably miss:
- EC2 (instance) roles
- AWS command line tools to talk to S3
Niceties from Google I might learn to appreciate:
- Save money on instances that stay up without having to pay for reserved instances
- Customizable instance sizes
- Automatic detailed monitoring stats
Here are some existing comparison articles that have been useful: