This blog discusses:
- What platform engineering is
- When using these practices will provide the most significant benefit
- What the core platform engineering principles are
- How best to start using platform engineering principles to deliver an effective engineering platform
Why we need platform engineering
Platform engineering is an exciting evolution of DevOps culture and practices that is revolutionizing the ability of many organizations to quickly and reliably deliver software to production. Though there is an internal cultural aspect to DevOps, far too often it just becomes a “team.” Product developers tell DevOps what they need, and DevOps creates it — frequently with a complex combination of manual and automated infrastructure-as-code practices.
Over time and at scale, the general pace and complexity of IT work ends up being unsustainable. Improvements in quality are often used to justify the effort. While the boost in quality is valuable, it’s important to remember that DevOps originally emerged to keep up with the faster development cycles that the market demands. This remains a challenge for most organizations.
Instead, if we start thinking of DevOps as a product team that builds and delivers an infrastructure product, and we design and engineer with this goal in mind, we open the door to a completely different outcome. It allows teams to operate in a more autonomous way during the development process, leading to faster delivery of features.
As teams start to operate their own software in production, platform engineering practices provide a way to do so with less cognitive load and complexity leading to software stability and quick issue resolution.
A platform engineering case study
Editor’s note: This blog series is excerpted from the Manning MEAP (Manning Early Access Program) book, Effective Platform Engineering. In MEAP, you read a book chapter-by-chapter while it’s being written and get the final eBook as soon as it’s finished. In the book, the authors imagine working for a company called PETech that is facing problems with efficiency around practices deploying and operating software to production. These challenges are similar to situations seen in many real companies and serve as a great way to illustrate the platform engineering discussion. You can click into this blog to get more details about PETech’s profile and how it relates to lessons in platform engineering.
Now let’s dive in!
To begin our journey, let’s imagine an end state for our profile company explained above — PETech: Setting up for success was like opening a portal to a realm of efficiency.
It took half a year to roll out a change in the previous state, facing hurdles at every step. However, with the changes we implemented, it defied the odds, slashing the timeline from months to a mere hour. The bottlenecks that once plagued the process – security concerns, auditing nightmares, compliance headaches, change control dilemmas, and spiraling costs – are now gracefully overcome.
But how was PETech able to accomplish this feat?
Dismantling siloed functions
The secret lies in dismantling siloed functions and optimizing the elements that traditionally bog down the deployment process. Security, deployment, and other critical governance aspects are streamlined and automated, allowing for an efficient workflow that catapults the company into a new era of technological prowess.
As we embark on this learning journey about platform engineering, it’s crucial to understand the principles underpinning this radical transformation. From defining efficient ways to develop, test, deploy, and monitor the code, to addressing security and governance concerns with a finesse that incorporates modern software techniques, PETech has implemented a comprehensive and exhaustive list of principles that make deployment efficiency a goal and a reality.
The essence of platform engineering is intentionally addressing the problems like PETech was seeing and delivering the outcomes of engineering efficiency. Still, deployment efficiency is merely the tip of the iceberg. Platform engineering, as showcased by PETech, is about unlocking possibilities, breaking barriers, and reshaping the future of technology to create more efficient and effective ways to build and deliver software products. Together, we will redefine the landscape of platform engineering.
This series of blogs, which are excerpted from a Manning book, shows how to effectively start using platform engineering practices in your organization to build and deliver engineering platforms. You’ll see how platform engineering practices enable:
- Fast onboarding of new teams and services
- Increased deployment frequency to production
- A more remarkable ability to minimize and quickly recover from production issues.
In this blog, you will learn:
- What platform engineering is
- When using these practices will provide the most significant benefit
- What the core platform engineering principles are
- How best to start using platform engineering principles to deliver an effective engineering platform
Defining platform engineering
The number of articles, posts, and conference tracks on platform engineering has increased dramatically over the last few years. Yet, these sources can have very different ideas about what it means, why it matters, or what good looks like. Why is it so hard to define?
Platform engineering seems hard to define because it is a strategy targeted at a central challenge in modern software development: How do I rapidly and sustainably deliver software experiences to customers, given the constantly evolving technologies, the extensive governance and operational requirements, and the critically essential security challenges? Platform engineering is an approach to solving this challenge.
We define effective platform engineering as a craft that is:
- Composed of the architectural, engineering, and product delivery disciplines
- Applied by dedicated development teams with broad domain knowledge and product ownership
- Delivered as an engineering platform that provides internal software development teams access to the tools and technologies they need to innovate, create, release, and operate their software
- Providing self-service and seamless access to all platform functions
- Minimizing the need for non-development tasks, and cross-team engineering delays
- Decreasing the cognitive load required to meet all security, governance and compliance
- Succeeding as measured by clear business goals that can be regularly reported against with observable metrics.
Think of this as analogous to an oven with pre-programmed buttons for different types of food.
If a company designed, architected, and manufactured an oven that could cook any recipe with the push of a button (a microwave maybe?) it would be much easier to experiment with new recipes. You could simply put together ingredients, hit the right button, and enjoy your creation!
So how can we use platform engineering to make something analogous to this magical oven? That’s where engineering platforms come into play.
Effective Platform Engineering Manning Book: Learn how to quickly and reliably deliver software to production
What is a platform engineering platform?
As described in the definition above, a modern engineering platform is the product delivered by a platform engineering team to enable development teams to operate more efficiently.
An engineering platform can provide teams with a “paved road” to deploy and operate software from build to production release.
It will remove cognitive complexity and enable teams to get started day-one of a new effort to release to production. Figure 1.3 shows the relationship between a platform engineering team and the consumer software product development teams.
Engineering platform components
An engineering platform is a collection of the technologies, tools, and knowledge needed by the majority of teams within the organization to:
- Deliver their software quickly to production
- Safely experiment with the features and capabilities the software provides to customers
- Operate it over the long term, all while remaining secure and compliant
Engineering platform components could include:
- CI/CD systems
- Pre-defined build and release steps that include compliance and security best practices
- Reusable infrastructure definitions that can be easily applied
- A hardened runtime environment such as kubernetes, and many more capabilities
The components of the engineering platform should be defined and implemented as part of a single, unified product roadmap that is prioritized according to the needs of its users — the engineers. The goal? When using the engineering platform, teams should be able to continue to deliver value to the organization without many of the common engineering friction points and delays usually experienced.
Most of the time, if you ask a stakeholder what is responsible for that engineering friction and delay, they will point to operational, security, and governance requirements as being the unavoidable cause.
Systems must indeed be healthy and secure, protecting customer and business data. Laws and regulations must be followed so that a business can be in compliance and maintain customer trust. So, how do you engineer and deliver a platform product that removes the friction yet still meets the requirements?
That is the professional goal of platform engineering. Platform engineering skills are how an effective engineering platform is delivered.
In the next blog in this series we’ll break down foundational platform engineering practices.