Elevating IaC Workflows with Spacelift Stacks and Dependencies 🛠️

Register for the July 23 demo →

General

What is Platform Engineering? Role, Principles & Benefits

What Is Platform Engineering?

In this article, you’ll learn what platform engineering is, the main responsibilities of a platform engineer, and the value platform engineering teams bring.  We’ll cover some best practices for implementing platform engineering and explain how they benefit your software workflows.

What we will cover:

  1. What is platform engineering?
  2. The principles of platform engineering
  3. Benefits of platform engineering
  4. What do platform engineers do?
  5. How to build a modern platform engineering team?
  6. Platform engineering tools
  7. Platform engineering best practices
  8. Common misconceptions about platform engineering

What is platform engineering?

Platform engineering is the process of designing and implementing toolchains that streamline software development and delivery by providing a unified, self-service platform for developers. The platform, called an “Internal Developer Platform,” acts as a bridge between developers and the infrastructure, streamlining complex tasks that would be impractical for individual developers to handle independently.

Self-service access is a defining characteristic of effective platform engineering, enabling developers to utilize necessary capabilities without relying on other teams, like Operations and Infrastructure. This autonomy reduces bottlenecks, such as the need for approval to create new staging environments, allowing developers to instantly start isolated environments with a simple command, thereby maintaining productivity without deep infrastructure knowledge.

platform engineering

Why use platform engineering?

Platform engineering will benefit your organization in many ways: it streamlines and standardizes the development and deployment process, enhances developer velocity, improves reliability and performance, and increases the overall scalability of your infrastructure and applications.

The principles of platform engineering

Platform engineering combines several technologies and methodologies to produce a holistic development experience:

  • Automation and IaC — Infrastructure should be automated and reproducible. IaC tools are used to define what the platform should look like and enable new instances to be created on-demand. Manual actions are kept to a minimum to eliminate friction points in the development flow.
  • Focus on efficiency — The platform should be designed to solve the most common challenges encountered by developers. Focus on supporting the unique needs of your teams instead of trying to recreate functionality that already works well. Rolling your own CI/CD or source control system is unlikely to be beneficial, for example, but providing a mechanism that mirrors a snapshot of your production infrastructure into a fresh staging environment could save developers hours each week.
  • Self-service access — Every part of the platform should be an asset that developers can freely utilize. You’re providing a toolbox of controls for developers to use as they see fit. Avoid prescribing specific usage patterns, as individual engineers may work in slightly different ways.
  • Continual evolution — The platform should be continually developed using the same product-driven mindset you apply to customer-facing functionality. The “customer” happens to be internal developers, but it’s still vital that improvements are implemented promptly, so the platform effectively meets their needs. This ensures developers stay productive over a sustained period of time.

Each one of these principles revolves around simplifying the development experience. It’s the job of platform teams to listen to development teams, then provide the toolchains they require.

Benefits of platform engineering

Organizations can be hesitant to invest in platform engineering. A common concern is whether the engineers working on the platform would be better utilized within the main product team. Here are four reasons why you should commit to platform engineering.

Accelerating development

Internal platforms accelerate development. Automated processes and self-service infrastructure help keep developers productive. They’re able to continually move forwards on the product features prioritized by the business.

Once a feature is ready, the development team can spin up a new test environment to autonomously verify the change. The platform can perform automated tests and then ship the feature to customers in production while developers start work on the next task. This reduces your time to market without compromising on quality.

Promoting focus and specialization

Developers should be able to focus on what they’re best at: development. Modern infrastructure, CI/CD, and distributed deployment systems are dedicated specialisms. Developers don’t need to be experts in these fields and may sometimes struggle to understand them.

Platform teams enable developers to stay productive by concentrating on building new software. The platform engineering team can be staffed with experts skilled in relevant topics such as IaC, CI/CD, and PaaS solutions. Advancements in both development and infrastructure will proceed more quickly as each individual will be specialized in their role.

Ensuring tools and processes continually develop

Development processes need to evolve as your product grows. Over time, your stack expands with additional technologies and new requirements. You might introduce a new storage system, require more comprehensive end-to-end tests, or have to comply with another regulatory standard.

Platform engineering ensures your toolchain develops in tandem. Without it, you have to make ad-hoc workflow adjustments, which can be poorly documented and difficult to maintain. Moreover, developers often lack the time to make the optimizations they require. This perpetuates the use of inefficient practices after they’ve been recognized as a bottleneck. Providing devs with access to a platform engineering team allows frustrations to be addressed without delaying the product’s release schedule.

Improving developer experience (DevEx)

Platform engineering improves DevEx through regulated self-service infrastructure. If your developers require infrastructure provisioning to test their applications, they can easily use the self-service mechanism the platform team provides, and without needing any other input from them, they will be able to test their application. This reduces the time spent on testing new features, resulting in faster deployment and, thus, faster time to market.

What do platform engineers do?

Platform engineers handle tasks that help application developers work more efficiently, such as preparing CI/CD pipelines, setting up staging environments, and configuring Infrastructure as Code (IaC) to automate cloud resource provisioning.

Platform engineers create new tools and workflows for developers to use. They produce an integrated environment for building, testing, and iterating upon changes. 

Roles and responsibilities in platform engineering teams

Platform engineers have several responsibilities. They’ll discuss challenges with development teams and then act upon their insights to build internal platforms. This can include the following tasks:

  • Configuring IaC tools to provision new infrastructure on-demand.
  • Working with existing infrastructure and operations teams to “narrow the gap” between dev and prod.
  • Implementing and maintaining CI/CD pipelines that automate inefficient workflows.
  • Creating bespoke internal tools to accommodate org-specific workflows, enforce security policies, and maintain compliance with regulatory standards.
  • Building, maintaining and documenting custom APIs, CLIs, and web UIs that expose the platform’s functionality. This could be an API that exposes the number of errors in each environment or a CLI that pushes local code straight to a new sandbox.

Building Internal Developer Platforms (IDPs)

The platform team work often culminates in the form of internal Developer Platforms (IDPs). Developers get to deploy their applications onto infrastructure using a fully automated workflow that requires no specialist knowledge. This platform coordinates complex procedures such as creating cloud resources, deploying containerized microservices, setting up networking, and seeding any test data the developer requires.

Does a platform engineer code?

Platform engineers need to code, especially because all the things they do should be reusable. Even if they are using a declarative IaC tool such as OpenTofu, they need to know how to use loops, conditionals, and modules to create reusable components

How to build a modern platform engineering team?

platform engineering team

Your platform engineers should work closely with SREs, Cloud Architects, and Security Engineers to build a successful platform. Platform engineers should be experts in IaC (OpenTofu, Terraform, Pulumi, etc.) and Cloud technologies (AWS/Azure/GCP depending on the cloud provider the organization is using). 

Read more: How to implement platform engineering?

In addition, they should ensure the platform’s reliability, scalability, and performance while ensuring the necessary standardization and governance. This means they should have expertise in CI/CD, monitoring, observability, governance, and compliance tools.

Types of platform engineering tools

Platform engineering encompasses various areas, including cloud services, containers, automation, monitoring, and more, so it offers many tools:

Type of tool Examples
Cloud Services AWS, Microsoft Azure, Google Cloud, Oracle Cloud, etc.
Version Control Systems GitHub, GitLab, BitBucket
Infrastructure as Code (IaC) Terraform, OpenTofu, Pulumi, AWS CloudFormation
IaC Management Platforms Spacelift
Containerization Docker, Podman
Orchestration  Kubernetes, Docker Swarm
Configuration Management Ansible, Chef, Puppet
CI/CD Jenkins, GitHub Actions, CircleCI, GitLab CI
Monitoring Prometheus, Grafana, ELK Stack (Elastic Search, Logstash, Kibana)
Security Open Policy Agent, AWS Secrets Manager, Vault
Programming Languages Python, Golang, Bash, Powershell

Platform engineering best practices

You need to consider many aspects when you adopt platform engineering. Let’s take a look at some of the best practices:

  1. Store your code in a VCS – This improves collaboration, tracks changes, and can facilitate reverting to a previous state when errors appear.
  2. Adopt IaC – Automate and provision your infrastructure to reduce manual repetitive costs and minimize human errors.
  3. Implement CI/CD – Reduce deployment times, automate builds/tests, and ensure reliability.
  4. Increase Observability – Monitor the health and performance of your applications and infrastructure. Ensure logs are collected and easily accessible for troubleshooting.
  5. Improve Security – Use the least privilege principle, manage secrets securely, and scan regularly for security vulnerabilities.
  6. Build for scale – Design your infrastructure for scaling out rather than scaling up (this will ensure you add more instances to your workload, rather than more resources for one instance) and also design for failure by implementing high-availability and disaster recovery mechanisms.
  7. Optimize usage – Ensure your resources are used efficiently and optimize costs.
  8. Improve documentation and knowledge-sharing – Promote a culture of collaboration between teams and share the necessary resources to understand the architecture, configurations, and processes.

Common misconceptions about platform engineering

Automation, testing, monitoring, and IaC: these characteristics are already familiar to DevOps practitioners and SREs, so what sets platform engineering apart?

Platform engineering vs DevOps

Platform engineering shouldn’t be viewed as an alternative to DevOps. It’s more accurate to treat it as an implementation of DevOps concepts and philosophies. The overarching aim of DevOps is to simultaneously improve software quality and throughput using new tools, processes, and collaboration frameworks. Platform engineering is an example of what this looks like in practice.

Providing developers with self-service access to infrastructure shortens the feedback loop and reduces complexity. This enables more focused work on forwards-facing tasks relevant to your business aims. Platform engineering accelerates the development cycle, which achieves the objectives expressed by DevOps.

In summary, platform engineering sits separately from DevOps but is usually part of a DevOps strategy. Seen from the other side, DevOps is more than just platform engineering, as a complete DevOps flow will extend beyond internal development tasks to deliver and manage code in production.

Platform engineering vs SRE

Platform engineering neighbors Site Reliability Engineering (SRE), too. SRE’s main purpose is to preserve the stability of your production environments. These teams use objective data-driven targets such as SLAs and SLOs to identify when incidents materially affect your customers or your business. SRE then manages the incident resolution, analyzes what went wrong, and implements changes to prevent the problem from recurring.

Because platform engineering looks at internal systems, it doesn’t directly overlap with SRE. SRE produces infrastructure that’s optimized for highly reliable operations. Platform engineering creates assets that facilitate high-velocity development.

Information should be shared between the disciplines, though, as insights from one field are often valuable to the other. Difficulties encountered while setting up an internal workflow could reveal opportunities to simplify production infrastructure, for example. The idea is not to silo off the concerns but instead keep them as complementary philosophies that you can iterate upon.

Enhancing platform engineering with Spacelift

Spacelift offers all the mechanisms required to build a successful platform:

1. Policies

With policies, you can control what kind of resources people can create, what kind of parameters these resources can have, build custom policies for third-party tools you integrate into your workflow, control how many approvals you need for runs, and more:

platform engineering spacelift policies

In the above example, we are enforcing a couple of mandatory tags for our resources (Name, env, and owner).

2. Stack dependencies

With stack dependencies, you can build dependencies between your configurations, and even share outputs between them. You don’t have any constraint to the number of dependencies you want to create, and whenever a parent configuration finishes a run successfully, it will trigger runs to its children. As Spacelift supports multiple infrastructure tools, you can build dependencies between them, so a parent stack can use OpenTofu for example, and a child stack can use Kubernetes.

3. Blueprints

Blueprints enable you to configure every aspect of your stack, including governance and compliance. With blueprints, you can create self-service infrastructure, and by this your developer velocity will increase considerably.

spacelift blueprints platform engineering

4. Cloud integrations

Static credentials are easily intercepted and can be used with malicious intent. Spacelift understands that, so it offers you the ability to integrate natively with AWS, Microsoft Azure, and Google Cloud to generate dynamic credentials. Based on the roles you are using, these integrations can offer as few or as many permissions as you want:

platform engineering cloud integrations

5. Spaces

Spaces help you implement RBAC, and give partial admin rights to your users.

In the above example, if you give a user admin rights to the resources space, and no other rights, he will have all permissions to the resources and production space, but he won’t be able to even view resources in other spaces.

6. Contexts

Contexts are logical containers that can be shared between multiple configurations and contain environment variables, mounted files, and lifecycle hooks, making it easier to ensure reusability and idempotency.

spacelift contexts platform engineering

7. Drift detection and optional remediation

Infrastructure drift can be one of the worst problems you can have because if, for example, you fix something manually and then apply the code again at a later time, you will reintroduce the bug into your configuration.

Spacelift offers a drift detection mechanism that runs a schedule that informs you about drift and can optionally remediate it:

spacelift drift platform engineering

8. Resources view

With Spacelift, you can see all the resources that have been deployed into your Spacelift account (based on the permissions you have), details about them and their health:

There are other features that Spacelift offers that enable you to enhance your platform’s capabilities.

Key points

Platform engineering is the practice of building and maintaining internal toolchains that support software delivery workflows. A dedicated platform team implements tools and processes with self-service capabilities that enhance developer productivity and provide them with access to infrastructure.

Companies that pursue platform engineering can acquire a competitive edge in their field, since platform engineering team binds the goal of aligning development practices with business priorities. Development teams can work more autonomously without constantly waiting for approvals from infrastructure admins, which means more time spent adding new features to their products.

Platform engineering doesn’t mean you have to create everything from scratch. Take a look at Spacelift to start building the internal platform you need. Spacelift offers collaborative CI/CD for your infrastructure and workflow automation, letting you unlock developer freedom while retaining precise security guardrails.

The Most Flexible CI/CD Automation Tool

Spacelift is an alternative to using homegrown solutions on top of a generic CI. It helps overcome common state management issues and adds several must-have capabilities for infrastructure management.

Start free trial

The Practitioner’s Guide to Scaling Infrastructure as Code

Transform your IaC management to scale

securely, efficiently, and productively

into the future.

ebook global banner
Share your data and download the guide