We've been shipping MVPs long before those were a thing.
./deploy.sh runs the commands you used to run manually.
What problem are you solving now with containers?
Listen to what you are saying: "It will take little time" and "it will be worth it down the line". These are bets. People get this wrong all the time.
Don't take the bet. That's happy path thinking. Take the shell script and 0 dependencies on external services and complex software.
You are taking the advice way too far. The advice is do things that increase your productivity and many things that increase productivity are also easy to setup once you know them. I'm not saying that you should learn containers for the sake of your startup. I am saying that tools you already know well often require very little effort to setup and pay dividends immediately.
When I learned what I said: it takes little time to set it up and you reap the benefits. If you don’t know how to use it then it’ll take some time to learn, in such case I see value going with whatever you know.
>We've been shipping MVPs long before those were a thing.
That reasoning can be used with almost any technology and doesn’t tell anything.
>./deploy.sh runs the commands you used to run manually.
You went from “manually copying” to having a script with reproducible steps. You’re closer to CD than what you were thinking.
I think the rest of the comment doesn't need to be addressed.
This - CI/CD during development pays off so fast it's not worth skipping.
I strongly agree with this. Investing into a quick setup for CI/CD in the beginning of a project pays of really quickly. Every time someone comes up with a "simpler" suggestion to deploy things, I find it always tricky and not-so-simple because of the following questions: - which machine do I deploy my code to? should I use an existing VM or should I get a new one? - what dependencies do I need to have on the machine? do I install them manually for each project? - how do I deploy multiple projects on this machine? what if the dependencies conflict? - how do I get the code to the instance? Should I use SCP, or Git, or some other method? - once the code is in the machine, how do I start it? how do I ensure it is running? - how do I securely expose it to the internet? - how do I serve multiple projects from the same instance?
Obviously, each of these questions have answers and they can be solved, potentially "simply" for some; but for myself, I found these to be way harder to deal with then a few lines of Kubernetes configuration. I use Docker for packaging the application, I build everything on GitLab CI, and just deploy to the same Kubernetes cluster for all of my projects. With this setup, I still use a single instance and have very low stable costs, and I can deploy 10+ projects on the same cluster since they have small load for now. Everything is standardized, and I can get to live in minutes even for a new project.
I believe the idea that these tools overcomplicate things need to ba taken on a case-by-case basis. For some, it works; for others, it won't, just like any other custom script or "simple" solution.
It is. For a very small startup, with not outside funding, everything that is not DIRECTLY related with A) Getting a paying customer. B) Launching, is a complete waste of time.
Please note this is not the only game in town (if you are Boston Dynamics by all means take all the time in the world to make those robots awesome) but if you are Yet Another Small Saas company for the love of god, launch, launch, launch.This is the game you chose to play.I dont care if your control version system are different folders and your backup are floppy disks, just launch and see if you can get people giving money to you for your product.
>Kubernetes, and Docker and CI? Cool tech, I suppose, but time wasters. Your release process should be scp-ing and extracting a zip file on the prod machine, or git checkout the files.
Ok, let's accept that K8s is overkill most of the times. But containerization and CI/CD? If you've some experience with it you know it's something that takes little time and money to set up (e.g. GitLab CI) and you get tons of benefits - you don't need to get super fancy either.
To me it sounds like the time waster would be doing what you describe, specially because it's so easy to mess it up after you do it a bunch of times on a single day. I used to do that when I started with PHP several years ago (replace scp-ing with FTP and git with cvs or svn) but IMHO it's not worth it once you deploy your product live.