Jason Kim's Blog

The Deployment Minefield

I find deployments hard. But why? I conjectured a few reasons why.

  1. You don't practice setting up deployments too often.
  2. When you do the setup, you usually mindlessly copypasta the command from internet.
  3. And you finally make it work without any deep understanding, well you never try to relearn what you've done.
  4. Deployment is actually a hard subject that touches on many different complex systems.
  5. When something goes wrong, it's hard to fix or undo. And you might compound the problem by trying to fix it by copypasta-ing even more crap.
  6. You might not even be aware of the problem at all. You could've done something an hour that fucked up the deployment process, but you might be trying to undo something you did 10 minutes ago. Diagnosis of the problem is really hard for deployment.

What is the remedy for these problem?

  1. You have to practice deployment like everything else. In order to practice something you need a meticulous guideline on how to practice. There for document everything!
  2. Understand each steps you are performing. Never just copypasta something. Even better, understand the system you are using.
  3. Even after you make something work, go back and review what you've just done.
  4. Learn the system you are using. Again, don't just copypasta.

I find that 5 and 6 are rather hard problems. You need really good understanding of the system in order to debug some problem. Otherwise, you just end up googling same shit over and over again. Maybe I'll come up with some solution for them later down the road.