Implementing DevOps For Web Design Agencies
One of my biggest watershed moments in my career as a DevOps practitioner was implementing DevOps at the agency level. This article seeks to outline what designers, developers and agencies must consider when taking the plunge to implement DevOps for their digital transformations.
Implementing DevOps In Your Web Design Agency
Over the 21+ years that I have been working in technology at large, I have been doing DevOps since before it had a name. One of my biggest watershed moments in my career as a DevOps practitioner was implementing DevOps at the agency level. There are a lot of problems that one needs to solve that nobody tells you about when it comes to employing DevOps as a web design agency. Most of the tutorials that you will read, the whitepapers and YouTube videos will all have you believe that it is a simple task to switch your design agency to a DevOps centered development model. I have found that the low effort content around this idea shows a fundamental misunderstanding of how DevOps actually works. I am going to take you through my journey, and help you, dear reader, save countless months of frustrating failures.
Who Should Read This?
My intended audiences for this article are:
- Small independent web designers or developers developing for clients small to large.
- Medium sized agencies with 5 or more developers who develop for clients from small to large.
- Large agencies that employ a global workforce for the purpose of web development for clients large and small.
The nice thing about DevOps is that when it is employed correctly, it scales to N-size, so whether you are dealing with small projects, like an online menu for a local restaurant, or an online storefront that does three million dollars a year in sales, the underlying principles are the same.
This article assumes that you have some fundamental understanding of DevOps. If you don’t, I have a few articles that I have written that should help you to get up to speed:
Helpful articles I have written about DevOps:
- Why is DevOps Important? - This goes over why DevOps is important for developers in general terms.
- How To Learn DevOps - This article I wrote has some places where you can learn some of the technical foundations of DevOps.
- What Is A DevOps Engineer - More likely than not, if you are reading this article and you are not familiar with DevOps, you might hire out for a DevOps specialist. This article will help you identify what to look for in a DevOps engineer.
- DevOps For Small Sites - This is an article that focuses on DevOps for smaller projects. A good resource regardless of where you are in your DevOps journey.
I hear all too often that small agencies do not benefit from implementing DevOps. That could not be more false. The whole idea of starting a business is to scale it and make money. In the web design and development game, the deciding factor of scaling your business is how quickly and reliably you can roll out changes for your clients.
How Best To Employ DevOps At Your Agency
Adopting DevOps is a huge cultural change, so it is best to undertake this transformation when you are running a smaller team. Smaller teams are more adaptable. Larger operations require a lot more training and tooling, so this is the best time in your agency’s evolution to adopt modernized DevOps practices.
Basic DevOps Implementation Road Map:
You will want to execute this is stages, trying to do everything at once will break your team, which I touch on farther down in this section.
This should take about 1-2 weeks. This is tedious and can be mind numbing if you don’t like doing this kind of work yourself.
- Ensure that everything is in source control like GitHub. This is your “single source of truth.”
- Take everything that you do for your clients and write out step by step lists for how you handle all the tasks ranging from updates to daily operations. Each client is different so each run sheet will be different.
- Once all your run sheets are written out, look for places where you can standardize so they are repeatable and familiar across your entire customer base. Mark these places down because you will be reviewing them in the next stage.
- Document the hosting configurations that you are using for your clients.
This should take about 2 weeks depending on how many customers you have. This is the most heady portion of the implementation phase because you really have to go through everything and read between the lines in all the documentation you produced in stage 1.
- Once process has been standardized across the board, look for opportunities to automate the tasks you just standardized. This is best to do this once everything has been written out into run sheets. Trying to skip straight to automation often leads to disastrous consequences and burnout.
- Revisit your client hosting configurations, look for places where you can standardize the hosting environment. This is where you consider things like moving everyone to a different hosting configuration. If you have a lot of clients on shared hosting, or “commodity web hosting” - this is where you might want to consider moving customers to a managed hosting provider, or where you might want to take advantage of something like AWS or Digital Ocean, where you can take advantage of isolation and infrastructure automation features down the road. Don’t move anybody yet, but this is the point where you want to start looking at what hosting options exist that would help you to future and disaster-proof things.
- The automation step will probably include some tooling like RunDeck or Jenkins to do things like ferry code into production. While you don’t need to automate ‘all the things’ right off the bat, here are some areas where automation is important:
- Backups and Disaster Recovery
- Platform Updates
- Security Patches
- Security/Vulnerability Scans
- Uptime Checks
- Cache Refreshes/Invalidation
- Implement metrics and logging. Everything should go back to a central log and metrics store so you can mine it for data, troubleshoot any issues ranging from reliability to security, and alert on problems before the client notices there is anything wrong. It is recommended that this part of the stack is hosted away from production systems.
- Make sure that your developers are adhering to DevOps practices and not going off the rails to, say, apply hotfixes straight to production. Everything needs to go through the process from start to finish, without skipping steps or stages.
- If you have opted to move your clients to fresh hosting where you have more control over what happens in production, this is the stage where you will want to move everyone. This is best done when you have everything automated, as it will make scripting the actual migrations a lot easier. You’ll also have a better inventory of what needs to move when and where, and you will be less likely to “forget stuff” along the way.
DevOps adoption can be quite intimidating, because there is an entire universe of tools, processes and products that are available for all sorts of use cases. This is where most agencies try to rush head long into doing everything at once.
Complete Your Digital Transformation
This guide serves as a general implementation roadmap. Depending on what platforms you develop on for your customers, there will be some subtle differences in how things are implemented. DevOps is more than just tools. It’s a culture. A shop that has well documented processes and change management procedures is just as DevOps as a shop that has tons of automation. It’s less about the car and how you drive. Automation is a critical part of the DevOps culture, but automation is a means to an end. Having everything well documented and having rigid procedures in place to keep your developers on the rails will put you miles ahead of other competitors. Standardized processes and procedures for the win!