DevOps For Small Sites
Chances are, you are running a website that you use to generate leads, or possibly sell things online. You often find your web presence to be a hassle in one way or another. You are most likely running that website on WordPress. That WordPress site hasn’t been refreshed since you spent between $1500 and $10K to have it built. It is a mission critical part of your business, and having that site go down or fail to perform reflects badly on your company.
The above passage is a story that I see played out over and over again with clients I have worked with in the past.
There are 4 questions that I want you to ask yourself as you are reading this.
- How long does it take to make a change to my website from the time I engage my developer to the time said change goes live?
- How long has my site been down in the last year?
- Do I own my data?
- How well is my site actually performing?
What Is DevOps?
DevOps is a concatenation of the “Developer” and “Operations.” Put succinctly, the industry at large seeks to break down the walls of separation that once existed between developers (who write code) and operations (network administrators, the people that you call to fix your computer, and also the guys that “rack and stack” servers in the datacenter). Not long ago, the workflow for getting a website from concept to viewable by the end user looked something like this:
- Developer would write the code
- Developer would give that code to Operations (Or, a “Systems Administrator”)
- That Systems Administrator would be charged with getting that code deployed on a server
Seems like a simple workflow, right? It is deceptive. Don’t be fooled. There were many cases where developers would try to administer environments themselves, which was a disaster. There would be cases where code would go into production, something would break, reducing your developers and your IT guy to a finger pointing game. DevOps sought to change all that with a smattering of tools, automation, processes and standardization of the underlying environment so developers could develop web applications, but so they could administer their applications without the need for a systems administrator to get their code into production. This consolidation of roles has changed the tech community forever, and has lead to explosive growth potential, as well as accelerated time to market.
You might be thinking that DevOps is for bigger websites with massive budgets and an army of developers cranking code out on a daily basis. I would venture to say that you are wrong. DevOps is for everybody, even small sites.
Why Should I Care About DevOps For My Small Website?
DevOps will streamline your ability to deliver code from concept to production with greater efficiency. This can also equate to greater site reliability since all the moving pieces to your site are standardized for efficiency and best practices. Here are some stories to serve as examples whish I hope will provide some additional illustration of these otherwise difficult to grasp, otherwise abstract concepts.
Small Trinket Shop Wants An Online Store
A small business run by two sisters sells small trinketry online. They initially built their online store presence using a SaaS product like Shopify. They wanted to move their fulfilment, online ordering and overall control of their presence in house. They decided to do this because their SaaS shopping cart service charges high transactional fees. The sisters learned that they could self-host and use Stripe’s payment gateway which would save them a full 1%/transaction which would in turn increase their profits. They decided that it made business sense to take on the hosting responsibility.
The one sister knows a web developer that help them to move their operations away from the managed SaaS shopping cart to something they could host themselves.
The web developer that the one sister brought in knows WordPress and Woo Commerce. She was able to migrate the sisters' online store operations from the SaaS cart to Woo Commerce. It took 3 weeks of work to move everything, and there were some issues along the way, but the web developer got it done, and now they are live.
The revenue that the sisters were able to free up was enough that they could put more money into advertising. They launched an ad campaign on Google, but also bought some ads on Facebook, and picked up an influencer. The combined advertising efforts netted positive results, but exposed some issues with their new setup. The site would occasionally slow down to a noticeable extent because of traffic spikes on their cheap commodity web hosting provider. They also noticed that there were some technical SEO issues that were leading to a higher than average bounce rate.
The sisters paid the web developer friend to make the technical SEO adjustments, but those things required some tweaks to the theme they were using with their WordPress/Woo setup. The tweaks required the site to be backed up, put into maintenance mode and updated. The web developer friend makes these tweaks on the production site. Something happened with the update that caused a whole day of downtime. When the developer attempted to restore the backup, it failed because the backup file was corrupted in transit when she downloaded it to her laptop. This disaster cost the sisters a whole day of lost revenue.
The web developer friend was not familiar with DevOps, and was not testing changes locally before pushing those changes to production. In addition, the web developer friend was not using source control management (SCM) like GitHub or Bitbucket to track changes to the underlying code, so she had to go line by line in the theme to revert her changes to bring the store back online.
The sisters quietly began looking for a more experienced web developer that wouldn’t take the site down for a whole day when making changes or pushing updates. They found another developer through their network of friends in the ecommerce space. He joined them for a virtual coffee to talk about their online store. He described in detail how he works on websites. She talked about “Test Driven Development” and this thing called DevOps. The sisters inquired about what DevOps was, and she in turn explained the ins and outs of how DevOps works. The sisters were a little overwhelmed by terms like “Source Control” and “Continuous Integration/Continuous Deployment” and thought that these concepts were for large online retailers like Amazon, and not small family run businesses. The new potential web developer pointed the sisters to this article that you are reading right now to help explain why DevOps is important for operations of all sizes, especially small businesses that will eventually scale up.
The sisters decide to hire the new developer. The new developer captured the sisters' running configuration, grabbed a snapshot of her database, and created a GitHub account for the sisters, and added herself as a contributor to the repository. This process took a few days, all in. Once the new developer set up the development environment, she was able to take a list of issues that the sisters needed addressed and start working on them right away. The new developer is a very skilled PHP programmer, so she was able to get everything sorted out in a few days, testing her changes along the way. She committed her tweaks to GitHub and opened a “Pull Request.” The new developer invited the sisters to a video call and walked them through all the things that she changed, and gave the sisters a URL to test their changes. Once the sisters validated that the changes were to their specifications, the web developer merged the pull request into the main development branch in GitHub.
The sisters were still apprehensive about getting those changes into production, since the last trip to the server cost a day of lost revenue. The web developer suggested that they create a downtime window of 4 hours late on a Sunday night. She also supplied the sisters with a detailed checklist that she uses every time she executes a deployment, which included a very detailed “rollback” plan, which she tested herself on the development environment. The sisters were tickled by this because the previous web developer would just made the previous changes directly to the production site.
Deploy day came. The downtime window came up, the new developer went ahead and put the site into maintenance mode and deployed her changes using a CI/CD tool that would pull down the changes from GitHub and applied them to the production server. The developer took the site out of maintenance mode and made a test transaction. The test transaction succeeded. The total time to deploy the changes from setup to completion was 45 minutes, of which most of that time was validating that the changes made it to production and that the site would function correctly. She called the sisters to have them run test transactions for themselves. Both sisters placed successful transactions. They validated the developers work and were very pleased with the experience.
The sisters awarded the new developer with a retainer for 20 hours a month of small development work, patching and bugfixes.
The new developer is able to get changes into production faster, more efficiently, and most important, safely. This is accomplished because she implemented repeatable processes, testing and quality assurance at every step of the process. The previous developer, while eager and capable of doing development work, did not have any automation or quality control in her process.
Size Does Not Matter
Whether or not your business is a small family run trinket store, or a large enterprise SaaS application, you need process and procedure in your technology lifecycle or else you will kneecap your growth potential, and in many cases, customer satisfaction. Businesses that fumble with deploying changes in a timely manner lose money. There are no alternate truths for businesses of different sizes. Customer expectations in the marketplace of today demands rapid delivery, and frequent iteration. This is true no matter how big or small your online business is. Your customers don’t care, they just want their product or service, and they want it yesterday. DevOps is how you deliver on that.