Guest post originally published on SparkFabrik’s blog
The term ‘platform engineering’ refers to the activity of designing and developing toolchains and internal work processes that enable the employees of an organisation to be self-sufficient in all software engineering activities.
Platform Engineering is a particularly effective practice in all those contexts where a Cloud Native development model focused on improving the Developer Experience (DevX) is being approached.
What is Platform Engineering?
Platform Engineering is a new discipline that emerged in response to the increasing complexity of systems designed according to the criteria of Cloud Native architectures.
From a methodological point of view, Platform Engineering describes how it is possible to develop and maintain an Internal Developer Platform (IDP), i.e. an internal corporate tool that acts as an abstraction layer between developers and the systems they interface with.
It is around 2022 that this practice is gaining momentum, especially in organisations looking to take a further leap forward in their DevOps transformation process. According to Gartner, the Platform Engineering wave will involve 80% of IT companies by 2026, with the promise of optimising the developer experience, accelerating product development and increasing value to end users.
How does Platform Engineering work?
Platform engineering teams are no different from a normal product team in the DevOps era. The figures usually present a series of SREs (Site Reliability Engineers), DevOps Engineers and Product Managers. They all work together to select and integrate suites of products and technologies, they define technological and methodological approaches to solve a range of problems that are part of the day-to-day life of their company’s developers and architects, and they create workflows and logic that suit their organisation.
Like any product team, a Platform Engineering team and its engineers conduct market research, solicit feedback from their users, and work on getting the Internal Developer Platform they created adopted internally to maximise the impact and productivity gains throughout the organisation.
What are the benefits of Platform Engineering for companies?
A company that aims to adopt a Platform Engineering model, and thus create an in-house team of Platform Engineers (or Platform Team), can measure the success of such an initiative by monitoring a number of key factors such as efficiency and cost reduction, scalability and flexibility, reliability and security, and an improved overall Developer Experience.
EFFICIENCY AND COST REDUCTION
An organisation that does not make use of DevOps and Platform Engineering has a very low level of automation. This leads to a waste of resources (time, money and skills) in low-value-added activities. Examples include setting up test environments, preparing data and activating new cloud or infrastructure services needed by the product team.
On the contrary, full automation and integration (including testing) will provide value to business stakeholders without compromising quality or speed. Consequently, the timeframe for transferring new features into production will be shorter.
SCALABILITY AND FLEXIBILITY
When one thinks of scalability and flexibility, one immediately thinks of the need for an application to withstand major peaks or workloads. However, one overlooks the fact that a product team may also have these needs in its natural life cycle. For example, with the entry of new team members, through effective and fast onboarding, or through the ability to accommodate changes in standards and operating procedures, almost immediately.
Through a team of platform engineers, these issues can be effectively addressed, allowing new team members to be up and running immediately with pre-installed and virtualised working environments. Or, by masking the complexities of the underlying operational processes or tools used, through simpler and more intuitive ad-hoc interfaces.
RELIABILITY AND SECURITY
Standardising software and product development through a platform engineering team also allows the frameworks, libraries and guidelines with which software is developed to be governed. In this way, unstable or insecure code libraries can be filtered out, or important design aspects such as logging, telemetry and credential management can be avoided – all key functions for diagnosing application operation and reducing the attack surface.
Platform Engineering gives developers more power over the infrastructure and technological capabilities they need. Each developer can easily access resources and material created and shared within the organisation (be it documentation or code), thus giving them the opportunity to focus on their tasks and not on understanding and bureaucratizing the organisational context in which they operate.
Platform engineering vs. devops
We have mentioned both, but what exactly is the difference between DevOps and Platform Engineering? They are different approaches to improving the productivity and efficiency of development and operations teams. While DevOps focuses on collaboration between teams and reducing software delivery time, Platform Engineering aims to create flexible and scalable infrastructures to support the development of applications and services.
Both approaches have their advantages and challenges, and the choice between DevOps and Platform Engineering will depend on the specific needs of an organisation and its long-term goals.
Larger and more complex projects might benefit more from a platform engineering approach due to its greater flexibility and scalability, whereas for smaller or less complex projects, a DevOps approach might suffice.
In addition, organisational culture and business objectives are two other elements to consider when choosing: if the organisation already has a strong culture of collaboration and communication between teams, DevOps might be the best choice, while if the main objective is to create flexible and scalable infrastructures to support future growth, Platform Engineering might be the most suitable approach.
Finally, existing technologies and skills within the organisation are another factor to consider: if teams have experience with containerisation, orchestration and cloud computing, adopting a platform engineering approach might be easier, while if they are more used to working with traditional tools and processes, DevOps might be the most natural path.
Platform Engineering: Some Successful Examples
A successful example of Platform Engineering leading to an Internal Developer Platform is SparkFabrik’s project for the Centro Medico Santagostino. Centro Medico Santagostino is an Italian company that operates a network of outpatient clinics offering a wide range of high-quality specialist services at an affordable price.
The challenge in question was to standardise and organise the way in which internal digital services were to operate, given an already well-defined technology stack. This challenge had two fundamental aspects.
- The first was to create an Internal Developer Platform to centralise services and documentation, manage the entire lifecycle of services and simplify the work of developers.
- The second was to create a series of interconnection services to simplify the communication of the main internal products and to enable effective business support.
With a solution based on the AWS technology stack and Backstage, SparkFabrik’s project made it possible to speed up the development of new services and functionalities in just three months of operation in a Production environment, following the live of the platform.
Platform Engineering can be a trump card for organisations. Through platform engineering, companies can increase the efficiency of their software development, release and evolution processes, without sacrificing the quality, security and efficiency of the software.
By setting up dedicated teams, whose purpose is to automate and increase the productivity of internal teams, you can reduce the time in which you can bring value to your users with new features and enhancements.
Platform Engineering is the next step in a DevOps journey: it increases the agility and reliability of developers within the organisation and the ease with which they can adopt Cloud Native development practices.