<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cloudomation</title>
	<atom:link href="https://cloudomation.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://cloudomation.com/</link>
	<description>Pure Python Framework for Platform Engineering</description>
	<lastBuildDate>Tue, 15 Jul 2025 12:05:04 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://cloudomation.com/wp-content/uploads/2019/07/logo_square_32px.ico</url>
	<title>Cloudomation</title>
	<link>https://cloudomation.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CRDs Outside Kubernetes: Declarative Infrastructure Without the Cluster</title>
		<link>https://cloudomation.com/cloudomation-blog/crds-outside-kubernetes-declarative-infrastructure-without-the-cluster/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Wed, 09 Jul 2025 06:31:32 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=54414</guid>

					<description><![CDATA[<p>Cloudomation offers a powerful and technology-agnostic way to model and manage infrastructure and platform services, independent of any specific runtime environment.</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/crds-outside-kubernetes-declarative-infrastructure-without-the-cluster/">CRDs Outside Kubernetes: Declarative Infrastructure Without the Cluster</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="54414" class="elementor elementor-54414">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Kubernetes revolutionized infrastructure management with Custom Resource Definitions (CRDs), allowing platform teams to extend the Kubernetes API to model and manage anything, from databases to entire cloud environments.</p><p>But what if you want the same abstraction power without being tied to Kubernetes?</p><p>That’s exactly what Cloudomation enables with <a href="https://docs.cloudomation.com/engine/11/docs/object-templates-custom-objects" target="_blank" rel="noopener">Custom Objects and Object Templates</a>: a powerful, technology-agnostic way to model and manage infrastructure and platform services, independent of any runtime.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>From CRDs to Custom Objects</h2><p>In Kubernetes, CRDs let you define your own resource types (MyDatabase, CloudEnvironment, AccessRequest, …) and control their lifecycle with custom controllers. This pattern became so successful that projects like Crossplane extended CRDs to manage resources outside of Kubernetes — such as AWS RDS or GCP buckets — using the same Kubernetes-native API and reconciliation loop.</p><p>Cloudomation takes this idea one step further.</p><p>With Object Templates and Custom Objects, Cloudomation lets you define your own resource types, just like CRDs, but completely decoupled from Kubernetes.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-2624287 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="2624287" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-001a967" data-id="001a967" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-69339f9 elementor-widget elementor-widget-text-editor" data-id="69339f9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Model Anything — Without Cluster Lock-in</h2><p>Cloudomation’s object model is:</p><ul><li>Technology-agnostic — no dependency on Kubernetes or any specific platform</li><li>Programmable — written in Python, no DSLs or YAML schemas to wrestle with</li><li>Composable — custom objects can relate to one another and trigger workflows</li><li>Integrated — interact with them via REST API or Webhooks</li></ul><p>You can define custom object types for:</p><ul><li>VMInstance on OpenStack</li><li>ProjectEnvironment across AWS and GCP</li><li>CI/CDPipeline in GitLab</li><li>AppConfig for application-level feature toggles</li><li>Anything else your platform manages</li></ul><p>Each custom object comes with lifecycle hooks, automation points like before_create, on_create,on_update and on_delete, that can:</p><ul><li>Trigger one-shot automation (e.g., provisioning a resource)</li><li>Maintain ongoing state synchronization (e.g., drift detection and reconciliation)</li><li>Drive event-based orchestration across tools</li></ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-ff5ec10 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ff5ec10" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f8663d1" data-id="f8663d1" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9046972 elementor-widget elementor-widget-text-editor" data-id="9046972" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Why This Matters</h2><p>Platform engineers spend a lot of time building abstraction layers: making infrastructure consumable via APIs, GUIs, or CLIs. CRDs were a breakthrough because they offered:</p><ul><li>A standardized way to model resources</li><li>A declarative interface for developers</li><li>Hooks into a powerful reconciliation loop for state management</li></ul><p>Cloudomation offers the same, without requiring a Kubernetes cluster, or even caring about the underlying platform.</p><p>Here’s why Cloudomation’s technology-agnostic <a href="https://docs.cloudomation.com/engine/11/docs/object-templates-custom-objects" target="_blank" rel="noopener">custom objects</a> are valuable:</p><ul><li><strong>Freedom from Kubernetes lock-in:</strong><br />Most modern platform automation solutions either require Kubernetes or are tightly coupled to it. Cloudomation lets you keep all the benefits of declarative resource modeling without forcing you to run or depend on a cluster.</li><li><strong>Unified abstraction layer across all infrastructure:</strong><br />You can model VMs, cloud projects, SaaS accounts, CI pipelines, or any resource in the same consistent way. This massively simplifies building and maintaining platform services that span multiple technologies.</li><li><strong>Full power of Python automation:</strong><br />Unlike CRDs with controllers often written in Go, Cloudomation lets you define lifecycle hooks and workflows in Python, a language many platform teams are comfortable with. This means faster iteration and easier customization.</li><li><strong>Flexible integration &amp; extensibility:</strong><br />The custom objects can trigger automation on events from Git, REST APIs, or other systems, fitting seamlessly into modern GitOps and event-driven platform architectures.</li><li><strong>Avoid complexity creep:</strong><br />No Kubernetes means fewer moving parts to manage, troubleshoot, or upgrade, especially important in regulated or on-prem environments where introducing Kubernetes can be a big overhead.</li></ul><p><strong>Bottom line:</strong> It’s a powerful, practical, and future-proof approach to platform engineering automation that’s tailored for real-world complexity and diversity.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-bc53060 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="bc53060" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3ca5f33" data-id="3ca5f33" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-69d873d elementor-widget elementor-widget-text-editor" data-id="69d873d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Crossplane Took CRDs Outside the Cluster. We Remove the Cluster Entirely.</h2><p>Crossplane recognized how powerful CRDs are and extended them to manage external infrastructure from within Kubernetes. It gave platform teams a way to offer self-service infrastructure via familiar APIs.</p><p>Cloudomation builds on the same insight, but removes the Kubernetes dependency entirely. Our custom object model:</p><ul><li>Works with Kubernetes if you want it to</li><li>Works without Kubernetes if you don’t</li><li>Provides the same abstraction layer, usable in on-prem, hybrid, or multi-cloud setups</li><li>Supports deep integration with tools like Git, Terraform, OpenStack, VMware, and more</li></ul><p>Whether you&#8217;re managing Kubernetes clusters, VMware VMs, or third-party SaaS tools, you can define and automate their lifecycles in the same consistent way.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-8b00a75 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8b00a75" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e5a7726" data-id="e5a7726" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ff316b2 elementor-widget elementor-widget-text-editor" data-id="ff316b2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Real-World Use Cases</h2><ul><li>A team uses custom objects to model DevelopmentEnvironments across AWS and OpenStack. The same lifecycle hooks provision resources, configure access, and tear them down, regardless of where they run.</li><li>Another team defines PipelineTemplates as custom objects, allowing developers to register new projects in a Git-based catalog. Cloudomation automates scaffolding, CI/CD integration, and notification routing.</li><li>Custom objects represent ServiceAccounts, with automation managing creation in Azure, rotation schedules, and secret distribution.</li></ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e10049f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e10049f" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8895731" data-id="8895731" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-31c8b6b elementor-widget elementor-widget-text-editor" data-id="31c8b6b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>API-Driven and Event-Driven</h2><p>Custom objects in Cloudomation are first-class citizens in your automation landscape. They can be:</p><ul><li>Queried and updated via REST API</li><li>Triggered via webhooks, e.g., on Git events</li><li>Managed via scripts, jobs, or long-running processes</li></ul><p>They integrate easily into GitOps pipelines or event-based workflows, exactly as you would expect from a modern platform engineering tool.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-0dbd718 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="0dbd718" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-466d456" data-id="466d456" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a01651d elementor-widget elementor-widget-text-editor" data-id="a01651d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Summary</h2>								</div>
				</div>
				<div class="elementor-element elementor-element-921d200 eael-table-align-center eael-dt-th-align-left elementor-widget elementor-widget-eael-data-table" data-id="921d200" data-element_type="widget" data-widget_type="eael-data-table.default">
				<div class="elementor-widget-container">
							<div class="eael-data-table-wrap" data-table_id="921d200" id="eael-data-table-wrapper-921d200" data-custom_responsive="false">
			<table class="tablesorter eael-data-table center" id="eael-data-table-921d200">
			    <thead>
			        <tr class="table-header">
									            <th class="" id="" colspan="">
														<span class="data-table-header-text">Feature</span></th>
			        				            <th class="" id="" colspan="">
														<span class="data-table-header-text">Kubernetes CRDs</span></th>
			        				            <th class="" id="" colspan="">
														<span class="data-table-header-text">Crossplane</span></th>
			        				            <th class="" id="" colspan="">
														<span class="data-table-header-text">Cloudomation Custom Objects</span></th>
			        				        </tr>
			    </thead>
			  	<tbody>
											<tr>
																   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													Infrastructure abstraction												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																										</tr>
			        						<tr>
																   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													Cloud resource automation												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (requires controllers)												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																										</tr>
			        						<tr>
																   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													Kubernetes required												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																										</tr>
			        						<tr>
																   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													GitOps-compatible												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																										</tr>
			        						<tr>
																   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													Technology-agnostic												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (Kubernetes-only)												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																										</tr>
			        						<tr>
																   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													Python-based logic												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																													   											<td colspan="" rowspan="" class="" id="">
												<div class="td-content-wrapper"><div class="td-content">
													<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />												</div></div>
											</td>
																										</tr>
			        			    </tbody>
			</table>
		</div>
	  					</div>
				</div>
				<div class="elementor-element elementor-element-902058a elementor-widget elementor-widget-spacer" data-id="902058a" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-fa88442 elementor-widget elementor-widget-text-editor" data-id="fa88442" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>CRDs Without the Cluster</h2><p><a style="font-size: 18px; background-color: #141414; letter-spacing: 0.1px;" href="https://docs.cloudomation.com/engine/11/docs/object-templates-custom-objects" target="_blank" rel="noopener">Custom Objects</a> in Cloudomation give you the power of CRDs, without the Kubernetes baggage.</p><p>If you&#8217;re building an internal platform and want flexible, declarative, and technology-neutral resource modeling, you can do it with Cloudomation. No cluster required.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a222168 elementor-widget elementor-widget-spacer" data-id="a222168" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b71e7fc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b71e7fc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8cf1e5c" data-id="8cf1e5c" data-element_type="column" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-b9916f0 elementor-widget elementor-widget-heading" data-id="b9916f0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<p class="elementor-heading-title elementor-size-default">Now that you're here...</p>				</div>
				</div>
				<div class="elementor-element elementor-element-27b28e2 elementor-widget elementor-widget-text-editor" data-id="27b28e2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr">Cloudomation Engine is a platform orchestrator that enables you to provide self-service tools, automate complex tasks, and gain full visibility into your infrastructure.</p><p dir="ltr">Let’s talk about how Cloudomation<br />can make that happen for you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1931470 elementor-align-center elementor-widget elementor-widget-button" data-id="1931470" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/en/contact-us-2/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Schedule a call</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/crds-outside-kubernetes-declarative-infrastructure-without-the-cluster/">CRDs Outside Kubernetes: Declarative Infrastructure Without the Cluster</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>New Guide: Building Internal Developer Platforms (IDPs)</title>
		<link>https://cloudomation.com/cloudomation-blog/new-guide-building-internal-developer-platforms/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Wed, 25 Jun 2025 10:50:04 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=54224</guid>

					<description><![CDATA[<p>Whether you’re in the early stages of evaluating platforms or already working on your in-house solution, this free guide is full of actionable insights to help you get it right.</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/new-guide-building-internal-developer-platforms/">New Guide: Building Internal Developer Platforms (IDPs)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="54224" class="elementor elementor-54224">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Building an IDP isn’t just a technical project, it’s a strategic effort that requires the right tools, workflows, and team alignment. That’s why we’ve created a new resource:</p><p><a href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">“Building Internal Developer Platforms: Best Practices, Tools, and Strategic Insights for Tech Leaders”</a></p><p>Whether you’re in the early stages of evaluating platforms or already working on your in-house solution, this free guide is full of actionable insights to help you get it right.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>What You’ll Learn</h2><ul><li>What IDPs are and why they matter in today’s engineering organizations</li><li>Core components that make up an effective IDP</li><li>Benefits such as faster delivery cycles, reduced complexity, and improved developer experience</li><li>Best practices for designing a self-service platform that integrates tools and workflows seamlessly</li><li>Common challenges teams face when building or adopting IDPs, and how to avoid them</li><li>How to make the business case for an IDP using data and outcome-focused arguments</li><li>Curated resources to support your team’s IDP journey from planning to rollout</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-424d8ea elementor-widget elementor-widget-spacer" data-id="424d8ea" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-ff573a1 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ff573a1" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-12be62b" data-id="12be62b" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-5915d04 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5915d04" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-725b369" data-id="725b369" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-e678cba elementor-widget elementor-widget-image" data-id="e678cba" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-f7b185e" data-id="f7b185e" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-61b8e78 elementor-widget elementor-widget-text-editor" data-id="61b8e78" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p><p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-e502b8a elementor-widget elementor-widget-button" data-id="e502b8a" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-2624287 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="2624287" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-001a967" data-id="001a967" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-69339f9 elementor-widget elementor-widget-text-editor" data-id="69339f9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Get the Free Guide</h2><p>Ready to get started? Download the full guide and start building an Internal Developer Platform that delivers real impact.</p><p><a href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">Download the Guide</a></p><p><em>Have feedback or questions? We’d love to hear from you.</em></p>								</div>
				</div>
				<div class="elementor-element elementor-element-0c1ab01 elementor-widget elementor-widget-spacer" data-id="0c1ab01" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b71e7fc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b71e7fc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8cf1e5c" data-id="8cf1e5c" data-element_type="column" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-b9916f0 elementor-widget elementor-widget-heading" data-id="b9916f0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<p class="elementor-heading-title elementor-size-default">Now that you're here...</p>				</div>
				</div>
				<div class="elementor-element elementor-element-27b28e2 elementor-widget elementor-widget-text-editor" data-id="27b28e2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr">Cloudomation Engine is a platform orchestrator that enables you to provide self-service tools, automate complex tasks, and gain full visibility into your infrastructure.</p><p dir="ltr">Let’s talk about how Cloudomation<br />can make that happen for you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1931470 elementor-align-center elementor-widget elementor-widget-button" data-id="1931470" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/en/contact-us-2/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Schedule a call</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/new-guide-building-internal-developer-platforms/">New Guide: Building Internal Developer Platforms (IDPs)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Platform Engineering Tools for Building an IDP (2025)</title>
		<link>https://cloudomation.com/cloudomation-blog/best-platform-engineering-tools/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Wed, 11 Jun 2025 12:18:50 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=53892</guid>

					<description><![CDATA[<p>This article walks through how to structure an IDP, categorized by key components, with examples of tools you can use.</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/best-platform-engineering-tools/">Platform Engineering Tools for Building an IDP (2025)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="53892" class="elementor elementor-53892">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>As your organization scales, so does the demand for faster feature delivery. But without proper support, engineering teams often end up bogged down by infrastructure work, slowing development and increasing cognitive load. That’s where Internal Developer Platforms (IDP) come in.</p><p>This article walks through how to structure an IDP, categorized by key components, with examples of tools you can use.</p><p>Let’s jump right into it!</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>What should a successful Internal Developer Platform deliver?</h2><p>A well-designed IDP should accelerate software delivery by abstracting away repetitive, low-value infrastructure tasks, freeing developers to focus on what matters: writing code. In contrast to “just” CI/CD pipelines and other automation that runs in the background, IDPs aim to provide visibility and self-service to software engineers.</p><p>Through the IDP, software engineers should be able to discover which infrastructure, deployments, components, repositories and other assets relevant to their work exist &#8211; and be enabled to use them through self-service. The idea of visibility and self-service is central to internal developer platforms.</p><p>Platform engineering teams are responsible for building and maintaining the IDP. Tasks previously taken on by DevOps, operations and application teams are now partially moving to the platform engineering team: selecting tools, building pipelines, integrating services and infrastructure and providing the IDP as a layer of abstraction and visibility on top.</p><p>To enable this shift, you need the right platform engineering team, resources and tools for your IDP.</p><p><img decoding="async" class="aligncenter wp-image-53896 size-large" src="https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-current-state-1024x529.png" alt="platform engineering tools current state" width="1024" height="529" srcset="https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-current-state-1024x529.png 1024w, https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-current-state-300x155.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-current-state-768x397.png 768w, https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-current-state.png 1363w" sizes="(max-width: 1024px) 100vw, 1024px" /></p><p><img decoding="async" class="aligncenter wp-image-53897 size-large" src="https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-future-state-1024x521.png" alt="platform engineering tools future state" width="1024" height="521" srcset="https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-future-state-1024x521.png 1024w, https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-future-state-300x153.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-future-state-768x390.png 768w, https://cloudomation.com/wp-content/uploads/2025/06/platform-engineering-tools-future-state.png 1363w" sizes="(max-width: 1024px) 100vw, 1024px" /></p><p><em>Screenshots form &#8220;<a href="https://www.youtube.com/watch?v=sikKemrg2_A">How to Make the Business Case for an Internal Developer Platform</a>&#8220;</em></p><p>Taken from the talk “How to Make the Business Case for an Internal Developer Platform”, the slides above illustrate which capabilities are moved from application teams to platform engineering teams. </p><p>The key point here is that the platform engineering team provides these capabilities as a service to all application teams. This removes the duplication of effort often present in engineering organisations where every application team takes care of their own local deployment tooling, developer tooling like code scanning tools or even testing frameworks and CI/CD pipelines. </p><p>Moving this to a dedicated platform engineering team also means that it becomes much easier to enforce organisation-wide standards and policies, especially for secret management and quality assurance.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-424d8ea elementor-widget elementor-widget-spacer" data-id="424d8ea" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-ff573a1 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ff573a1" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-12be62b" data-id="12be62b" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-5915d04 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5915d04" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-725b369" data-id="725b369" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-e678cba elementor-widget elementor-widget-image" data-id="e678cba" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-f7b185e" data-id="f7b185e" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-61b8e78 elementor-widget elementor-widget-text-editor" data-id="61b8e78" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p><p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-e502b8a elementor-widget elementor-widget-button" data-id="e502b8a" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-2624287 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="2624287" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-001a967" data-id="001a967" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-69339f9 elementor-widget elementor-widget-text-editor" data-id="69339f9" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Categorization of tools and components</h2><p>Many articles simply list various platform engineering tools without offering any categorization. As a result, you’re left with a scattered collection of tools, and the burden of figuring out how (or if) they fit into your platform engineering tech stack.</p><p>To bring clarity and structure, we categorize these tools using a “reference architecture” popularized by platformengineering.org. This framework breaks down the ecosystem into five core components, known as “planes”:</p><ul><li><strong>Developer Control Plane:</strong> All components through which developers interact with the platform. Typically includes GUIs / portals, source control, cloud development environments (CDEs), as well as configuration standards that developers maintain themselves (typically in their source code repository), such as ansible playbooks, helm charts, devfile.yaml etc.</li><li><strong>Integration &amp; Delivery Plane:</strong> This is where all the automation happens. CI/CD pipeline tools, infrastructure automation, as well as other automation tools (e.g. platform orchestrators) are typically shown as part of this plane.</li><li><strong>Monitoring &amp; Logging Plane:</strong> As the name suggests, this is where all observability tools are located.</li><li><strong>Security Plane:</strong> Secrets management, policy tools and other security tools.</li><li><strong>Resource Plane:</strong> Compute and storage.</li></ul><p>Not all internal developer platforms necessarily have all five planes, and it doesn’t always make sense to divide an IDP into those five planes, e.g. when some of them are covered in the same tool or platform.</p><p>Visually it looks like this:</p><p><img loading="lazy" decoding="async" class="aligncenter wp-image-48953 size-full" src="https://cloudomation.com/wp-content/uploads/2025/02/idp-architecture-cloudomation-black.png" alt="idp architecture cloudomation" width="918" height="792" srcset="https://cloudomation.com/wp-content/uploads/2025/02/idp-architecture-cloudomation-black.png 918w, https://cloudomation.com/wp-content/uploads/2025/02/idp-architecture-cloudomation-black-300x259.png 300w, https://cloudomation.com/wp-content/uploads/2025/02/idp-architecture-cloudomation-black-768x663.png 768w" sizes="(max-width: 918px) 100vw, 918px" /></p><p>Next, we show you an example of how to design an IDP and the tools you could consider.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ba75473 elementor-widget elementor-widget-text-editor" data-id="ba75473" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Platform Engineering Tools Explorer</h2><p>You can also use our <a href="https://cloudomation.com/platform-engineering-tooling-explorer/">platform tooling explorer</a> to check out the tools interactively.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3368b71 elementor-widget elementor-widget-text-editor" data-id="3368b71" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Example: Building an Internal Developer Platform</h2><p>Here’s a breakdown of tools you could use to build an IDP. Important note: There are many tools available (<a href="https://cloudomation.com/cloudomation-blog/platform-engineering-open-source-vs-commercial-tools/">Commercial and open source tools</a>). Those referenced in this article are only examples.</p><h3>Developer Control Plane</h3><h4>#1 Developer Portal</h4><p><strong>Why it’s important:</strong> Internal developer portals serve as the unified interface and allow developers, teams, and engineering managers to discover services, track ownership, enforce standards, and improve software. We wrote about Developer Portals in detail in this blog post <a href="https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/">5 Internal Developer Portals (…and what software engineers say about them)</a>. The platform engineering team ensures that the portal stays up to date, integrates seamlessly with existing tools, and evolves based on developer feedback.</p><p><strong>Tools to consider:</strong></p><ul><li><strong>Engine Forms:</strong> Engine forms are lightweight, json-schema-based forms which can serve as simple user interfaces to e.g. trigger a deployment, provide information about pipeline status, etc. Engine forms are useful for fast prototyping and as simple user interfaces for individual use cases, however they are not intended as a full portal solution. For an IDP, a dedicated portal makes sense, to which Cloudomation Engine can expose data and services, which developers then consume via the portal.</li><li><strong>Backstage:</strong> Backstage is a popular open-source framework for building developer portals. It’s not a plug-and-play solution; it requires ongoing effort and engineering resources. For organizations with the right capacity, Backstage delivers a powerful and highly flexible developer portal solution.</li><li><strong>Port:</strong> Port offers a no-code setup that makes it easy to get started quickly. It also has automation capabilities, allowing you to respond to events or trigger actions based on user input.</li><li><strong>Cortex:</strong> “Cortex is the enterprise Internal Developer Portal built to accelerate the path to engineering excellence.” It has a comprehensive service catalog, scorecards and integrates with a wide array of tools. Unfortunately, they only provide their pricing on request.</li></ul><h4>#2 Cloud Development Environments (CDEs)</h4><p><strong>Why it’s important:</strong> CDEs are remote development environments that are either hosted in the cloud, or self-hosted. CDEs allow developers to work from consistent, standardized environments that eliminate “it works on my machine” issues. The platform engineering team ensures that CDEs are secure, fast, and integrated with the developer workflow.</p><p><strong>Tools to consider:</strong></p><ul><li><strong>Cloudomation DevStack:</strong> <a href="https://cloudomation.com/cloud-development-environments-devstack/">Cloudomation DevStack Cloud Development Environments (CDEs)</a> are fully equivalent to local development environments. Complex applications can be run directly in the CDE. The source code can be mirrored locally, which means that local IDEs can be used. Developers do not have to change existing working methods, but can work with CDEs as they would locally – only with more resources and without troubleshooting local deployments.</li><li><strong>Gitpod:</strong> With Gitpod, you can launch secure, context-rich environments built for developers and their agents at enterprise scale.</li><li><strong>Coder:</strong> Coder provides secure environments for developers and their agents.</li></ul><p>We wrote an article about available CDE tools here: <a href="https://cloudomation.com/cloudomation-blog/remote-development-environments-tools/">7 Remote Development Tools at a Glance</a>.</p><p>We’ve also put together a <a href="https://cloudomation.com/whitepaper-en/cde-vendors-feature-comparison/">comprehensive whitepaper covering all the major tools and vendors, complete with a detailed comparison table. As far as we know, it’s the only resource offering such an in-depth comparison of CDEs</a>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-e835322 elementor-widget elementor-widget-text-editor" data-id="e835322" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>Integration &amp; Delivery Plane</h3><h4>#1 CI Pipeline</h4><p><strong>Why it’s important:</strong> Automates code validation, testing, and faster feedback loops.</p><p><strong>Tools to consider:</strong></p><ul><li><strong>Cloudomation Engine:</strong> Natively build CI pipelines from scratch, or migrate CI pipelines from other tools, integrate existing tools, orchestrate and extend existing pipelines.</li><li><strong>GitHub Actions:</strong> Native CI for GitHub, with customizable workflows.</li><li><strong>CircleCI:</strong> Highly scalable, with support for advanced parallelism.</li><li><strong>Buildkite:</strong> Developer-centric CI with scalable infrastructure.</li></ul><h4>#2 CD Pipeline</h4><p><strong>Why it’s important:</strong> CD pipelines automate the safe, repeatable deployment of software.</p><p><strong>Tools to consider:</strong></p><ul><li><strong><a href="https://cloudomation.com/continuous-deployment-tool/">Cloudomation Engine</a>:</strong> End-to-end deployment automation. Automate complex deployment logic using Python. Gain full visibility with visualized deployment processes.</li><li><strong>Argo CD:</strong> GitOps-based delivery for Kubernetes.</li><li><strong>Flux:</strong> Kubernetes GitOps controller.</li><li><strong>Octopus Deploy:</strong> Suited for multi-cloud and on-prem environments.</li></ul><h4>#3 Platform Orchestrator</h4><p><strong>Why it’s important:</strong> <a href="https://cloudomation.com/cloudomation-blog/best-platform-orchestration-tools/">Orchestration tools</a> provide the logic to tie workflows together across tools and services.</p><p><strong>Tools to consider:</strong></p><ul><li><strong><a href="https://cloudomation.com/backend-idp-tool/">Cloudomation Engine</a>:</strong> Pure Python Framework for Platform Engineering. Provide self service tools, automate complex tasks and get full visibility into your infrastructure with just one tool.</li><li><strong>Humanitec:</strong> A platform orchestrator providing dynamic environments.</li></ul><p>Read more: <a href="https://cloudomation.com/humanitec-alternative/">Cloudomation Engine vs. Humanitec</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-e38eee5 elementor-widget elementor-widget-text-editor" data-id="e38eee5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>Monitoring &amp; Logging Plane</h3><h4>#1 Observability</h4><p><strong>Why it’s important:</strong> Observability tools provide visibility into the health, performance, and reliability of applications and infrastructure. The platform engineering team maintains dashboards, alerting rules, and ensures that teams get actionable insights.</p><p><strong>Tools to consider:</strong></p><ul><li><strong>Prometheus:</strong> Monitoring and alerting toolkit, especially for Kubernetes.</li><li><strong>Grafana:</strong> Dashboarding tool often paired with Prometheus.</li><li><strong>Datadog:</strong> Cloud monitoring and analytics.</li></ul><h3>Security Plane</h3><h4>#1 Secret Manager</h4><p><strong>Why it’s important:</strong> Secret managers securely store and distribute credentials, API keys, and other sensitive data.</p><p><strong>Tools to consider:</strong></p><ul><li><strong>HashiCorp Vault:</strong> Industry-leading secrets management.</li><li><strong>AWS Secrets Manager / Azure Key Vault / GCP Secret Manager</strong></li><li><strong>Sealed Secrets (Bitnami):</strong> Encrypts secrets for Kubernetes.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-e7b9f3d elementor-widget elementor-widget-text-editor" data-id="e7b9f3d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Conclusion: Building Blocks, Not a Shopping List</h2><p>If there’s one thing to take away from this article, it’s that <strong>platform engineering isn’t about picking the flashiest tools off a shelf, it’s about curating the right building blocks to create a seamless developer experience.</strong></p><p>Think less about “<em>which tool should I pick?</em>” and more about “<em>how can I design a platform that feels invisible and powerful to my developers and provides business value?</em>”</p><p>Because the real magic happens when these tools stop being individual puzzle pieces and start becoming part of a cohesive developer platform, where developers barely notice the underlying complexity because the platform works with them, not against them.</p><p>To build a truly cohesive IDP, a core focus has to be on integrating all the different tools and services that are needed. A painful lesson that many platform teams learn early on is that the feature set of individual tools is far less important than the ability to connect these tools with the IDP, and to provide it to software engineers with a good user experience &#8211; because otherwise, even the flashiest tool will just sit on the shelf and gather dust.</p><p>As such, a central integration component (<a href="https://cloudomation.com/backend-idp-tool/">like a platform orchestrator</a>) is key to building a successful internal developer platform.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0c1ab01 elementor-widget elementor-widget-spacer" data-id="0c1ab01" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b71e7fc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b71e7fc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8cf1e5c" data-id="8cf1e5c" data-element_type="column" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-b9916f0 elementor-widget elementor-widget-heading" data-id="b9916f0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<p class="elementor-heading-title elementor-size-default">Now that you're here...</p>				</div>
				</div>
				<div class="elementor-element elementor-element-27b28e2 elementor-widget elementor-widget-text-editor" data-id="27b28e2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr">Cloudomation Engine is a platform orchestrator that enables you to provide self-service tools, automate complex tasks, and gain full visibility into your infrastructure.</p><p dir="ltr">Let’s talk about how Cloudomation<br />can make that happen for you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1931470 elementor-align-center elementor-widget elementor-widget-button" data-id="1931470" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/en/contact-us-2/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Schedule a call</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/best-platform-engineering-tools/">Platform Engineering Tools for Building an IDP (2025)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Open source vs. Commercial Tools in Platform Engineering</title>
		<link>https://cloudomation.com/cloudomation-blog/platform-engineering-open-source-vs-commercial-tools/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Fri, 23 May 2025 09:55:10 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=52510</guid>

					<description><![CDATA[<p>What are the reasons why and when you should consider using commercial tools, in addition to open source components?</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/platform-engineering-open-source-vs-commercial-tools/">Open source vs. Commercial Tools in Platform Engineering</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="52510" class="elementor elementor-52510">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Open source tools are the foundation of many internal developer platforms. What are the reasons why and when you should consider using commercial tools, in addition to the many open source components that are most likely already a part of your platform engineering tool stack?</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Where are commercial tools unavoidable?</h2><p>It’s perfectly feasible to build an <a href="https://cloudomation.com/cloudomation-blog/what-is-an-internal-developer-platform/">internal developer platform</a> entirely with open source components. This is what many organisations are already doing.</p><p>The most common places where commercial tools are nevertheless used are:</p><ul><li><strong>Cloud infrastructure and managed services:</strong> Unless you have your own bare-metal infrastructure or happen to be a cloud service provider yourself, it’s highly likely that you use commercial cloud offerings. Why? Because it’s simply cheaper for most organisations to use on-demand cloud services than buying physical compute infrastructure.</li><li><strong>Since software is often bundled with cloud offerings (e.g. the entire AWS universe of tools), it’s also very common to use at least some commercial software from cloud providers</strong>, like for example container registries or managed git services. Why? Mostly for convenience: Since those software offerings are closely integrated with the cloud service, it is typically easy to use them together.</li><li><strong>IDEs and other developer tools</strong> (some of which are used locally, so not really part of the platform engineering stack) are also very often paid for in large engineering organisations. Why? Because they often offer better user experience than open source alternatives.</li></ul><p>Beyond that, open source tools are the most common choices for container orchestration, CI/CD, secret management, logging etc. But commercial tools exist in all of these categories and in many cases, it absolutely makes sense to use a commercial tool instead of, or in addition to, open source solutions.</p><p><strong>Read more:</strong></p><ul><li><a href="https://cloudomation.com/cloudomation-blog/best-platform-orchestration-tools/">Best Platform Orchestration Tools</a></li><li><a href="https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/">5 Internal Developer Portals (&#8230;and what software engineers say about them)</a></li><li><a href="https://cloudomation.com/cloudomation-blog/best-platform-engineering-tools/">Platform Engineering Tools for Building an IDP</a></li></ul><h2>When to consider commercial tools</h2><p>Commercial and open source tools that solve the same problems are typically different in the following ways:</p><ul><li><strong>User experience:</strong> While open source tools are often great for solving a specific problem, their development is often not focused on providing good user experience. UX is often the point where the difference between open source and commercial tools is biggest. Whether or not that is worth paying for depends on the user group and their preferences. Tools used by a small, highly technical platform engineering might need UX less than tools that are supposed to be used by every single engineer in your organisation.</li><li><strong>One tool instead of many:</strong> One of the reasons why platform engineering is such a complex topic is because the number of tools in the stack is huge. There is a natural tendency for open source tools to focus on solving one particular problem. This means using many separate tools which each does something very specific. Using several of them together can be a challenge. While the majority of open source tools have APIs that allow them to be integrated, this integration still has to be set up and maintained, and adds complexity to the stack, in addition to the specific tool knowledge required for each of the open source components. One major advantage of many commercial tools is that they have a broad and well integrated feature set that reduces the number of tools you need, and the overall complexity of your stack a lot. Especially when you have a small team, using one commercial tool instead of ten, five, or even just two separate open source components can make your life a lot easier.</li><li><strong>Unique features:</strong> Many commercial tools have “killer features” which are simply not available in open source tools.</li><li><strong>SLAs, Support and Services:</strong> This is one of the most common arguments in favour of commercial tools. It’s not entirely true anymore because there are services companies offering managed service, support and SLAs for many popular open source tools. There are also many commercial software vendors who offer an open source variant of their tool. However when you buy services and support for an open source tool, you might just as well buy a commercial tool straight away and get direct vendor support with it.</li></ul><p>What does this mean for you?</p><p><strong>Open source tools are a great choice for you if you have:</strong></p><ul><li>An highly skilled and well-staffed platform engineering team with deep expertise in open source tools and time to invest in learning,</li><li>More budget for headcount and less budget for software licenses.</li></ul><p><strong>Commercial tools are a better choice if you have:</strong></p><ul><li>A small platform engineering team and/or many junior engineers,</li><li>Less budget for headcount (or simply less headcount) and more budget for software licenses.</li></ul><p>Overall cost is often higher in open-source heavy stacks because it requires more (expensive) manpower to build and maintain. While this is commonly known, many organisation still choose open source tools with the argument that they are “free”. Open source tools are definitely cheaper than buying from IBM, Oracle or Broadcom &#8211; but when it comes to specialised DevOps or platform engineering tools provided by independent, small or mid-sized vendors, the cost-benefit calculation is often on the side of the commercial tool.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8317de4 elementor-widget elementor-widget-spacer" data-id="8317de4" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4e8121e4 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4e8121e4" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6a869924" data-id="6a869924" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-4c38c6dc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4c38c6dc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-42eb5361" data-id="42eb5361" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-66024395 elementor-widget elementor-widget-image" data-id="66024395" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-53d00312" data-id="53d00312" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2612db05 elementor-widget elementor-widget-text-editor" data-id="2612db05" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p>
<p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7899ab4a elementor-widget elementor-widget-button" data-id="7899ab4a" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b614c92 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b614c92" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0515211" data-id="0515211" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-f6a0242 elementor-widget elementor-widget-text-editor" data-id="f6a0242" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2><span style="font-family: 'Roboto Mono', sans-serif; font-size: 36px; font-weight: 500; letter-spacing: 0.1px;">House adver</span><span style="font-family: 'Roboto Mono', sans-serif; font-size: 36px; font-weight: 500; letter-spacing: 0.1px;">tising: When to consider Cloudomation <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></h2><p><a href="https://cloudomation.com/">Cloudomation is a pure Python framework for platform engineering</a>. Intended to sit at the very core of your internal developer platform, we like to call it “<a href="https://cloudomation.com/backend-idp-tool/">platform backend</a>” or “platform orchestrator”. This is a type of component for which there are not many open source tools available (yet).</p><p>Instead, many IDPs either</p><ul><li>focus on a single type of infrastructure, e.g. only Kubernetes, and build services for the IDP within that infrastructure, which requires less orchestration/integration, or</li><li>have a lot of manually scripted glue code that is either spread across different tools (e.g. custom resource definitions in Kubernetes, lots of different Terraform templates, manually maintained bash scripts, some automation in Jenkins etc.) and/or is completely custom, meaning that some sort of custom orchestration component has been scripted from scratch (often starting with cron <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f605.png" alt="😅" class="wp-smiley" style="height: 1em; max-height: 1em;" />) which is continuously extended and typically needs a lot of maintenance.</li></ul><p>It is perfectly normal to start like this. Especially focusing on one type of infrastructure in the beginning is sensible. But there comes a point when the dependencies that need to be orchestrated become so complex that:</p><ul><li>Most problems with IDP services don’t happen within one component, but between them: incorrect configuration is provided as input, dependencies are not present or incompatible, services that rely on each other are not deployed in the correct order, etc. Identifying the root cause of such problems takes a lot of time. Fixing them is even harder. It often means extending an already complex piece of logic to account for another case. If this logic is spread across different tools and files, this is hugely cumbersome to maintain.</li><li>Most effort of a platform engineering team goes into maintaining and extending glue code, instead of building new services. A lot of resources are tied up that debug configuration errors and similar problems.</li></ul><p>In short: Glue code is the least transparent and most fragile piece of most IDPs.</p><p>If you are in a situation like this, you should look at Cloudomation. We built it to provide a home for glue code, and to transform it from a liability to an asset. The purpose of Cloudomation is to</p><ul><li>integrate your stack across technology boundaries in a maintainable and transparent way,</li><li>enabling you to build a layer of abstraction across your tool stack that makes it simple to provide standardised services to other stakeholders on top of a diverse tool stack that spans different technologies</li></ul><p>Broken down into the arguments I mentioned above, here are the reasons why you might want to consider using Cloudomation in addition to the open source tools you already have:</p><ol><li>One tool instead of many: Due to its broad feature set including workflow automation, state management, configuration, API and CDE management, Cloudomation enables platform engineers to solve many of their challenges within one unified framework instead of a patchwork of many different open source solutions. Having one unified framework that covers many use cases means faster implementation and much easier maintenance of your platform long-term. <a href="https://docs.cloudomation.com/">Read more about which tools Cloudomation Engine can substitute.</a></li><li>Unique features: There are some things Cloudomation can do, that open source tools can’t:<ol><li>Custom objects with custom life cycles: Similar to custom resource definitions in Kubernetes (but more flexible), custom objects allow you to create a layer of abstraction that is custom and completely unrestricted by underlying technologies. This means lifecycle management, state management, and full transparency, for whatever it is that you want to provide to your engineers (deployments, sets of test data, applications, servers, etc. &#8211; you can model whatever you like as a custom object). This is invaluable when you want to sustainably manage complex infrastructure across different clouds and tech stacks.</li><li>Unrivaled stability and scalability due to savepoints: How Python is executed on Cloudomation is different from how it runs elsewhere. We persist the execution stack of your scripts with every call of our Python API. This means script executions can be interrupted and resumed easily. This makes it robust, and easily scalable.</li><li>Cloudomation AI assistant: While lots of AI assistants offer code completion or can help with questions about Python, our built-in Cloudomation assistant knows Cloudomation specific functionality and has tools that allow it to directly create resources and write code in Cloudomation. Even though Cloudomation is a powerful and complex tool, using it becomes easy with the Cloudomation AI assistant.</li></ol></li><li>Services &amp; support, SLAs: With us, you don’t just get standard support, but a personal contact person from our dedicated consulting team.</li></ol><h2>Summary</h2><p>While open source tools are a core component of most internal developer platforms, it is sensible to use commercial tools as well. Especially when you have a small or over-stretched platform engineering team, commercial tools can help a lot to reduce the operational overhead for platform engineering tools.</p><p>As a <a href="https://cloudomation.com/">pure Python framework for platform engineering</a>, Cloudomation enables platform engineers to easily and visually create a layer of abstraction that consists of custom objects representing your infrastructure and services. This layer of abstraction is tied to workflow automation and lifecycle management directly in the Cloudomation platform, and is intended to span different technologies and clouds.</p><p>As such, Cloudomation effectively reduces the complexity of building an internal developer platform, and empowers platform engineering teams with limited resources to sustainably manage complex infrastructure and large tool stacks.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9f03971 elementor-widget elementor-widget-spacer" data-id="9f03971" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b71e7fc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b71e7fc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8cf1e5c" data-id="8cf1e5c" data-element_type="column" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-b9916f0 elementor-widget elementor-widget-heading" data-id="b9916f0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<p class="elementor-heading-title elementor-size-default">Now that you're here...</p>				</div>
				</div>
				<div class="elementor-element elementor-element-27b28e2 elementor-widget elementor-widget-text-editor" data-id="27b28e2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr">Cloudomation Engine is a platform orchestrator that enables you to provide self-service tools, automate complex tasks, and gain full visibility into your infrastructure.</p><p dir="ltr">Let’s talk about how Cloudomation<br />can make that happen for you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1931470 elementor-align-center elementor-widget elementor-widget-button" data-id="1931470" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/en/contact-us-2/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Schedule a call</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/platform-engineering-open-source-vs-commercial-tools/">Open source vs. Commercial Tools in Platform Engineering</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>3 Platform Orchestration Tools (2025)</title>
		<link>https://cloudomation.com/cloudomation-blog/best-platform-orchestration-tools/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Thu, 15 May 2025 07:05:45 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=53040</guid>

					<description><![CDATA[<p>In this article, we introduce three platform orchestration tools: Cloudomation Engine, Humanitec, and KusionStack.</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/best-platform-orchestration-tools/">3 Platform Orchestration Tools (2025)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="53040" class="elementor elementor-53040">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In this article, we introduce three platform orchestration tools: Cloudomation Engine, Humanitec, and KusionStack. Each tool helps organizations streamline infrastructure management by automating the setup, deployment, and orchestration of applications and resources across different environments.</p><p>Explore these tools and their features below!</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>What are Platform Orchestration Tools</h2><p>Platform orchestration tools are designed to help teams manage and automate their internal developer platform (IDP). Basically, it’s the behind-the-scenes system that developers use to deploy and run their apps.</p><p>Instead of every engineer manually wiring up infrastructure (databases, Kubernetes clusters, cloud services, etc.) or relying on a bunch of scripts, platform orchestration tools automate and standardize this process.</p><p>Think of it like this:</p><ul><li>You define how your environments (dev, staging, production) should work.</li><li>The tool orchestrates the necessary resources, configurations, and deployments.</li><li>Developers can focus on coding and shipping features instead of worrying about infrastructure.</li></ul><p>Platform orchestration tools are part of <a href="https://cloudomation.com/cloudomation-blog/best-platform-engineering-tools/">platform engineering tools for building an IDP</a>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0076a9e elementor-widget elementor-widget-text-editor" data-id="0076a9e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Platform Orchestration Tools</h2><h3>#1 Cloudomation Engine</h3><p>Cloudomation Engine is a pure Python framework built for integrating, monitoring and orchestrating tools and services across different technologies and infrastructures. As a unified platform, it provides an overview of all platform components. Modifying existing services and adding new ones becomes simple and fast.</p><p><strong>How does it work?</strong></p><ul><li>Cloudomation Engine includes a native configuration management tool that enables visual modeling of both standard and custom configurations. Configuration files in Git repositories can be automatically validated, generated, and updated based on Engine’s models. Configurations can be displayed as structured data or user-friendly forms, which can be embedded into platforms like Backstage (Related: <a href="https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/">Best Internal Developer Portal Tools</a>) or used standalone. Platform engineers control available options to reduce complexity for developers.</li><li>With broad integration capabilities, Engine simplifies connecting tools and services across systems. Platform teams can orchestrate services by defining Python-based workflows. Integrations are handled flexibly via webhooks, custom APIs, or standard protocols like REST and SSH. Powerful Python-based schedulers manage complex dependencies, ensuring workflows trigger only when all conditions are met</li><li>Automations are written in standard Python using Engine’s API. Structured data like secrets, RBAC settings, and connectors are stored as YAML. All content is versioned in Git, allowing teams to edit configurations directly in their preferred IDEs.</li></ul><p><strong>Website:</strong> <a href="https://cloudomation.com/">https://cloudomation.com/</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-d848e20 elementor-widget elementor-widget-text-editor" data-id="d848e20" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>#2 Humanitec</h3><p>Humanitec positions itself as “<em>the Platform Orchestrator at the core of your Internal Developer Platform (IDP).</em>”</p><p>It helps organizations build IDPs by orchestrating tools and infrastructure. Engineering teams define application architectures and infrastructure dependencies declaratively; Humanitec then dynamically applies changes, standardizes deployments, and generates app and infrastructure configurations for every deployment.</p><p><strong>How does it work?</strong></p><ul><li>Developers can request fresh environments and resources, like databases, DNS, and storage, without needing to write scripts or submit tickets.</li><li>Humanitec integrates with any CI pipeline and offers operations teams flexibility to plug in any tool or workflow via its open-source driver library. Teams can also create custom drivers to extend the system as needed.</li></ul><p>Website: <a href="https://humanitec.com/">https://humanitec.com/</a> <br />Compare: <a href="https://cloudomation.com/humanitec-alternative/">Cloudomation Engine vs. Humanitec</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-37713e5 elementor-widget elementor-widget-text-editor" data-id="37713e5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>#3 KustionStack</h3><p>KusionStack is an intent-driven Platform Orchestrator, which sits at the core of an Internal Developer Platform (IDP). Developers only need to write a single application specification &#8211; AppConfiguration. AppConfiguration defines the workload and all resource dependencies without needing to supply environment-specific values, Kusion ensures it provides everything needed for the application to run.</p><p><strong>How does it work?</strong></p><ul><li>Specify desired application intent through declarative configuration code, drive continuous deployment with any CI/CD systems or GitOps to match that intent.</li><li>Enable platform teams to set baseline-templates, control how and where to deploy application workloads and provision accessory resources.</li><li>Enforce security and infrastructure best practices with out-of-box base models, create security and compliance guardrails for any KusionStack deploy with third-party Policy as Code tools. All accessory resource secrets are automatically injected into Workloads.</li></ul><p>Website: <a href="https://www.kusionstack.io/">https://www.kusionstack.io/</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-8baee0a elementor-widget elementor-widget-spacer" data-id="8baee0a" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4232c880 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4232c880" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-58820d55" data-id="58820d55" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-b30e3aa elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b30e3aa" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-5a0630a" data-id="5a0630a" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-6c72ff0d elementor-widget elementor-widget-image" data-id="6c72ff0d" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-6ee47a3a" data-id="6ee47a3a" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-18217d28 elementor-widget elementor-widget-text-editor" data-id="18217d28" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p>
<p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1376c337 elementor-widget elementor-widget-button" data-id="1376c337" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-8f76c08 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8f76c08" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-49f3b9b" data-id="49f3b9b" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-6612a27 elementor-widget elementor-widget-text-editor" data-id="6612a27" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Summary</h2><p>Platform orchestration tools help teams automate infrastructure management. This reduces complexity and improves efficiency, allowing platform teams to enforce best practices and maintain control over configurations, deployments, and security. Each of these platform orchestration tools &#8211; Cloudomation Engine, Humanitec, and KusionStack &#8211; offer unique features. Select the one that best aligns with your development workflows and infrastructure needs.</p><p>Learn more about <a href="https://cloudomation.com/backend-idp-tool/">Cloudomation as IDP Backend</a>.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-55906b9 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="55906b9" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-02af873" data-id="02af873" data-element_type="column" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-db25a55 elementor-widget elementor-widget-heading" data-id="db25a55" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<p class="elementor-heading-title elementor-size-default">Now that you're here...</p>				</div>
				</div>
				<div class="elementor-element elementor-element-f61c727 elementor-widget elementor-widget-text-editor" data-id="f61c727" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr">Cloudomation Engine is a platform orchestrator that enables you to provide self-service tools, automate complex tasks, and gain full visibility into your infrastructure.</p><p dir="ltr">Let’s talk about how Cloudomation<br />can make that happen for you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8662018 elementor-align-center elementor-widget elementor-widget-button" data-id="8662018" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/en/contact-us-2/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Schedule a call</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/best-platform-orchestration-tools/">3 Platform Orchestration Tools (2025)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Platform Engineering Without Kubernetes</title>
		<link>https://cloudomation.com/cloudomation-blog/platform-engineering-without-kubernetes/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Thu, 08 May 2025 11:56:06 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=52630</guid>

					<description><![CDATA[<p>Challenges of managing hybrid infrastructure, how they can be solved, and what the benefits are of focusing platform engineering on the entire infrastructure.</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/platform-engineering-without-kubernetes/">Platform Engineering Without Kubernetes</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="52630" class="elementor elementor-52630">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Platform engineering seems to be all about Kubernetes. Platform engineering tooling landscapes are awash with tools focused on Kubernetes, and most reference architectures assume that <a href="https://cloudomation.com/cloudomation-blog/what-is-an-internal-developer-platform/">internal developer platforms</a> are only about deploying containerised microservices to Kubernetes clusters.</p><p>Kubernetes is undoubtedly a core component of many platform engineering initiatives. According to the Cloud Native Computing Foundation&#8217;s 2023 Survey, 66% of organizations are already using Kubernetes in production, with 18% more evaluating it.</p><p>But: Organisations that use Kubernetes also have infrastructure outside of Kubernetes. Many even have most of their infrastructure elsewhere. Some don’t use Kubernetes at all.</p><p>Which means that there is a need to manage infrastructure outside of Kubernetes. It means managing hybrid infrastructure that is spread across Kubernetes, Linux VMs, Windows servers, serverless infrastructure, bare metal servers and other curiosities.</p><p>In this post, I want to talk about the challenges of managing hybrid infrastructure, how they can be solved, and what the benefits are of focusing platform engineering on the entire infrastructure, and not just containers in Kubernetes.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Why there will always be infrastructure outside of Kubernetes</h2><p>There are some types of workloads that will simply never move to Kubernetes. Why?</p><ul><li><strong>Legacy Architecture</strong> – Older applications are not designed for containerization or would need significant refactoring to work in a Kubernetes environment. Often, the cost involved in moving legacy applications to a Kubernetes environment is prohibitive, meaning that they will remain uncontainerised indefinitely.</li><li><strong>Stateful Applications</strong> – Stateful apps (like databases) often require complex configurations for persistent storage, making them harder to manage in Kubernetes.</li><li><strong>Performance Concerns</strong> – Kubernetes introduces overhead, which can impact performance-sensitive applications that require direct hardware access or low-latency processing.</li><li><strong>Complexity</strong> – Kubernetes can be overkill for small, simple applications, leading to increased operational complexity without significant benefits.</li><li><strong>Resource Requirements</strong> – Running Kubernetes itself requires resources (control plane, worker nodes) that might be prohibitive in resource-constrained environments.</li><li><strong>Compatibility Issues</strong> – Some software may have specific OS dependencies, custom configurations, or legacy tooling that are difficult to containerize and orchestrate with Kubernetes.</li><li><strong>Regulatory or Security Constraints</strong> – Some industries have strict requirements that may make containerization challenging or not worth the effort, especially when dealing with sensitive data.</li></ul><p>Whether you recognise only one of all of the points above: Infrastructure outside of Kubernetes is here to stay.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0076a9e elementor-widget elementor-widget-text-editor" data-id="0076a9e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Pain Points of Managing Infrastructure Inside and Outside Kubernetes</h2><p>Managing infrastructure both inside and outside of Kubernetes creates significant challenges:</p><ul><li><strong>Fragmented Visibility:</strong> With Kubernetes managing containers and other tools handling legacy systems or VMs, engineers struggle to get a unified view of their infrastructure.</li><li><strong>Inconsistent Developer Experience:</strong> Developers often encounter a fragmented experience when accessing both Kubernetes and non-Kubernetes services. They may need different tools, processes, and interfaces depending on the service.</li><li><strong>Complex Networking:</strong> Networking between Kubernetes clusters and non-Kubernetes environments (e.g., on-premise systems or cloud VMs) is often complex and requires manual intervention or custom solutions.</li><li><strong>Infrastructure Silos:</strong> Different teams may use different infrastructure management tools for Kubernetes and other resources, leading to siloed expertise and tooling. This slows down troubleshooting, upgrades, and general management.</li><li><strong>Security &amp; Compliance Risks:</strong> Ensuring consistent security policies and compliance across both Kubernetes-managed and traditional environments can be a major headache, especially in regulated industries.</li></ul><p>These are pains that anyone handling infrastructure across different technologies knows. In many organisations, this leads to significant duplication of effort, because many operational capabilities are implemented twice or even more often, separately for different types of infrastructure. This is not only more costly, it also creates incentives for keeping things separate: A lot has already been invested into building up separate capabilities for separate stacks. If you are in this situation, you will probably easily think of one or several important projects or initiatives in your company that are seriously blocked because of this kind of divided infrastructure.</p><p>Organisations that take platform engineering seriously (Read more about this topic: <a href="https://cloudomation.com/cloudomation-blog/why-platform-engineering/">Why platform engineering</a>) and want to provide self-service capabilities to software engineers (and other stakeholders) need to think beyond these silos.</p><p>Read more about <a href="https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/">Platform Engineering Challenges here</a>.</p><p>The good news? It is possible, not just to unify management of infrastructure and applications across technology boundaries, but also to do so in a stepwise manner that is feasible to start with limited resources.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-d848e20 elementor-widget elementor-widget-text-editor" data-id="d848e20" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>How to go Bring Together Infrastructure Silos</h2><p>There is one uncomfortable fact at the center of this: The sooner you make the decision to focus on cross-technology enablement, the cheaper and easier it will be. It’s uncomfortable to say that because for most organisations, a lot of decisions have already been made a long time ago that make it a lot more difficult to switch gears now.</p><p>But the truth still holds: The sooner you make this decision, the easier it will be. With each day that passes, more will be invested into siloed tooling that will be harder to harmonise and integrate, with more resistance to it the more has already been invested. So today is as good a day as any to start focusing your platform engineering efforts on the entire infrastructure &#8211; better today than tomorrow.</p><p>To get things started, you will need a specific pain, problem or requirement that is impossible to fulfil with the current setup. Once you do, the steps to take are simple in theory but hard to do in practice:</p><ul><li>To solve this problem, choose tools that are technology agnostic. You probably already have some. Terraform doesn’t care where it deploys infrastructure to. Obviously, Cloudomation is a good choice for a technology agnostic layer of abstraction and integration <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</li><li>Solve the problem you set out to solve. Then use this as an example to show that cross-technology orchestration is possible. If you choose Cloudomation, we will help you every step along the way, from analysing your situation to find the best way forward, implementation and operation, to formulating arguments to showcase the value you created.</li><li>Find the next biggest pain to solve. Rinse and repeat.</li></ul><p>It will not be easy. But it is worth it.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-37713e5 elementor-widget elementor-widget-text-editor" data-id="37713e5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Benefits of integrated hybrid infrastructure</h2><p>What will you gain?<br />In the short term, mostly trouble <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f605.png" alt="😅" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p><p>But in the long term, being able to manage infrastructure across Kubernetes and other technologies will bring you large benefits:</p><ul><li><strong>Improved Visibility &amp; Control:</strong> Being able to see and interact with infrastructure and applications across technology boundaries hugely simplifies operations. Centralized monitoring, logging, and policy enforcement help ops teams manage everything more effectively. This makes it easier to detect issues, enforce compliance, and manage cost.</li><li><strong>Better Resource Utilization:</strong> One of the biggest cost factors in siloed infrastructure is the duplication of services and functionality for different technology stacks. Creating a unified layer of visibility and control allows organisations to continue to leverage existing investments in non-Kubernetes infrastructure (e.g., Windows servers, legacy apps, databases) while still avoiding duplication of effort.</li><li><strong>Smoother Migrations &amp; Transitions:</strong> Supports gradual modernization by allowing legacy and cloud-native systems to coexist. Enables hybrid strategies where workloads move to Kubernetes over time without disruption.</li><li>U<strong>nified Developer Experience:</strong> Developers get a consistent interface to access services—whether running on Kubernetes, VMs, or elsewhere. This reduces cognitive load and saves a lot of time.</li></ul><p>Fortunately, many of those benefits will be tangible quickly. It’s not necessary to have a unified layer of abstraction across everything to start seeing its value. Even if it’s possible to see and manage only e.g. some Windows servers and some Kubernetes services via one interface, this will already reduce complexity for operations teams, and make it tangible to stakeholders why this is useful and valuable. From there, it is possible to integrate additional infrastructure pieces bit by bit.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-c9164f1 elementor-widget elementor-widget-text-editor" data-id="c9164f1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>How to start? Some House Advertising</h2><p>To successfully implement a unified layer of abstraction across technologies, communication, change management, and organisational clout are essential. But technology also matters. With <a href="https://cloudomation.com/">Cloudomation</a>, you get a battle-tested, powerful platform to integrate and manage infrastructure and application across technology stacks &#8211; and a team of experts to support you every step along the way.</p><p>From the beginning, our focus at Cloudomation has been to enable infrastructure management outside of, and in addition to, Kubernetes. If you are struggling with managing infrastructure without or in addition to Kubernetes, we should talk.</p><p>We don’t promise to make your job easy: Platform engineering is not easy, and it never will be. But we promise to make your job possible: To give you the tools that enable you to build a robust layer of abstraction across whatever infrastructure you have.</p><p><a href="https://meet.brevo.com/margot-muckstein/intro">Book 15 minute sparring session &#8211; no strings attached</a>.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/platform-engineering-without-kubernetes/">Platform Engineering Without Kubernetes</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The 3 Biggest Challenges in Platform Engineering, and How to Overcome Them</title>
		<link>https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Wed, 30 Apr 2025 09:36:46 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=52461</guid>

					<description><![CDATA[<p>Platform Engineering is hard. What decisions can be made to make your life as a Platform Engineer easier?</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/">The 3 Biggest Challenges in Platform Engineering, and How to Overcome Them</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="52461" class="elementor elementor-52461">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Let’s not mince words: Platform engineering is really difficult. Platform engineering teams by definition only exist if a software company’s tech stack is too complex for individual software engineers to manage on their own. The very purpose of platform engineering is to reduce complexity for software engineers &#8211; meaning that the platform engineering team is the place where this complexity is moved to (riffing on the “law of conservation of complexity”: Complexity cannot be reduced, it can only be moved). Read more about it in this post: <a href="https://cloudomation.com/cloudomation-blog/why-platform-engineering/">Why Platform Engineering?</a> ; also worth a read in this context: <a href="https://cloudomation.com/cloudomation-blog/devops-vs-platform-engineering/">DevOps vs. Platform Egineering</a>)</p><p>So there should be no expectation that platform engineering can be made easy. There are no magic tools out there that suddenly make a platform engineer&#8217;s life a breeze, allowing every junior system administrator to suddenly become a platform engineer.</p><p>But there are decisions you, as a platform engineer, can make that will make your life harder, or easier. Let’s take a look.</p><p><div id="ez-toc-container" class="ez-toc-v2_0_77 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit"></p>
<span class="ez-toc-title-toggle"></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/#Challenge_1_Too_many_tools" >Challenge 1: Too many tools</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/#Challenge_2_Developers_dont_use_the_platform" >Challenge 2: Developers don’t use the platform</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/#Bottom_line" >Bottom line</a></li></ul></nav></div>
</p><h2>Challenge 1: Too many tools</h2><p>TL;DR: Yes. Deal with it. That’s what you’re hired to do. To make it better long-term, add new tools which are generic, multi-purpose and flexible. Also, it is possible to get rid of tools.</p><p>“Too many tools” is the very core of what makes platform engineering difficult. It’s not just individual tools, it’s cloud providers, internal components and their dependencies, scripts your own team wrote, and everything else that makes up this highly interconnected thing that is the stack and infrastructure you’re supposed to make simpler for others to use. (Related: <a href="https://cloudomation.com/cloudomation-blog/platform-engineering-without-kubernetes/">Platform Engineering Without Kubernetes</a>)</p><p>The advice I read in various blog posts out there with helpful concepts like “portfolio management strategies” and “vendor ecosystems”. Most of it comes down to a belief that central management will help with the mess platform engineers deal with on a daily basis. I think this idea is inefficient, and removed from reality. It assumes that it is possible to devise a set of requirements that any tool a company buys has to fulfil, which would help procurement. In my experience, it typically doesn’t &#8211; on the contrary, it makes finding something that works a lot harder. In most cases, it means that only products from large vendors have a shot, which check the boxes, but often don’t provide the best feature set, and are for sure not the best choice when it comes to value for money.</p><p>In my experience, the most successful teams are the ones that are allowed to come up with their own requirements, pre-select tools that they’d like, and then hand them off to other teams like security or compliance, which can audit these tools and veto them if they find a significant blocker. This approach I’ve found to be much more effective and faster than asking security, compliance, legal, and other teams to come up with generic lists of requirements, which is pretty much an invitation to spend a lot of time coming up with a list that has to be bullet-proof, cover every edge case, and as a result is pretty impossible to fulfil by any one tool. Such an approach leads to the kind of decision making notorious for enterprises where tools are bought that check the boxes of the legal and security teams, but can’t do what the original requirement was.</p><p>However, it might not be in your power to decide on the process of choosing tools in your company. But what you most likely can do is lobby for tools that are:</p><ul><li>Open, in the sense that they can be customised / extended without relying on the vendor,</li><li>Are simple to integrate, i.e. have a well-documented REST API and ideally other integration features such as webhooks,</li><li>Are as general-purpose, broad and flexible as possible. This might mean a bit more time on your end to get the tool to do exactly what you want, but in the end, it will allow you to get exactly what you want &#8211; and helps a lot to reduce the overall number of tools you’ll need.</li></ul><p><em>Side note:</em> There is a strong incentive in the software market to build very specialised tools for very specific use cases. From the perspective of a software vendor: If your tool can do one thing only, it’s likely that you can explain very quickly what it does, and it’s very likely that it will do that one thing very well. This makes it easier to sell. However, it also means that the market is littered with very niche solutions that focus on very specific use case(s). <br />If you fit the product’s intended user group perfectly, then go ahead. Most likely, however, you will end up with a tool that is very good at very little, and very bad at everything else. Tools that are general purpose and broad in their feature set generally provide a much better value for money. It takes longer to get to know them, but once you do, they are a lot more powerful and will provide you with a lot more value than a dozen very specific tools that you each have to learn and maintain individually, and then integrate somehow.</p><p>Another piece of common sense advice that seems to rarely make it into blog posts: Getting rid of tools is possible. In 90% of cases, it will be true that once you’ve started to use a tool and have integrated it into your ecosystem, you’ll end up using it forever. But for 10%, it is perfectly feasible to just kick them out when they turn out to be more work than they are worth. When it comes to getting rid of tools, the same applies as for everything else you do: Pick your battles. If it is possible to get rid of a tool, it’s generally a good idea to do so. However it might not be the most important thing you have to do right now, so be sure to propose this only when you have a very good reason to.</p><h2>Challenge 2: Developers don’t use the platform</h2><p>TL;DR: Whenever you start working on a feature or service, ask yourself the question: Who needs this feature (or service)? Then go and ask them why, and write down at least one, better three, use cases for your feature or service. Then build the feature / service to make those possible.</p><p>It’s a sin as old as software: Engineers go and build something truly beautiful. Then they give it to other people who are supposed to use it, who stubbornly refuse to do so. Why? Most likely because they simply don’t need it.</p><p>In my experience, getting people to describe very specifically how they want to use a feature and to what end (i.e. getting them to describe their use case(s)) is the easiest and most direct way to build a feature or service that is useful.</p><p>There is nothing else to say about this. If you like, you can call it “cultivating a product mindset”, “user centricity” or “prioritising features based on user value”. I prefer to just call it “talking to people”. (You can also just assign them a ticket, if you prefer not to talk.)</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8317de4 elementor-widget elementor-widget-spacer" data-id="8317de4" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-17eb5d03 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="17eb5d03" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7808e535" data-id="7808e535" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-343a1345 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="343a1345" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-134ba080" data-id="134ba080" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4810ed7a elementor-widget elementor-widget-image" data-id="4810ed7a" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-40edd58f" data-id="40edd58f" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-363713ae elementor-widget elementor-widget-text-editor" data-id="363713ae" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p>
<p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-54e7fb0b elementor-widget elementor-widget-button" data-id="54e7fb0b" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-11ae7e1 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="11ae7e1" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5641a4c" data-id="5641a4c" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4948921 elementor-widget elementor-widget-text-editor" data-id="4948921" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-family: 'Roboto Mono', sans-serif; font-size: 36px; font-weight: 500; letter-spacing: 0.1px;">Challenge 3: Legacy tools and technical debt</span></p><p>TL;DR: It’s not going to change. The sooner you accept that, the sooner you can find ways to make things work despite it. For example: Add tools to your stack that can integrate with legacy tech, and/or agree on a standard multiplier for padding your estimates to allow for issues with technical debt in your code base.</p><p>When talking to software engineers, return on investment often feels like a dirty word. Engineers complain about their manager’s lack of interest in cleaning up technical debt, and relish opportunities to say “I told you so” when some legacy tool or some chunk of technical debt in the code yet again shows up as the most significant time sink in the estimate to implement a new feature or service. (If you do estimates. I think it’s a waste of time.)</p><p>In the end, it often really doesn’t pay to clean up technical debt. In other cases, it is just impossible to know what the return on investment for doing so would really be.</p><p>In all cases, it is worth it for you to sit down and think about what it would really mean to clean up this one bit of technical debt, or to get rid of this one piece of software that is making everything so difficult. If you honestly consider whether or not it is possible to do so, and what would be required in order to do it, and then duplicate the effort you imagine at least by two, think again if this is really (a) what you want to be spending your time on and (b) if you honestly think it is worth it. If it is, go ahead, share your thoughts on cost and benefit and who knows, if you argue like that you might even get the go-ahead.</p><p>But don’t count on it.</p><p>Getting rid of annoyances most often is just too far away from making money.</p><p>What is left within your sphere of influence is to find ways to make it easier for you to work with the technical debt you have. That may mean explicitly buying solutions that allow you to monitor and integrate legacy tools, or to figure out a standard multiplier for your estimates to allow for any additional effort caused by technical debt in your code base.</p><h2>Bottom line</h2><p>Platform engineering is difficult. It’s difficult because it exists to deal with complexity, so that software engineers don’t have to. It’s also difficult because software engineers are a legendarily difficult user group: They want to know and understand everything, without having to deal with the details of it all when they don’t need to. So it’s difficult to build a platform, and difficult to get software engineers to use it.</p><p>To make your life a bit easier, try the following:</p><ul><li>Pick tools for your stack that can handle complexity: Tools that are customisable, easy to integrate, and general-purpose (or at least multi-purpose).</li><li>Get software engineers to describe specific use cases: How they want to use a feature or service and why. This will help you cut through nice-to-have wishlists and whittle down a service or feature to the core that is relevant. Software engineers will happily use a bare-bones service if it solves a relevant problem for them.</li><li>Accept that you will have to deal with legacy tools and technical debt. Don’t build your platform to fit an ideal you’ll never reach, build it for the existing reality. This means picking tools that can work with legacy software, and allowing time to deal with technical debt when building new services or platform features.</li></ul><p><strong>Advertising</strong></p><p>We’ve built a tool that is designed to deal with exactly this kind of complexity. <a href="https://cloudomation.com/">Cloudomation Engine is a pure Python framework for platform engineering</a>. We built it before platform engineering was a thing, and are now thrilled to see that a growing community of engineers are waking up to the challenges and possibilities of managing tech and infrastructure complexity well.</p><p>Having worked as software and devops engineers before starting Cloudomation, we knew exactly what the pain points are (and always have been): Too many tools, stubborn software engineers as users, and seemingly pointless additional complexity caused by technical debt and legacy tech. So we built a framework to handle this. In Python, because we like Python.</p><p>If you’re curious to see what it can do, check out our videos on youtube, our <a href="https://docs.cloudomation.com">documentation</a>, or <a href="https://cloudomation.com/contact-us-2/">book a demo</a> (no strings attached &#8211; showing off our tool to an appreciative audience is fun in itself).</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ab64d36 elementor-widget elementor-widget-spacer" data-id="ab64d36" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3628049 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3628049" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-047b9aa" data-id="047b9aa" data-element_type="column" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-0b6c4c7 elementor-widget elementor-widget-heading" data-id="0b6c4c7" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<p class="elementor-heading-title elementor-size-default">Now that you're here...</p>				</div>
				</div>
				<div class="elementor-element elementor-element-a67d415 elementor-widget elementor-widget-text-editor" data-id="a67d415" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr">Cloudomation Engine is a platform orchestrator that enables you to provide self-service tools, automate complex tasks, and gain full visibility into your infrastructure.</p><p dir="ltr">Let’s talk about how Cloudomation<br />can make that happen for you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f981c8a elementor-align-center elementor-widget elementor-widget-button" data-id="f981c8a" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/en/contact-us-2/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Schedule a call</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/">The 3 Biggest Challenges in Platform Engineering, and How to Overcome Them</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why Platform Engineering?</title>
		<link>https://cloudomation.com/cloudomation-blog/why-platform-engineering/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Thu, 24 Apr 2025 11:23:27 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=52314</guid>

					<description><![CDATA[<p>Is Platform Engineering just a hype? What are the benefits?</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/why-platform-engineering/">Why Platform Engineering?</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="52314" class="elementor elementor-52314">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>As software delivery grows more complex, organizations struggle with fragmented DevOps practices, inconsistent workflows, and operational inefficiencies. Developers are expected to manage infrastructure, CI/CD pipelines, security policies, and monitoring—often leading to cognitive overload and reduced productivity. This is where Platform Engineering comes in.</p><p>Platform Engineering focuses on building an <a href="https://cloudomation.com/cloudomation-blog/what-is-an-internal-developer-platform/">Internal Developer Platform (IDP)</a> to streamline workflows, standardize processes, and enable self-service capabilities for developers. Unlike traditional DevOps (Read more: <a href="https://cloudomation.com/cloudomation-blog/devops-vs-platform-engineering/">DevOps vs. Platform Engineering</a>), which emphasizes cultural shifts and automation, Platform Engineering operationalizes these principles at scale, providing a structured and reusable approach to software delivery.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Benefits of an Internal Developer Platform (IDP)</h2><p><a href="https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-52337 size-large" src="https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits-871x1024.png" alt="plattform engineering benefits" width="871" height="1024" srcset="https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits-871x1024.png 871w, https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits-255x300.png 255w, https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits-768x903.png 768w, https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits-1307x1536.png 1307w, https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits-1742x2048.png 1742w, https://cloudomation.com/wp-content/uploads/2025/04/plattform-engineering-benefits.png 1835w" sizes="(max-width: 871px) 100vw, 871px" /></a></p><p>An IDP serves as a centralized, self-service hub for development teams, offering pre-configured tools, infrastructure abstractions, and automation to accelerate software delivery. Key benefits include:</p><h3>#1 Faster Development Cycles</h3><ul><li>Without IDP: Teams spend hours setting up environments, debugging infrastructure issues, and managing deployments.</li><li>With IDP: Developers can deploy applications in minutes using standardized templates and automated workflows.</li></ul><h3>#2 Reduced Cognitive Load on Developers</h3><ul><li>Without IDP: Developers must learn Kubernetes, Terraform, and networking just to deploy applications.</li><li>With IDP: Self-service APIs and abstractions let developers focus on writing code instead of managing infrastructure.</li></ul><h3>#3 Improved Reliability and Compliance</h3><ul><li>Without IDP: Security policies and best practices are inconsistently applied across teams.</li><li>With IDP: Centralized governance ensures compliance, monitoring, and security are built into every deployment.</li></ul><h3>#4 Higher Engineering Efficiency</h3><ul><li>Without IDP: Ops teams manually provision resources, troubleshoot issues, and manage configurations per request.</li><li>With IDP: Automated provisioning and reusable templates reduce operational overhead. Small ops teams can efficiently manage large and complex infrastructure.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-8317de4 elementor-widget elementor-widget-spacer" data-id="8317de4" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-6a802621 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="6a802621" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7e1993f9" data-id="7e1993f9" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-530549fd elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="530549fd" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-15c6bacf" data-id="15c6bacf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-69d2f8a5 elementor-widget elementor-widget-image" data-id="69d2f8a5" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-3525ad15" data-id="3525ad15" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1c677026 elementor-widget elementor-widget-text-editor" data-id="1c677026" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p>
<p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-17c19d6c elementor-widget elementor-widget-button" data-id="17c19d6c" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-aa614a0 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="aa614a0" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1b859bd" data-id="1b859bd" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-af25c6d elementor-widget elementor-widget-text-editor" data-id="af25c6d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>But IDPs are costly to build and maintain. Is it worth it?</h2><p>Yes, IDPs require effort to build and maintain, but they deliver long-term benefits that outweigh the costs.</p><h4>Why It’s Worth It</h4><ul><li><strong>Scalability</strong> – Once built, an IDP standardizes workflows, reducing operational burden as teams grow.</li><li><strong>Developer Productivity</strong> – Teams spend less time on setup, debugging, and infrastructure concerns.</li><li><strong>Reliability &amp; Compliance</strong> – Security policies, monitoring, and best practices are applied automatically.</li><li><strong>Cost Efficiency</strong> – While upfront investment is high, long-term savings come from reduced toil and faster delivery.</li></ul><p>Many companies see 40-70% improvements in deployment speed, onboarding time, and reliability. If your organization is large enough to struggle with DevOps at scale, an IDP is worth it.</p><p>Read more about <a href="https://cloudomation.com/cloudomation-blog/how-internal-developer-platforms-work/">how IDPs work</a>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-afa1c64 elementor-widget elementor-widget-text-editor" data-id="afa1c64" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Is Platform Engineering Just a Hype?</h2><p>No. Of course, <a href="https://cloudomation.com/cloudomation-blog/biggest-challenges-platform-engineering/">platform engineering has its own challenges</a> as well, but unlike DevOps, which focuses on principles, Platform Engineering provides tangible, scalable solutions to DevOps challenges. It enables organizations to scale software delivery without burdening developers with infrastructure concerns.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-620146c elementor-widget elementor-widget-text-editor" data-id="620146c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Conclusion</h2><p>Platform Engineering isn’t just a trend—it’s a necessary evolution of DevOps for modern software delivery. By investing in an IDP, organizations can reduce complexity, improve developer experience, and drive measurable gains in efficiency and reliability.</p><p>If your team is struggling with DevOps inefficiencies, it’s time to embrace Platform Engineering. Take a look at how <a href="https://cloudomation.com/backend-idp-tool/">Cloudomation can support you as an IDP backend</a> when you&#8217;re planning to build your internal developer platform.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-49d27f0 elementor-widget elementor-widget-spacer" data-id="49d27f0" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/why-platform-engineering/">Why Platform Engineering?</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>5 Internal Developer Portals (&#8230;and what software engineers say about them)</title>
		<link>https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Thu, 17 Apr 2025 10:56:14 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=52585</guid>

					<description><![CDATA[<p>Learn about 5 developer portals and what software engineers say about them.</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/">5 Internal Developer Portals (&#8230;and what software engineers say about them)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="52585" class="elementor elementor-52585">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Platform engineering is redefining how software teams operate. Internal Developer Portals are at the core of this shift, empowering developers with self-service workflows.</p><p>Here are five Portal tools you should know and what software engineers say about them.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8b65d74 elementor-widget elementor-widget-text-editor" data-id="8b65d74" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Platform vs. Portal</h2><p>Just for clarification: An internal developer platform (IDP) is a set of infrastructure and automation tools that enable engineers to deploy, monitor and manage software services. In contrast, an internal developer portal serves as the unified interface for accessing these capabilities and allowing developers, teams, and engineering managers to discover services, track ownership, enforce standards, and improve software.</p><p>Although the abbreviation &#8220;IDP&#8221; is sometimes used to refer to both the platform and the portal, we use it exclusively to mean internal developer platforms.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0076a9e elementor-widget elementor-widget-text-editor" data-id="0076a9e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>The Research</h2><p>To better understand the landscape of Internal Developer Portals, we turned to a place where software engineers often openly share their experiences: Reddit.</p><p>Unsurprisingly, Spotify’s Backstage dominated most conversations, reflecting its strong adoption and visibility within the platform engineering community. Port frequently appears in the comments as a common alternative to Backstage. Cortex also surfaces regularly—likely due to its employees active participation in related discussions. Other tools such as OpsLevel and Atlassian Compass are occasionally mentioned or linked, but they tend to receive significantly less engagement or commentary.</p><p>Although this isn&#8217;t a formal academic study with a structured research methodology, we think it reflects recurring themes and opinions about those tools (&#8230;and marketing efforts on reddit ;).</p>								</div>
				</div>
				<div class="elementor-element elementor-element-d848e20 elementor-widget elementor-widget-text-editor" data-id="d848e20" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>The Tools</h2><h3>#1 Backstage</h3><p>Backstage is an open-source framework for building developer portals.<br />The key terms here are “open source” and “framework”. Backstage empowers platform engineers with full customization capabilities, but that also means they need to build and maintain many components themselves.</p><p>It&#8217;s not a plug-and-play solution; it requires significant ongoing effort and engineering resources. For organizations with the right capacity, however, Backstage delivers a powerful and highly flexible developer portal solution.</p><p><strong>Pros:</strong><br />“Der (sic!) it up in two companies now. It does have an initial learning curve, no need to hide it. You will need a dedicated DevOps maintaining it (at least part time) But when you go microservices/microfrontends/packages where each of it deploys itself from iac in the individual repo… the scaffolder alone is a huge boost to the team. If it gets used to create lots of stuff, the catalog itself gets a killer feature that visually shows dependencies (especially: who is using this thing I am refactoring). Secret bonus points: this gives DevOps people a central point to visualize a lot of other tools in a convenient way for devs to consume. Refactor these bashscripts/CLI tools so they have a nice react frontend and others can „click“ things.” (reddit comment)</p><p><strong>Cons</strong><br />“Yes its a ton of setup and I dont recommend it for a group that has little time to get it right.” (reddit comment)</p><p>“Think from a developers perceptive and treat like it like the front end of a platform. You still need high levels of automation behind it. I don’t want to go to Ansible, Datadog, SNOW, GitHub, K8s etc etc. I just want an S3 bucket. I want to know where my stuff is and have a single spot.“ (reddit comment)</p><p>“Because you didn&#8217;t put in the work to make it work for you. Backstage is not about just installing a few boilerplate plugins and getting value. The real use is in the custom code you write to enable your enterprise. Internal automations etc. it takes a team of people to make it happen.” (reddit comment)</p><p><strong>Links<br /></strong><strong>Website:</strong> <a href="https://backstage.io/">https://backstage.io/</a> <br /><strong>Demo:</strong> <a href="https://demo.backstage.io/">https://demo.backstage.io/</a> <br /><strong>Documentation:</strong> <a href="https://backstage.io/docs/overview/what-is-backstage">https://backstage.io/docs/overview/what-is-backstage</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-37713e5 elementor-widget elementor-widget-text-editor" data-id="37713e5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>#2 Port</h3><p>Port value proposition is: “<i>All about developer experience</i>”. Port offers a no-code setup that makes it easy to get started quickly. It also has automation capabilities, allowing you to respond to events or trigger actions based on user input. Port offers a free tier, making it accessible for teams looking to explore its features without upfront costs.</p><p><strong>Pros</strong> <br />“I researched for a developer portal (for 750 developers) to help us improve the developer experience in the tools chaos and the overwhelming number of components. I started implementing Backstage and rapidly understood that this project would require an entirely new team to customize it and make it work for us. simple topics like: SAML/OpenID authentication, Authorization, Jenkins plugin &#8211; we have more than one job for a component Visualizations &#8211; you need to write in react Self-services &#8211; you have a catalog to choose from, but what about operations on existing objects? So we looked into several other alternatives and came up with port. Their key advantage was the ability to define the custom schema of entities that describe your organization. The self-services are very convenient to configure &#8211; you can get a webhook, register to Kafka, or use their local agent with some common actions to run. I created a POC in several days and we were super excited. of course, there are features like scorecards, visualizations, etc.” (reddit comment)</p><p><strong>Cons</strong> <br />“My teams have been experimenting with IDP’s like Port.io for this. Port.io turned out to be insanely expensive [&#8230;].” (reddit comment)</p><p><strong>Links</strong><br /><strong>Website:</strong> <a href="https://www.port.io/">https://www.port.io/</a> <br /><strong>Demo:</strong> <a href="https://demo.port.io/organization/home">https://demo.port.io/organization/home</a> <br /><strong>Documentation:</strong> <a href="https://docs.port.io/">https://docs.port.io/</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-c9164f1 elementor-widget elementor-widget-text-editor" data-id="c9164f1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>#3 Cortex</h3><p>The Head of DevRel from Cortex is quite active on reddit and wrote: “<em>[&#8230;] if you are building for 50+ engineers, you&#8217;re going to want to look at an enterprise-class solution that scales, like Cortex.io (for whom I run Developer Relations)</em>”, and it fits their value proposition, which is: “<em>Cortex is the enterprise Internal Developer Portal built to accelerate the path to engineering excellence.</em>“</p><p>It has a comprehensive service catalog, scorecards and integrates with a wide array of tools. Unfortunately, they only provide their pricing on request.</p><p><strong>Pros</strong><br />&#8220;A great scalable flexible tool and easy to integrate&#8221; (G2 review)</p><p><strong>Cons</strong> <br />“We liked it but their pricing was expensive if your org isn&#8217;t ready to invest a lot of money into scorecards. We left Cortex for OpsLevel for half the price.” (reddit comment)</p><p><strong>Links</strong><br /><strong>Website:</strong> <a href="https://www.cortex.io/">https://www.cortex.io/</a> <br /><strong>Documentation:</strong> <a href="https://redesign-docs.cortex.io/">https://redesign-docs.cortex.io/</a> </p>								</div>
				</div>
				<div class="elementor-element elementor-element-7dd7662 elementor-widget elementor-widget-text-editor" data-id="7dd7662" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>#4 OpsLevel</h3><p>OpsLevel is up-to-speed with its value proposition: “<em>The portal for AI-enabled software development.</em>”</p><p>The spotlight is clearly on one key feature: AI. But what does that actually mean? With this capability, OpsLevel can automatically generate comprehensive descriptions for your components.</p><p>Beyond that, OpsLevel offers robust developer self-service features, scorecards, and integrates with a wide range of tools. They also have an impressive customer base, including companies like Duolingo and Hudl.</p><p>OpsLevel was mentioned on Reddit, but redditors didn’t go into detail about its pros and cons.</p><p>That’s why we’re highlighting insights from the AWS Marketplace, where users have shared their feedback.</p><p><strong>Pros</strong><br />“Extensibility and many APIs to cover many information sources and types in order to add as many data points for the services as possible.Starting using it primarily for service ownership, then added service tiers and checks in order to also focus on service quality. Opslevel team taking feedback into consideration and improving the product.” (AWS Marketplace comment)</p><p><strong>Cons</strong><br />“Some features are still being worked on and don&#8217;t offer the full support we&#8217;d want at this point &#8211; e.g. versioning support for documentation or other types of documentation (REST being the only type currently supported).” (AWS Marketplace comment)</p><p><strong>Links</strong><br /><strong>Website:</strong> <a href="https://www.opslevel.com/">https://www.opslevel.com/</a> <br /><strong>Documentation:</strong> <a href="https://docs.opslevel.com/docs/introducing-opslevel">https://docs.opslevel.com/docs/introducing-opslevel</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-2546656 elementor-widget elementor-widget-text-editor" data-id="2546656" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>#5 Atlassian Compass</h3><p>Atlassian Compass is part of the Atlassian tools. It integrates smoothly with Atlassian tools like Jira, Bitbucket and Confluence. Compared to other Portals, Compass may lack more advanced automation features. Compass is well-suited for teams who already use Atlassian.</p><p><strong>Pros</strong><br />&#8220;I am sunsetting our internal backstage.io instance and migrate templates to compass. The price is a steal compared with the effort one needs for customized maintenance.&#8221; (reddit comment)</p><p><strong>Cons</strong><br />&#8220;Really annoying that there’s no on-prem option with this.&#8221; (reddit comment)</p><p><strong>Links</strong><br /><strong>Website:</strong> <a href="https://www.atlassian.com/software/compass">https://www.atlassian.com/software/compass</a><br /><strong>Documentation:</strong> <a href="https://support.atlassian.com/compass/docs/getting-started-with-compass/">https://support.atlassian.com/compass/docs/getting-started-with-compass/</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-2ef20fb elementor-widget elementor-widget-text-editor" data-id="2ef20fb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h3>Other Portals</h3><ul><li>Humanitec Portal <a href="https://humanitec.com/products/portal">https://humanitec.com/products/portal</a></li><li>Cycloid <a href="https://www.cycloid.io/">https://www.cycloid.io/</a></li><li>Harness <a href="https://www.harness.io/">https://www.harness.io/</a></li><li>Roadie <a href="https://roadie.io/">https://roadie.io/</a></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-8317de4 elementor-widget elementor-widget-spacer" data-id="8317de4" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-65ffc87e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="65ffc87e" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-669d6386" data-id="669d6386" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-342e32f7 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="342e32f7" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-6917be52" data-id="6917be52" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4929bcde elementor-widget elementor-widget-image" data-id="4929bcde" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-61d7489c" data-id="61d7489c" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-60ad5f3f elementor-widget elementor-widget-text-editor" data-id="60ad5f3f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p>
<p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-72287b99 elementor-widget elementor-widget-button" data-id="72287b99" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-eba3883 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="eba3883" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c1b0f85" data-id="c1b0f85" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-e174bc8 elementor-widget elementor-widget-text-editor" data-id="e174bc8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Why your Portal needs a Backend</h2><p>Keep in mind: Portals are the often just the face — not the engine. They offer interfaces, UX and sometimes basic automation features to help devs move faster. But to coordinate all the moving parts you need a “brain” which glues together multiple tools.</p><p>That’s where our product comes in: <a href="https://cloudomation.com/backend-idp-tool/">a dedicated backend / platform orchestrator built to orchestrate the complexity beneath the surface</a>. Because integrating services with a portal is often a highly manual process featuring lots of custom scripts or handmade plugins (or similar things).</p><p>A backend (or platform orchestrator) will make your lives a lot easier by providing a layer of abstraction and functionality that allows platform engineers to tie together services, orchestrate them in one place, and expose them to your portal in a standardized and sustainable way.</p><p>Read more about <a href="https://cloudomation.com/cloudomation-blog/best-platform-orchestration-tools/">platform orchestration tools</a>. </p><p>We also wrote an article <a href="https://cloudomation.com/cloudomation-blog/best-platform-engineering-tools/">how you can build an IDP with different tools</a>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-6416ffe elementor-widget elementor-widget-text-editor" data-id="6416ffe" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Sources</h2><ul><li>https://www.reddit.com/r/devops/comments/1ae7l8r/actual_succesfull_experiences_with_internal/</li><li>https://www.reddit.com/r/devops/comments/193ro7n/what_is_your_experience_like_working_with/</li><li>https://www.reddit.com/r/devops/comments/18h7jt9/idp_internal_developer_platform_recommendations/</li><li>https://www.reddit.com/r/devops/comments/1dyb1f1/which_internal_developer_portal_should_we_use/</li><li>https://www.reddit.com/r/devops/comments/1ae7l8r/actual_succesfull_experiences_with_internal/</li><li>https://www.reddit.com/r/devops/comments/193ro7n/what_is_your_experience_like_working_with/</li><li>https://www.reddit.com/r/devops/comments/17u6tmv/purpose_of_internal_developer_portal/</li><li>https://www.reddit.com/r/devops/comments/17bhr7s/atlassian_have_jumped_on_the_internal_developer/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button</li><li>https://www.reddit.com/r/Terraform/comments/1fo62oi/how_do_you_approach_selfservice_in_an_idp_style/</li><li>https://www.reddit.com/r/devops/comments/10guddj/backstageio_common_issues_and_pitfalls/</li><li>https://www.reddit.com/r/devops/comments/1g8yw66/backstage_idp_why/</li><li>https://aws.amazon.com/marketplace/reviews/reviews-list/prodview-bhqx7c2xajs5w</li><li>https://www.g2.com/products/cortex-io-cortex/reviews/cortex-review-8715969</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-e00a50c elementor-widget elementor-widget-spacer" data-id="e00a50c" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-cfa915a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="cfa915a" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-03880cc" data-id="03880cc" data-element_type="column" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-bd8e66e elementor-widget elementor-widget-heading" data-id="bd8e66e" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<p class="elementor-heading-title elementor-size-default">Now that you're here...</p>				</div>
				</div>
				<div class="elementor-element elementor-element-5106e7d elementor-widget elementor-widget-text-editor" data-id="5106e7d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr">Cloudomation Engine is a platform orchestrator that enables you to provide self-service tools, automate complex tasks, and gain full visibility into your infrastructure.</p><p dir="ltr">Let’s talk about how Cloudomation<br />can make that happen for you.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-2e2e7b8 elementor-align-center elementor-widget elementor-widget-button" data-id="2e2e7b8" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/en/contact-us-2/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Schedule a call</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/">5 Internal Developer Portals (&#8230;and what software engineers say about them)</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Best Practices for Building an Internal Developer Platform</title>
		<link>https://cloudomation.com/cloudomation-blog/best-practices-for-building-an-internal-developer-platform/</link>
		
		<dc:creator><![CDATA[Margot Mückstein]]></dc:creator>
		<pubDate>Wed, 16 Apr 2025 08:23:20 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://cloudomation.com/?p=52260</guid>

					<description><![CDATA[<p>Learn about the core capabilities of IDPs and how they help you to build one.</p>
<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/best-practices-for-building-an-internal-developer-platform/">Best Practices for Building an Internal Developer Platform</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-page" data-elementor-id="52260" class="elementor elementor-52260">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ce40332 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce40332" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ae291bf" data-id="ae291bf" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a930323 elementor-widget elementor-widget-text-editor" data-id="a930323" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>I have been reading and thinking about <a href="https://cloudomation.com/cloudomation-blog/what-is-an-internal-developer-platform/">(internal) developer platforms</a> for a while now. I quickly understood the purpose and benefit of developer platforms: Their purpose is to make the lives of software engineers easier, and the benefit of that is more time for software engineers to do actual software engineering &#8211; i.e. an increase in productivity and happiness.</p><p>I also often read that developer platforms are a layer of abstraction. Software engineers should no longer need to know about the underlying infrastructure in order to use it (e.g. to deploy their software to it).</p><p>So far so good.</p><p>I also read that developer platforms</p><ul><li>should be treated as products, and focus on providing useful services to their core users: Software engineers.</li><li>can really be anything: Documentation, templates, APIs, or portals. Anything an organisation identifies as a place where developers can get information, support and resources to handle infrastructure, pipelines and deployments.</li><li>are unique to each organisation. How a specific developer platform looks like, which components it has, which features it provides, depends a lot on what is already there in an organisation.</li></ul><p>So far so great.</p><p>Individually, all of these points make sense. But I struggled to put them all together. In my head, the idea of “developer platforms” became a large blob that was hard to describe &#8211; and even harder to apply.</p><p>Then I came across this <a href="https://www.youtube.com/watch?v=fZ2DjdqT1e0" target="_blank" rel="noopener">video</a> by <a href="https://www.linkedin.com/in/viktorfarcic/" target="_blank" rel="noopener">Victor Farcic</a>. It was the first resource that helped me break that mess down into tangible, applicable categories through which I understood how to go about building an IDP: Where to start and what’s important.</p><p>In the video, Victor Farcic describes how to build a developer platform in 5 steps: API, State management, One-shot actions / Workflows, RBAC &amp; Policies and User interfaces (which, funnily, he calls optional). I found these steps useful, not so much as steps, but because they describe the core capabilities a developer platform should have in order to be useful. They don’t try to say what a platform should look like by listing product categories, but instead what a platform should be able to do. How you achieve those capabilities is totally up to you.</p><p>This post is not a summary of the video, it is my own take on the core capabilities of IDPs, which was inspired by the video. However, I formulate them slightly differently and added another one:</p><ul><li>APIs</li><li>User Interfaces (not optional)</li><li>Automation: One-shot Actions and State Management</li><li>Constraints (policies, RBAC etc.)</li><li>Documentation and Discoverability</li></ul><p>Let’s take a look at each of those capabilities, what they mean, and why they are important.</p><p>Read more: <a href="https://cloudomation.com/cloudomation-blog/how-internal-developer-platforms-work/">How do IDPs work</a></p>								</div>
				</div>
				<div class="elementor-element elementor-element-8317de4 elementor-widget elementor-widget-spacer" data-id="8317de4" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4e7c0bb elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4e7c0bb" data-element_type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-32ded56" data-id="32ded56" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<section class="elementor-section elementor-inner-section elementor-element elementor-element-5bf9bb00 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5bf9bb00" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-f73c990" data-id="f73c990" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-19355a16 elementor-widget elementor-widget-image" data-id="19355a16" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="guide-building-an-internal-developer-platform" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NTQxMjgsInVybCI6Imh0dHBzOlwvXC9jbG91ZG9tYXRpb24uY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wNlwvZ3VpZGUtYnVpbGRpbmctYW4taW50ZXJuYWwtZGV2ZWxvcGVyLXBsYXRmb3JtLnBuZyJ9">
							<img fetchpriority="high" decoding="async" width="300" height="300" src="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png" class="attachment-medium size-medium wp-image-54128" alt="guide-building-an-internal-developer-platform" srcset="https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-300x300.png 300w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform-150x150.png 150w, https://cloudomation.com/wp-content/uploads/2025/06/guide-building-an-internal-developer-platform.png 500w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-7d811832" data-id="7d811832" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-55b65028 elementor-widget elementor-widget-text-editor" data-id="55b65028" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Building Internal Developer Platforms Guide</strong></p><p>Learn how to design and build an IDP that accelerates software delivery and reduces complexity.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3414b0f elementor-widget elementor-widget-button" data-id="3414b0f" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://cloudomation.com/whitepaper-en/building-internal-developer-platforms/">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Download</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-852cbaf elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="852cbaf" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-71c6c41" data-id="71c6c41" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-b133a5c elementor-widget elementor-widget-text-editor" data-id="b133a5c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2><span style="font-weight: 400;">#1 APIs</span></h2>
<p>An API is at the very core of the value proposition of a developer portal. It is the core layer of abstraction that exposes services to platform users in a simple and secure way:</p>
<ul>
<li>Simple:
<ul>
<li>API calls should be available with a minimum set of required parameters that is small and simple, making it possible to request a resource as easily as possible, e.g. by only requesting “a DB”, leaving all additional configuration to default to templates. Additional parameters for customisation should be available, but not required.</li>
<li>API calls should follow a simple, standardised schema that is always the same, independent of the specific request.</li>
<li>API calls should be independent of underlying infrastructure and tech stack: The API should not require the user to specify e.g. if the DB should be deployed to AWS or GCloud, and the request structure and parameters should be independent of the underlying infrastructure.</li>
<li>The API should describe itself, i.e. return its own schema, so that applications built on top of it or users interacting with it&nbsp; can easily discover what is available.</li>
</ul>
</li>
<li>Secure:
<ul>
<li>The API is the main place where constraints are applied and enforced. This means that the API should be able to apply policies, and only accept requests that pass authentication and validation.</li>
</ul>
</li>
</ul>
<p>The API is the core of the developer portal. If you try to build a developer platform without a central API that provides a unified layer of abstraction across services, you will end up with a mess that is impossible to maintain.</p>
<p>If you have a central component that allows you to define a custom API &#8211; for example, if your developer platform is based on Kubernetes &#8211; then it’s great to use that to define the core API for your platform. However if your developer platform should support deployment into different clouds or infrastructure environments, and/or provide services via the API that are unrelated to infrastructure deployment, then you should look for a dedicated API management tool, or build a custom API layer for your developer platform yourself.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-78347dd elementor-widget elementor-widget-text-editor" data-id="78347dd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2><span style="font-weight: 400;">#2 User Interfaces</span></h2><p>User Interfaces are built on top of the API and provide ways for platform users to interact with the platform in ways that are simple and fit their preferences. User interfaces can, for example, be:</p><ul><li>Portals / web GUIs like Backstage or Port. For example, these can let platform users request resources by filling in a form which is based on the API schema,</li><li>CLIs (command-line interfaces) which let platform users use platform features via a terminal,</li><li>IDE plugins, which make platform features available directly from an IDE,</li><li>Integrations with other existing GUIs,</li><li>Custom web UIs,</li><li>Or anything else that can access an API.</li></ul><p>Considering that the main value proposition of a developer portal is to make the lives of software engineers easier, user interfaces are an essential platform capability. They should be chosen and designed with utmost care and in close collaboration with their users to make sure that platform features are usable in a way that makes sense to software engineers, and that fits their existing workflows. Getting user interfaces wrong can destroy a lot of the potential value a developer platform can provide.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-5b6ac92 elementor-widget elementor-widget-text-editor" data-id="5b6ac92" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>#3 Automation: One-Shot Actions and State Management</h2><p><strong>One-shot actions</strong> or workflows are probably the part you are most familiar with already. This is process automation, scripting, pipelines, and anything else that allows you (or your platform users) to do something automatically &#8211; once.<br />One-shot actions are things like: Creating a snapshot, building a container image, running a set of tests on a specific deployment, etc. Anything that you need to be able to do automatically, which you do often, but for a specific constellation or configuration you typically only do it once. For example, you typically build a container image only once, until something changes, then you do it again once for the new container image definition.</p><p><strong>State management</strong> means being able to define how something should be &#8211; a state &#8211; and having a tool that ensures that this state is maintained. For example, state management is a core feature of kubernetes. If a cluster is configured to run three pods, then kubernetes will make sure that there are always three pods. If there are two, it will add a third. If there are four, it will kill one.<br />Tools for state management allow a user to define the state without having to worry about the one-shot actions that allow the system to get from one state to another (for example, the one-shot-action of deploying or killing a kubernetes node). As such, state management tools are already a layer of abstraction that contain logic for one-shot-actions within their domain, and allow the user to use them in a conceptually different and simpler way: By only describing the desired state.<br />As such, state management tools are always domain specific. They contain logic around state management within one domain &#8211; such as a kubernetes cluster, for example, or infrastructure management in a wider sense in the case of e.g. Ansible.<br />In order to work, a state management tool has to “know” how to transform a system from any possible state into any other possible state. Depending on the domain, that can mean quite a lot of automation logic to provide state management that feels simple to a user.</p><p>It is absolutely possible to manage state with any system that is capable of one-shot actions. It is just more difficult to set up and manage, than with a dedicated state management system.</p><p>To summarise:</p><p>State management requires:</p><ul><li>A way to define a state</li><li>Atomic one-shot actions that can be combined flexibly, so that the system can go from any state allowed in its definition, to any other state allowed in its definition</li><li>State awareness, i.e. built-in capabilities to know what the current state is</li></ul><p>State management transforms any type of input (current states) into the same output (the desired state). As such, state management is deterministic: You know exactly which output you will get for each input. The system is state aware and will continue to try to reach the desired state independently of which one-shot actions have or have not been performed before.</p><p>One-shot actions, on the other hand, typically focus more heavily on:</p><ul><li>Process logic and</li><li>Configuration management, i.e. the inputs that a one-shot action receives which influence the process logic.</li></ul><p>A one-shot action transforms a specific set of inputs into a specific set of outputs. Because one-shot actions are typically not state aware (at least not fully), the outputs of a one-shot action are not deterministic. The same input can lead to a different output, depending on the initial state of the system. <br />For example, the one-shot action of creating a kubernetes node can lead to one, ten, or one hundred kubernetes nodes existing afterwards &#8211; the one-shot action doesn’t know or consider how many nodes exist before it is started.</p><p>You most likely already have a lot of one-shot automation in place. When building a developer platform, it is tempting to re-use (or abuse) existing automation solutions to build platform services. Depending on which automation solutions those are, that can be a good idea, or a very bad idea. Existing, battle-tested pipelines and other automation that is in productive use already should obviously be re-used as much as possible. Building platform specific services with existing automation solutions can work well if those solutions support building modular, maintainable automations &#8211; and, ideally, if they provide state management functionality. </p>								</div>
				</div>
				<div class="elementor-element elementor-element-afb5111 elementor-widget elementor-widget-text-editor" data-id="afb5111" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>#4 Constraints</h2><p>The platform API provides a set of services. At any given point, not all of these services will be available for every user. The rules that determine which services are available or unavailable to whom, when, and why are what I call constraints. <br />A platform has to support a way to define or integrate and enforce such constraints. Ideally, this is a feature of the API, which should allow definition of policies that restrict which requests can be done by which user group.</p><p>In existing infrastructure setups, and in probably most if not all developer platforms, constraints are implemented across a patchwork of different tools with very different focus. Role-based access control is one such focus of constraint modelling: Its purpose is to define roles, which are associated with permissions, which detail what rights a specific role has.</p><p>In the context of a developer platform, this can, for example, mean that software engineers with one role are allowed to request resources with GPUs, while others are not.</p><p>Resource quotas are another example of a policy or constraint. <br />The API should be aware of all these constraints and validate the requests it receives. If a request violates a constraint, it should be rejected with a helpful error.</p><p>Side note: Functionally closely related is schema validation. The API checks the request it receives and validates it against a schema which defines which parameters are required, and if all of the required parameters are contained in the request, and in the correct format. If the validation fails, the request is rejected with a helpful error. <br />Constraints can be modeled in the same way: To be valid, a request has to contain the correct set of permissions and other parameters that fit within the constraints framework. </p>								</div>
				</div>
				<div class="elementor-element elementor-element-07fd1fe elementor-widget elementor-widget-text-editor" data-id="07fd1fe" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>#5 Documentation and Discoverability</h2><p>The API provides services based on state management and one-shot-actions. Constraints determine which of those services in what configuration are available to a specific user at a specific point in time. User Interfaces allow users to use these services. But in order for any of that to make sense, users need to know which services are available, and they need to understand how they can use them. Without discoverability, all other platform capabilities become a lot less valuable, because they will be used less.</p><p>Discoverability is a topic that should ideally be provided by each platform component being self-describing: The API should have an OpenAPI specification describing available calls, the constraints, wherever they are modelled, should be transparent, at least to a degree where a user knows that their request failed due to insufficient permissions, and user interfaces should provide information to users about available services (help in the CLI, for example, or a well-structured web app with a search feature).</p><p>But discoverability also extends to a topic central to many IDPs: Documentation. Discoverability of features, services, but also of infrastructure, intellectual property (software components, repositories etc.) and other things relevant to a software engineer’s work, is a core value that IDPs can provide. In fact, many IDPs start out as documentation hubs such as software catalogs, or local deployment guides with links to configuration templates etc.</p><p>When building an IDP, discoverability should be considered early on. Manually maintained documentation is great and often indispensable when providing self-service, which users have to understand in order to use. However manually curated documentation is also very resource intensive to maintain. Any component of the IDP that is self-descriptive and provides built-in features that support discoverability is a big boon that will make long-term maintenance of your IDP a lot easier. </p>								</div>
				</div>
				<div class="elementor-element elementor-element-91df067 elementor-widget elementor-widget-text-editor" data-id="91df067" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>How does this help me build a platform?</h2><p>If you think about the problems you have had recently as a platform or devops engineer, you will probably be able to map them to one of the described capabilities.</p><p>Some examples:</p><ul><li>If you have trouble with downtimes of instances, or accidental high cost due to cloud resources being left lying around, you have insufficient state management capabilities.</li><li>If you have issues with software engineers not having access to infrastructure they need, or with junior engineers messing with deployments they should not mess with, you are not managing constraints well.</li><li>If your developers are unable to spin up a feature branch system on their own, or triggering a build and test run for a specific commit, then you need to take a look at your one-shot-action automation capabilities.</li><li>If your software engineers are simply not using the APIs and services you provide, you should probably take a look at the user interfaces you provide or check if your services are discoverable / documented.</li></ul><p>If you start thinking about the problems you have &#8211; or, ideally, the services you would like to be able to provide to your software engineers &#8211; in these categories, it will help you identify what you need to do, and how to go about doing it in a way that will make your life sustainably easier.</p><p>Instead of abusing your one-shot automation tool for state management, hacking together workflows with lots of ifs and polling what is there before doing anything, you should probably consider finding a tool that is built for state management. It will make your life easier.</p><p>If you have policies flying around everywhere and no real idea which constraints apply where and if it makes sense, or if everyone simply has full rights on everything and you know that this is not how it should be but simply don’t know how to sustainably manage a principle of least privilege across your entire infrastructure and user base, then you should look for a tool that makes constraint modeling simpler for you. And so on.</p><p>The purpose and value of these core capabilities is to help you understand why you keep failing with some topics, and how you can start fixing things in a way that lasts and is sustainably manageable.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3cad7b5 elementor-widget elementor-widget-text-editor" data-id="3cad7b5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Final note on our own behalf</h2><p>I’m not just thinking about developer platforms, I’m building a framework for creating developer platforms that are useful and sustainable. <a href="https://cloudomation.com/">Cloudomation is a pure Python framework for building developer platforms</a>. We launched Cloudomation in 2019 as a general-purpose (one-shot action) automation framework, and have kept fidgeting with it ever since. I’m proud to say that, by now, we have a broad, flexible and powerful framework in place that supports the core capabilities described in this post (<a href="https://cloudomation.com/cloudomation-blog/idp-reference-architecture-cloudomation/">Check out our reference architecture</a>):</p><ul><li>API: Cloudomation has a built-in API manager that allows you to define custom APIs</li><li>User Interfaces: Cloudomation supports<ul><li>Custom web-apps based on custom APIs</li><li>Integration with portal solutions like Backstage</li><li>A basic CLI</li><li>Schema-based single-form web UIs (not suitable as full platform solutions, but suitable to provide individual services to specific user groups, e.g. to enable a consultant to deploy a demo environment)</li><li>Any custom-built user interface based on its APIs</li></ul></li><li>One-shot actions: Cloudomation was conceived as an automation platform and excels at handling complex workflows. This is a core strength of the platform. Both integration with existing pipelines, scripts, IaC and other tools, as well as native automation written in Python are supported by a broad, battle-tested feature set.</li><li>State management: Cloudomation is the only framework we are aware of that allows users to (easily) build custom state management for their own domain. This is powered by our unique object-oriented automation approach, which allows users to model objects that describe the desired state, and associate them with lifecycle hooks that manage state transitions. <a href="https://cloudomation.com/cloudomation-blog/an-introduction-to-object-oriented-automation/">Read more</a></li><li>Constraints: Cloudomation supports role-based access control (RBAC) which can be modelled directly on the platform, as well as integration with LDAP for authentication. In addition, constraints modelling can be done using the core automation features available on the platform.</li><li>Documentation and discoverability: Our custom APIs can self describe and our Cloudomator LLM-based assistant can provide information and write documentation on custom generated automations, services, and APIs in Cloudomation. When it comes to hosting and serving documentation to users, Cloudomation is not the right tool, but it can seamlessly integrate and continuously update automatically generated documentation (e.g. for API schemata) in specialised documentation solutions, or developer portals (like Backstage).</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-7fc995a elementor-widget elementor-widget-spacer" data-id="7fc995a" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a href="https://cloudomation.com/cloudomation-blog/best-practices-for-building-an-internal-developer-platform/">Best Practices for Building an Internal Developer Platform</a> erschien zuerst auf <a href="https://cloudomation.com">Cloudomation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
