- Implementing Modern DevOps
- David Gonzalez
- 451字
- 2021-07-08 10:11:17
DevOps: Organizational alignment
Up until now, we have looked at how the modern and traditional release life cycle works. We have also defined what a DevOps engineer is and also how they can help with Microservices, which, as explained, are not viable without the right level of automation.
Apart from technicalities, there is something that is extremely important for the DevOps culture to succeed: organizational alignment.
The traditional software development used to divide teams into different roles:
- Business analysts
- Developers
- System administrators
- QA engineers
This is what we call horizontal slices: a team of system administrators has a few contact points with the developers so that they get enough information to deploy and maintain software.
In the modern release life cycle, this simply does not work. Instead of horizontal slices of our company, we need to get vertical slices: a team should be composed of at least one member of every horizontal team. This means having developers, business analysts, system administrators, and QA engineers together...well, not 100%.
With the DevOps philosophy, some of these roles become irrelevant or need to evolve. The idea is that a single team is able to build, deploy, and run an application on its own without anything external: this is called cross-functional autonomous team.
In my professional experience, cross-functional teams are the best organization for delivering high-quality reliable products. The product is run by people who build; therefore, they know it inside out. A combination of analysts (depending on the nature of the business), developers, and DevOps engineers is all you need to deliver high-quality software into production. Some teams might as well include a QA engineer, but in general, automated testing created by DevOps and developers should be the holy grail: it is impossible to release software in a continuous delivery manner without having good code coverage. I am a big fan of the analyst being the one that tests the software as he/she is the person who knows the best the requirements and is, therefore, the most indicated to validating them.
The DevOps engineer plays a cross-cutting role: they need to know how the application is built (and possibly be part of its development), but their focus is related to the operation of the app: security, operational readiness, infrastructure, and testing should be their day-to-day job.
I have also seen teams built entirely by DevOps engineers and analysts without any pure developers or QAs. In this variant, the DevOps engineers are responsible for the infrastructure part as well as the application development, which can be very challenging depending on the complexity of the system. In general, every case needs to be studied in isolation as DevOps is not a one size fits all product.
- Google Flutter Mobile Development Quick Start Guide
- Java Web基礎與實例教程(第2版·微課版)
- Python高級編程
- Quarkus實踐指南:構建新一代的Kubernetes原生Java微服務
- Kinect for Windows SDK Programming Guide
- PhoneGap Mobile Application Development Cookbook
- SharePoint Development with the SharePoint Framework
- 利用Python進行數據分析(原書第3版)
- 零基礎學單片機C語言程序設計
- Instant Nancy Web Development
- C++20高級編程
- Python網絡爬蟲技術與應用
- Mastering Python
- HikariCP數據庫連接池實戰
- 產品架構評估原理與方法