You started with the best intentions. You carefully read all of the documentation and followed all of the best practices you could find and you built a high-performance application infrastructure tuned exactly the way you wanted. Because you are thorough, you documented all of the steps you took to install and configure the servers.
Fast forward six months. Your product is growing fast and you’ve been coding like mad trying to keep up with feature requests and bug fixes. Improving your application is obviously your highest priority - after all, it is why you are in business. You’ve tried to keep up with operations, though. You’ve applied several security updates to your servers, installed packages because of new application requirements, upgraded several more, and made who knows how many spontaneous configuration changes to handle your growing traffic or to fix unexpected problems. Also, there was that time you were troubleshooting that pesky caching issue and you tried a bunch of things to fix it. You eventually you made it work but you are not totally sure what it was that fixed it or if the three other changes you made while troubleshooting were really necessary or not.
Now you need to build two new application servers - FAST - and you realize your install documentation still has the original updated timestamp. That’s right, from six months ago.
Congratulations, you’ve built snowflake servers.
This is actually a pretty easy thing to do. After all, it’s your product that is generating your revenue and keeping you afloat. That is where you want to be spending your time - that is your core competency. You do what you can to get your infrastructure up and running as quickly as possible. You make it work and then you move on.
But, you are constantly worried because you don’t really know if your infrastructure will scale with your growing customer base. You don’t have a solid disaster recovery plan in place - or if you do, it has never been tested. It takes your team weeks to build a new staging environment and it still is not consistent with production. You have an infrastructure-related TODO list that is a mile long and still growing but you just don’t have the time or resources to start checking items off of it. There are too many other important tasks that take priority - like fixing that signup bug that is costing you customers.
However, you know, in the back of your mind, that you’ve built a Jenga tower that can collapse at any moment. And, it probably will. And, it will probably happen the day your application is featured in the New York Times.
What if you could ensure that you could repeatably build your infrastructure quickly and consistently on demand? What if you could build a new staging or testing environment that is identical to production with a single command? It is possible to eliminate the snowflake server problem with automated infrastructure and configuration management practice. By investing upfront in some simple tools and processes, you and your team can focus on your business while being confident in your ability to manage and scale your infrastructure.
No more long installation documentation. No more wondering why an application works on one server but not another. No more long days working through a checklist, mindlessly running the same commands on server after server. No more staying up at night and worrying whether or not your application will handle an influx of traffic. No more wondering if the duct tape and crazy glue that is holding your infrastructure together will finally come apart.
Getting to a place where your entire development team can understand the infrastructure your application runs on is important to ensure maximum efficiency and a minimum of defects. Infrastructure as code can bring more agility, more control over resources, reduced risk, and actually make operations a competitive advantage for your business. Fast and confident deployments, improved testability, and lower hosting costs can all come about from streamlining your operations with infrastructure automation. Work faster, ship more often, and scale effortlessly.
If you answered “No” to any of the above questions then I can help.
You recognize the need and benefits of an automated infrastructure and configuration management but you don’t have the time, resources or expertise to get it in place. That is where I come in.
I’ll work with you and your team to understand the specifics of your environment, your software applications, and, most importantly, your business. I understand that the real goal here is to improve your bottom line. The technical stuff is just a means to achieve that.
My approach is much like the debt-snowball method of reducing financial debt. Together, we will focus on smaller problems first and work on addressing them as soon as possible. As we cross items off the list, we build momentum and those small (but impactful) changes quickly add up to more drastic improvements. I will work closely with your team and provide the training necessary to make sure that they understand and are comfortable with all of the automation tools I deliver. By the end of our engagement, all of the questions above should be able to be answered with a strong “Yes”! and your team should be more confident about making changes in the future.
While I can work with companies of all sizes, I prefer working with smaller businesses or startups who may not have the resources or internal expertise to build these practices in house. I truly believe that establishing these practices really has the power to create a competitive advantage for any company by helping them deliver more dependable software, the confidence to make changes and the ability to adapt to the market rapidly. These processes and tools should not be reserved for enterprises with large development and operations staff.
Building an infrastructure automation and configuration management solution is an investment that sets the stage for your business to reap some amazing benefits. If you don’t see it that way or if you just want someone to come in and build you a web application stack as quickly and as cheaply as possible, we may not be a great fit. If you do not have buy-in from your management, development or operations teams then we might not be a great fit. If making changes requires a laborious, bureaucratic approval process then we might not be a great fit. In order to deliver the best results possible, it is important for both me and you to be able to iterate quickly. Finally, if you have an unrealistic budget for getting this done then we might not be a great fit.
Having an automated infrastructure is a foundation for many other things that can help your business deliver better software more quickly and better serve your customers. With a solid configuration management practice in place, you are going to be in a much better place to start looking at how you can take more advantage of cloud computing, continuous integration and delivery, and other DevOps practices. More importantly, it can help your business innovate and grow. Contact me to reserve your free consultation.