5 ms·
I do not believe Brian has a strong understanding of what it actually takes to do ops work. 1) Downtime. This is such a huge fallacy, if you think doing this
by Lamlon 12y ago
I do not believe Brian has a strong understanding of what it actually takes to do ops work.
1) Downtime.
This is such a huge fallacy, if you think doing this yourself means no downtimes think again. If you had a top notch ops team you are still going to have outages in the middle of the business day. This team of ops guys you hire, guess what? They are not going to be deploying at 1am every day, that is not sustainable. They are going to deploy in the middle of the day, and guess what, they will make a mistake. And guess who notices outages first most times? Customers.
Heroku's uptime is typically in the 99.9%'s, I don't think you can do the same with one ops guy, maybe you will get lucky, however it is more likely that you won't.
5) Buildpacks
Build packs are an AMAZING abstraction. Just think about how you would solve the following without buildpacks:
5.1) Install libgeos on all the hosts running a specific application?
5.2) Create and scale new worker instances on demand?
5.3) How do you setup logging for all these servers?
5.4) Health checks for these services (tcp, http)
5.5) Alerting and automatic failover
* pssh? That will work fine until you spin up a second server and forget all the incatations to get your software up and running.
* Puppet? I am sorry but Puppet, chef and their ilk are horrible, who knows what state any machine is ever in at any point in time. humans will inevitably forget to ensure absent, or make an assumption about state in puppet land. Nevermind the slow feedback loop in puppet land. Oh hey you want to change all the servers running X to now run Y instead, good luck with that.
* Mesos? Mesos is the best open source scheduler out there, Marathon makes it easy to deploy to and there are scripts to run easily on ec2. However if you want to install native dependencies (libgeos etc) you will still need to do one of the above things.
* Docker? Docker is an amazing way to package your app up and ship it to run on Mesos, however how do you package docker apps and ship them? Guess what? Buildpacks.
Now consider this on Heroku
(5.1) Add the https://github.com/ddollar/heroku-buildpack-multi https://github.com/ddollar/heroku-buildpack-multi
(5.2) Change your procfile
(5.3) There are plugin's for that
Oh hey you can also write your own language, write a buildpack for it, and deploy it to production without ever having to get an ops person anywhere to setup a server for you. I am sorry but that is nothing short of amazing.
2 and 4)
I agree 100%, it sucks to feel powerless and have no insight as to when things will be resolved, however if you work in any decent size org ops things will go down, and you will also have to wait to see any resolution. I agree it feels better to see people working busily in your office because you can see the sense of urgency. I
3) Pricing:
In regards to pricing: yes Heroku is very expensive. However for small and medium teams it is much cheaper than hiring an ops person. You also get an economy of scale when you use Heroku; Think of all the things heroku takes care of for you: automatic failover on hardware/software(segfaults)/vm issues. Disks filling up on some host (it is embarrassing how many times I have seen something as simple as this cause issues). Agility; You need to switch MRI out for JRuby or rubinius, no problem, just update your ruby "version" in your Gemfile. The Heroku platform is superior in almost every way for running small to medium size applications then any in house cooked alternative.
I am very familiar with the alternatives out there, I have contributed to dokku's buildpack repo https://github.com/progrium/buildstep https://github.com/progrium/buildstep, and have patched docker.
There is no good behind the firewall/on my vm/hardware alternative for heroku atm. People are making progress but you won't really get anything as full featured as heroku.
Best of luck to you Brian.
- eropple 12y ago> Puppet? I am sorry but Puppet, chef and their ilk are horrible, who knows what state any machine is ever in at any point in time. I always know what's on my servers all the time; I build immutable servers and throw away the old. And I'm not particularly knowledgeable or skilled at this; I just use a little good sense. I mean, your problems with devops may actually exist, but this is silly.
- Lamlon 12y agoSure, but the feedback loop is still slow, also adding support for a new app is much more time consuming, I would much rather have an api call and a git push and get back to delivering value.
- eropple 12y agoYou may rather have that, but then it breaks or it doesn't scale and you're up the creek. Which is why people pay people like me. At Localytics, adding a new Play 2.x (our current standard) app into our new deployment infrastructure takes one command and about 120 seconds. The only part for which a developer needs devops input is the first production deploy, which require a signoff and some (automated, but privileged) IAM permissioning. Adding a new app on a framework we haven't incorporated yet (Rails is probably next) would take a few days, but needs only be done once for all developers at the company. And we know it works with our entire ecosystem. You might have had bad experiences in the past, but you're extrapolating from them to the state of the world. It's not what you think.
- opendais 12y agoIn fairness to Brian, I think you are flipping to the opposite extreme which isn't really valid either. Especially here: > Puppet? I am sorry but Puppet, chef and their ilk are horrible, who knows what state any machine is ever in at any point in time. humans will inevitably forget to ensure absent, or make an assumption about state in puppet land. You setup the new cluster, switch the load balancer, tear down the old cluster. I suggest you look into blog posts like this [if this is a pain point for you]: http://blog.codeship.io/2013/09/12/the-codeship-workflow-part-5-continuous-deployment-of-immutable-build-servers.html http://blog.codeship.io/2013/09/12/the-codeship-workflow-par...