Portainer News and Blog

Excel in Platform Engineering by designing efficient self-service delivery platforms

Written by Geoff Olliff | October 31, 2024

A software development and delivery platform enables an organization to centralize and coordinate the entire software delivery chain. In previous articles, we have idealized this as an IT ‘Vending Machine’ as this idea captures the simplified self-service nature of the ideal software delivery platform. (See the previous article here)

The concept of Platform Engineering becomes very complex in a modern, fast-moving IT environment. It relies on the emerging area known as Platform Engineering. So, how do we excel in Platform Engineering?

A well-conceived platform is more than just a concept. It’s a practical solution that equips users with the necessary tools and processes to deploy, test, manage, and use applications. This platform is designed to adapt to the changing needs of the users, which reassures them and boosts their confidence. Ideally, users are eager to use it!

Depending on the organization, platforms typically include infrastructure or cloud services, container orchestration systems like Kubernetes, CI/CD pipelines, alerting, monitoring, and logging tools, backup and data protection tools, security, and several other advanced tools.

💡 Platform Engineering

Platform Engineering is the process of designing, building and operating self service delivery platforms for software development, deployment and management within an organisation. It is the process of creating and maintaining user friendly, self service capabilities on top of highly complex systems & processes to accelerate app dev and app deploy. So its the process of designing and building the vending machine. It’s useful to remember that the platform engineering team is the team responsible for the creation and management of the platform. They are the vending machine service team, keeping the machine healthy, re-stocking, and changing product mix based on user feedback)

For organizations that rely on their development teams, the developer experience will dominate the platform. It will likely be presented as an IDP - Internal Developer Platform, with specific tools and capabilities to assist with developer efficiency and productivity.

However a well conceived and implemented platform eliminates toil (non-value added effort) and can improve efficiency by up to 70% (Gartner 2023). This can benefit a range of users - not just the dev team. In fact Gartner see this as a top initiative for 2023 and 2024.

The great news is that doing platform engineering well does not have to be that hard!

 

The Platform Engineering Team Responsibilities

In the best current examples (and this is an emerging, important area) the platform is seen as an internal product, built with both product management and agile development principles applied. This means that the Platform Engineering Team will act like product managers and carry out several key functions:

  • Identify users and understand their needs

    When done well, platform engineering identifies users and their needs. In many cases, primary users have been the development teams - developers are expensive, and keeping them productive has been a high priority - it's a great way to get better software, faster!

    However as the concept of platforms and platform engineering becomes more widely understood, its easy to see that most organisations will have several groups of users who will benefit from the platform. In addition to devs, users could include:

    • Application owners
    • Application ops teams
    • Test and Quality teams
    • User acceptance and Usability teams
    • Config and deployment teams for off the shelf software (COTS)
    • Finance and Finops
    • Data/AI/ML teams
    • IT Executive (observability and overall cost/performance)
  • Prioritize use-cases

    Because platform engineering is focused on user experience (especially dev experience), and overall productivity, it needs to answer the question “how can we support you with an optimal way forward?”. Like a great product manager, the PE team will identify and prioritize ideas, requirements and dreams.

  • Iteratively build an MVP platform

    Getting the platform right is a process. It starts with addressing the subset of the identified needs that delivers the most value in the shortest time (low hanging fruit).

  • Build a series of ‘paved roads’

    These are carefully curated sets of tools, practices, processes and documentation that are standardized across an organization. Paved roads eliminate the ‘heavy lifting’ for users and reduce or eliminate ‘cognitive load’. Because these are based on direct user feedback, they will be both effective and important (so will be used).

  • Implement measurement and feedback systems

    Devops has shown us a number of simple models to align and accelerate success in projects like building a platform. These include the build/measure/learn loop, or the Devops lazy-8 model. A tangible measure of success is the important part.

  • Agree and maintain service levels with the organization

    Designing and building the platform is not the entire task of the Platform Engineering team. The platform must maintain high availability, while being monitored continually for security and patch requirements. Along with design and build, ‘operate’ is a key responsibility of the team.

Guiding Principles

Even though Platform Engineering is an emerging practice, a set of guiding principles is emerging from the work of Gartner and others. Done well, Platform Engineering will:

  1. Build a platform that is compelling, not mandatory by being demand driven
    1. Internal users are the customer
    2. Find and address the customer’s biggest frustrations or constraints FIRST
    3. Gauge ongoing investment by usage, demand and feedback
  2. Treat the Platform as a Product
    1. Prioritise
    2. Iterate
    3. Version
    4. Document
    5. Train
  3. Create ‘Paved Roads’
    1. Identify and build an easy way through the jungle…
    2. In fact ‘easy ways’ - more than one.
  4. Provide Self Service Consumption tools
    1. Be a Vending Machine!
    2. Consolidate access points - API, portal, even wiki or confluence might be a start
    3. If the platform is harder to use than a vending machine - rethink!
  5. Always be the thinnest possible Platform
    1. Dont Over-engineer
    2. Start small and iterate
    3. Kayak not a cruise liner (Gartner)

 

Getting Started

  1. Find your ‘why’. Where is the pain? Pain points could be:

    • productivity
    • errors and inconsistency in output
    • Cognitive load on the team - too many tools, too much manual assembly,
    • dev and user experience,
    • attrition
  2. Create the ‘paved road’

  3. Measure success

  4. Grow platform capabilities over time

    • PDCA Plan/Do/Check/Act

    • DEVOPS Feedback Loop

Conclusion

Creating a delivery platform to streamline your software development and deployment has the potential to dramatically improve the overall performance of your teams and the quality of their output. By abstracting the complexity of the various underlying technology systems and presenting curated mechanisms to deliver what they need, your team’s output, their satisfaction and their ability to focus on higher value activities will show progressive improvement over time.

Like any new skill or process, Platform Engineering will involve a change process and potentially a cultural shift in approach. However the energy surrounding Platform Engineering is the direct result of the common sense and highly effective approach.