You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: patterns/1-initial/internal-developer-platform.md
+66-14Lines changed: 66 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,47 +4,100 @@ Internal Developer Platform
4
4
5
5
## Patlet
6
6
7
-
Development teams struggle with inconsistencies in tooling and environments, leading to inefficiencies and reduced productivity. An Internal Developer Platform standardizes development tooling and environments, providing a self-service portal for developers to access the resources they need, when they need them, thereby streamlining workflows and enhancing efficiency.
7
+
Development teams face inefficiencies due to fragmented tooling, environments, and workflows. An Internal Developer Platform (IDP) provides a centralized, self-service system that standardizes development environments and integrates tools to enhance consistency, collaboration, and developer productivity. By streamlining access to essential resources and services, the IDP accelerates software delivery and reduces cognitive load on developers.
8
8
9
9
## Problem
10
10
11
-
The diversity of development tools and environments across teams leads to inconsistencies that hamper efficiency, make onboarding of new developers slow, and complicate project collaboration and scaling.
11
+
A lack of standardization across development environments and tools introduces inefficiencies, lengthens onboarding time, and complicates project collaboration and scaling. Diverse setups across teams result in inconsistencies, making it difficult to ensure security, governance, and productivity at scale. Additionally, these inefficiencies lead to higher operational overhead and slower innovation cycles.
12
12
13
13
## Story (optional)
14
14
15
15
(to be done)
16
16
17
17
## Context
18
18
19
-
This pattern emerges in organizations with multiple development teams working on various projects, where there is a noticeable discrepancy in how development environments are set up, tools are used, and resources are accessed.
19
+
This pattern emerges in organizations with multiple development teams working on different projects. As teams grow and evolve, discrepancies in the setup of development environments and access to resources become more prominent, hampering collaboration, introducing security risks, and reducing developer productivity. The need for uniformity without compromising flexibility drives the adoption of an IDP.
20
20
21
21
## Forces
22
22
23
-
Consistency vs. Flexibility: Balancing the need for standardized tooling and environments with the flexibility required by different teams to innovate and adapt to their specific needs.
23
+
**Consistency vs. Flexibility**: Teams require standardized tools and processes to maintain consistency and governance, but they also need flexibility to adapt to project-specific needs and innovations.
24
24
25
-
Self-Service vs. Governance: Ensuring developers have the autonomy to access and manage resources while maintaining necessary oversight and compliance.
25
+
**Self-Service vs. Governance**: Developers want self-service access to infrastructure and tooling, but the organization must enforce governance, security, and compliance controls to reduce risk.
26
26
27
-
Scalability vs. Control: Scaling development efforts across the organization without losing control over the tooling ecosystem and operational overhead.
27
+
**Scalability vs. Control**: Scaling developer environments across the organization can lead to loss of control over tools and operational consistency if not managed properly.
28
28
29
-
## Sketch (optional)
29
+
**Developer Productivity vs. Platform Complexity**: Developers benefit from simplified, cohesive tools, but platform teams must balance operational complexity and manage evolving workflows.
The diagram reflects both the high-level architecture and the workflow of the IDP:
36
+
37
+
1. Developer Interface Layer (Top Layer)
38
+
39
+
Self-Service Portal: A central access point for developers to interact with the IDP. This portal provides UI/UX for developers to provision environments, initiate CI/CD pipelines, deploy code, and monitor applications. It should have integrations with internal services such as:
40
+
41
+
- Environment provisioning
42
+
- CI/CD pipelines initiation
43
+
- Access to documentation, templates, and tools
44
+
- Monitoring dashboards
45
+
46
+
2. IDP Core Components (Middle Layer)
47
+
48
+
These components form the operational backbone of the IDP and facilitate the interaction between the developers and the infrastructure.
49
+
50
+
-**Orchestration Engine**: Responsible for routing developer requests (e.g., environment setup, deployment) and triggering the appropriate automation or workflow.
51
+
-**Templates/Scaffolding**: Pre-built templates for creating environments, services, and pipelines to ensure consistency across projects.
52
+
-**CI/CD Pipelines**: Integrated pipelines that automate testing, building, and deploying applications, triggered from the self-service portal.
53
+
-**Automation & IaC**: Infrastructure as Code (IaC) to provision resources, manage environments, and automate repeatable processes.
54
+
-**Plugin Architecture**: A modular system that allows teams to extend the IDP by adding new tools or services via plugins (e.g., integrating with third-party APIs or custom tooling).
55
+
56
+
3. Platform Services & Resources (Bottom Layer)
57
+
58
+
These components are what the IDP exposes to developers through the portal and what it orchestrates.
59
+
60
+
-**Infrastructure Provisioning**: Automates the provisioning of development environments (e.g., Kubernetes clusters, cloud services, containers, VMs) based on the Infrastructure as Code scripts.
61
+
-**Security & Compliance Guardrails**: Pre-configured rules that ensure all environments and tools are compliant with organizational policies.
62
+
-**Monitoring & Observability**: Integrated logs, metrics, and tracing tools to monitor both applications and infrastructure.
63
+
-**APIs & Service Catalog**: A searchable catalog of APIs, services, and artifacts available within the organization, promoting reuse and standardization.
32
64
33
65
## Solutions
34
66
35
-
Implement an Internal Developer Platform that acts as a centralized, self-service portal for developers. This platform standardizes development environments, tools, and access to resources, ensuring consistency while offering the flexibility to cater to specific project needs. It includes automation for common tasks, such as setting up development environments, initiating CI/CD pipelines, and deploying applications, making these processes more efficient and less prone to errors.
67
+
Implement an Internal Developer Platform that provides a centralized, self-service capability for developers. This platform standardizes development environments, tools, and access to resources, ensuring consistency while offering the flexibility to cater to specific project needs. It includes automation for common tasks, such as setting up development environments, initiating CI/CD pipelines, and deploying applications, making these processes more efficient and less prone to errors.
68
+
69
+
Key implementation principles:
70
+
71
+
-**Unified Self-Service Portal**: Implement a self-service portal as the interface to the IDP. The portal enables developers to easily provision environments, access tools, manage deployments, and monitor services without relying on other teams. This reduces wait times and empowers developers to work autonomously while following organizational standards.
72
+
73
+
-**Standardized Tooling & Workflows**: The IDP should provide standardized development environments, automated CI/CD pipelines, and monitoring systems to ensure consistency across teams. By offering templates for creating environments and services, it enables uniformity without compromising customization.
74
+
75
+
-**Guardrails for Governance**: Establish automated guardrails to ensure security and compliance across all environments and tools. These include pre-configured security policies, access controls, and monitoring integrated into the platform. This balances developer autonomy with governance.
76
+
77
+
-**Pluggable Architecture**: The platform must be extensible to adapt to changing organizational needs. It should support integration with various third-party services, tools, and APIs via a plugin architecture to allow teams to extend functionality as required.
78
+
79
+
-**InnerSource Practices**: Encourage InnerSource practices within the IDP to enhance collaboration and knowledge sharing between teams. By facilitating code reuse and contribution across the organization, InnerSource reduces duplication and promotes a culture of transparency.
80
+
81
+
-**Automation & Infrastructure as Code (IaC)**: Automate repetitive tasks such as environment provisioning, testing, and deployment. Integrating Infrastructure as Code (IaC) ensures that infrastructure is treated like code, versioned, and managed in a scalable and reliable manner
36
82
37
83
## Resulting Context
38
84
39
-
Adoption of the Internal Developer Platform leads to streamlined development workflows, improved efficiency, and faster onboarding of new team members. It fosters a culture of collaboration and innovation by removing barriers to resource access and standardizing best practices across teams.
85
+
Adoption of an Internal Developer Platform results in:
86
+
87
+
- Stremline development workflow and improved developer efficiency through self-service workflows and standardized environments.
88
+
- Enhanced collaboration as InnerSource practices make code and tools more accessible across teams.
89
+
- Faster onboarding of new team members on InnerSource projects.
90
+
- Faster software delivery due to reduced operational overhead, seamless integration of tools and standardization of development best practices.
91
+
- Consistent governance and security policies across all development environments.
92
+
- Scalability and flexibility, with the ability to extend the platform as the organization evolves
40
93
41
94
## Rationale
42
95
43
-
The Internal Developer Platform harmonizes the forces of consistencyand flexibility by providing a standardized yet customizable set of tools and resources. It supports scalable and controlled growth within the software development lifecycle, enhancing overall productivity and project collaboration
96
+
An IDP provides a solution to the competing forces of consistency, flexibility, and scalability. By centralizing the management of development environments and tooling while offering self-service capabilities, it balances the needs of both developers and platform teams. InnerSource practices further contribute by fostering a culture of collaboration and reuse across the organization. It supports scalable and controlled growth within the internal software development community, facilitating the adoption of wider InnerSource practices.
44
97
45
98
## Known Instances (optional)
46
99
47
-
Pattern under implementation at one large financial institution in North America and with a large public sector agency in Singapore.
100
+
(known instances to be added)
48
101
49
102
## Status (optional until merging)
50
103
@@ -61,5 +114,4 @@ Though optional, most patterns should list who helped in their creation.
61
114
62
115
## Alias (optional)
63
116
64
-
If this pattern is also known under a different name than what is listed unter **Title**, please list those alternative titles here.
65
-
e.g. if the pattern is named after the problem it solves, a helpful alias might be one that describes the solution that is applied.
0 commit comments