Are you familiar with DevOps and its role in software development? Our latest blog post covers everything you need to know about DevOps: What it is, why it matters, and how to get started.
How to Define “DevOps”:
- DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. The goal of DevOps is to shorten the systems development life cycle while also delivering features, fixes, and updates frequently in close alignment with business objectives.
History of “DevOps”:
- If DevOps had a birth certificate, the father’s name would be penned in as Patrick Debois. Patrick was interested in learning IT from every perspective, and in 2007, he began working on a large data center migration where he was in charge of testing. During this project, he realized that the frustrations experienced in projects such as these are from the constant switching back and forth between the development side of the problem and the silo of operations on the other side of the fence. He recognized that a lot of time and effort was wasted navigating the project between these two worlds, but the divide between them seemed too wide to bridge.
- Developers and IT/Ops professionals had separate (and often competing) objectives, separate department leadership, separate key performance indicators by which they were judged, and often worked on separate floors or even separate buildings. The result was siloed teams concerned only with their own fiefdoms, long hours, botched releases, and unhappy customers. Surely there’s a better way, they said. So, the two communities came together and started talking – with people like Patrick Dubois, Gene Kim, and John Willis driving the conversation.
- Initially, the interest was pretty tame and not a whole lot came of it. In June of 2009, John Allspaw and Paul Hammond gave a talk entitled “10+ Deploys a Day: Dev and Ops Cooperation at Flickr.” Our friend Patrick happened to watch the streaming video of that presentation at his home in Belgium, and it instantly resonated with him. He realized this was exactly the solution for which he had been looking. Emboldened by this presentation, he put out a call to have a gathering of developers and system administrators to get together and discuss the best ways to start bridging the gap between the two disparate fields.
- He named the event DevOpsDays, occurring in the last days of October in 2009. This event garnered a fair amount of attention from experts in both fields and sparked lively debates over Twitter where the hashtag was soon shortened to simply DevOps. It wasn’t long before some of the smaller tech enterprises were attempting to put together DevOps practices as well as tools built to aid these newly forming teams. DevOps had managed to achieve a grassroots following that was starting to put their ideas to use.
Basic breakdown regarding technologies on “DevOps”:
- Version Control Tools:
- They provide “an organized way to track changes over time” because they record changes so that specific versions can be recalled later, among other things
- Examples are GitHub, Bitbucket and GitLab
- Container Mgmt Tools:
- These tools provide a process for automating the creation, deployment and scaling of containers. Inside the container are all of the necessary executables for the application…binary code, libraries, config files, etc
- Examples are Docker and Kubernetes
- Application Performance Monitoring Tools:
- These are tools that observe cloud apps, log issues associated with those apps, alert DevOpsSec teams, etc
- Examples are AppDynamics, Raygun, Datadog, etc
- Deployment & Server Monitoring Tools:
- These are tools that provide a comprehensive view of a production environment in real-time
- Examples are Splunk, Datadog, Zabbix
- Configuration Management Tools:
- These are tools that make changes and deployments faster and help remove the possibility of human error, all while making system management more predicable and scalable
- Examples are Chef, Puppet, Ansib ble
- CI / Deployment Automation Tools:
- These are tools that integrate code changes from multiple contributors into a single software project. Continuous Integration, Continuous delivery, and Continuous Deployment.
- Examples are Jenkins, Bamboo, etc
- Test Automation Tools:
- These are tools that validate if software is functioning properly, meeting requirements, etc before it’s released into production
- Examples are Selenium, Katalon, etc
- Artifact Management Tools:
- These are tools that are used to store, organize and distribute artifacts (that is binary files plus their metadata) in a single centralized location
- Examples are CloudRepo, JFrog
- Codeless Test Automation Tools:
- These are tools that execute automation testing without using any script. By doing this, you can minimize the testing time over repetitive cases without any coding efforts
- Examples are Katalon, TestCraft, AccelQ
Azure vs AWS Google Cloud Platform (GCP)
- This is an infrastructure as a service (IaaS) based model where a third party provider hosts and maintains core infrastructure on behalf of the customer
- Selecting one cloud vendor over another will come down to the specific needs of the customer AND the workloads they are running
- Amazon’s AWS has the best-in-class status with being the industry’s largest vendor in addition to having the deepest breadth of abilities. However, their biggest weakness is that it’s also regarded as the most expensive.
- Microsoft tends to fall into #2 and is very popular with executives but that seems to be related to their long-standing history with their other products being so popular and therefore helps ensure that Microsoft’s Azure is trusted
- Google’s GCP might be the 3rd place winner in this 3-person race but their long-standing excellence as a search giant / machine learning expert has positioned their product well in the minds of potential customers. Their open-source technologies also help to make their GCP popular
Hopeful to get a career in DevOps? Here are 9 practical steps on what to learn to get started or position yourself for a job in this area:
- Programming knowledge:
- Focus on skills surrounding debugging of code, database changes or automation of deployment processes by learning scripting languages such as Python, Perl or Ruby
- Understanding of Linux concepts:
- Focus your learning on OS concepts such as process mgmt., I/O mgmt., threads and memory mgmt.
- Knowledge of software config / deployment
- Focus on tools like puppet/docker to practice deploying applications from a test to production environment
- Familiarize yourself with IaaS because it really makes the deployment process easier
- Learn to understand CI/CD pipelines
- Recommended Jenkins as the tool to become familiar with first
- Network / Security
- Heavily research and learn the basics of networking and security concepts to be able to effectively handle the IT workflow in a professional corporate environment
- Familiarize yourself with the various automation and monitoring tools such as Git, Docker, Chef or Puppet
- Research and learn the differences, pros and cons of the main players in this industry….to include AWS, Azure & GCP
- With focus, the minimum timeline of time investment is approx. 6 months to know all of the basics