Differences: DevOps, ITOps, MLOps, DataOps, ModelOps, AIOps, SecOps, DevSecOps [Part 1/3]
All of them are derived from AGILE Methodology
Sometimes, I found out that Junior Full Stack Developers, Software Engineers, Machine Learning Model Developers or Data Scientists were confused with various terms that are combined with the word “ops”. After a few hours of reading, I planned to explain them with a better flow. When you trace back the origins of these terminologies, you can easily figure out that actually, they are the babies of Agile Methodology.
So, What is Agile?
Agile is defined as an interactive approach specifically designed for project management and software development to deliver value to their customers faster and more reliable. Instead of evaluating the entire development process after completion, you can actually chop the entire development process into multiple small blocks and evaluate each of them separately and asynchronously.
Agile advocates the work within a team should be delivered in small units, but consumable and incremental, so the team can respond to the change quickly [1]. It also promotes adaptive planning, evolutionary development, early delivery, and continual improvement [2]. Currently, it contains a set of frameworks and practices based on the values and principles expressed in the Manifesto for Agile Software Development and the 12 Principles [3].
In short, Agile consists of a set of standard practices where the project management and software development teams should follow to establish a product, mainly software, that is user-friendly, high performance, easy to maintain, high extendability, high reliability, high quality and safe to be used.
DevOps
To make the story simple, I start with the term “DevOps”. Let’s imagine that you are asked to develop a simple food ordering web application. As the head of the software development team, what do you think the development flow of a simple food ordering web application should be? Take a minute to think further about it before you proceed.
Probably the answer in your mind is similar to the development flow as follows [4]:
- Requirements: List the requirements of what the product needs to do. This may or may not include a list of features.
- Design: Define how the requirements work inside the product.
- Implementation: Develop the product.
- Testing/Verification: The quality assurance team tests and verifies the planned features. Open defects for those problems encountered in testing.
- Release/Maintenance: Release the finished and approved product.
Basically, this flow is a part of the DevOps. The set of practices that works to automate and integrate the processes between software development team members is known as DevOps. The addition of the automation and integration elements into the traditional software development process allows the aforementioned team to build, test, and release software faster and more reliable [5].
Automation, iteration, self-service, continuous improvement, collaboration and continuous testing are the keys principles that underscore the Agile philosophy. DevOps extends the Agile mindset to development and operation. Each phase in the DevOps lifecycle is focusing on closing the loop between continuous integration (CI), continuous delivery (CD), continuous deployment, continuous monitoring and feedback [6].
The technologies that have successfully gained a lot of popularities recently due to DevOps include Containerization and Microservices [7].
In short, DevOps extends the Agile mindset by including the concept of CI, CD, continuous deployment, continuous monitoring and feedback.
Congratulations! These are fundamental knowledge that you should know about DevOps. Let proceed to the next one, ITOps.
ITOps
As mentioned, DevOps is a standard guideline to convert software project idea into production readiness. For software developers to practise DevOps, other underlying services including platform and infrastructure (storage, compute, network) are required.
This is where ITOps comes into place. The Information Technology (IT) team of a company is normally responsible for acquiring, designing, deploying, configuring and maintaining the physical and virtual components that comprise the IT infrastructure [8]. In specific, an IT team uses ITOps to deliver and maintain various services, applications, and technologies needed to run a business [9].
The scopes of ITOps normally include [10]:
- Infrastructure Management — The setup, provisioning, maintenance and updating of all the hardware and software in the organization to ensure that all existing infrastructure components run smoothly and new solutions are integrated seamlessly.
- Development Management—The preparation of the exact guidelines, goals, security standards and workflow that software development teams need to succeed.
- Security Management — The work of keeping the hardware and software secure, managing access control, implementing security within DevOps processes and ensuring security standards are met across the environment.
- Problem Management —The solution to deal with outages and cyberattacks, and perform disaster recovery and help desk services.
To conclude, ITOps is a set of standard practices adopted by the IT department to perform infrastructure, development, security and problem management.
Congratulations! These are fundamental knowledge that you should know about ITOps.
Case Study: The Integration of DevOps and ITOps
The Implementation of DevOps
Let’s continue the imagination regarding you are head of the software development team for the simple food ordering web application.
According to ITOps introduced by the company’s IT department, you are required to initiate the new project with the DevOps methodology.
Step 1: Plan
According to the DevOps lifecycle as mentioned above, firstly, you need a plan.
- You ask your subordinate to conduct a software requirement analysis based on the requirement engineering process flow to rank the essential features for the simple food ordering web application.
- The first feature may be allowing the users to perform some filtering process based on food type, price range and rating to speed up the user selection process.
- The second feature may be recommending users what to eat based on their previous orders and personal preferences.
Step 2: Code
Next, you assign the coding tasks based on essential features to your subordinates.
- They develop codes on their devices.
- They push codes to the dedicated repository located on a cluster of internal servers using Git for code integration and merging.
- Before they push the codes, they perform unit tests on their written modules.
After a few weeks of hard work, all the modules are completely developed and integrated. The primary version of the simple food ordering web application is considered done.
Step 3 and 4: Built and Test
Then, you and your subordinates try to build and test the entire application on the dedicated development server assigned by the IT department.
- For the first launch, there are multiple bugs in the web application leads to a major crash.
- You and your subordinates fix the bugs and conduct the next round of testing repetitively.
- The process which involves iterative coding, building and testing that is automated is named “continuous integration (CI)”.
Step 5: Release
After a few round of testing, the web application performs more stably. You decide to release it to production.
- Someones from the business development team and IT department prepare for the new software launch and infrastructure setup respectively.
- Internal testers, who are playing the roles of quality assessment to the web application, also perform multiple tests to ensure the stability of the web application in the real production environment.
- The automatic process of iterative code development, release and testing before the deployment of the web application to the public is known as “continuous delivery (CD)”.
Step 6: Deploy
When everything internally is ready, the web application is allowed to be deployed to real production. The readiness here include:
- The front end of the web application is available to be downloaded from the App Store.
- The back end of the web application running on top of IT infrastructure is ready to serve all the requests from the front end.
Step 7 and 8: Operation and Monitor
The operation of the web application is constantly monitored when the users are interacting with it at all times. The user feedback is collected periodically for enhancement.
The automatic process of interactive code development, release and deployment to the public is known as “continuous deployment”. As an application user, you get to know this only when you get a phone message to remind you to update the application. CI and CD are always done behind the scene without letting you know.
Finally, the story of how the head of the software development team implements DevOps comes to the end.
The Implementation of ITOps
Do you spot any role played by the IT department in the story above?
Referring to the story above, the IT department uses ITOps in/to:
Development Management:
- Enforce all the business development teams in a company to practice DevOps methodology. For example, the ITOps can specify that all the software development team should submit their hardware application forms 7 days in advance so the IT department has an adequate period to fulfil the requirements.
Infrastructure Management:
- Prepare the hardware and software to facilitate the software development process. For example, personal devices for coding, a dedicated repository located on a cluster of internal servers for code integration and merging, and a dedicated development server for code building and testing.
- Control the infrastructure for production. For example, deployment, monitoring, and maintenance, and updating of the back end of the web application running on a cluster of internal servers.
Security Management:
- Ensure the security of hardware and software. It includes personal coding devices, development servers and production servers for the web application.
- Manage access control. It includes access to the dedicated repositories for code integration and merging (normally hosted on Github or Gitlab)
- Make sure that the web application is well covered in all the security aspect. For example, the user is required to key in the password to make the changes on personal registered details.
Problem Management:
- Make sure that the infrastructure set up for production is fault-tolerant. For example, the is at least a backup for the database that stores the customer information.
The Overlapping Region Between DevOps and ITOps
In the nutshell, DevOps covers the portions of the development (plan, code and build), quality assurance (test) and operation (release, deploy, operate and monitor) of the software. On the other hand, ITOps focus more on the operation and less on the development (ITOps urge to provide general guidelines) and quality assurance (ITOps urge to conduct tests for the backend of application deployed on IT infrastructure).
To Be Continued
Hopefully, you find the story above is interesting and help you to understand DevOps and ITOps. The next part will introduce MLOps, DataOps, ModelOps, and explain how they relate to DevOps and ITOps.
References
[1] https://www.atlassian.com/agile
[3] https://www.agilealliance.org/agile101/
[4] https://admhelp.microfocus.com/octane/en/15.1.60/Online/Content/Flows/flow_SW_Development.htm
[5] https://www.atlassian.com/devops
[6] https://afrin.me/devops-process-flow/
[7] https://wishdesk.com/blog/devops-trends-2019
[8] https://sciencelogic.com/blog/itops-vs-devops
[9] https://www.graylog.org/post/itops-vs-devops-what-is-the-difference