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:
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.
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.
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.
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).
Tools commonly used by Platform Engineers include:
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) 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:
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: