Platform engineering is a discipline that focuses on the design, development, and maintenance of the underlying platform that supports the development and deployment of modern applications. Platform engineering sprang from the DevOps movement and, when implemented properly, helps organizations optimize their development processes and reduce overall cycle times. Platform engineering teams focus on creating and maintaining a platform that supports the development and deployment of applications, services, and infrastructure. They also help provide the tools developers need to deploy software securely and quickly, resulting in a curated experience and a paved path to production. This allows organizations to reduce the cost of operations, speed up development, and increase the visibility of their resources. Using DevOps techniques, platform engineering teams can help organizations respond more quickly to market demands and fluctuations while improving the reliability and security of their business applications. Adopting and implementing continuous integration/continuous delivery (CI/CD) and GitOps are integral to a successful platform engineering practice.
CI/CD is a critical practice in application platform engineering that involves automating the build, test, and deployment processes for an application. This allows developers to quickly and easily make code changes and see those changes reflected in the live application. CI/CD pipelines are typically implemented using a version control system, such as Git, and a set of tools that automate the build, test, and deployment processes.
GitOps is a specific approach to CI/CD that involves using Git as the single source of truth for both the code that runs an application and the infrastructure that it runs on. In a GitOps workflow, changes to the application and its infrastructure are made by committing code to a Git repository, which triggers automated processes to build, test, and deploy those changes. This allows for more robust and traceable deployments, as all changes are tracked and versioned in Git.
Platform engineering in the modern cloud
Platform engineers are responsible for designing, building, and maintaining the infrastructure that supports the deployment and operation of applications. Platform engineering focuses on what might be traditionally thought of as “middleware,” at the center of which was the application platform. Today’s cloud native environments have multiple names for it and, regardless of what you call it, it usually involves working with containers. In modern, cloud native environments, this involves use of container orchestration tools like Kubernetes and leveraging cloud services from providers like AWS, Azure, and Google Cloud Platform.
Another critical factor of a successful platform engineering team is that it requires a platform-as-a-product mindset. This product mindset is different from the way infrastructure and operations (I&O) has traditionally approached software infrastructure, or middleware. It requires a deeper understanding of developer needs and how the platform can help them achieve their goals.
To build a successful product, we need to answer three questions:
- Will it solve our users' problem?
- Will it help our business?
- Can we build it well?
An elevated developer experience (DevX) is one of the outcomes for platform engineering, from developer onboarding and pushing their code to production, to reviewing actionable insights from production operations. A platform that is treated as a product ultimately makes you more competitive because platform engineers are there to continuously add differentiating features and capabilities; they can shape and create an experience that allows developers to build better software more quickly and securely. In short, by treating the application platform as a product, and internal dev teams as customers, platform engineers can help positively affect business by improving developer velocity, bolstering security throughout the app dev and delivery process, realizing new system efficiencies and cost savings, and fostering innovation.
Platform engineers must be able to think beyond maintenance of the platform and focus on the user experience and how the platform can help them be successful.
There are different types of platform engineers, each with a specific focus. Data platform engineers are responsible for designing and building the infrastructure that supports the storage, processing, and analysis of data. Meanwhile, cloud platform engineers focus on building and maintaining the infrastructure that supports cloud computing. This includes tasks such as setting up and configuring cloud environments, implementing security and compliance measures, and monitoring and optimizing the performance of cloud-based systems.
The role of a platform engineer is critical for getting the most out of today’s modern computing environments by ensuring that the infrastructure supporting applications is reliable, scalable, and secure.
“Platform engineers help end users navigate complex and siloed systems by building curated self-service layers that improve user experience, delivery speed, process agility and business value.”
Top Strategic Technology Trends for 2023: Platform Engineering
By Paul Delory, Oleksandr Matvitskyy • 17 October 2022
Platform engineering vs. software engineering
Software engineering focuses on building individual software products and services, while platform engineering focuses on building and maintaining the underlying infrastructure that enables the creation and deployment of those software products. Software engineering often involves specific programming languages, while platform engineering involves a wider range of technologies and considerations related to security, scalability, reliability, and infrastructure efficiency.
|Focuses on building platforms that enable the creation and deployment of software and services, and API discovery||Focuses on building software applications, API design, and microservices|
|Concerned with the overall architecture and infrastructure of a platform, including scalability and reliability||Concerned with the design and development of individual software products and applications|
|Involves technologies such as containers and cloud computing||Involves languages such as Java, Python, and C++|
|Examples Building a cloud computing platform, creating a container orchestration system, customizing a software supply chain||Examples Building a mobile app, designing a website, creating microservices, modernizing existing apps through refactoring and rewriting|
DevOps vs. platform engineering
DevOps focuses on improving the collaboration and communication between development and operations teams, while platform engineering focuses on building and maintaining a scalable and reliable platform for hosting applications and services.
DevOps has been praised for its potential, yet implementing it successfully at scale has proved to be both challenging and expensive. By design, DevOps necessitates an increase in staff and optimizes processes for localization. While this may be beneficial for individual applications or services, it can prove to be a challenge when it’s implemented in large organizations with multiple teams, using different tools in various ways. This often leads to a disparity in maturity levels across the various teams. As such, DevOps is not always the best solution for large organizations, which require a more unified approach for managing multiple teams and projects.
Platform engineering is a response to the challenges faced by DevOps and other IT management practices. It seeks to take the best cultural elements of DevOps, such as its emphasis on collaboration, automation, and continuous integration, and combine them with the principles of SRE to create a more efficient and manageable IT estate. Platform engineering involves creating a centralized application platform that is designed with the needs of development teams in mind. This eliminates the need for complex plumbing, as development teams can access the platform quickly and easily. Additionally, platform engineering allows for better visibility and control of the IT estate, making it easier for businesses to monitor and manage their IT infrastructure.
|Definition||A set of practices that combines software development (Dev) and IT operations (Ops)||The design and maintenance of a platform to host applications and services|
|Focus||The integration and collaboration between development and operations teams to deliver applications and services||Building and maintaining a scalable and reliable platform for hosting applications and services|
|Example Job Titles||
The importance of platform engineering
Platform engineering plays a crucial role in the software development and delivery cycle by providing the tools, frameworks, and infrastructure that streamline and accelerate the development, testing, and deployment of software applications. By creating a well-designed platform, companies can improve developer experience, reduce time to production, and increase the efficiency and consistency of their software development process.
One of the main ways that platform engineering impacts developer experience is by providing curated tools and frameworks that make it easier for developers to build and maintain their applications. This can include everything from open source code repositories, libraries, and APIs for common tasks, to integrated development environments (IDEs) and version control systems that make it easier for teams to collaborate and track changes. Internal developer portals are supported by platform engineering teams and act as a central hub for developers to find information and resources easily. Developer portals are an important way in which platform engineers help provide a good developer experience.
Platform engineering also plays a key role in reducing time to production by providing infrastructure that is optimized for continuous integration and delivery (CI/CD). This can include everything from automated testing and deployment pipelines to containerization and orchestration tools that make it easier to deploy applications in different environments.
Once the platform engineering team has implemented the platform for their development teams, it’s important to reach out to them through a developer advocacy initiative and build enthusiasm for the platform so that it is more widely adopted. To do this, the platform engineering team can engage in different activities with the development teams that will use the platform. Activities like lunch and learns, hackathons, or deep dives on platform capabilities will help market the platform and engage developers while proving the value of the app platform to these audiences.
Watch 0:59 short on platform advocacy
Platform engineers help to improve the overall efficiency and consistency of the software development process by providing a standardized set of tools and processes that can be used across different teams and projects. They also work with developers to ensure the platform is being used through advocacy, education, and feedback loops. This can help reduce the amount of time and effort spent on setup and configuration, and ensure that projects are developed using best practices and industry standards.
Best practices for modern platform engineering
Building a modern application platform for software development at scale requires not only the best tools for the job, but also a shift to a platform-as-a-product mindset and a focus on end users of the platform. Here are some best practices for implementing platform engineering in an enterprise organization:
Develop a platform-as-a-product mindset, where the platform is seen as an integral part of the product development process
Establish continuous feedback loops with developers to ensure that the platform meets the needs of developers and is optimized for their workflows
Treat developers as customers and take their feedback into account when making decisions about the platform
Utilize data-driven insights to inform decisions about the platform and its associated processes
Provide easy onboarding and developer portals that help developers get up to speed quickly and take advantage of the platform tools
Implement processes and systems for monitoring and managing the platform, such as:
- Use modern platform engineering techniques such as infrastructure as code, immutable infrastructure, black-box instrumentation, and service level indicators
- Implement continuous integration and continuous delivery (CI/CD) pipelines to automate the build, test, and deployment process
- Use a container service, such as VMware Tanzu Build Service, to package applications and their dependencies, making it easier to deploy and run applications consistently across different environments
- Use a service mesh, such as VMware Tanzu Service Mesh, to manage and secure communication between microservices
- Use a centralized management platform, such as VMware Tanzu Mission Control, to manage, secure, and automate your Kubernetes infrastructure
- Use a continuous delivery methodology, such as FluxCD with VMware Tanzu Mission Control, to automatically configure clusters, create Kubernetes objects, and manage containerized applications
- Implement monitoring and logging with tools like VMware Aria Operations for Applications to track the health and performance of applications and identify issues
- Use a security tool, such as VMware Carbon Black Container, to scan container images for vulnerabilities from development to production
- Use a data protection solution, such as Velero with VMware Tanzu Mission Control, to back up and restore important workloads and data. Cross-cluster restore is supported for all CNCF-conformant clusters
- Use a load balancer, such as NSX Advanced Load Balancer, to distribute traffic across multiple servers and improve scalability
Platform engineering at VMware Tanzu
Application platform engineering is a major focus at VMware Tanzu because it helps organizations build, run, and manage modern, cloud native applications that are agile, scalable, and resilient. This is especially important in today's digital economy, where businesses must be able to quickly respond to changing customer needs and market conditions.
The VMware Tanzu suite of products and services helps enterprise organizations build and support platform engineering teams implementing modern cloud native platforms. VMware Tanzu offers a range of products and services, such as VMware Tanzu Application Service for deploying and managing applications, VMware Tanzu for Kubernetes Operations to simplify, secure, and optimize cloud native platform operations, and VMware Tanzu Application Platform to unlock developer productivity and accelerate the path to production. Consulting services through VMware Tanzu Labs help organizations implement DevOps practices and learn to build and deliver software securely, quickly, and efficiently while addressing the organizational shifts needed to meet the challenge of running cloud native applications in production at scale.
Find out more about how we approach platform engineering at VMware Tanzu, and how it can help your organization build, run, and manage modern, cloud native applications in this VMware Explore talk with Mercedes-Benz.