Do you always need CI/CD?

From my point of view, if a service is updated regularly, then you really can't do without it, because deploying manually is no fun at all. However, dragging these practices everywhere is also wrong.

ใ€ฐ๏ธ Let me give an example: we have a utility service (not the one that's part of the application, but an auxiliary/infrastructure one) that gets updated once a year at best. And usually one or two people handle it. Building a full pipeline in this case makes no sense. The time spent on it won't pay off.

And in general, any automation is justified only starting from a certain scale, while one-off procedures are easier to do without it. After all, automation requires development and debugging, and that isn't free. On top of that, in the case of CI/CD, certain pipeline steps may simply fail a year later on the next attempt to use it, because the infrastructure could have changed in that time and nobody remembered that the pipeline needed adjusting. With frequently used services this won't happen, since the problem will be noticed and fixed quickly.

But still, so that at least once a year you don't have to scratch your head wondering "how do I even deploy this service??", I have some recommendations:

1๏ธโƒฃ Be sure to write documentation in the code repository in a README.md file, which should contain the info: what this is, how to build it and where to deploy it, what to check after deployment.

2๏ธโƒฃ It's advisable to have some kind of Makefile to simplify deployment, with rules like make build, make deploy, and so on.

๐Ÿ“Œ And if you want to learn to build pipelines and apply them effectively in the process of developing modern products, then there's a Hands-on CI/CD course for you.