Announcing Coherence 2.0 and CNC, the first open source IaC framework
All posts

Platform Engineering Tools: An Overview and Comparison

Learn about the key concepts and categories of platform engineering tools, which aim to enhance developer productivity and streamline the software development process.
July 5, 2024

Platform engineering is about enhancing the software development lifecycle (SDLC), improving the developer experience, and reducing cognitive load by building an internal developer platform. Such a process typically requires platform engineering teams to extend traditional essential DevOps components—like container orchestrators, CI/CD elements, and monitoring platforms—with newer categories of tools, like internal developer portals, ephemeral environments, and PaaS implementations.

In this article, we explore the main concepts underlying platform engineering tools. We start with reviewing the platform engineering landscape. Then we explain the difference between internal developer platforms and internal developer portals. We also review how ephemeral environments reduce toil for developers and explain how platform as a service (PaaS) can simplify the entire platform engineering adoption process.

Summary of key concepts related to platform engineering tools

Concept Description
Key goals of platform engineering Platform engineering enhances the developer experience by building internal platforms that reduce workload and simplify processes. It aims to boost productivity without compromising the functionality of core services.
Overview of the platform engineering tools landscape The platform engineering landscape encompasses five key categories: integration and delivery, observability, security and secrets management, cloud resource management, and the developer control plane.
Internal developer platforms An internal developer platform streamlines the entire application lifecycle, enabling developers to independently develop, deploy, and maintain applications with greater efficiency and less reliance on IT and DevOps teams.
Internal developer portals An internal developer portal serves as a centralized hub, providing resources, documentation, and APIs that streamline the software development process. It offers a single access point for collaboration and information retrieval.
Ephemeral environments Ephemeral environments replicate production conditions, providing developers and testers with isolated and controlled settings. Their primary benefits include significantly reduced setup and teardown times, which accelerate development and testing cycles.
Platform as a service (PaaS) PaaS is crucial for smaller teams. It provides access to managed development environments without the in-house maintenance burden. PaaS delivers essential tools and infrastructure support, enabling teams to scale efficiently and focus on innovation.

Key goals of platform engineering

These days, companies strive to carefully choose and assemble the perfect set of tools and solutions to cater to their developers’ requirements. This process becomes challenging with the constant arrival of new tools in the field each month.

The overarching goal of platform engineering is to boost developer productivity by improving the developer experience (DevEx). It does this by constructing internal developer platforms that reduce cognitive load, repetitive work, and developer toil.

Platform engineering provides layered abstractions tailored to organizational needs, helping developers navigate these complexities more effectively. It focuses on facilitating software building and delivery without overly simplifying the unique capabilities of underlying core services. By treating platforms as products, platform engineering teams design these platforms for easy, self-service consumption by developers.

Overview of the platform engineering tools landscape

The platform engineering community curates a list of tools and differentiates them into several categories according to the distinct function to be handled.

Platform engineering tool landscape (source)

Let’s break down the key categories in the platform engineering tools landscape that are essential for streamlining and securing your development workflow:

  • Integration and delivery: This area focuses on tools for CI/CD management, artifact management, infrastructure automation, and platform orchestration. It ensures seamless integration and continuous delivery of software across various environments.
  • Observability: In this category, tools for monitoring, logging, tracing, and analytics are critical. They provide insights into application performance and system health, helping you diagnose and resolve issues quickly.
  • Security and secrets management: This group of technologies protects your data and manages access with robust security protocols and secrets management systems.
  • Cloud resource management: This includes tools that handle data, compute, networking, and hosted services from cloud providers. Effective management here ensures optimal resource utilization and scalability.
  • Developer control plane: This broad area covers tools related to source control, infrastructure as code, developer portals, and software catalogs. These tools improve the management and visibility of development processes and resources.

The platform engineering landscape offers a variety of tools, yet selecting the ideal combination tailored to an organization’s specific needs is complex. Engineers need a thorough understanding of these tools to navigate this landscape effectively. By concentrating on the particular needs of developers throughout this selection process, you can ensure that the tools chosen are perfectly aligned with their requirements.

{{banner-small-1="/banners"}}

Internal developer platforms

Integrating the tools presented in the developer control plane with the delivery pipeline (i.e the integration and delivery plane) can significantly reduce cognitive load and enhance self-service capabilities for developers. In the industry, this is commonly referred to as designing an internal developer platform (IDP).

An IDP facilitates the full application lifecycle management process, enabling developers to autonomously develop, deploy, and maintain applications. Originating as a solution to the inefficiencies caused by dependencies on IT and DevOps teams, IDPs offer a wide range of tools and services that enhance efficiency and productivity. They simplify complex cloud infrastructure, providing developers with a streamlined and powerful interface that offers more control and flexibility than traditional platform-as-a-service (PaaS) models.

These platforms significantly accelerate the software development lifecycle, allowing for faster product iterations and improved efficiency. For example, leading tech companies like Salesforce and Microsoft Azure utilize robust IDPs that streamline environment setup, collaboration, and application deployment. Through features like containerization, automatic scaling, and CI/CD, developers can focus more on coding and less on infrastructure management, thereby accelerating the development process and reducing time to market.

Here are some popular examples of IDPs:

  • OpenShift: Red Hat’s OpenShift is a prominent example of an IDP that extends Kubernetes with a developer-centric view. It integrates CI/CD, source code management, and automated scaling, offering a comprehensive environment for application development and deployment.
  • Qovery: Qovery simplifies the deployment process for Kubernetes by letting you declare your project’s structure and dependencies, making it an excellent choice for startups looking to focus on development without worrying about infrastructure.
  • Cloud66: Cloud66 offers a suite of tools for container and server management, supporting both traditional applications and containerized workloads. It provides a clear pathway for organizations transitioning to containers and microservices.
  • Coherence supports a wide variety of integrated tools to provide an improved developer experience using your own cloud account.

{{banner-small-2="/banners"}}

Internal developer portals

One of the key elements of the IDP is a category of tools called developer portals, sometimes referred to as internal developer portals, which creates some confusion due to the similar abbreviations. Let’s see how they differ.

An internal developer portal acts as a centralized hub, offering resources, documentation, and APIs to streamline and support the software development process. By providing a single access point for collaboration and information retrieval, such portals enhance productivity and encourage knowledge sharing among developers. These tools include essential elements like coding standards, architectural guidelines, API flow diagrams, and best practices, ensuring consistency and high-quality output across projects.

Companies like Google and Amazon leverage internal developer portals to equip their teams with the tools and information necessary for crafting superior solutions. These portals facilitate interactive learning and community engagement through features like API documentation, code samples, and forums. Additionally, the integration of these portals with various development tools and services, including version control, issue tracking, and project management systems, optimizes the workflow and supports developers through all stages of the software development lifecycle.

Backstage, developed by Spotify, is believed to be the very first developer portal on the market. Spotify built it internally to fulfill its popular “Spotify Model,” which involves having small “squads” of engineers (around 7-10 people) who own projects end to end. Developer portals and service catalogs help teams maintain their independence while enforcing standardization and ease of discovery.

Backstage includes features like these:

  • A unified software catalog for managing all software components
  • Software templates for standardizing new services creation
  • A customizable search tool for internal and external sources
  • TechDocs for integrated Markdown-based documentation and extensible plugins to enhance functionality.

{{banner-small-3="/banners"}}

Ephemeral environments

As we’ve streamlined tools and documentation access through internal developer platforms and portals, managing the actual environments where developers work has become the next big challenge. Essentially, we need solutions that allow environments to be as dynamic as the development process itself. Ephemeral environments are key to this, as they can be quickly set up and taken down, greatly enhancing flexibility and reducing overhead in development workflows.

Ephemeral environments mimic production settings, allowing developers and testers to operate in isolated and controlled conditions. The major advantages of ephemeral environments include drastically reduced setup and teardown times, faster development and testing cycles, and optimizing resource usage by existing only as long as necessary.

Organizations without dedicated and experienced DevOps teams may find the complexity of setting up and maintaining ephemeral environments challenging. A practical solution is to opt for an environment-as-a-service vendor. These vendors manage the most complex aspects of establishing ephemeral environments, significantly saving time and effort for a modest fee. This arrangement allows development teams to focus on business-critical tasks rather than on infrastructure and configuration issues.

Some of the key features that can be expected from an EaaS solution are the following:

  • Variables: Built-in infrastructure for adding secrets and defining their scopes within an environment allows for easier integration with newer services.
  • Cloud provider integration and cost management: Out-of-the-box cloud provider integration abstracts the complexity of the ephemeral environment setup away from developers. It also allows for environments to be spun down after a configured amount of time, saving money and resources when they are not being used.
  • Handling DNS: Many vendors will handle the URL generation for preview environments, allowing users to serve preview environments under a custom domain.
  • Integration with version control systems: Automatically generated comments on pull requests allow for quickly navigating to spun-up environments with the correctly deployed version.
  • Turnkey integration testing: Streamline and accelerate testing with a solution that seamlessly automates integration tests with your development workflow, ensuring reliable and stable applications without requiring an extensive manual setup.

Coherence offers an ephemeral-environments-as-a-service solution that greatly simplifies the steps required to create ephemeral or preview environments by using preset integrations and automation. In a broader context, Coherence serves as a developer platform as a service (PaaS) provider; we will discuss how this differs from classical PaaS offerings in the next section.

Platform as a service (PaaS)

While internal developer platforms, developer portals, and ephemeral environments optimize development processes, implementing and maintaining these systems demands significant resources. Major companies like Google, Microsoft, and Spotify have dedicated entire departments to managing these complexities. However, smaller organizations or earlier-stage startups may find establishing such systems impractical despite their potential benefits.

This is where the platform-as-a-service (PaaS) concept becomes crucial, offering smaller teams access to managed development environments without the overhead of building and maintaining them in-house. PaaS provides the necessary tools and infrastructure support, allowing even small teams to scale efficiently and focus on innovation. Heroku pioneered the PaaS category, setting a standard for modern platforms like Vercel, Render, Railway, Replit, platform.sh, Aptible, and Northflank, among others.

PaaS products offer a seamless developer experience by simplifying the initial setup, minimizing maintenance, and covering common use cases comprehensively. Developers can easily connect databases and integrate services like DataDog into applications without complex configurations, with deployment and hosting solutions built into the PaaS that include CI/CD processes. This integration facilitates a streamlined workflow, allowing developers to focus more on coding and less on infrastructure management.

Additionally, PaaS environments are supported by robust communities and extensive documentation, making it easier for developers to find solutions to common issues—a contrast to the varied approaches possible with virtual machines. Starter templates are readily available for popular frameworks, enabling quick project initiation and customization. Economically, PaaS offers cost-effective starting options—often free—with scalable solutions that can be financially considered as the project grows, allowing businesses to concentrate on their core functions and value to users rather than on infrastructure management.

There are three primary reasons why organizations outgrow PaaS offerings:

  • Cost considerations become significant as operations scale. A PaaS setup typically incurs higher expenses than directly purchasing raw cloud resources, especially when accounting for cloud credits, discounts, or spot pricing.
  • Compliance issues arise since platforms like AWS, GCP, and Azure are heavily audited and trusted, meeting rigorous third-party certifications that PaaS alternatives may not match. This can influence decisions in sectors that require high compliance standards.
  • Extensibility is limited in PaaS environments compared to major cloud providers, which offer a broader range of services and deeper integration capabilities. These are essential for enterprise-grade solutions that demand comprehensive, secure integration, down to advanced features like integrated access management.

For small teams, side projects, personal or student use, or other use cases where simplicity is paramount, a traditional PaaS is the right hosting and deployment choice. For organizations, this is a great place to get started but not the final destination. Coherence provides a ready-to-use developer platform as a service on its own cloud, combining the best features of both environments. ​​Additionally, Coherence can function as a PaaS within your cloud by utilizing the built-in reference architectures of CNC.

{{banner-large-dark="/banners"}}

Conclusion

Platform engineering represents a strategic enhancement of the software development lifecycle, focusing on improving the developer experience and minimizing cognitive load through sophisticated tool integrations. In this article, we reviewed the platform engineering tools landscape and their distinct categories. We contrasted internal developer platforms with internal developer portals. Finally, we highlighted the efficiency gains from ephemeral environments and the simplification offered by PaaS products.