My host system is Fedora but since our production code is deployed on Ubuntu, I have a Vagrant Ubuntu image. PyCharm reads the Vagrantfile and it has access to the virtualenv(python in our case) of the Vagrant's image.
That VM/container is still essentially a remote system. Do you never ever log in to it? What types of instrumentation are you using to characterize the performance and operation of your app in the dev instance?
I can't characterize the performance of my app on a dev instance. I don't even think it's possible. You could characterize in the sense you do it for algorithms(with regards to time complexity).
But in general this is my(our) process.
- First I write the code.
- Then I test the code locally.
- Then I test the code on an instance with a copy of prod data. If I want to debug at this point, I run the web process locally while my DB configuration points at that specific server with the prod data.
- If it's code that spans across more than one subsystem(e.g. it also involves async celery task/queue servers) I test on a staging environment, that duplicates(as much as possible) the prod infrastructure.
- Then I deploy.
Obviously there are other various details, plus rollback plans in case something still goes wrong, but that's the gist of it.
> I test on a staging environment, that duplicates(as much as possible) the prod infrastructure.
I believe it's possible that nobody ever logs into any instances in the staging environment, but if that's the case then your organization is an exception to the rule. Plus you mention it's "as close as possible" to the prod infrastructure rather than identical.
The point is: don't act superior by feigning ignorance that most shops still have people who occasionally log into Linux hosts.
Log into the machines to your heart's desire. I never said we never log in.
I said we never directly change code on production because it's bat-shit insane. That's why this thread was started. You can trace it back.
I never acted superior, but I really don't get the "me and some people I know do this so everyone must be doing it". No they're not.
And what I described in all my responses (not just to you) can be scaled down to this:
1) Do you know how to install a Linux machine?
2) Do you know how to install a DB?
3) Do you know how to take backups of your DB?
4) Do you know how to change your DB's config so that it points to other machines?
5) Can you write a shell script no more than couple lines?
You answered yes to all of the above? Then congrats you can already do what I'm describing. Yes, you can go crazy later with configuration software(ansible/puppet/etc) and better infrastructure, but the above will suffice as a first step.
So all this "haha, this guy is in his own SV bubble, haha"... yeah really not getting it, sorry.
My host system is Fedora but since our production code is deployed on Ubuntu, I have a Vagrant Ubuntu image. PyCharm reads the Vagrantfile and it has access to the virtualenv(python in our case) of the Vagrant's image.
UPDATE: I am not sure if that's what you were asking. Maybe this response(https://news.ycombinator.com/item?id=13543158) I gave is more relevant ?