Platform Engineering

What is Platform Engineering?

Platform Engineering is a discipline within the field of software development and IT operations that focuses on designing, building, and maintaining the underlying infrastructure, frameworks, and tools that support the development, deployment, and operation of applications. It aims to create a robust and scalable platform that enables development teams to efficiently build and deliver software in a consistent and reliable manner.

Key aspects of Platform Engineering usually include:

  • Automation: Emphasizes the use of automation tools and practices to streamline processes, reduce manual interventions, and ensure consistency in infrastructure management.
  • Infrastructure as Code (IaC): Involves treating infrastructure configurations as code, allowing for versioning, collaboration, and reproducibility in managing infrastructure components.
  • Containerization: Utilizes container technologies such as Docker to package applications and their dependencies, ensuring consistency across various environments.
  • Orchestration: Involves the orchestration of containerized applications, managing their deployment, scaling, and operation, often using tools like Kubernetes.
  • DevOps Integration: Collaborates closely with DevOps practices to align development and operations, promoting a culture of collaboration and shared responsibility.
  • Scalability and Resilience: Focuses on creating platforms that can easily scale to meet increasing demands and are resilient to failures or disruptions.
  • Cloud-Native Technologies: Leverages cloud services and architectures, emphasizing cloud-native principles for agility, scalability, and cost-effectiveness. Often there is an emphasis on application modernization above just (“lift-n-shift") migration. Platform engineers are often responsible for managing the complexities of hybrid cloud approaches.
  • Microservices Support: Adapts platforms to support the development and deployment of microservices-based architectures, enhancing modularity and maintainability.
  • Continuous Integration/Continuous Deployment (CI/CD): Implements CI/CD pipelines to automate the testing, integration, and deployment of software changes, ensuring rapid and reliable delivery.
  • Monitoring and Observability: Includes robust monitoring and observability practices to track the health, performance, and security of applications and infrastructure. Monitoring tools with AIOps capabilities are commonly used.

Platform Engineers collaborate with development teams to provide them with a stable and efficient environment, allowing developers to focus on creating features and applications without worrying about the intricacies of the underlying infrastructure. The goal is to accelerate software delivery, improve reliability, and enable organizations to respond swiftly to changing business requirements.


What’s the difference between site reliability engineering and Platform Engineering?

Site Reliability Engineering (SRE) focuses on operational aspects, minimizing incidents and enhancing system reliability. Platform Engineering centers on building and managing infrastructure to streamline software development. SRE deals with existing systems' reliability, while Platform Engineering creates a foundation for efficient application development and deployment in dynamic environments.


How does Platform Engineering relate to DevOps?

Platform Engineering is closely aligned with DevOps, serving as a technical enabler for its principles. While DevOps emphasizes cultural collaboration, Platform Engineering concentrates on creating the infrastructure and tools that facilitate seamless implementation of DevOps practices. Platform Engineers focus on building a robust foundation, incorporating automation, containerization, and orchestration, which, in turn, supports the DevOps goal of accelerating software delivery. Together, they form a symbiotic relationship, with Platform Engineering providing the technical underpinnings necessary for DevOps success, encouraging and enabling efficiency, scalability, and reliability throughout the software development lifecycle.


What does a Platform Engineer Do? How can I become a Platform Engineer?

Understanding what platform engineers do provides a good insight into platform engineering. There are lots of great resources available to understand the role of a platform engineer and what skills and training they are likely to need, see:

Not all organizations have a platform engineering team, Gartner have an article explaining the benefits some organization may find from having a dedicated platform engineering team and platform owner, see: What It Takes to Build A Platform Engineering Team (gartner.com).


Popular Tools for Platform Engineering

Tools commonly used by Platform Engineers include:

  • Containerization Tools: Docker, Podman
  • Container Orchestration: Kubernetes, Docker Swarm, OpenShift
  • Infrastructure as Code (IaC): Terraform, Ansible, Chef, Puppet
  • Continuous Integration/Continuous Deployment (CI/CD): Jenkins, GitLab CI, CircleCI
  • Cloud Services: AWS, Azure, Google Cloud
  • Monitoring and Logging: Prometheus, Grafana, ELK Stack
  • Collaboration and Communication: Slack, Microsoft Teams
  • Version Control: Git, GitHub, GitLab, Bitbucket

Platform engineers do a lot of automation often within IaC (Infrastructure as Code) workflows and are generally proficient in scripting languages (e.g., Python, Bash, PowerShell) for automating tasks and workflows.


Platform-as-a-Service (PaaS)

Platform as a Service (PaaS) is a cloud computing model that provides a comprehensive platform for developers to build, deploy, and manage applications without the complexity of handling underlying infrastructure. PaaS abstracts away the intricacies of server management, allowing organizations to focus on application development and deployment. Examples include: Platform.sh, Heroku, and Google App Engine who offer PaaS solutions which streamline workflows by providing pre-configured environments and automating tasks such as scaling and load balancing. Organizations opt for PaaS to enhance development efficiency or where they do not have resources or skills in-house to have a dedicated platform engineering team, as it reduces time spent on infrastructure management and allows teams to concentrate on coding. The benefits may include faster time-to-market, increased collaboration, simplified deployment processes, and automatic scaling, enabling organizations to adapt to changing business needs while optimizing resource utilization and minimizing operational overhead.

Further information:


Real world examples and case studies of Platform Engineering

There are numerous real-world case studies of platform engineering strategies and projects, these may help give an understanding of how platform engineering teams fit into organizational hierarchies, see: