Platform engineering

Last updated

Platform engineering is a software engineering discipline focused on the development of self-service toolchain s, services, and processes to create an internal developer platform (IDP). The shared IDP can be utilized by software development teams, enabling them to innovate. [1] [2]

Contents

Platform engineering uses components like configuration management, infrastructure orchestration, and role-based access control to improve reliability. The discipline is associated with DevOps and platform as a service practices. [1] [2]

Purpose & Impact

Platform engineering aims to improve software engineering productivity by creating streamlined toolchains that can be used by developers. It can be used for digital transformation, or to expand CI/CD setups. [3]

According to a panel of experts at PlatformCon 2024, it was stated that building an internal developer platform can improve more than just developer productivity. Platform engineering, which centralizes best practices and components for development teams, is gaining prominence as DevSecOps practices and frameworks become increasingly embedded across organizations. Platform engineering aims to normalize and standardize developer workflows by providing developers with optimized “golden paths” for most of their workloads and flexibility to define exceptions for the rest. Organizations can follow one of two paths when developing a new platform engineering initiative. One option is to build an authentication and visualization layer that sits across multiple point tools — but this does not solve the underlying problems of legacy technology stacks and tooling silos. Therefore, this would likely not be a long-term solution. Alternatively, the organization could implement an internal developer platform (IDP) [4] that reduces the cognitive load on developers by bringing multiple technologies and tools into a single self-service experience. [5] [6]

Platform engineering’s benefits include faster time to market, reduced security and compliance risk, and improved developer experience. Establishing a product-oriented culture and setting clear business goals are critical for success in platform engineering. Therefore it can be stated that platform engineering has increased importance wherever businesses strive to do more with less.

Criticism of Platform Engineering

Despite its benefits, platform engineering faces several criticisms. One major concern is the complexity and overhead associated with building and maintaining such platforms. Additionally, creating a one-size-fits-all platform might not address the unique needs of all development teams, leading to inefficiencies and frustration. Siloed teams and a lack of focus on resolving operational issues can also hinder the effectiveness of the platforms created.

Related Research Articles

Software configuration management (SCM), a.k.a. software change and configuration management (SCCM), is the software engineering practice of tracking and controlling changes to a software system; part of the larger cross-disciplinary field of configuration management (CM). SCM includes version control and the establishment of baselines.

Software development is the process of designing and implementing a software solution to satisfy a user. The process is more encompassing than programming, writing code, in that it includes conceiving the goal, evaluating feasibility, analyzing requirements, design, testing and release. The process is part of software engineering which also includes organizational management, project management, configuration management and other aspects.

Release engineering, frequently abbreviated as RE or as the clipped compound Releng, is a sub-discipline in software engineering concerned with the compilation, assembly, and delivery of source code into finished products or other software components. Associated with the software release life cycle, it was said by Boris Debic of Google Inc. that release engineering is to software engineering as manufacturing is to an industrial process:

Release engineering is the difference between manufacturing software in small teams or startups and manufacturing software in an industrial way that is repeatable, gives predictable results, and scales well. These industrial style practices not only contribute to the growth of a company but also are key factors in enabling growth.

A software factory is a structured collection of related software assets that aids in producing computer software applications or software components according to specific, externally defined end-user requirements through an assembly process. A software factory applies manufacturing techniques and principles to software development to mimic the benefits of traditional manufacturing. Software factories are generally involved with outsourced software creation.

CollabNet VersionOne is a software company founded by Tim O’Reilly, Brian Behlendorf, and Bill Portelli, headquartered in Alpharetta, Georgia, United States. CollabNet focuses on value stream management, DevOps, agile management, application lifecycle management (ALM), and enterprise version control.

Azure DevOps Server, formerly known as Team Foundation Server (TFS) and Visual Studio Team System (VSTS), is a Microsoft product that provides version control, reporting, requirements management, project management, automated builds, testing and release management capabilities. It covers the entire application lifecycle and enables DevOps capabilities. Azure DevOps can be used as a back-end to numerous integrated development environments (IDEs) but is tailored for Microsoft Visual Studio and Eclipse on all platforms.

DevOps is a methodology in the software development and IT industry. Used as a set of practices and tools, DevOps integrates and automates the work of software development (Dev) and IT operations (Ops) as a means for improving and shortening the systems development life cycle. DevOps is complementary to agile software development; several DevOps aspects came from the agile way of working.

Neotys develops a software testing tool designed to improve the quality and performance of information systems. NeoLoad, is a automated performance testing platform for enterprise organizations continuously testing from APIs to applications designed by Neotys.

Continuous testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate. Continuous testing was originally proposed as a way of reducing waiting time for feedback to developers by introducing development environment-triggered tests as well as more traditional developer/tester-triggered tests.

Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It aims at building, testing, and releasing software with greater speed and frequency. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production. A straightforward and repeatable deployment process is important for continuous delivery.

In software engineering, service virtualization or service virtualisation is a method to emulate the behavior of specific components in heterogeneous component-based applications such as API-driven applications, cloud-based applications and service-oriented architectures. It is used to provide software development and QA/testing teams access to dependent system components that are needed to exercise an application under test (AUT), but are unavailable or difficult-to-access for development and testing purposes. With the behavior of the dependent components "virtualized", testing and development can proceed without accessing the actual live components. Service virtualization is recognized by vendors, industry analysts, and industry publications as being different than mocking. See here for a Comparison of API simulation tools.

In software engineering, a microservice architecture is an architectural pattern that arranges an application as a collection of loosely coupled, fine-grained services, communicating through lightweight protocols. A microservice-based architecture enables teams to develop and deploy their services independently, reduce code interdependency and increase readability and modularity within a codebase. This is achieved by reducing several dependencies in the codebase, allowing developers to evolve their services with limited restrictions, and reducing additional complexity. Consequently, organizations can develop software with rapid growth and scalability, as well as implement off-the-shelf services more easily. These benefits come with the cost of needing to maintain a decoupled structure within the codebase, which means its initial implementation is more complex than that of a monolithic codebase. Interfaces need to be designed carefully and treated as APIs.

Infrastructure as code (IaC) is the process of managing and provisioning computer data center resources through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools. The IT infrastructure managed by this process comprises both physical equipment, such as bare-metal servers, as well as virtual machines, and associated configuration resources. The definitions may be in a version control system, rather than maintaining the code through manual processes. The code in the definition files may use either scripts or declarative definitions, but IaC more often employs declarative approaches.

<span class="mw-page-title-main">DevOps toolchain</span> DevOps toolchain release package.

A DevOps toolchain is a set or combination of tools that aid in the delivery, development, and management of software applications throughout the systems development life cycle, as coordinated by an organisation that uses DevOps practices.

Site Reliability Engineering (SRE) encompasses principles and practices that integrate software engineering with IT infrastructure and operations. to enhance system scalability and reliability. SRE shares similarities with DevOps, which focuses on software development and operational practices.

<span class="mw-page-title-main">Tricentis</span> Austrian software testing company

Tricentis is a software testing company founded in 2007 and headquartered in Austin, Texas. It provides software testing automation and software quality assurance products for enterprise software.

Continuous configuration automation (CCA) is the methodology or process of automating the deployment and configuration of settings and software for both physical and virtual data center equipment.

<span class="mw-page-title-main">Tara Hernandez</span> Software developer and open source contributor

Tara Hernandez is a professional software developer, and veteran open source contributor, who developed procedures and tools at several Silicon Valley companies. She was an early promoter of what came to be known as the Continuous Integration revolution. As shown in the documentary Code Rush, she was the manager of Netscape Navigator development at Netscape Communications Corporations, and worked on the preparation of the original Mozilla code for public release, which led to the development of the Firefox browser. She has also worked as a Release Team Manager at Blue Martini software, Senior Infrastructure Engineer and Team Lead at Pixar Animation Studios, Senior Engineering Manager at Lithium Technologies, Senior Director of Systems and Build Engineering at Linden Lab, and worked as a Senior Engineering Manager at Google. Tara is currently employed by MongoDB as Vice President of R&D Productivity, where her role is to lead the development of engineering CI/CD systems, builds of various MongoDB software on 40+ platforms, and the performance tooling team.

TestOps refers to the discipline of managing the operational aspects of testing within the software delivery lifecycle.

<i>DevOps Research and Assessment</i> Research team in Google Cloud

DevOps Research and Assessment is a team that is part of Google Cloud that engages in opinion polling of software engineers to conduct research for the DevOps movement.

References

  1. 1 2 Perry, Morgan (November 22, 2023). "Platform Engineering vs. DevOps: What is the Difference?". Qovery. Archived from the original on February 23, 2024. Retrieved June 1, 2024.
  2. 1 2 Evans, Darren; McGhee, Steve (May 30, 2024). "Common myths about platform engineering". Google Cloud Blog. Archived from the original on May 31, 2024. Retrieved June 1, 2024.
  3. Ghosh, Bijit (December 21, 2022). "What is platform engineering and how it reduce cognitive load on developers". Medium. Archived from the original on December 24, 2022. Retrieved June 1, 2024.
  4. Abeysinghe, A. (October 2023). "Internal Developer Platform: A Technical Definition". WSO2.{{cite web}}: CS1 maint: date and year (link)
  5. Joslyn, Heather (July 13, 2024). "What's the Impact of Platform Engineering?". The New Stack. Retrieved July 16, 2024.
  6. Wald, Brian (July 9, 2024). "Platform Engineering Is for Everyone". The New Stack. Retrieved July 16, 2024.