3 ms·
> The most important thing about 12 factor, in my opinion, is the separation of code and configuration. Nothing to do with configuration. Sometimes you need a
by camus2 13y ago
> The most important thing about 12 factor, in my opinion, is the separation of code and configuration.
Nothing to do with configuration. Sometimes you need an envirronment where components of that env are not available on your system. For instance redis or nginx used to be linux only.
Also it's easier to pass around images in a team,than installing manually every components or libraries one needs. No time is lost in setting up and configuring this or that.
Further more virtualisation == 0 consequences on your machine.You can screw up stuff and experiment without worrying about doing something wrong,it doesnt matter.
So no side-effects,no configuration,os independent,easy to share images => better development env. You dont have to use docker ,i dont, but cirtualisation really helps.
- vinceguidry 13y ago> Also it's easier to pass around images in a team,than installing manually every components or libraries one needs. You're right, Bundler in Ruby seems to have spoiled the hell out of me. I don't think nginx belongs in your development environment. If something's not available for your system, virtualization can be used effectively, if you run one machine per service you're depending on, as it would be done in production. Or architecture your app so that you can use dummy services in development. With thin interfaces and continuous integration this shouldn't introduce any problems. But really, you should be picking mature services to depend on. One of the signs of a mature software project is that it is available for multiple environments and the configuration remains mostly similar. External service configuration should be considered code and committed to your repo. All that's in your project config should be where the service is at and what port it's running on. You could make the argument that depending on something that's not available for all the development environments you're working with is a smell. > Further more virtualisation == 0 consequences on your machine. Personally, I treat my development machine as "crash-only software". If something goes wrong with it, I'll wipe it, re-install it, then git pull and bundle install. All important files are kept elsewhere and my development workflow is streamlined enough so that I can reinstall everything pretty quickly. All of my tools are in my dock. Chrome, Sublime, Sequel Pro, iTerm, and an SSH Tunnel Manager, the latter I consider an ugly hack and am working to get rid of. Service dependencies are painless to install with Homebrew.
- jmcqk6 13y ago>Personally, I treat my development machine as "crash-only software". If something goes wrong with it, I'll wipe it, re-install it, then git pull and bundle install. All important files are kept elsewhere and my development workflow is streamlined enough so that I can reinstall everything pretty quickly. Hmm, you seem to basically be describing Vagrant, but with the added complexity of resetting the rest of your computer as well.
- vinceguidry 13y agoDo you install and run Chrome, Sublime Text and the like on Vagrant? I've never actually had to do that, because I don't think you should need to, these software packages shouldn't mess up your system, if they are then you're doing something wrong.