Is DevOps the most overused word in technology right now?
The full definition from Wikipedia. Here what DevOps really is about. It about taking monolithic code with complex infrastructure supported by developers, operational personnel, testers, system administrators and simplifying it, monitoring it and taking automated corrective actions or notification.
It’s really about reducing resources who aren’t helping the business grow and using that headcount toward a position which can help revenue growth.
It’s done in 3 pieces.
Piece 1. The Infrastructure
It starts by simplifying the infrastructure build-out, whether it in the cloud where environments can be spun up and down instantly based on some known configuration like AWS CloudFormation, using Docker or Kubernettes. Recently, Function as a Service (FaaS), AWS Lambda, Google Cloud Functions or Azure Functions. This reduces reliance on a DBA, Unix or Windows System Administrator and Network Engineers. Now the developer has the space they need instantly. The developer can deploy their code quicker, which speeds time to market.
Piece 2. Re-use and Buy vs. Build
Piece 2 of this is the Re-use and Buy vs. Build. Meaning if someone has a service re-use it, don’t go building your own. An example is Auth0 for authentication and Google Maps for mapping locations or directions.
Piece 3. When building or creating software do it as Microservices.
To simplify it you are going to implement microservices. Basically, you create code that does one thing well. It’s small, efficient and manageable. It outputs JSON which can be parsed by upstream Services. The JSON can extend without causing issues to upstream Services. This now reduces the size of the code base a developer is touching, as it one service. It reduces regression testing footprint. So now the number of testers, unit tests, regression tests and integration tests have been shrunk. This means faster releases to production, and also means a reduction in resources.
You’re not doing DevOps if any of these conditions apply?
-
You have monolithic software you’ve put some web services in front of.
-
Developers are still asking to provision environments to work.
-
People are still doing capacity planning and analysis.
-
NewRelic (or any other system) is monitoring the environment, but no one is aware of what is happening.
-
Production pushes happen at most once a month because of the effort and amount of things which break.
Doing DevOps
-
Take the monolithic software and break it into web services.
-
Developers can provision environments per a Service Catalog as required.
-
Automate capacity analysis.
-
Automatic SLAs which trigger notifications and tickets.
-
NewRelic is monitoring the environment, and it providing data to systems which are self-correcting issues, and there are feedback loops on releases.
-
Consistently (multiple times a week) pushing to production to enhance the customer experience.