Web Engineering 114: Shiny New Tool
After another successful although bumpy project and launch, I am reminded yet again that not all engineers are as pragmatic as they could be. While we work in an industry that is constantly changing, you should be aware that although something might be new, cool and interesting, that does not mean it needs to be used. With every new technology that comes along its creators had in mind a specific use case, and while it might be tempting to “make it work for you”, it’s often times the wrong approach.
When it comes to production systems simple is best.
When approaching a problem the smartest of engineers will always use the right tool for the job. Is that Kubernetes for a static website? No. It’s something like serving content from an S3 bucket via CloudFront. We don’t need micro-services or containers to deliver static HTML.
While Docker usage has taken off that doesn’t mean your docker environment has to be shipped to production. The use-case for docker in production should be limited to a very small subset of use-cases, like packaging your app as a binary (IE Go). Other technology stacks like (AWS) Elastic Beanstalk work amazingly well and have very low-DevOps knowledge requirements. You get so many things for free (Auto-Scaling, Logging, easy deployments, Multi-AZ …etc). Literally not using these types of technology solutions in the place of rolling your own should almost be criminal.
Be pragmatic about your infrastructure just like your code.
Don’t prematurely optimize.
I understand that it’s cool and exciting to learn something new. But with learning about something comes with WHEN to use that technology. Can you use Kubernetes to deploy a static website? Yes. Should you? NO!
Can you replicate Elastic Beanstalk with Docker Containers/Cloud Watch Alerts? Yes. Should you? Probably not.
Falling into this trap is very common and affects engineers of all skill levels. What makes a good engineer good, is being able to recognize when and where to apply these new technologies. It takes real discipline to be able to say No, something else will work here. Unfortunately in our profession sometimes this approach isn’t feasible, sometimes you will be overruled, but
Always try to push your team to use the best technology for the job not the newest technology.