"DevOps" is a teamwork style and process pattern, wherein the same people engineering the logic of a system also support each other in taking ownership over the execution of the logic and maintenance of the system.
DevOps means that, instead of sending an impatient email to the "DB admin" to apply your migrations, that you invite her to become familiar with the reason the migration was needed in the first place. In turn, she extends her toolchain to empower you to apply the migration yourself. Soon, you are part of the same team and the line dividing you, stopping you from supporting each other, is gone.
DevOps is good for people who like to always be learning; it can be difficult for people who like to ever more deeply specialize.
One thing that seems clear to me: the rise of packaged and automated ops solutions is not a threat to DevOps; on the contrary, it makes it even easier for a "Dev" team to collaborate on and take ownership of the "Ops" of an organization.
I agree with this, but I wonder if its because people right now are just still trying to figure out the tech. We're in the beginning of the adoption curve, so to speak and specialties will come eventually.
As an additional point, I see DevOps expanding to DevSecOps, DevTestOps, and when the marketing folks catch up I'm sure we'll soon see DevSecTestOps. These are all just fancy words for being a more complete Developer - and enabling Developers to deliver faster.
Anecdotally... From where I'm sitting right now (devops IT, huge non-tech company), it hasn't actually solved the problem of dumping crap over the wall, because ultimately people balk when going to prod with changes. (Compliance/SOX, fear of change, gui based existing deployments, bad APIs, etc....)
So would I get paid more for being good at all of these areas? Or is this a move to open up a bunch of positions for mediocre people? (no offense, I am mediocre at code)
Because DevOps fans seem to be advocating for more responsibility for similar/less pay (and you're outright fucking yourselves if you take on-call often without compensation).
If DevOps moves anything like software does, there will be industry leaders which cause a lot of followers (90%) to hamfist the 10%'s methods onto their weird deployment/lifecycle processes and it will be an ongoing mutant until some other new thing promises to bring the light.
I think a side-effect of devops is that more developers have to be good at more things, and less excellent at one. But, if I'm a hiring manager, there's places for both of those profiles in my team.
That's fine, but if I'm maximizing my pay for the effort spent, I'm just going to screw companies as hard as I can by charging them a ton of money while doing very little for them as a contractor. As much as you'd think the market would remove people like this from the industry, it isn't happening.
I could join up as a fulltime employee for 6 months only to find out they don't actually want to change anything (despite lying to my face in the interview) and increase value because they're a shitty non-profit, which means I won't get rewarded for putting ideas forth. WHERE IS MY RECOURSE FOR WASTING 6 MONTHS OF MY LIFE?!
a. Learning how to detect BS in interviews. Interviews are two-way streets.
b. Sit down and figure out what you really do want and how you ended up in this situation so it doesn't happen again.
c. 6 months over a career is nothing, and again, it wasn't wasted, its just the way you're looking at it.
d. Have you networked at all in these six months? If so, not wasted. If not, well that can only be on you not the company, right?
e. If you think non-profits are shitty, maybe a) they're not for you; b) you don't understand non-profits; and/or c) what were you doing there in the first place.
f. "screwing" a company is the same thing as looking out for your own needs (or in this case, the contractor's). There's good and bad contractors, of course.
Your observations may not necessarily be wrong, but to say it was a waste of time is short-sighted.
Exactly. I'm a mobile developer and I cross into "DevOps" field a lot, but I see it as a part of my job as a developer to make our team's lives easier.
It's a fine job to take if you know that's what you're in for, and you're not planning on advocating for actual devops.
Everytime I see a posting hiring a DevOps developer, I grind my teeth a little.
It's like a posting for an Agile Developer from a couple years ago. There isn't such a thing as an agile developer, just developers who use agile. I feel like its just turned into a way for a company to signal that they are modern and attrach developers.
It reminds me of https://www.commitstrip.com/wp-content/uploads/2016/11/Strip...
Ops was about discipline and method. Restrict the
problem set to known values. The one thing that I
see these days is that developers don't have a
fucking clue about ops but they do see that the
basic task responsibility is toilsome,
counter-creative and that 90% of it can be
automated by reliance on coded procedures in
write once argot that hopefully is editable
and doesn't give up the family jewels when
posted in pub github.
My company has a single team that handles all the technical matters, from cert and domain registration to database and system administration to CSS tweaks on the website. We're a devops team. It isn't necessarily the case that each and every member of the team is conversant with all the technologies involved, but each member is ready to co-pilot and pick up those tasks if necessary.
A devops engineer, similarly, is one that is conversant with many of these technologies themselves, and is competent to be at least a stand-in sysadmin, dba, developer, or whatever.
I don't think devops is dying; a company with <10 technical employees probably needs almost every one to be devops; there just aren't enough people to silo some of them away. As a technical organization grows, more and more of the hires can be narrowly specialized, and should be, because devops hires are often going to be more expensive and less effective at any one narrow specialization.
AWS is just one of the tools in the toolkit of a devops engineer.
[edit for grammar]
Any worry that devops is going away, regardless which standpoint you have, I think is unfounded. I might have to change my opinion in the next 5 years or so but for now I am quite confident the devops way is firmly not dying.
My experience after a few interviews is that DevOps in 2017 seems to be a keyword for "can implement Jenkins Pipelines and has experience with AWS".
Add "will sell free time for cheap" and you get yourself a SRE.
The problem devops intended to solve was the lack of proper communication and mutual understanding between developers and systems administrators. It has failed to solve this problem and, by the current definition, is getting farther and farther away from doing so.
Two main reasons contribute to this conclusion:
1. For startups, trying to make due with the least number of people possible, the term has been taken to mean you need no systems administrators whatsoever. This is no different than startups have always done - have developers do everything - but now it's disguised as a good practice.
2. Developers and system administrators have different goals. These need not be opposing, but having people wearing two hats means sacrificing one goal for the other. Usually, reliability and long term maintainability suffers as developers (as a profession) are much more vulnerable to hype.
Where startups are concerned, this may be irrelevant, as most go bust before this becomes a (culture) problem.
But for established organizations, this can lead to disaster. Every organization needs people that care about staying ahead of the curve and people that care about keeping the service at its highest levels of reliability (=quality). Both kinds of people must participate in the process from the start, as peers, and keep each other in check. This is (should be) devops.
PS: In the corporate scene devops is also dead, but because it now means "systems administrator" with no change in mentality, just to be cool.
Ops = run servers
DevOps = write code and run servers
> I keep reading about AWS killing the DevOps profession
The articles I read are actually about AWS killing ops in favour of more devops, because apparently AWS makes ops so easy your devs can do it during their lunch breaks.
The technical term for this idea is "nonsense".
> Is DevOps dying as a profession ?
No, but it isn't much of a profession. Large complicated systems will need both teams of devs and ops. Simple ones can work fine with overlap. Good tools can (very slightly) decrease the need for ops and increase the need for devops I suppose.
A better question might be: "Is devops dying as a buzzword?"
To which I can only reply "I hope so, because it confuses more than it enlightens."
Nonsense is an understatement...
We, as technologists spent YEARS getting ourselves into some sort of sane silo's because the tools in each area were becoming more complex. Operations, Database, Backend, Front end, and arguably now mobile as different roles.
In many places that meant building walls and silo's that were hard to bypass (for good reason) but it made getting problems fixed exceedingly difficult, especially where the rubber met the road (code running on servers).
The desire to have open communications isn't the desire to eliminate jobs or roles, but a desire to make actually solving the problems of running an application, doing good engineering easier. This was the intent of Dev-ops collaboration, and doing it out in the open as partners!
The problem is that business have taken this and run with it as a reason to curtail resources. Lets take another example that hacker news likes to talk about, Agile. I can't tell you how many agile coaches advocate for everyone on an engineering team being able to accomplish ever role. Not only is this naive but is potentially a source for pain further down the road.
I had to think about why Agile coaches were advocating this, and the conclusion that I came to was that "business" likes it. Dev-Ops is now code for "full stack", now code for "we expect you to do everything"... It doesn't scale and further down the road creates far more problems than it solves.
"DevOps is the union of people, process, and products to enable continuous delivery of value to our end users."
"I am very deliberate in the terms used in this definition. I choose value over software. DevOps is not just automating a pipeline so we can quickly deliver software. Our goal is to deliver value. The term end users was also very carefully chosen. The value we produce must reach our end users. If the value only reaches the Dev and QA environments but is held up before reaching production where it can be realized by our end users, we are still failing."
"It is very important to realize that DevOps is not a product. You cannot buy DevOps and install it. DevOps is not just automation or infrastructure as code. DevOps is people following a process enabled by products to deliver value to our end users."
Just try replacing DevOps with just about any computing paradigm that entered the market in the last 5 years and hopefully you'll see what I mean. Care should be exercised to separate marketing out of product definitions. Focus on concrete, measurable improvements the product brings to the table rather than producing statements that are generally agreeable.
I'm also slightly peeved by use of the phrase "delivery of value" -so broad, so sterile, its almost as if its chosen as a result of a search for the least objectionable phrase. I think it smells of intellectual laziness to use terms that we don't care to define and conveniently enough punt to the almighty end user.
That's not very specific, is it?
1. Operational matters such as platform upgrade, platform failure, platform testing, and so on should be incorporated in the general design process.
2. Engineers should be onboard in the day to day monitoring of the platform.
It shouldn't come as a big surprise because it is something that is well understood in other engineering disciplines, but somehow in IT, the development team can be fairly remote to actual operations. For instance, when you outsource the design / construction of an application, it doesn't usually come with running the actual thing, or even the necessary training for supporting the application.
However technology can be used to enhance the devops delivery process. Tools like Puppet, Chef, Docker/Kubernetes can have a positive effect.
To give an answer to your question: no devops is not dead. It is a way to work.
The pipeline for this needs to exist though, so one might say that the profession of an operations engineer is changing from someone who gets the code and deploys into someone who sets up the pipeline and keeps it going.
You can see "DevOps" as a mindset, that developers should understand how to operationalize their code and ops staff should understand how to write and debug the code they're maintaining. That is the original idea: there used to be a lot of resistance to the idea that devs should care about deployment or that ops folks should be expected to program.
You can also see "DevOps" as a role, meaning sysadmins who know how to code. That's largely becoming less of a role, I hope, due to some combination of all sysadmins being expected to code (except in non-best-practices environments like large banks or small startups with opinionated people), and "DevOps" in the previous sense becoming more successful. AWS is certainly part of it, because it makes it more possible for someone with a developer skillset to deploy a working app, but devs have been pinch-hitting as ops for decades and it hasn't killed the ops profession.
That said, knowing software engineering doesn't imply a knowledge of AWS, and it certainly doesn't imply a knowledge of how to evaluate tradeoffs in AWS - should you make the code more complex to span AZs? Should you deploy cool software on EC2 boxes or use AWS's managed infrastructure? Should you store certain data in S3 or in a normal filesystem? If it's in S3, should you make it directly accessible or proxy it through your app? etc. That will continue to be a skillset, and there will always be times when "install normal software in EC2" will be the right answer and therefore necessitate the entire old-school ops skillset. And for many industries, there will also be times when "actually, don't put this in the cloud" is the right answer, too. So from that perspective, I would certainly not say that AWS is killing the ops profession, whether you call it "ops" or "DevOps". Of course your ability to properly terminate a SCSI bus is no longer of much value, but that's true whether or not AWS is around.
What is dying is the more manual side of ops. Ops guys that aren't comfortable writing a bit of code are in danger of falling behind.
Deciding which services on AWS to use begins by understanding the needs of your business, and then looking for good fit within the set of AWS services. Also, AWS is no longer the only game in town. For some companies, Oracle Cloud better fits their ways of working. For others, Google has better services. Or Rackspace. AWS is no magic bullet, just a very useful toolkit that can help you a lot, IFF you understand it.
People who are specialized in databases are called DBAs. Not every company needs a DBA, but many find it useful to have a few on staff, and some need many.
People who are specialized in networking are called network engineers. Not every company needs one; some need many.
People who are specialists in application development are often called software engineers. Most companies need one; some need many.
This list of specializations goes on and on, and changes over time.
"DevOps" means using the tools and methods of modern software engineering to conduct systems administration and configuration of systems and networks. In other words, it's how sysadmins now operate.
Does your company need one or more operations specialists? Maybe. Maybe not. You're still going to have at least a minimum amount of work to do in that area, and the modern methods for that are called DevOps.
Your business needs should drive your hiring. Is your business plan to eke out a margin between the costs of AWS and the revenue of Google Ads? Then you need someone skilled in DevOps to help you understand performance, latency, and how to scale up and down quickly to lose the least amount of money.
Is your business plan to sell people subscriptions to a service which is not bursty and is reasonably predictable? You will want DevOps skills to manage the fleet of machines that will be the most cost-efficient way to provide that.
There are a lot of sysadmins that don't operate this way. I see a lot of them at banks.
> "DevOps" means using the tools and methods of modern software engineering to conduct systems administration and configuration of systems and networks.
Does it have to be limited to systems administration and network configuration? If we define "DevOps" as an approach that develops software in response to operational tasks, then we allow other kinds of operations, like handling check-in and check-out of books from a library. In this way, anyone who has ever optimized themselves away is in DevOps.
I'm reminded of a very complicated program that compiled 32-bit powers of pi efficiently, which was replaced with a table of 19 integers by a clever junior developer, only to have it reverted by the senior developer in case the constant in question needed to be changed in the future.
Maybe "DevOps" is simply operators who can program, but then maybe everyone should be able to program.
Let's put it this way: the more educated and effective a sysadmin becomes, the more they appreciate programming their way out of their problems rather than doing things one-off.
> Does it have to be limited to systems administration and network configuration?
Indeed, my point is that the universe of jobs in computing is a continuous lumpy spectrum, not a set of rigid silos.
If management wants it to be a set of rigid silos, they are losing efficiency in exchange for what they perceive to be control.
I'd agree with that.
I watched a (very) experienced sysadmin struggle to edit some JSON today. He had several notepads with JSON that he would copy and paste into various screens. I suspect when he gets a flat tire, he changes each one to see which one is flat.
> If management wants it to be a set of rigid silos, they are losing efficiency in exchange for what they perceive to be control.
I think (this kind of) management doesn't know better, but natural selection doesn't move swiftly enough.
Is there something we can do about that?
The point is that the Designer of the Software, now has full responsibility right through deployment and continuing while the software operates in production. This means that you can no longer fob off these responsibilities on other people and say that you are "just" a full-stack developer. It means that you must understand how your code makes use of computer hardware and virtualization systems, and design something that can reliably and smoothly be deployed into production (changes) and operated ongoing (monitoring, health boosts, etc).
AWS is just one of the ways in which code can be used to provision hardware and deploy code.
Google has a role called SRE which is really the heart of DevOps. They HAVE TO do this due to scale, but even smaller organizations should learn from Google SRE best practices because this is the future of ALL computing.
In fact, it is already at the point where software engineers who have never handled hardware (IOT, Raspberry Pi, Micro:Bit) are obsolete even if you are just graduating from college in June.
Multicore CPUs with multiple cache levels, shared RAM, control over which cores are active and how fast they run. GPUs. The Von Neuman model of a computer is long past.
Today there is a new definition of computer. It is a network of processing units, storage units, and communication links which can be made to work together to do useful work.
Note that this definition includes a single 4-core Intel i7 chip, and all of AWS. Distributed computing is no longer something that happens between your computers, it also happens inside them.
Hell no. If you're in DevOps and use AWS, that means you need to know the AWS API.
Heroku style solutions could perhaps eliminate the need for operations, but that still seems pretty niche.
That's sort of the direction that AWS has been aiming lately with some of their newer releases.
For a variety of reasons, from security and privacy to cost analysis to performance I don't see pure ops or devops anywhere near vanishing though.
DevOps is mostly about optimizing the interaction between Developers teams and Operations teams but the general principles can be applied across the company.
I think we focus too much on the "How" or "What", while we should ask ourselves "Why", Why do we do DevOps and why do we need DevOps, it's a reflexion I tried to share in these slides: https://speakerdeck.com/lothiraldan/the-importance-of-why-in...
The reason why it became difficult was because on a random Saturday afternoon I'd get pulled into diagnosing a mysterious database warning. Even though I'm quite familiar with database development, when it's a system that I don't work with on a day-to-day basis; I just don't know what to do when the fire alarm goes off.
In contrast, the engineers who worked on the server never got pulled into client-side fires.
The problem quickly resolved itself when we fired our head of engineering.
i think its safe to say its not dead
Not sure how AWS is necessarily killing anything, since the wheels of automation roll forward. Instead of "deploy this app" and "migrate this schema" we have "setup my continuous delivery environment".
This is how DevOps is defined where I work (I'm on the recently formed team). 'It' is, of course, arbitrary (we're responsible for every old piece of cr*p that nobody else wants), and the 'fix' is always a band-aid slapped across it to keep it working until its undefined retirement date.
Most of our work week is like this >_>
In other words, the distillation of the last 50 years of computer science to get a job done faster and better.
It's actually empowered by cloud services which are easier to stand up / maintain than a local infrastructure. I hope it's not dead, it's super efficient. It does take a person / team who is willing to learn the nuances of network / database administration though.
It's nothing new, but it's new to employ at larger organizations which typically silo development, database admin and NetOps.
Based on what I'm seeing, the movement is far from dead. There are MANY large orgs that stand to gain a lot from adopting this mindset. The biggest issue is that change is difficult for many people.
By the way, there are companies that siloed their AWS ops teams. AWS alone isn't an answer.
These are usually quick configurations outside the main development, to quickly test a new concept, or maybe to troubleshoot an issue. You're using Python Pandas, TensorFlow, scikit-learn.org to model/prove verify the issue.
I would say the traditional DevOps (if there was one), has expanded... you've added System Admin, DBA, Developer and a Machine Learning to your toolkit. Of course, we all have smartphones, so we leverage that too...
An analogy would be iPod/Music app in the iPhone from the glory days of the iPods.