The emergence of platforms
What do Deezer, EasyBourse, Spartoo, Photoweb and Molotov have in common, apart from being Iguana Solutions customers?
All these services are popular online services that we use every day. But behind the scenes, these services rely on a platform to run.
A platform brings together all the pieces of the puzzle that an application needs to run. This includes infrastructure resources such as servers, storage, and networking, as well as system resources such as the operating system, programming languages, and application libraries. Platforms also include resources for supervision and observability, which help to ensure that the application is running smoothly and that any problems are quickly identified and resolved.
To implement platforms, technical teams use agile methods and DevOps tools. These tools automate and streamline the development and deployment process, making it easier to deliver new features and updates to applications.
The arrival of cloud providers has made it easier to manage platforms. Cloud providers offer a range of managed services that can be used to automate and simplify the platform management process. This frees up technical teams to focus on other tasks, such as developing new features and applications.
In the past, software development was a slow and laborious process. Teams would spend months working on a single project, and then they would have to wait for the infrastructure to be provisioned before they could deploy their code. This led to long release cycles and a lack of agility.
Today, thanks to DevOps, agile methods, and the cloud, software delivery is much faster and more frequent. Teams can now deploy their code several times a month, or even several times a day. In the rest of this article, we will look at how these factors have contributed to the acceleration of software delivery.
Speedness vs Correctness
Rapid deployment is essential for products with a high user impact, such as SaaS applications, video or music streaming platforms, and mobile platforms. Frequent deployments allow for immediate feedback on the use of new features or their impact on overall performance, as well as regular security updates for the application.
Delivering quickly and correctly is possible when technical teams are small. However, maintaining the same speed of deployment and platform management becomes more complex as companies grow in size. This is because there are more people involved in the process, and the technical stack becomes more complex :
How do you keep the same speed of deployment and platform management when there are several development teams?
Adding more people to a team does not necessarily lead to higher productivity. In fact, it can often lead to increased hierarchy, complexity, and dependencies between teams. This can make it difficult to maintain a rapid delivery rate.
Platform Engineering is a concept that aims to address this challenge. Platform Engineering seeks to simplify the consumption of platforms by developers, giving them greater autonomy. This is done by streamlining the architecture, design, deployment, and maintenance of platforms within a company’s ecosystem.
Platform Engineering can help to keep the same speed of deployment and platform management even as a company grows and adds more development teams. This is because Platform Engineering reduces the need for coordination and communication between teams, and it makes it easier for developers to get the resources they need to deploy their applications quickly and easily.
As DevOps principles become more widely adopted, it is important to be aware of the limitations and challenges associated with this approach. One of the biggest challenges is the proliferation of tools. There are now hundreds of different DevOps tools available, and it can be difficult to choose the right ones for an organization’s specific needs. Additionally, integrating these tools can be complex and time-consuming. This often requires teams to write code or scripts to connect the tools together. The responsibility of maintaining this “functional glue” often falls to operations teams.
Figure: Ops work today, not often visible
In order to enable development teams to do their share of the work on the infrastructure side, it is necessary to redefine the relationship between Dev and Ops.
The key is to focus on what is essential for the organization’s needs and to only offer what developers need. This means avoiding trendy tools that do not add real value or that are not aligned with the organization’s goals.
Platform as a Product
Platform Engineering is a product-oriented approach to platform management. This means that Platform Engineers focus on delivering tools and platforms that offer value to developers, and they use continuous feedback loops to improve their products. Platform Engineers also focus on the developer experience (DX), which is similar to the user experience (UX) specifically for developers. They want to make it easy for developers to use their platforms, and they want to solve common problems that developers face.
To easily design and deliver ready-to-use platforms to developers, Platform Engineers rely on a tool called Internal Developer Platform (IDP). The IDP is a catalog of pre-defined platforms that developers can choose from. Platform Engineers play the role of Product Managers or Product Owners for their platforms, and they work with developers to ensure that the IDP meets their needs.
This mode of operation gives developers more autonomy and freedom. Developers can freely consume resources, while operational teams remain serene as rules of use and security are pre-defined and respected via the IDP. Ops teams have more time to help and train developers, and they can focus on designing new products for the company. The IDP becomes the center of exchanges between Tech, and it is a real product that lives and grows with the Technical department.
When should you consider Platform Engineering?
Platform Engineering should be considered when the existing organization isn’t fully satisfying the company’s various stakeholders.
Signs of such problems may include:
- Friction and frustration within technical teams: This can manifest as communication breakdowns, siloed work, and a lack of trust between teams.
- Latency in developments: This can lead to missed deadlines and a decline in customer satisfaction.
- Accumulation of technical debt: This can make it difficult to maintain and update the infrastructure, leading to further delays and problems.
- A drop or stagnation in productivity: This can be caused by a number of factors, including a lack of focus, inefficient processes, or outdated tools.
- Any sign of organizational weakness: This could include a lack of communication, poor decision-making, or a lack of alignment between teams.
The implementation of KPIs or frustration indicators within the different teams is an effective way of detecting tensions and organizational problems.
Teams with between 20 and 30 developers are typically the ones where these organizational difficulties become visible. However, the exact number of developers can vary depending on the specific team. It is important to provide adequate support to teams that are adopting Platform Engineering, especially if they are more accustomed to a “project” rather than a “product” approach.
Product vs. Project
Traditionally, projects are delivered based on a list of tasks with an estimated workload and a deadline. This approach can work, but it limits agility and flexibility. Teams often face tensions and frustrations as deadlines approach.
They may have to choose between:
- Delivering a feature that is not fully finished, which can frustrate developers and users.
- Delivering late, which can frustrate sales, management, and customers.
In contrast, the product approach focuses on solving user problems. The impact of a problem on the user’s daily life is more important than the precise delivery date of the solution. Developments are planned in line with the company’s strategy to maximize the impact on the user.
The goal is to achieve rapid, tangible results and encourage users to use the product in new ways.
If a feature does not align with the company’s strategy or does not have a significant impact on the value proposition, it will not be prioritized. It is important to have a time range for the availability of a feature, but not being constrained by strict deadlines reduces stress within teams.
To implement Platform Engineering in organizations, it is crucial to demonstrate the benefits of the product approach to infrastructure teams and other stakeholders.
Here are some of the benefits of the product approach:
- Increased agility: Teams can respond quickly to changes in the market or user needs.
- Improved quality: Features are more likely to be finished and tested before they are released.
- Reduced stress: Teams are not under pressure to meet unrealistic deadlines.
- Increased user satisfaction: Users are more likely to be satisfied with products that are delivered on time and meet their needs.
By demonstrating the benefits of the product approach, organizations can gain support for Platform Engineering and achieve better results.
To determine whether Platform Engineering is useful in your case, ask yourself the following questions:
- Can you catalog the platforms used in your organization?
- Are deployment phases frequent, or even continuous, but limited by the availability of operational teams?
- Are my applications designed for the cloud (Cloud Native), with microservices (containerized) architecture and recent technologies, making them easier to catalog?
If you don’t answer yes to at least one of these three questions, then Platform Engineering may not be the right fit for your organization. However, even if you don’t answer yes to all three questions, you may still be able to benefit from some of the principles of Platform Engineering, such as the focus on the product approach and the use of automation.
Tools for setting up an IDP
As with everything else in the tech ecosystem, there is no one-size-fits-all tool for setting up an Internal Developer Platform (IDP). Each organization will need to choose the tool that best suits its needs.
One of the best-known tools for creating an IDP is Backstage.io. This tool is an open-source tool developed by Spotify that provides an interface for accessing a catalog of services defined by operational teams. The advantage of Backstage lies in its variety of plugins, making it highly customizable and can be integrated with a wide range of other tools.
For microservices applications using Kubernetes, other tools are also available:
- Capsule, is a tool that simplifies the creation of IDPs by segmenting Kubernetes resources by “tenant.”
- Qovery, is a tool that facilitates the provision of preview environments from production environments, while guaranteeing security.
These tools can help to improve the developer experience by providing real-world testing environments without disrupting production.
The integration of these tools into an organization’s ecosystem can be challenging. If you need help with this process, our platform management experts can help you 👉 Contact-us to learn more.
The emergence of SaaS platforms has revolutionized our daily lives. However, as organizations grow and their technical teams expand, it can be challenging to maintain a sustained and efficient pace of development.
Platform Engineering, with its product approach and tools such as the Internal Developer Platform (IDP), simplifies the consumption of infrastructure needed to run platforms, promotes collaboration between teams and improves productivity. However, the transition to Platform Engineering requires gradual adoption and modern architectures to reap its full benefits. By rebalancing responsibilities, Platform Engineering stimulates innovation and business growth, while improving the satisfaction of technical teams.
To keep in mind
- Has an advantage when there are delivery contingencies (funnel effect): development teams wait for access to resources to test/deliver.
- Discipline the use of Devops tools to improve the developer experience (DX).
- Use the Product approach to offer Platforms as a Product through Internal Developer Platforms (IDP).
- Applicable to standardizable platforms, including Cloud Native platforms.