The Myth of DevOps: Why Developers Hesitate to Embrace Ops
Written on
Chapter 1: Understanding the DevOps Paradigm
The title "DevOps is dead, platform engineering is the future" was initially considered, but it may come across as too definitive. Instead, the term "nonsense" was chosen to describe DevOps, albeit in a less than civil manner. This piece aims to reassess DevOps and platform engineering, dissecting the respective principles of each, while closely examining the core tenets promoted by platform engineering.
The Aspirations of DevOps
In 2009, the DevOps concept was introduced, highlighting the importance of team collaboration, automation tools, and process enhancement to accelerate the quality and pace of software development and deployment. Fast forward nearly 15 years, and it has become evident that the anticipated outcomes have not materialized as expected. Within our organization, we've observed that the expenses associated with software delivery remain elevated. Tools like J-ONE, JDOS, and the current Xingyun Deployment platform continue to impose certain costs on developers during their routine deployment and release processes. This issue appears to extend beyond mere tool-related challenges.
DevOps promotes collaboration between development and operations teams, emphasizing the significance of automation and tools. However, it lacks specific guidance for development direction, which has paved the way for the emergence of Platform Engineering. While the origin of this term is unclear, a tweet in July 2022 proclaiming "DevOps is dead; long live Platform Engineering" quickly gained traction in both domestic and global DevOps communities.
The first video, titled "DevOps is Terrible," critiques the difficulties and perceived failures of the DevOps model, highlighting the frustrations developers face.
Chapter 2: The Rise of Platform Engineering
Platform Engineering is a fresh approach to operations and maintenance, asserting that internal development platforms should empower technical personnel with self-service capabilities. A key principle is to abstract the complexity of the infrastructure, providing development teams with adaptable toolchains and workflows. This empowers them to independently address challenges without needing extensive platform involvement, enhancing both the speed and quality of software delivery.
Defining Platform Engineering
Platform engineering encompasses the design and construction of toolchains and workflows that furnish self-service capabilities for software engineering teams in a cloud-native landscape. The integrated offerings from platform engineers are known as "internal developer platforms," addressing operational needs throughout an application's lifecycle. While definitions may vary, they commonly advocate for self-service to mitigate the complexities and uncertainties tied to foundational infrastructure support tools, streamline workflows, and enhance user experience while boosting productivity.
DevOps and Platform Engineering share a common goal of improving software development and deployment efficiency and quality, yet their focuses and methodologies diverge. Platform Engineering prioritizes the creation of reusable platform architectures and scenario-based capabilities, while DevOps emphasizes collaboration, automation, and process improvements.
Gartner recognized platform engineering as a top strategic trend in 2023, reaffirming its significance in their Top 10 Technology Trends for 2024 report, which underscores its growing prominence in the industry.
The second video, "Is DevOps Good Or Bad?" delves into the ongoing debate surrounding DevOps, exploring its benefits and drawbacks in the modern software development landscape.
Chapter 3: The Reluctance of Developers to Engage in Operations
Despite DevOps promoting collaboration and urging developers to undertake operational responsibilities, achieving this in practice is often challenging. Several factors contribute to this reluctance:
- Emphasis on Core Development: Developers typically prioritize their primary software development tasks, leaving little time and energy for additional responsibilities, which may impede their progress.
- Lack of Familiarity or Interest: Developers may lack the necessary experience for operational tasks or simply be disinterested, leading to a disengagement from operations.
- Operational Complexity: Operations involve critical production environments where mistakes can have severe consequences, including system failures and data loss. Consequently, the weight of operational responsibilities can create significant pressure on developers.
- Inadequate Tools and Support: A lack of intuitive and efficient automation tools can hinder operations, forcing reliance on manual processes that increase complexity.
These factors elucidate why developers may be hesitant to assume operational duties. The essence of operations and maintenance lies in ensuring system security and stability, which entails constant monitoring and handling daily operational tasks such as resource management and troubleshooting.
Recent incidents at major firms highlighting online stability failures have raised alarms across the industry. These failures serve as a reminder that pursuing speed and convenience should not come at the expense of operational safety.
Understanding the Nature of Operations
Ensuring the stability of production environments is less about technology and more about meticulously executed details. Achieving stability demands substantial investment, yet recognizing this effort can be challenging. A common industry joke suggests that developers who write bug-free code often remain unnoticed, while those who frequently introduce bugs may thrive due to their visibility in fixing issues. This perception contributes to developers' reluctance to take on operational roles.
Platform Engineering offers a promising solution to these challenges, aiming to refine the software delivery process.
Chapter 4: Key Factors for Advancing Platform Engineering
To successfully implement platform engineering within an organization, several crucial aspects must be addressed:
- Defining Platform Scope: Establish authoritative tools for continuous investment and iteration to prevent redundancy and cost wastage.
- Cultivating a Platform Culture: Understand that the platform primarily serves technical developers while also considering management perspectives.
- Setting Clear Objectives: Focus on building scenario-based tools that empower technical staff to self-serve within the platform.
- Designating Platform Owners: Clarifying responsibilities is essential, as internal platform development cannot be centralized in one department.
- Identifying Requirement Sources: Prioritize development needs while balancing user experience to avoid unnecessary costs stemming from large-scale version upgrades.
- Developing a Rich API: Ensure internal platforms come equipped with comprehensive APIs and documentation to support developers effectively.
In summary, we explored the promotion of platform engineering from a holistic perspective. The next discussion will focus on the essential qualities that tools under platform engineering should possess.
Chapter 5: Attributes of Effective Platform Engineering Tools
Internal tools are paramount compared to consumer-facing products, as employees often lack the choice to select alternatives. To create tools that genuinely satisfy internal users, the following attributes are essential:
- Productization: Internal tools should be designed to serve the entire organization rather than just select individuals or teams.
- User Experience: Prioritize user experience by offering intuitive interfaces and shielding complex backend logic to minimize usage costs.
- Integration: Beyond merely aggregating tools onto a platform, create application-centric workspaces that encompass all necessary functionalities for specific scenarios.
- Self-Service Capability: Enable users to perform all necessary functions independently, akin to withdrawing cash from an ATM without bank staff assistance.
Chapter 6: Future Perspectives on Platform Engineering
Leading companies like Google, Spotify, and Netflix are actively adopting platform engineering strategies. The CNCF recently released a Capability Maturity Model for Platform Engineering, categorizing it into four levels across five dimensions. This model emphasizes the importance of team dynamics, platform applications, user experience, self-service, and iterative development, although it lacks granular detail on platform functionalities.
Gartner forecasts that by 2026, 80% of software engineering organizations will establish platform teams, with 75% incorporating developer self-service portals. These teams will serve as internal providers of reusable services, tools, and components for application delivery.
Clearly, platform engineering is not merely a passing trend; it represents the future of software delivery.