"Platform engineering emerged in response to the increasing complexity of modern software architectures. Today, non-expert end users are often asked to operate an assembly of complicated arcane services. To help end users, and reduce friction for the valuable work they do, forward-thinking companies have begun to build operating platforms that sit between the end user and the backing services on which they rely." —Paul Delory, VP Analyst at Gartner.
DevOps organizations are on a constant quest to discover techniques, methodologies and tools that will improve velocity, security and reliability. It's an inherent part of the practice.
One such groundbreaking approach that's gaining traction is Platform Engineering. In this article, we'll explore Platform Engineering, examine its core principles, highlight its benefits, and explore its impact on the DevOps ecosystem.
What is Platform Engineering: A Definition
Modern software development is like a bustling metropolis with skyscrapers of microservices, overcrowded streets of containers, and Kubernetes clusters painting the skyline. It's a place where velocity thrives, but complexity can quickly lead to operational gridlock even on the best engineered roads.
Enter Platform Engineering. Platform engineering is an approach that teams reusable self-service capabilities with automated infrastructure operations to unlock efficiencies, ensure quality and improve the developer experience throughout the development lifecycle.
At the core of the platform engineering approach is the internal developer portal. The internal developer portal is a web-based interface that allows developers to access the platform's capabilities. The portal provides a single point of entry for developers, and it makes it easy for them to find and use the resources they need.
A developer portal is like a bustling marketplace within our metropolis, offering developers a curated selection of tools, capabilities, and processes, essentially a one stop shop. Platform engineers or devops, who know what developers need for autonomy, select and package self-service capabilities for easy consumption by development teams, also placing the guardrails to ensure developers stay within bounds and policies. The overarching goal? To create a frictionless, self-service developer experience, freeing developers to focus on their core tasks and stay within the flow.
A developer portal is no one-size-fits-all general store; instead, it morphs into precisely what each organization needs. It's as adaptable as the city itself, allowing customization, such as abstracted views by persona (more Kubernetes info for devops users, less for developers), custom self-service actions, scorecards etc. In essence, the internal developer portal serves both as a map of everything software in the organization (using the software catalog) and a central place for developers to perform self-service, made to fit the precise requirements of each developer and team.
How Platform Engineering Works
Let’s look at a suggested set of components that can provide a basic platform (read here for more of this example)
- Resource Management: A Control Plane designed to oversee various resources, including applications within Kubernetes clusters and infrastructure across diverse cloud providers.
- Control Plane Interface: A user-friendly interface for interacting with the Control Plane.
- Version Control with Git: Utilizing Git repositories to store desired configurations and synchronize them with the Control Plane through GitOps practices.
- Database Management: Databases, being integral components, require structured schema management for efficiency.
- Secure Information Handling: To safeguard sensitive data, such as passwords, a dedicated secrets manager is highly recommended.
- Internal Developer Portal: An interface that empowers developers to perform actions like creating new resources and storing them in Git. It should also provide access to a software catalog for comprehensive contextual understanding and appropriate abstractions.
- CI/CD Pipelines: Implementing automated pipelines to perform tasks like creating repositories based on templates and building images with updated release changes to manifests.
Looking at it from a developer's viewpoint, initiating a new application is as effortless as either clicking a button within the self-service section of the developer portal or crafting a streamlined manifest and subsequently pushing it to Git. This very interface also grants developers the capability to oversee application specifics along with their connected dependencies.
Platform Engineering is a versatile toolbox, complete with specialized instruments designed to cater to different facets of an organization's development ecosystem. At the heart of this toolbox lies the developer portal—the cornerstone of Platform Engineering. The portal equips developers with the tools and workflows they need for streamlined, self-sufficient development. It's the key to unlocking productivity and fostering innovation in a complex software metropolis.
The Value of Platform Engineering: Shifting The Focus Towards Developer Experience
Platform engineering is not just another buzzword; it's the answer to the chaos of modern software development. It offers developers a self-service platform that lets them focus on what they do best: writing code. Say goodbye to the days of "ticket ops" and hello to a future where software deployment is a seamless, efficient endeavor.
Platform Engineering is managed by a dedicated Platform Engineering Team. Comprising skilled platform engineers, this team crafts and maintains the platform that underpins the development and operations lifecycle. Employing a platform as a product approach, the platform becomes the canvas upon which development and operational tasks are executed. It abstracts infrastructure management intricacies, allowing developers to concentrate on code creation rather than wrestling with provisioning and configuration intricacies.
Manual processes hinder the speed of delivery, curb productivity, and cause developer frustration. Gartner heralds platform engineering as the solution. By designing reusable tools, automated infrastructure operations, and self-service capabilities, platform engineering prioritizes the developer experience and boosts productivity. It delivers standardized tools, streamlined components, and automated workflows, fostering a collaborative ecosystem.
Internal Developer Portals (IDPs): Your Gateway to Platform Engineering
Within platform engineering emerged a gem that addresses a critical need: the Internal Developer Platform (IDP). In the late 90s and early 2000s, the software world was dominated by gatekeepers, usually SysAdmins. Developers were shackled by the need to pass through these gatekeepers to accomplish anything, resulting in inefficiencies and frustrations.
In the cloud era, DevOps promised to liberate us from these limitations. However, the inherent divide between development and operations persisted. This division led to "shadow operations," where developers took on responsibilities beyond coding and product development.
Taking a "you build it, you run it" allows developers to manage their applications and services independently without heavily relying on devops. Portals let developers do this.
Internal developer portals let the platform engineering team, which builds the portals for the use of developers, to set the optimal level of abstraction for developers in the software catalog, providing developers with the visibility to their apps and services and the ability to perform self-service actions. By facilitating streamlined, self-sufficient development, productivity is boosted and innovation is fostered.
Thus, the internal developer portal is the key to unlocking the full potential of platform engineering. Imagine it as a portal to a realm where developers wield superpowers without friction. It's the platform's interface, offering an elegant user interface for developers to self-service their infrastructure needs. With these portals, developers can swiftly scaffold, deploy, and operate services while experiencing a product-like experience.
Why do we need internal developer portals? The answer is directly related to scale and organization size. For fledgling, nimble startups, traditional practices might suffice. But as the organization grows, complexity looms. The internal developer portal is your trusty sidekick for handling the intricacies of modern software development.
Whether it's microservices, environments, or secret management, these portals streamline the journey, enabling developers to thrive without getting lost in the labyrinth of intricacies.
Traditional Challenges vs. Advantages of Platform Engineering
Principles to Navigate Platform Engineering Success
As organizations embrace Internal Developer Platforms and developer self-service, the pursuit of the right expertise becomes increasingly important. This pursuit is grounded in foundational principles:
- Clear Mission and Role: Platform teams must be seen as dedicated product teams, not mere help desks, serving the internal customer base.
- Treating Platform as a Product: True value lies in catering to app developers' needs and not getting swayed by the allure of cutting-edge technologies.
- Focus on Common Problems: Platform teams protect themselves against reinventing the wheel by addressing shared problems, leveraging both qualitative and quantitative insights.
- The Glue that Holds: Despite misconceptions, platform teams are invaluable—binding the toolchain and enabling seamless self-service workflows.
- Avoiding Redundancy: Instead of reinventing the wheel, platform teams should focus on their unique value proposition instead of competing with enterprises with exponentially larger capacities.
Crafting the Future: What Lies Ahead for Platform Engineering
So what's next? The realm of platform engineering is poised for evolution, where machines and humans interface with the data contained in internal developer portals. Platform engineering isn't just another puzzle piece in the software development mosaic; it's the glue binding agility, collaboration, and innovation. So embrace this paradigm shift, for platform engineering beckons you to navigate the cloudscapes with clarity and purpose. Your journey towards efficient, reliable, and harmonious software development awaits.