<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Developer portals</title><link>https://www.pulumi.com/blog/tag/developer-portals/</link><description>Pulumi blog posts: Developer portals.</description><language>en-us</language><pubDate>Tue, 22 Oct 2024 07:47:03 +0000</pubDate><item><title>The Guide to Platform Engineering: 7 Steps to Get It Right</title><link>https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices/</link><pubDate>Tue, 22 Oct 2024 07:47:03 +0000</pubDate><guid>https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/the-guide-platform-engineering-idp-steps-best-practices/index.png" /&gt;
&lt;p&gt;In today’s fast-paced digital landscape, organizations are increasingly adopting platform engineering to optimize their software delivery and operations. Gartner predicts that by 2026, 80% of large software engineering organizations will have platform engineering teams to provide reusable services, components, and tools for application delivery. Additionally, by 2027, 80% of large enterprises will leverage platform engineering to scale DevOps initiatives in hybrid cloud environments effectively.&lt;/p&gt;
&lt;p&gt;This shift is driven by the rise of cloud adoption, where many enterprises face the challenge of uncoordinated application teams deploying workloads in different ways across various cloud platforms. This siloed approach often results in a lack of standardization, security risks, and operational inefficiencies.&lt;/p&gt;
&lt;p&gt;Platform engineering offers a strategic solution to these issues. This guide provides the essential steps to successfully implement platform engineering, from laying the foundation to scaling internal developer platforms (IDPs) for future growth.&lt;/p&gt;
&lt;h2 id="on-this-article"&gt;On this article:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#step-1-securing-executive-buy-in"&gt;Step 1: Securing Executive Buy-in&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#step-2-staffing-the-platform-engineering-team"&gt;Step 2: Staffing the Platform Engineering Team&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#step-3-defining-the-platform-mandate"&gt;Step 3: Defining the Platform Mandate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#step-4-implementing-the-pre-production-pipeline"&gt;Step 4: Implementing the Pre-Production Pipeline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#step-5-embracing-infrastructure-as-code"&gt;Step 5: Embracing Infrastructure as Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#step-6-implementing-policy-as-code"&gt;Step 6: Implementing Policy as Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#step-7-evolving-towards-self-service"&gt;Step 7: Evolving Towards Self-Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/the-guide-platform-engineering-idp-steps-best-practices#frequently-asked-questions"&gt;Frequently Asked Questions (Platform Engineering Concepts &amp;amp; Definitions)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-securing-executive-buy-in"&gt;Step 1: Securing Executive Buy-in&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/t4c3NOiuhXQ?rel=0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;The first step in your platform engineering journey is securing executive buy-in. This high-level support is essential, as platform engineering teams must create an organization-wide strategy that integrates internal developer portals (IDPs) and self-service capabilities. Leadership needs to understand how platform engineering can address inefficiencies caused by siloed application teams and uncoordinated cloud deployments.&lt;/p&gt;
&lt;p&gt;To do this, present a clear roadmap with measurable outcomes, such as improved delivery speed and security. Use metrics like &lt;a href="https://en.wikipedia.org/wiki/DevOps_Research_and_Assessment"&gt;DORA&lt;/a&gt; (Deployment Frequency, Lead Time, Mean Time to Recovery) to demonstrate how platform engineering enhances security, standardization, and efficiency. Outline the required resources (headcount, budget, tooling) and align the project with business objectives.&lt;/p&gt;
&lt;h2 id="step-2-staffing-the-platform-engineering-team"&gt;Step 2: Staffing the Platform Engineering Team&lt;/h2&gt;
&lt;p&gt;Once you have executive backing, the next step is to assemble your platform engineering team. This team will &lt;a href="https://www.pulumi.com/blog/developer-portal-platform-teams/"&gt;develop and maintain your internal developer platform (IDP)&lt;/a&gt;, ensuring it offers the organization secure, scalable, and self-service solutions.&lt;/p&gt;
&lt;p&gt;Successful platform engineering teams are characterized by a strong customer focus, empathy for the needs of application teams, and the ability to act as the &amp;ldquo;glue&amp;rdquo; that binds the organization together. Key roles and responsibilities within the platform team include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Customer-facing roles&lt;/strong&gt;: Serve as the primary point of contact for application teams, understanding their needs and advocating for their requirements within the platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure expertise&lt;/strong&gt;: Possess deep knowledge of the underlying infrastructure, whether on-premises or in the cloud, to ensure the platform is reliable and scalable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DevOps and automation skills&lt;/strong&gt;: Leverage infrastructure as code (IaC) tools and techniques to automate the provisioning and management of the platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.pulumi.com/blog/finops-with-pulumi/"&gt;FinOps&lt;/a&gt; and cost optimization expertise&lt;/strong&gt;: Understand the organization&amp;rsquo;s financial systems and processes to ensure the platform is cost-effective and aligned with budgetary constraints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Software development capabilities&lt;/strong&gt;: Develop the platform&amp;rsquo;s core components, including self-service interfaces and reusable infrastructure modules, using best practices in software engineering.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By assembling a team with this diverse set of skills and a customer-centric mindset, you&amp;rsquo;ll be well-positioned to build a platform that truly meets the needs of your application teams.&lt;/p&gt;
&lt;h2 id="step-3-defining-the-platform-mandate"&gt;Step 3: Defining the Platform Mandate&lt;/h2&gt;
&lt;p&gt;Next, clearly define the platform team’s mandate to set expectations. This document should outline the platform’s purpose, the services it provides, and how it supports &lt;a href="https://www.pulumi.com/blog/building-developer-portals/"&gt;internal developer portals (IDPs)&lt;/a&gt; and self-service capabilities.&lt;/p&gt;
&lt;p&gt;The platform mandate should serve as a central reference point for the platform team and its customers, ensuring everyone is aligned on the team&amp;rsquo;s mission and its value. Key elements to include in the platform mandate include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Introduction&lt;/strong&gt;: A high-level overview of the platform team&amp;rsquo;s purpose and the organizational outcomes it aims to achieve.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Supported systems&lt;/strong&gt;: A list of the infrastructure, services, and tools that the platform team is responsible for managing and supporting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support model&lt;/strong&gt;: Details on how application teams can access platform services, including any self-service capabilities and the team&amp;rsquo;s response times for different types of requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team structure&lt;/strong&gt;: An overview of the platform team&amp;rsquo;s members and their areas of expertise, making it easy for application teams to identify the right point of contact.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A well-defined mandate aligns the team and its customers with the platform’s value and purpose.&lt;/p&gt;
&lt;h2 id="step-4-implementing-the-pre-production-pipeline"&gt;Step 4: Implementing the Pre-Production Pipeline&lt;/h2&gt;
&lt;p&gt;With a mandate in place, begin building the core capabilities, starting with a pre-production pipeline. This pipeline standardizes how application code moves from development to deployment, emphasizing security and consistency.&lt;/p&gt;
&lt;p&gt;Key components of the pre-production pipeline include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Version control&lt;/strong&gt;: Implement a centralized version control system to manage application code and infrastructure as code (IaC) configurations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous integration (CI)&lt;/strong&gt;: Automate the build and testing of application artifacts, such as container images or deployment packages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artifact management&lt;/strong&gt;: Provide a secure and versioned repository for storing and distributing the application artifacts produced by the CI process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Static analysis&lt;/strong&gt;: Integrate tools that can scan application code and dependencies for security vulnerabilities and other issues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application delivery&lt;/strong&gt;: Automate the deployment of application artifacts to pre-production environments, such as staging or testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By establishing a standardized pre-production pipeline, you&amp;rsquo;ll ensure that all application teams follow a consistent, secure, and efficient process for getting their code into a production-ready state.&lt;/p&gt;
&lt;h2 id="step-5-embracing-infrastructure-as-code"&gt;Step 5: Embracing Infrastructure as Code&lt;/h2&gt;
&lt;p&gt;Leveraging infrastructure as code (IaC) is crucial for managing the platform’s infrastructure. It enables consistent, scalable, and secure operations by automating the provisioning of resources, monitoring, and enforcing security policies.&lt;/p&gt;
&lt;p&gt;Key areas where IaC can be applied within the platform include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Foundational infrastructure&lt;/strong&gt;: Provision and manage the underlying cloud resources, such as virtual networks, storage, and compute, that form the platform&amp;rsquo;s foundation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runtime platforms&lt;/strong&gt;: Deploy and configure the runtime environments where application workloads will be executed, such as Kubernetes clusters or serverless functions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability and monitoring&lt;/strong&gt;: Set up the logging, metrics, and alerting systems that provide visibility into the platform&amp;rsquo;s health and performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security and compliance&lt;/strong&gt;: Implement security controls, such as &lt;a href="https://www.pulumi.com/docs/esc/"&gt;secrets management&lt;/a&gt; and &lt;a href="https://www.pulumi.com/docs/iac/packages-and-automation/crossguard/get-started/"&gt;access policies&lt;/a&gt;, to ensure the platform meets regulatory and organizational requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipelines and &lt;a href="https://www.pulumi.com/docs/iac/packages-and-automation/automation-api/"&gt;automation&lt;/a&gt;&lt;/strong&gt;: Use IaC to define and version-control the platform&amp;rsquo;s own deployment and management pipelines, ensuring consistency and repeatability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/"&gt;infrastructure as code&lt;/a&gt;, the platform engineering team can ensure reliable, scalable, and secure infrastructure across the organization.&lt;/p&gt;
&lt;h2 id="step-6-implementing-policy-as-code"&gt;Step 6: Implementing Policy as Code&lt;/h2&gt;
&lt;p&gt;Alongside your IaC efforts, it&amp;rsquo;s important to set up a robust policy-as-code framework within your platform. Policy-as-code allows you to enforce security, compliance, and operational policies programmatically. This provides governance at scale, ensuring all teams follow the same rules.&lt;/p&gt;
&lt;p&gt;Policy as code can be applied in two key ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preventative controls&lt;/strong&gt;: Implement policies that proactively validate and reject non-compliant infrastructure changes before they are provisioned, providing fast feedback to application teams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detective controls&lt;/strong&gt;: Establish policies that continuously monitor the deployed infrastructure, triggering alerts or remediation actions when deviations from the desired state are detected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By combining &lt;a href="https://www.pulumi.com/docs/iac/packages-and-automation/crossguard/"&gt;IaC and policy as code&lt;/a&gt; with self-service provisioning, you maintain security and compliance while giving teams autonomy.&lt;/p&gt;
&lt;h2 id="step-7-evolving-towards-self-service"&gt;Step 7: Evolving Towards Self-Service&lt;/h2&gt;
&lt;p&gt;As your platform matures, the ultimate goal is to empower your application teams with self-service capabilities, allowing them to provision the infrastructure and resources they need quickly and autonomously. This self-service model can take various forms, from pre-defined infrastructure modules to fully automated deployment pipelines.&lt;/p&gt;
&lt;p&gt;When implementing self-service capabilities, keep the following platform engineering best practices in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start small and iterate&lt;/strong&gt;: Don&amp;rsquo;t try to boil the ocean. Begin with a few well-defined use cases, such as CI/CD pipelines or database provisioning, and gradually expand the self-service offerings as your platform team gains experience and confidence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/"&gt;Focus on user experience&lt;/a&gt;&lt;/strong&gt;: Ensure that the self-service interfaces, whether web-based or command-line, are intuitive and easy to use. Gather feedback from application teams and continuously refine the user experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maintain stability and reliability&lt;/strong&gt;: Even with self-service, the platform team is responsible for ensuring the underlying infrastructure and services remain stable and reliable. Implement robust monitoring, alerting, and incident response processes to maintain platform health.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embrace a product mindset&lt;/strong&gt;: Treat the &lt;a href="https://www.pulumi.com/blog/platform-engineering-cncf-maturity-model/#platforms-as-products-driving-success"&gt;platform as a product&lt;/a&gt;, with the application teams as your customers. Continuously gather feedback, measure key performance indicators, and iterate on the platform&amp;rsquo;s capabilities to meet evolving needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By gradually transitioning towards a self-service model, you&amp;rsquo;ll empower your application teams to move faster while maintaining the necessary guardrails and controls to ensure the platform&amp;rsquo;s long-term success.&lt;/p&gt;
&lt;h2 id="conclusion-embracing-the-platform-engineering-journey"&gt;Conclusion: Embracing the Platform Engineering Journey&lt;/h2&gt;
&lt;p&gt;Building a successful platform engineering strategy involves following a clear roadmap. But remember, implementing the platform engineering strategy is a journey, not a destination. By following the steps outlined in this guide, you&amp;rsquo;ll be well on your way to building a robust, secure, scalable, and customer-centric internal developer platform (IDP) that empowers your organization to deliver software more efficiently and effectively.&lt;/p&gt;
&lt;p&gt;With the right approach and mindset, your platform engineering efforts will become a strategic enabler for your organization&amp;rsquo;s digital transformation.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Build secure, scalable platforms with confidence—&lt;a href="https://info.pulumi.com/platform-engineering-workshop-series"&gt;register for the Platform Engineering Course&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="frequently-asked-questions"&gt;Frequently Asked Questions&lt;/h2&gt;
&lt;h3 id="what-is-platform-engineering"&gt;What is Platform Engineering?&lt;/h3&gt;
&lt;p&gt;There are many definitions for platform engineering, one of which is designing, building, and maintaining internal platforms that streamline software delivery by providing reusable tools, services, and workflows for developers. It focuses on scalability, efficiency, and self-service capabilities for internal teams.&lt;/p&gt;
&lt;p&gt;For a more in-depth explanation of real-world use cases, see &lt;a href="https://www.pulumi.com/what-is/what-is-platform-engineering/"&gt;What is platform engineering&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="who-are-the-platform-customers"&gt;Who are the Platform Customers?&lt;/h3&gt;
&lt;p&gt;The platform customers are the end users, typically internal teams (e.g., application developers and DevOps engineers), who use the platform&amp;rsquo;s tools and services to build, deploy, and manage software.&lt;/p&gt;
&lt;h3 id="what-is-an-internal-developer-platform-idp"&gt;What is an Internal Developer Platform (IDP)?&lt;/h3&gt;
&lt;p&gt;A centralized platform that offers developers the tools and environments they need to build, test, and deploy applications. It abstracts away the complexity of underlying infrastructure, allowing teams to focus on coding and delivery.&lt;/p&gt;
&lt;h3 id="what-is-a-platform-team"&gt;What is a Platform Team?&lt;/h3&gt;
&lt;p&gt;The platform engineering team is a dedicated group of engineers responsible for managing the internal platform. They ensure the platform meets the needs of the organization, providing reliability, security, and scalability.&lt;/p&gt;
&lt;h3 id="what-is-a-self-service-infrastructure"&gt;What is a Self-Service Infrastructure?&lt;/h3&gt;
&lt;p&gt;A platform feature that allows development teams to provision, configure, and manage infrastructure resources on demand without relying on other teams, fostering agility.&lt;/p&gt;
&lt;h3 id="what-is-infrastructure-as-code-iac"&gt;What is Infrastructure as Code (IaC)?&lt;/h3&gt;
&lt;p&gt;The process of managing and provisioning infrastructure through code, allowing infrastructure to be versioned, automated, and managed consistently across environments.&lt;/p&gt;
&lt;p&gt;For a more in-depth explanation, see the &lt;a href="https://www.pulumi.com/what-is/what-is-infrastructure-as-code/"&gt;What is Infrastructure as Code? page&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="what-is-policy-as-code-pac"&gt;What is Policy as Code (PaC)?&lt;/h3&gt;
&lt;p&gt;Policy as Code (PaC) defines security, compliance, and &lt;a href="https://www.pulumi.com/docs/iac/packages-and-automation/crossguard/core-concepts/"&gt;operational policies&lt;/a&gt; in code to automate their enforcement across infrastructure and application deployments.&lt;/p&gt;
&lt;h3 id="what-is-developer-experience-devex"&gt;What is Developer Experience (DevEx)?&lt;/h3&gt;
&lt;p&gt;The overall experience developers have with using the platform, tools, and workflows provided by platform engineering. Optimizing DevEx ensures that developers can work more efficiently and effectively.&lt;/p&gt;
&lt;p&gt;For a more in-depth explanation, read &lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/"&gt;Beyond Productivity: Developer Experience is Business Critical.&lt;/a&gt;&lt;/p&gt;</description><author>Sara Huddleston</author><author>Josh Kodroff</author><category>platform-engineering</category><category>developer-portals</category><category>policy-as-code</category><category>finops</category><category>cost-efficiency</category></item><item><title>Org-only Template Gallery and Setting Default Repositories: Streamline Your Development</title><link>https://www.pulumi.com/blog/new-project-wizard-apr2024-updates/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/new-project-wizard-apr2024-updates/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/new-project-wizard-apr2024-updates/index.png" /&gt;
&lt;p&gt;We&amp;rsquo;re constantly evolving the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/developer-portals/new-project-wizard/"&gt;New Project Wizard&lt;/a&gt; to make it the preferred choice for platform teams to empower their internal teams to deploy resources quickly and in adherence to organizational standards. In January, we launched the &lt;a href="https://www.pulumi.com/blog/developer-portal-gallery/"&gt;Developer Portal Gallery&lt;/a&gt; to boost development velocity and reduce operational friction. Since then, we have seen strong adoption from our customers and received several new requests. We are excited to share the latest improvements we&amp;rsquo;ve made.&lt;/p&gt;
&lt;h2 id="primer-on-new-project-wizard-and-developer-portal-gallery"&gt;Primer on New Project Wizard and Developer Portal Gallery&lt;/h2&gt;
&lt;h3 id="the-new-project-wizard"&gt;The New Project Wizard&lt;/h3&gt;
&lt;p&gt;The New Project Wizard is a core component of &lt;a href="https://www.pulumi.com/blog/building-developer-portals/"&gt;Pulumi for Developer Portal&lt;/a&gt; that guides users through a structured process to deploy infrastructure resources through Pulumi. It allows users to select from pre-defined templates or generate new programs through Pulumi AI, configure, and deploy them without leaving the browser. This wizard significantly reduced the time and effort required to get projects off the ground, enabling developers to concentrate more on their development tasks and less on initial setup. Platform teams using the New Project Wizard do not have to custom-build and maintain complex tooling.&lt;/p&gt;
&lt;h3 id="overview-of-the-developer-portal-gallery"&gt;Overview of the Developer Portal Gallery&lt;/h3&gt;
&lt;p&gt;The Developer Portal Gallery allows platform teams to curate and distribute approved project templates within their organization. This feature supports compliance and standardization by ensuring that all projects adhere to organizational policies and best practices right from the start. The gallery not only facilitates the discovery and use of these templates but also makes it easy for developers to start new projects with templates that are pre-vetted and ready to deploy.&lt;/p&gt;
&lt;p&gt;Using the Developer Portal Gallery can enhance collaboration across teams by standardizing the tools and processes used for creating and deploying projects. This alignment helps in maintaining a high level of governance as projects scale and ensures consistency across the development lifecycle. Platform teams can oversee template usage and configurations, making sure that each project conforms to the required security, architecture, and performance standards.&lt;/p&gt;
&lt;h2 id="whats-new"&gt;What&amp;rsquo;s New?&lt;/h2&gt;
&lt;p&gt;Here’s a breakdown of the latest enhancements:&lt;/p&gt;
&lt;h3 id="org-only-template-sources"&gt;Org-only Template Sources&lt;/h3&gt;
&lt;p&gt;Previously, the Developer Portal Gallery included both the Organization&amp;rsquo;s custom templates as well as Pulumi-authored templates. With this update, you can now add or remove the Pulumi-authored templates, ensuring that users only deploy organizationally approved templates. This simplifies template discovery and selection, reinforcing governance and compliance across development projects.&lt;/p&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="Org-only Template Sources"
autoplay muted playsinline
loop &gt;
&lt;source src="./org-only-templates.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;h3 id="default-repository-locations"&gt;Default Repository Locations&lt;/h3&gt;
&lt;p&gt;We heard from customers they want their developers to not even have to worry about what repo their Pulumi code lives in. Starting today, admins can set default repository locations for each template source within the gallery. This eliminates the need for developers to select a repository, automatically using predetermined locations and streamlining their deployment process.&lt;/p&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="Org-only Template Sources"
autoplay muted playsinline
loop &gt;
&lt;source src="./default-repos.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;h3 id="auto-generated-project-names"&gt;Auto-generated Project Names&lt;/h3&gt;
&lt;p&gt;Another improvement is the auto-generation of project names. Previously, users had to specify a project name, requiring additional input and sometimes leading to naming conflicts. Now, we automatically generate unique project names, further reducing friction and simplifying the project creation process.&lt;/p&gt;
&lt;h2 id="wrapping-up"&gt;Wrapping up&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;re continuously striving to make your experience with Pulumi Cloud as seamless and efficient as possible. Your feedback, big or small, is valuable to us, please feel free to share it in the &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/new/choose"&gt;Pulumi Cloud Requests repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy building!&lt;/p&gt;</description><author>Arun Loganathan</author><category>features</category><category>new-project-wizard</category><category>developer-portals</category><category>platform-engineering</category></item><item><title>Why Developer Experience (DevEx) is Business Critical</title><link>https://www.pulumi.com/blog/developer-experience-business-critical/</link><pubDate>Tue, 20 Feb 2024 20:47:44 +0000</pubDate><guid>https://www.pulumi.com/blog/developer-experience-business-critical/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/developer-experience-business-critical/index.png" /&gt;
&lt;p&gt;&amp;ldquo;Developer experience is hard to sell,&amp;rdquo; said Cleve Littlefield, Engineering Manager at Pulumi, during a casual meeting. With experience as both an end-user developer and a lead in self-service platform implementation, Cleve&amp;rsquo;s observation stuck with me.&lt;/p&gt;
&lt;p&gt;Though I have expertise in leading implementations and upgrades for internal platforms, none were specifically for developers. However, experience remains vital across departments, addressing tools, processes, systems, and best practices, aiming to reduce cognitive load, increase productivity, enhance collaboration, boost communication and much more.&lt;/p&gt;
&lt;p&gt;Intriguingly, engineering teams may perceive its value differently. Therefore, we will dive into the concept of developer experience, aka DevEx, which, in truth, should translate into a competitive advantage.&lt;/p&gt;
&lt;h2 id="in-this-devex-article"&gt;In this DevEx article&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#what-is-developer=experience"&gt;What is developer experience?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#is-developer-experience-important"&gt;Is developer experience important?&lt;/a&gt; (Spoiler alert: it&amp;rsquo;s business-critical)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#the-github-developer-experience-devex-formula"&gt;The GitHub developer experience (DevEx) formula&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#what-does-a-great-developer-experience-look-like"&gt;What does a great developer experience look like?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#how-does-devex-intersect-with-devops"&gt;How does DevEx intersect with DevOps?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#organizational-culture-is-a-predictor-of-outcome-success"&gt;Organizational culture is a predictor of outcome success&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#how-do-you-implement-a-great-developer-experience"&gt;How do you implement a great developer experience?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#what-devex-is-not"&gt;What DevEx is not&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/software-developer-experience-devex-devx-devops-culture/#frequently-asked-questions"&gt;Frequently asked questions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-is-developer-experience"&gt;What is developer experience?&lt;/h2&gt;
&lt;p&gt;Developer experience (DevEx), also referred to as DevX or DX, encompasses systems, technology, processes, and culture that collectively impact the effectiveness of software development. It looks at all components of a developer&amp;rsquo;s ecosystem—from environment to workflows to tools—and evaluates how they contribute to developer productivity, satisfaction, and operational impact.&lt;/p&gt;
&lt;p&gt;Developer experience revolves around the ease or difficulty of executing essential tasks. &lt;strong&gt;A positive developer experience means those tasks are relatively easy to perform, translating into higher performance.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The quality of the experience is equally vital for developers building and managing internal software as it is for those involved in developing customer-facing software products.&lt;/p&gt;
&lt;h2 id="is-developer-experience-important"&gt;Is developer experience important?&lt;/h2&gt;
&lt;p&gt;It is not just important. &lt;strong&gt;It&amp;rsquo;s business critical.&lt;/strong&gt; If your company is in the business of creating and selling software or relies on critical internal software, developers are vital internal stakeholders to your business foundation.&lt;/p&gt;
&lt;p&gt;Greg Mondello, director of product at GitHub, said, &amp;ldquo;In most contexts, software development capacity is the limiting factor for innovation. Therefore, improvements to the effectiveness of software development are inherently valuable [&amp;hellip;] companies with better DevEx outperform their competitors, regardless of vertical.&amp;rdquo;&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://www.pulumi.com/blog/developer-experience-business-critical/what-impact-are-you-experiencing-resulting-of-improving-developer-experience.jpg"
alt="Platform Engineering Forrester Opportunity Snapshot - DevEx impacts overall business performance. Credit: Humanitec" width="70%"&gt;&lt;figcaption&gt;
&lt;p&gt;Platform Engineering Forrester Opportunity Snapshot - DevEx impacts overall business performance. Credit: Humanitec&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As per &lt;a href="https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/tech-forward/why-your-it-organization-should-prioritize-developer-experience"&gt;McKinsey&amp;rsquo;s report&lt;/a&gt;, an enhanced developer experience (DevEx) can yield significant advantages for organizations, including enhanced talent hiring and retention, improved security, and increased developer productivity- this makes DevEx important for all companies, not just tech.&lt;/p&gt;
&lt;p&gt;A positive developer experience can yield numerous business advantages, which can include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Improvement in collaboration across departments&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Higher attraction and retention top talent&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Increase developer productivity and developer velocity&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduction in operational costs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accelerate time-to-market&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support innovation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elevate customer attraction and retention&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Increase bottom line through revenue growth&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To this end, let&amp;rsquo;s look into what goes into developer experience and how to achieve it.&lt;/p&gt;
&lt;h2 id="the-github-developer-experience-devex-formula"&gt;The GitHub developer experience (DevEx) formula&lt;/h2&gt;
&lt;p&gt;GitHub&amp;rsquo;s DevEx formula takes into consideration the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Productivity: The speed and simplicity of implementing changes to a codebase&lt;/li&gt;
&lt;li&gt;Impact: The seamless transition from idea to production without obstacles&lt;/li&gt;
&lt;li&gt;Satisfaction: The environment, workflows, and tools influence developer happiness&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Optimizing DevEx involves fostering a collaborative environment where developers can be most productive, impactful, and satisfied.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://www.pulumi.com/blog/developer-experience-business-critical/github-developer-experience-formula.png"
alt="DevEx formula. Credit: GitHub" width="100%"&gt;&lt;figcaption&gt;
&lt;p&gt;DevEx formula. Credit: GitHub&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Noah Gift, the founder of Pragmatic AI Labs and a professor at Duke University specializing in machine learning, MLOps, AI, data science, and cloud architecture, noted that with the right platform, there could be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A 75% increase in productivity&lt;/li&gt;
&lt;li&gt;A sustained 22% productivity increase three years later&lt;/li&gt;
&lt;li&gt;An 80% reduction in onboarding time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Merely having skilled developers is insufficient. Developers also require the appropriate tools and processes to excel in their work. Top-tier developers anticipate the availability of such resources, influencing the hiring and retention of talent.&lt;/p&gt;
&lt;h2 id="what-does-a-great-developer-experience-look-like"&gt;What does a great developer experience look like?&lt;/h2&gt;
&lt;p&gt;Engineering teams that have good developer experiences are more productive and efficient. Great DevEx is often enabled by a platform where the end-users are the developers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developer-first readily available &lt;a href="https://www.pulumi.com/blog/platform-engineering-pillars-3/"&gt;internal developer platform&lt;/a&gt;, infrastructure, and development tooling, with well-organized and explicit documentation, including tutorials, demo environments, and curated learning paths.&lt;/li&gt;
&lt;li&gt;A unified hub for all developer requirements eliminates the need for developers to navigate through numerous tools, saving valuable time.&lt;/li&gt;
&lt;li&gt;Simplified workflows emerge when developers can swiftly select app patterns, such as API microservices or front-end journeys, and deploy them within minutes. This includes all-encompassing elements like environments, pre-integrated DevSecOps pipelines, monitoring, and fully automated change and release procedures.&lt;/li&gt;
&lt;li&gt;Centralized tracking of software, API, and infrastructure status and versions promotes asset transparency. A real-time view supports adherence to architectural standards, security controls, and patching status, with bots offering automatic suggestions for code enhancements related to issues.&lt;/li&gt;
&lt;li&gt;Integrated analytics and KPIs such as developer velocity, tech debt, error rate, mean time to recovery, and infrastructure cost can be automatically pulled by standard organizational tools, including backlog, pipeline, and monitoring tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://www.pulumi.com/blog/developer-experience-business-critical/github-study-what-developers-spend-themost-time-on-daily.png"
alt="Survey by GitHub on a typical experience for developers. Credit: GitHub" width="60%"&gt;&lt;figcaption&gt;
&lt;p&gt;Survey by GitHub on a typical experience for developers. Credit: GitHub&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Without the proper tools, progress may slow down the development process and hinder developer productivity. It becomes crucial to implement appropriate measures to avoid disruptions that could impact everyone involved, including the developers themselves. Although not often mentioned, &lt;a href="https://www.pulumi.com/what-is/what-is-devops/"&gt;DevOps&lt;/a&gt; and &lt;a href="https://www.pulumi.com/what-is/what-is-platform-engineering/"&gt;Platform Engineering&lt;/a&gt; also aim to enhance the developer experience and achieve the associated benefits.&lt;/p&gt;
&lt;h2 id="how-does-devex-intersect-with-devops"&gt;How does DevEx intersect with DevOps?&lt;/h2&gt;
&lt;p&gt;DevOps is about developers and operations working together and sharing values, assumptions, and responsibility for the software they build and maintain.&lt;/p&gt;
&lt;p&gt;According to Vilas Veeraraghavan, VP of Engineering at Truckstop, &amp;ldquo;Developer Experience (DevEx) is the investment you make to enable solid DevOps practices, reduce developer burnout, and improve retention. The need for this investment is more pronounced as companies grow and the tech stack gets more diverse.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Watch Jowanza Joseph, Head of Engineering at StreamFT, below as he discusses how the right tool empowered developers, improved DevEx, reduced bottlenecks, increased productivity, and helped DevOps be a culture, a practice, not a person.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/I-GQ1xpyV0E?rel=0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Let&amp;rsquo;s address a strong indicator of success or failure - culture.&lt;/p&gt;
&lt;p&gt;Culture is not something you are—it&amp;rsquo;s something you do. Software companies often focus on DevOps practices and culture, but all would benefit from adopting a DevOpsAll since the entire company should strive for the same thing. The diversity of perspectives, ideas, and insights can spark creativity and innovation and even ensure product-market alignment.&lt;/p&gt;
&lt;h2 id="organizational-culture-is-a-predictor-of-outcome-success"&gt;Organizational culture is a predictor of outcome success&lt;/h2&gt;
&lt;p&gt;Why it matters? Organizational culture encompasses everyone, from the development team and operations to product management teams, sales, marketing, and more.&lt;/p&gt;
&lt;p&gt;According to George Spafford, Senior Director Analyst at Gartner, &amp;ldquo;Infrastructure &amp;amp; Operations leaders embarking on DevOps initiatives and struggling to address organizational change and the value they will provide to the larger enterprise [&amp;hellip;] people-related factors tend to be the greatest challenges — not technology.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;According to a Harvard study encompassing 200 companies over 11 years, companies that focused on shaping their culture outperformed their competitors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Revenue growth was 4.1 times higher&lt;/li&gt;
&lt;li&gt;The stock price was 12.2 times higher&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.investopedia.com/terms/n/netincome.asp"&gt;Net income&lt;/a&gt; was 756% vs. 1%&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.investopedia.com/terms/r/returnoninvestment.asp"&gt;Return on investment (ROI)&lt;/a&gt; was 15 times higher&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The driving force behind this exceptional financial performance is that engaged employees are prone to increased productivity, fostering superior innovation and more effective problem-solving.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://www.pulumi.com/blog/developer-experience-business-critical/employee-developer-experience-focus-areas.jpeg"
alt="Slide from a New York Atlassian Community Group presentation. Credit: Mark Cruth, principal modern work coach / advocate at Atlassian" width="80%"&gt;&lt;figcaption&gt;
&lt;p&gt;Slide from Mark&amp;rsquo;s New York Atlassian Community Group presentation. Credit: Mark Cruth, principal modern work coach/advocate at Atlassian&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Based on decades of research on employee engagement, &lt;a href="https://www.gallup.com/workplace/285674/improve-employee-engagement-workplace.aspx#ite-357638"&gt;Gallup has established that engaged employees consistently yield superior business outcomes compared to their counterparts&lt;/a&gt;. This holds true across various industries, company sizes, and nationalities and remains consistent in prosperous and challenging economic conditions.&lt;/p&gt;
&lt;p&gt;If it is not yet clear, then I will spell it out. Developer experience impacts employee engagement. A better developer experience can boost the engagement of the engineers and developers in the organization, and more engaged people are more likely to go the extra mile.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://www.pulumi.com/blog/developer-experience-business-critical/developer-experience-more-engaged-developers.png"
alt="How developer experience supports better business outcomes. Credit: Swarmia" width="100%"&gt;&lt;figcaption&gt;
&lt;p&gt;How developer experience supports better business outcomes. Credit: Swarmia&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;If organizations invest in cultural values centered on human-first factors, then even the choices made in tools, processes, and systems will also be with the end-user in mind.&lt;/p&gt;
&lt;h2 id="how-do-you-implement-a-great-developer-experience"&gt;How do you implement a great developer experience?&lt;/h2&gt;
&lt;p&gt;There isn&amp;rsquo;t a bulletproof checklist, but there are several aspects to consider, and you can see the outline below. First, you need to view the developers as customers.&lt;/p&gt;
&lt;p&gt;You will need to understand how developers work, the developer workflow, what the onboarding process looks like for a new developer, the developer teams&amp;rsquo; pain points, what developers love and hate about their day-to-day work, where they are spending most of their time, where they wish they spent most of their time, and so much more, that boils down to communication, and asking the right questions, and deep diving into analytics.&lt;/p&gt;
&lt;h3 id="cultivate-a-devops-culture"&gt;Cultivate a DevOps culture&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Shared responsibility&lt;/strong&gt;: Encourage a culture of shared responsibility where developers, operations, and other stakeholders work collaboratively&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous learning&lt;/strong&gt;: Promote a culture of continuous learning and improvement to adapt to evolving technologies and methodologies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open communication&lt;/strong&gt;: Foster open communication channels to enhance collaboration and transparency among team members&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Company-wide collaboration tools&lt;/strong&gt;: It&amp;rsquo;s essential to encourage communication among developers and cross-functional teams to stimulate creativity, spark innovation, and enhance productivity and the speed of decision-making. Cross-functional collaboration contributes to successful business outcomes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="define-clear-objectives"&gt;Define clear objectives&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alignment with business goals&lt;/strong&gt;: Ensure DevEx objectives align with business goals to drive meaningful outcomes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User-centric approach&lt;/strong&gt;: Prioritize user needs and feedback, shaping the DevEx strategy around the actual experiences of developers&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="leverage-developer-first-tools"&gt;Leverage developer-first tools&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/blog/building-developer-portals/"&gt;&lt;strong&gt;Internal developer portals (IDPs)&lt;/strong&gt;&lt;/a&gt;: IDPs enable developers to quickly provision approved infrastructure, boosting productivity with pre-configured architectures, automated testing, and deployment adhering to organizational standards&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI pipelines&lt;/strong&gt;: usually, pipelines can be made faster and more unified. If they have a microservice architecture, they are likely duplicating pipeline code for every service&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/languages-sdks/"&gt;&lt;strong&gt;Software development kits (SDKs)&lt;/strong&gt;&lt;/a&gt;: SDKs are integral components of a positive DevEx and provide developers with tools that facilitate crafting applications tailored to specific platforms or frameworks. Offering easy-to-access, well-designed, functional SDKs can make a meaningful difference in helping engineers quickly prototype ideas and refine their creations&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/"&gt;&lt;strong&gt;Infrastructure as code (IaC)&lt;/strong&gt;&lt;/a&gt;: Developers like to write code, particularly in their preferred programming language, provision infrastructure, ensuring consistency and reproducibility&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring and observability&lt;/strong&gt;: Implement effective monitoring and observability tools (e.g., Prometheus, &lt;a href="https://www.pulumi.com/resources/observability-as-code-with-new-relic/"&gt;New Relic&lt;/a&gt;, Grafana) to gain insights into application performance and proactively address issues&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaborative documentation platforms&lt;/strong&gt;: Use collaborative documentation platforms to document code, processes, and best practices, ensuring knowledge sharing and reducing onboarding friction&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://www.pulumi.com/blog/developer-experience-business-critical/steps-to-improve-developer-experience.jpg"
alt="Platform Engineering Forrester Opportunity Snapshot - which of the following steps has your org take to improve the developer experience? Top 43% internal developer platform or platform engineering Credit: Humanitec" width="70%"&gt;&lt;figcaption&gt;
&lt;p&gt;Platform Engineering Forrester Opportunity Snapshot - Which of the following steps organizations are taking to improve DevEx? Credit: Humanitec&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="prioritize-developer-friendly-workflows"&gt;Prioritize developer-friendly workflows&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast feedback loops&lt;/strong&gt;: Minimize feedback loops by integrating quick feedback mechanisms, allowing developers to identify and resolve issues early in the development cycle&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-service environments&lt;/strong&gt;: Provide developers with self-service environments to facilitate experimentation, testing, and debugging without unnecessary dependencies on other teams&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version control best practices&lt;/strong&gt;: Enforce version control best practices to maintain a clean and organized codebase, allowing for easier collaboration and tracking of changes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="continuous-integration-of-feedback"&gt;Continuous integration of feedback&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Developer surveys&lt;/strong&gt;: Conduct regular surveys to gather feedback on the DevEx, ensuring continuous improvement based on real user experiences&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rapid iteration&lt;/strong&gt;: Encourage a culture of rapid iteration, where feedback is quickly incorporated into the development process to enhance the overall developer experience&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="measure-and-optimize"&gt;Measure and optimize&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key performance indicators (KPIs)&lt;/strong&gt;: Define and track key metrics such as deployment frequency, lead time, and mean time to recovery to measure the effectiveness of the DevEx strategy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iterative optimization&lt;/strong&gt;: Continuously iterate and optimize DevEx based on performance metrics and user feedback&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/blog/platform-engineering-pillars-4/"&gt;Implementing a Developer Experience&lt;/a&gt; requires a holistic approach that blends cultural aspects with powerful DevOps and platform engineering tools. Watch Daniel Tao, Head of Engineering at &lt;a href="https://www.pulumi.com/case-studies/atlassian/"&gt;Atlassian&lt;/a&gt;, and Sven Peters, developer evangelist, discuss how to build a great developer experience through culture and an integrated approach to developer tools.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xriRD7ugX20?si=LurTGLx1KfgRGIQZ&amp;amp;t=192?rel=0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-devex-is-not"&gt;What DevEx is not&lt;/h2&gt;
&lt;p&gt;Now that DevEx has been defined, let&amp;rsquo;s address some common misconceptions about developer experience.&lt;/p&gt;
&lt;h3 id="devex-is-not-the-same-as-user-experience-ux"&gt;DevEx is not the same as User Experience (UX)&lt;/h3&gt;
&lt;p&gt;Developer experience may sound similar to user experience (for developers), but it&amp;rsquo;s different, although user experience is a component. For example, a platform engineer &lt;a href="https://www.pulumi.com/blog/developer-portal-platform-teams/"&gt;building an internal developer platform&lt;/a&gt; must view the developers as their customers and create a good user experience by making it intuitive and easy to use.&lt;/p&gt;
&lt;h3 id="devex-is-not-about-enabling-lazy-developers"&gt;DevEx is not about enabling lazy developers&lt;/h3&gt;
&lt;p&gt;Part of the DevEx strategy is to retain talent. Companies that invest in DevEx don&amp;rsquo;t do it to pamper developers. The true reason behind it is that they want their developers to stay &amp;ldquo;in the zone,&amp;rdquo; also known as &amp;ldquo;deep work.&amp;rdquo; When in this state, they are immersed in writing code and solving problems they enjoy working on, and their creativity is higher, it sparks innovative ideas, and the quality and speed of their output are also higher.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/NbhpII8DIKA?rel=0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h3 id="devex-is-not-about-implementing-ai-and-cool-tools"&gt;DevEx is not about implementing AI and cool tools&lt;/h3&gt;
&lt;p&gt;Technology impacts developer experience, &lt;a href="https://www.pulumi.com/product/neo/"&gt;a robust generative AI tool can help create code faster&lt;/a&gt;, and internal developer platforms can help reduce cognitive load on developers. But again, tooling is only one aspect of it. Tools can&amp;rsquo;t fix culture or replace processes. Many DevEx considerations should be considered to ensure that when the development teams adopt a tool, it addresses their pain points and enables developers.&lt;/p&gt;
&lt;h3 id="devex-is-not-a-one-person-decision"&gt;DevEx is not a one-person decision&lt;/h3&gt;
&lt;p&gt;DevEx should be a joint effort from the entire team. One needs to be aware of the issues to plan to fix them, so open communication and team collaboration are vital to developing and implementing a DevEx strategy, intersecting DevOps and platform engineering initiatives. Many large organizations already have DevEx teams or professionals with a bird&amp;rsquo;s-eye view of what happens within the engineering team. They are internal advocates for software engineers. They consider the developer&amp;rsquo;s journey from being new developers and their &amp;lsquo;Time to First Contribution&amp;rsquo; to day-to-day activities. They work with engineers to learn which problems are a priority and identify misconceptions and bottlenecks that may slow the development process.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Developer experience (DevEx) is essential for creating maximum output while increasing developer satisfaction. The appropriate technology tools, workflows, and a supportive development community can help foster progress and innovation while promoting high-quality software engineering results that can become a competitive advantage and ultimately benefit the business&amp;rsquo;s bottom line.&lt;/p&gt;
&lt;p&gt;By dedicating attention to improving the DevEx, companies will also be able to bring more talent aboard, reduce their &amp;ldquo;Time to First Contribution,&amp;rdquo; enable developers to provide higher output contributions and improve talent retention. It&amp;rsquo;s time to start focusing on superior developer experiences.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover &lt;a href="https://www.pulumi.com/blog/developer-portal-platform-teams/"&gt;Pulumi for Platform Teams: New Features for Developer Portals, Policy and Deployments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Read &lt;a href="https://www.pulumi.com/blog/pulumi-developer-workflow/"&gt;The Pulumi &amp;lsquo;Push to start&amp;rsquo; GitOps Experience&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="frequently-asked-questions"&gt;Frequently asked questions&lt;/h2&gt;
&lt;h3 id="what-does-business-critical-mean"&gt;What does business critical mean?&lt;/h3&gt;
&lt;p&gt;Business critical means essential for a business to operate and be successful. It refers to business processes, systems, or activities that are considered essential for proper functioning, success, or survival. If these elements are disrupted or compromised, the impact can significantly affect its operations, financial health, or overall business objectives. Business-critical components are often prioritized for attention, protection, and resource allocation to ensure the organization&amp;rsquo;s continued effectiveness and stability, and to remain competitive.&lt;/p&gt;
&lt;h3 id="what-is-the-role-of-a-developer-experience-engineer-dxe"&gt;What is the role of a Developer Experience Engineer (DXE)?&lt;/h3&gt;
&lt;p&gt;Developer Experience Engineers are internal advocates indispensable to making life easier for developers by making workflows more efficient, implementing the same processes across the development team, and assisting in choosing tools to lighten their load. Some companies do not necessarily have engineers with that job title, and it&amp;rsquo;s instead seen as part of DevOps or Platform Engineering initiatives. Other times, the internal developer advocate natural rises from the developer community to help form an integral part of the developer team&amp;rsquo;s unity. They also champion communication and work with cross-function coworkers and feel safe means of providing constructive feedback.&lt;/p&gt;
&lt;h3 id="how-do-we-cultivate-a-positive-developer-community"&gt;How do we cultivate a positive developer community?&lt;/h3&gt;
&lt;p&gt;The importance of DevEx&amp;rsquo;s human element is now in focus. A productive and effective developer community could be seen as a flourishing habitat, strengthening cooperation and maximizing productivity through collaboration. Such an atmosphere also sustains morale among the developers, resulting in job satisfaction and contentment.&lt;/p&gt;
&lt;p&gt;Here are some steps to build a developer community: open communication needs to become standard, successes should consistently be recognized, and avenues for growth need to exist. Diversity and acceptance are significant. Task expectations should be attainable goals and set high enough not to compromise quality but not realistic so they can be achieved without burnout and unbalanced life routines.&lt;/p&gt;
&lt;h3 id="how-does-technology-impact-developer-experience"&gt;How does technology impact developer experience?&lt;/h3&gt;
&lt;p&gt;Technological advancements continue to change software development and impact the Developer experience. AI, ML, TDD, and internal developer platforms are some of these technologies that help reduce developers&amp;rsquo; cognitive load. They automate complex tasks for more accuracy and enable intelligent decision-making. Besides this, generative AI has come into play in creating higher-quality code faster. At the same time, GitOps is a management approach based on one source of truth - Git, which makes collaboration smoother &amp;amp; boosts productivity by allowing automation. All these things undoubtedly improve the DX substantially for any developer out there!&lt;/p&gt;</description><author>Sara Huddleston</author><category>developer-experience</category><category>devops</category><category>platform-engineering</category><category>developer-portals</category><category>software-development</category></item><item><title>Developer Portal Gallery: Org Templates, Pulumi Templates and AI Generated Templates</title><link>https://www.pulumi.com/blog/developer-portal-gallery/</link><pubDate>Thu, 25 Jan 2024 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/developer-portal-gallery/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/developer-portal-gallery/index.png" /&gt;
&lt;p&gt;Late last year &lt;a href="https://www.pulumi.com/blog/building-developer-portals"&gt;we announced Pulumi for Developer Portals&lt;/a&gt;: a suite of features designed to empower organizations to construct robust internal developer portals. Since launching the level of adoption and customer interest has led us to make further improvements to enhance developer productivity and collaboration in the authoring experience. We are excited to announce the latest enhancement in Pulumi Cloud: the introduction of a template gallery in New Project Wizard, making creating cloud infrastructure easier than ever.&lt;/p&gt;
&lt;h2 id="see-it-in-action"&gt;See it in action&lt;/h2&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="Walking through the gallery experience"
autoplay muted playsinline
loop &gt;
&lt;source src="https://www.pulumi.com/uploads/gallery.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;h2 id="what-the-pulumi-cloud-new-project-wizard"&gt;What the Pulumi Cloud New Project Wizard?&lt;/h2&gt;
&lt;p&gt;The Pulumi Cloud &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/developer-portals/new-project-wizard"&gt;New Project Wizard&lt;/a&gt; is the fastest way to get a Pulumi program up and running. The New Project Wizard provides a more turnkey, out-of-the-box alternative to the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/developer-portals/backstage"&gt;Pulumi Backstage Plugin&lt;/a&gt; or custom-built integrations.&lt;/p&gt;
&lt;p&gt;By using the wizard, developers can generate Pulumi programs from your Organization Templates, commit and push code to GitHub, and trigger an initial deployment – all in a few clicks and without leaving the browser.&lt;/p&gt;
&lt;p&gt;Try it out by selecting the &amp;lsquo;New Project&amp;rsquo; option on the left-nav bar inside your Pulumi organization.&lt;/p&gt;
&lt;h2 id="what-is-a-template-gallery"&gt;What is a template gallery?&lt;/h2&gt;
&lt;p&gt;The Pulumi Cloud template gallery is a curated collection of templates designed to help Platform Teams provision and distribute templates that get their developers up and running. Whether they&amp;rsquo;re setting up a simple server or orchestrating a complex microservices architecture, the template gallery can support a wide array of starting points that are both time-efficient and best practice-oriented. The idea is simple yet powerful – provide developers with the resources they need to get up and running swiftly, without having to reinvent the wheel each time.&lt;/p&gt;
&lt;p&gt;The new template gallery in Pulumi Cloud contains three types of templates:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Organization Templates&lt;/strong&gt;: Pulumi Cloud Enterprise and Business Critical editions support registering &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/developer-portals/templates"&gt;your own custom templates for your organization&lt;/a&gt; which will be made available in the New Project Wizard. This enables platform teams to standardize infrastructure creation and distribute those best practices where developers are already spending their time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pulumi Templates&lt;/strong&gt;: All Pulumi Cloud organizations get a handful of Pulumi templates included in the gallery, &lt;a href="https://www.pulumi.com/templates"&gt;templates Pulumi has authored&lt;/a&gt; to cover common architecture patterns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Generated Templates&lt;/strong&gt;: Starting today, you can leverage &lt;a href="https://www.pulumi.com/ai"&gt;Pulumi AI&lt;/a&gt; to genera†e the templates you need from the template gallery. Pulumi AI is a purpose-built AI assistant that can create cloud infrastructure using Pulumi. If your developers are looking for a template that is not yet created, Pulumi AI can dramatically reduce the time it takes to build their Pulumi program.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="wrapping-up"&gt;Wrapping up&lt;/h2&gt;
&lt;p&gt;We look forward to hearing about your experience trying out the new project wizard template gallery! As always, please raise any feedback- big or small- in the &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/new/choose"&gt;Pulumi Cloud Requests repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy building!&lt;/p&gt;</description><author>Meagan Cojocar</author><category>features</category><category>developer-portals</category><category>platform-engineering</category></item><item><title>Build The Best Developer Portal with Pulumi Templates</title><link>https://www.pulumi.com/blog/building-developer-portals/</link><pubDate>Thu, 12 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/building-developer-portals/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/building-developer-portals/index.png" /&gt;
&lt;p&gt;At Pulumi, we work with organizations that range from a few platform team members to entire departments for managing infrastructure. Many organizations, like &lt;a href="https://www.pulumi.com/case-studies/mercedes-benz/"&gt;Mercedes-Benz&lt;/a&gt;, have built internal developer platforms on top of Pulumi to enable developers to self-serve infrastructure templates, and partners like &lt;a href="https://www.pulumi.com/blog/aws-proton-pulumi/"&gt;AWS Proton&lt;/a&gt; and &lt;a href="https://www.getport.io/blog/using-pulumi-with-an-internal-developer-portal"&gt;Port&lt;/a&gt; have built integrations with Pulumi to enable self-service scenarios. We are thrilled to have &lt;a href="https://www.pulumi.com/blog/developer-portal-platform-teams"&gt;announced yesterday&lt;/a&gt; the launch of our new suite of tools to build internal developer portals with Pulumi, a result of working directly with our customers to understand their problems and how Pulumi can solve it.&lt;/p&gt;
&lt;p&gt;Pulumi launched &lt;a href="https://www.pulumi.com/templates"&gt;Pulumi Templates&lt;/a&gt; last year, out of the box templates based for common architectures, such as serverless templates, container service templates and Kubernetes cluster templates. The introduction of these templates allows Pulumi customers to go from 0 to 1 much quicker, but as they scale their IaC complexity a need for custom templates arises. To address this, we are expending into managing custom templates as a self-service provisioning experience.&lt;/p&gt;
&lt;h2 id="introduction-to-developer-portals-with-pulumi"&gt;Introduction to Developer Portals with Pulumi&lt;/h2&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded w-full" title="The New Project Wizard in Pulumi Cloud"
autoplay muted playsinline
loop &gt;
&lt;source src="https://www.pulumi.com/uploads/npw.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;Many of our customers are building their own developer portals on top of &lt;a href="https://www.pulumi.com/docs/using-pulumi/automation-api/"&gt;Pulumi Automation API&lt;/a&gt; and &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/deployments"&gt;Pulumi Deployments&lt;/a&gt;, but we also wanted to offer options for teams that cannot (or do not want to) build a custom solution. The suite of tools for building internal developer portals include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;New Project Wizard: Showcased in the GIF above, Pulumi Cloud now enables developers to provision infrastructure entirely via point-and-click in Pulumi Cloud with the new New Project Wizard experience. This offers a great out-of-the box developer portal experience for any team using Pulumi Cloud.&lt;/li&gt;
&lt;li&gt;Organization Templates: Pulumi Cloud now supports registering your own custom templates for your organization which will be made available in the New Project Wizard. This enables platform teams to standardize infrastructure creation and distribute those best practices where developers are already spending their time.&lt;/li&gt;
&lt;li&gt;Pulumi Backstage Plugin: For teams using Backstage, they can now integrate Pulumi directly within their Backstage instance, via support for a new Pulumi plugin as well as new Pulumi scaffolder actions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pulumi new&lt;/code&gt; support for private templates: By default, &lt;code&gt;pulumi new&lt;/code&gt; provides a number of templates provided by Pulumi, but now your organization can also use private templates.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="key-benefits"&gt;Key Benefits&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Ease of Deployment&lt;/strong&gt;: With this new functionality, you can quickly find and deploy the services you need, reducing the time and complexity of managing your cloud infrastructure. As a developer, if you are looking for a platform team sanctioned way to deploy a Kubernetes cluster, instead of chasing it down you can head to Pulumi Cloud, find the golden template and deploy it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enhanced Distribution&lt;/strong&gt;: As a platform team member, share templates and configurations with your developers to ensure consistency and collaboration across your organization. It&amp;rsquo;s as simple as adding the template to a repo and selecting that repo in Pulumi Cloud. Now all of your developers have access to it when they go to create new infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Combination with Other Features&lt;/strong&gt;: The new template experience seamlessly integrates with your existing Pulumi workflows, providing a unified experience across your infrastructure management. Increase your developer productivity by using this suite of features in combination with &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/esc"&gt;Pulumi ESC&lt;/a&gt;. Attach an Environment to your template to have it come with configuration and secret values. Once the templates are deployed they will show in the Pulumi Cloud console use &lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard"&gt;Policies&lt;/a&gt; over it, set up &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/deployments/review-stacks"&gt;Review Stacks&lt;/a&gt; on the new stack to get ephemeral environments tied to PRs, find the resources that were deployed with &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/insights/search"&gt;Resource Search&lt;/a&gt;, and all the other Pulumi Cloud features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Extensibility&lt;/strong&gt;: You can leverage the out of the box New Project Wizard Experience or build developer portals with Pulumi yourself using any combination of: the Pulumi Backstage Plugin, &lt;code&gt;pulumi new&lt;/code&gt; public and private templates, Automation API, Pulumi Deployments, or the Pulumi Cloud REST API.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;/h2&gt;
&lt;h3 id="new-project-wizard"&gt;New Project Wizard&lt;/h3&gt;
&lt;p&gt;The New Project Wizard allows anyone in your organization to pick a template they want to install, create the repo or directory for it, and walk through configuring the deployment of that template. We’ve added support for configuring &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/deployments/get-started/#new-project-wizard"&gt;Pulumi Deployments&lt;/a&gt;, meaning any template can be deployed without needing the Pulumi CLI locally, or any other CI/CD configuration. Follow these steps to be up and running with your infrastructure in a few clicks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can either 1/ use the UI or 2/ use Deploy with Pulumi buttons. If using the UI, navigate to the “New Project” tab. Select “Use a template” if you’d like to create a fully featured project, or select “Use a starter” if you want to create a bare-bones project with only the minimal necessary boilerplate file structure and Pulumi code. If you are using &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/pulumi-button"&gt;Deploy with Pulumi buttons&lt;/a&gt;, you can embed a button on your templates inside GitHub to enable point-and-click deployment of those templates.&lt;/li&gt;
&lt;li&gt;In order to use templates you will need to authorize Pulumi with GitHub so that it can clone private repositories as template sources and commit new code for your projects. Click the “Authorize GitHub” button and accept the required permissions if you would like to use templates.&lt;/li&gt;
&lt;li&gt;On the next screen select your deployment method. You may need to install the Pulumi GitHub app if you haven’t already to use Pulumi Deployments.&lt;/li&gt;
&lt;li&gt;You’ll now be prompted to enter some information about the project you’re about to create: the project and stack name, the configuration details specific to that template, the repo to use when committing your new project code, and optionally the Environment you want to use. Environments enable you to use a bundle of pre-configured secrets and configuration values without needing to re-specify all of them during project creation.&lt;/li&gt;
&lt;li&gt;After you’ve configured your project settings, you will be able to configure the behavior of Deployments, including when to trigger new Deployments and environment variables to include with your updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And just like that you have created a new project from a template that is deployed, without the use of the Pulumi CLI.&lt;/p&gt;
&lt;h3 id="organization-templates"&gt;Organization Templates&lt;/h3&gt;
&lt;p&gt;Pulumi now allows customers on the Pulumi Cloud Enterprise and Business Critical editions to define Organization Templates to help get projects off the ground faster. A Pulumi organization admin can specify an Organization Template Source (or Sources) which will then be populated in the New Project Wizard experience described above.&lt;/p&gt;
&lt;p&gt;Navigate to the “Integrations” tab to define your Organization Templates Source. Enter sources as &lt;code&gt;github.com/&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;/&amp;lt;optional subdirectory&amp;gt;&lt;/code&gt;. A source can be a directory containing either a Pulumi.yaml, or other subdirectories with their own Pulumi.yaml files. A single repository can provide multiple templates from various subdirectories. For example, these are both valid sources: &lt;code&gt;github.com/pulumi/templates&lt;/code&gt; (all public Pulumi templates) and &lt;code&gt;github.com/pulumi/templates/aws-typescript&lt;/code&gt; (a specific public template).&lt;/p&gt;
&lt;p&gt;The Pulumi.yaml file can optionally contain a template section, which typically includes a config section for specifying required config values for the project. Each config value can have a description and a default value which can be overridden. Config values can be marked as secret, which ensures values in templated projects will be stored with secure encryption.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;my-aws-project&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;runtime&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nodejs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;My AWS project description&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;aws:region&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;The AWS region to deploy into&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;us-west-2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;myAccessToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;My access token&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The above snippet includes an &lt;code&gt;aws:region&lt;/code&gt; configuration value with a default value of &lt;code&gt;us-west-2&lt;/code&gt;, as well as a &lt;code&gt;myAccessToken&lt;/code&gt; secret without a default value.&lt;/p&gt;
&lt;h3 id="pulumi--backstage"&gt;Pulumi &amp;amp; Backstage&lt;/h3&gt;
&lt;p&gt;We’ve seen many developer portal technologies rapidly growing in popularity over the last few years. In particular, we’ve seen Pulumi users adopting &lt;a href="https://backstage.io"&gt;Backstage&lt;/a&gt; and as a result we built the Pulumi Backstage Plugin to address the needs of organizations using Backstage and Pulumi together. There are now two ways to use Pulumi from within Backstage, you can leverage both or just one or the other:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pulumi Scaffolder Backend Module&lt;/li&gt;
&lt;li&gt;Pulumi Backstage Plugin&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Pulumi Scaffolder Backend Module&lt;/strong&gt;: The Pulumi Scaffolder Backend Module extends the scaffolding with two new actions: Pulumi New and Pulumi Up. The Pulumi New action is a custom action that allows you to create a new Pulumi project from a template using the &lt;code&gt;pulumi new&lt;/code&gt; Pulumi CLI command. The Pulumi Up Action is a custom action that allows you to run the &lt;code&gt;pulumi up&lt;/code&gt; command, which creates or updates resources in a stack.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;scaffolder.backstage.io/v1beta3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Template&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;kubernetes-template&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Kubernetes Cluster&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; A template for creating a new Kubernetes Cluster.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;pulumi&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;kubernetes&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pulumi-new-component&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Cookie cut the component Pulumi project&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pulumi:new&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;${{ parameters.component_id }}-infrastructure&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ parameters.description | dump }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ediri&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ parameters.stack }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://github.com/my-silly-organisation/microservice-civo/tree/main/infrastructure-${{ parameters.cloud }}-${{ parameters.language }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;node:node_count&amp;#34;: &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;${{ parameters.nodeCount }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;folder&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With a few clicks, developers can create new software projects provisioned with best practices, with code managed in the right repositories, and with the right configurations, all from a self-service UI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pulumi Backstage Plugin&lt;/strong&gt;: Backstage Plugins are extensions or add-ons to the core Backstage application that allow you to integrate additional tools, services, and functionalities into the platform, enhancing its capabilities and customizing it to meet the specific needs of your development environment.&lt;/p&gt;
&lt;p&gt;The Pulumi Backstage Plugin extends Backstage by displaying essential details like the Pulumi stack, organization, project name, and description, as well as providing an activity view with aggregated information from the Pulumi Cloud. See a screenshot of the new Pulumi tab within Backstage below:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/building-developer-portals/backstage-plugin.png" alt="Pulumi Backstage Plugin"&gt;&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href="https://github.com/pulumi/pulumi-backstage-plugin"&gt;Pulumi Backstage Plugin&lt;/a&gt; in the &lt;a href="https://backstage.io/plugins/"&gt;Backstage Plugin directory&lt;/a&gt; or the &lt;a href="https://roadie.io/docs/integrations/pulumi/"&gt;Roadie Pulumi Backstage Plugin guide&lt;/a&gt; to get started today.&lt;/p&gt;
&lt;h3 id="wrapping-it-up"&gt;Wrapping it up&lt;/h3&gt;
&lt;p&gt;The launch of this new functionality for internal developer portals marks a significant step forward in our commitment to providing powerful, turn-key tools for platform teams. We believe these features will enhance your experience with Pulumi, whether you&amp;rsquo;re a seasoned cloud expert leading a team of platform engineers or just getting started on your IaC journey.&lt;/p&gt;
&lt;p&gt;As always, we welcome your feedback in the &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/new?assignees=&amp;amp;labels=kind%2Fenhancement&amp;amp;projects=&amp;amp;template=feature-request.md"&gt;Pulumi Cloud Requests repository&lt;/a&gt; and are here to support you every step of the way on your platform engineering journey.&lt;/p&gt;</description><author>Meagan Cojocar</author><category>developer-portals</category><category>templates</category><category>policy-as-code</category><category>backstage</category><category>platform-engineering</category></item><item><title>Pulumi for Platform Teams: New Features for Developer Portals, Policy and Deployments</title><link>https://www.pulumi.com/blog/developer-portal-platform-teams/</link><pubDate>Wed, 11 Oct 2023 04:00:00 -0700</pubDate><guid>https://www.pulumi.com/blog/developer-portal-platform-teams/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/developer-portal-platform-teams/index.png" /&gt;
&lt;p&gt;Over the last two years, we’ve seen a huge surge in adoption of Pulumi by &lt;strong&gt;Platform Teams&lt;/strong&gt; &amp;ndash; centralized teams within a business responsible for building out core cloud infrastructure and providing tools to the rest of the organization to maximize the productivity, cost efficacy, compliance and velocity of application and service delivery throughout the organization. These teams use Pulumi to manage their own cloud infrastructure complexity, to offer best practices components to their organizations, to enforce organizational policy, and to drive infrastructure delivery automation.&lt;/p&gt;
&lt;p&gt;Today, we’re excited to announce a broad range of new features that extend &lt;a href="https://www.pulumi.com/product/internal-developer-platforms/"&gt;Pulumi Cloud’s support for Platform Teams&lt;/a&gt;, across the entire lifecycle of cloud delivery.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Developer Portals&lt;/strong&gt;: Every platform team we work with is looking to expose reusable cloud infrastructure components and templates via a developer portal of some kind. Many are building their own custom developer portals on top of Pulumi Automation API and Pulumi Deployments, but we also wanted to offer options for teams that cannot (or do not want to) build a custom solution. Today, we are releasing three new options for Platform Teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🆕 Organization Templates and New Project Wizard: Pulumi Cloud now supports registering your own custom templates for your organization, and enabling developers in your organization to provision them entirely via point-and-click in Pulumi Cloud with the new New Project Wizard. This offers a great out-of-the box developer portal experience for any team using Pulumi Cloud.&lt;/li&gt;
&lt;li&gt;🆕 Pulumi Backstage Plugin: For teams using Backstage, they can now integrate Pulumi directly within their Backstage instance, via support for a new Pulumi plugin as well as new Pulumi scaffolder actions.&lt;/li&gt;
&lt;li&gt;🆕 &lt;code&gt;pulumi new&lt;/code&gt; support for private templates: By default, &lt;code&gt;pulumi new&lt;/code&gt; provides a number of templates provided by Pulumi, but it can also use your own &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_new/"&gt;private templates&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Policy and Compliance&lt;/strong&gt;: Platform teams need robust and flexible solutions for establishing policy and compliance guardrails for their cloud infrastructure. Pulumi’s existing CrossGuard policy-as-code framework provides the richest option for defining and enforcing policy across all infrastructure in an organization, using the full capabilities of your favorite languages. Today, we are extending that support with two important new features for platform teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🆕 Compliance Ready Policies: New pre-built policy packs for for enforcing common security and compliance policies (PCI DSS, ISO 27001 and CIS) across a broad range of cloud providers (AWS, Azure, Google Cloud and Kubernetes), and dozens of services within each platform.&lt;/li&gt;
&lt;li&gt;🆕 Remediation Policies: Pulumi Policy as Code now supports authoring policies which don’t just warn or error, but actually change the infrastructure directly to remediate compliance gaps. Remediation policies can be configured and applied across any subset of stacks within an organization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Deployments and Delivery&lt;/strong&gt;: Managing the delivery of cloud infrastructure changes across a wide variety of environments is an essential component of a cloud platform, and we released &lt;a href="https://www.pulumi.com/product/pulumi-deployments"&gt;Pulumi Deployments&lt;/a&gt; in preview last year to provide a rich solution for infrastructure delivery directly within Pulumi Cloud. Today, we are making that support Generally Available (GA) along with a few key enhancements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🆕 Deployments GA: Pulumi Deployments is now generally available, with pricing and support available across all Pulumi Cloud editions.&lt;/li&gt;
&lt;li&gt;🆕 Deployments Support for GitHub Enterprise: Pulumi Deployments now supports integration with GitHub Enterprise as well as GitHub.com.&lt;/li&gt;
&lt;li&gt;🆕 Org-Wide Deployments Overview Page: A new page where you can see all deployments across the organization, giving you a single pane of glass to manage company wide deployments.&lt;/li&gt;
&lt;li&gt;🔜 Deployments Customer Managed Agents: Customers will soon be able to run deployments inside agents they run within their own infrastructure, for cases where this is required for unique compliance or security reasons.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together with &lt;a href="https://www.pulumi.com/blog/environments-secrets-configurations-management/"&gt;Pulumi ESC&lt;/a&gt; (Environments, Secrets and Configuration) which we announced yesterday, and the core Pulumi IaC infrastructure as code platform, these new features provide a rich collection of building blocks and out of the box experiences for empowering platform teams via Pulumi Cloud. At every layer of the Platform Engineering stack, Pulumi and Pulumi Cloud offer key technologies to accelerate your Platform Engineering projects.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/developer-portal-platform-teams/platform-teams.png" alt="Platform Team Layer Cake"&gt;&lt;/p&gt;
&lt;h3 id="organization-templates-and-new-project-wizard"&gt;Organization Templates and New Project Wizard&lt;/h3&gt;
&lt;p&gt;We’ve introduced a new wizard experience to create Pulumi projects into Pulumi Cloud, making it easier than ever to get started deploying new infrastructure with Pulumi.&lt;/p&gt;
&lt;p&gt;The new project wizard allows anyone in your organization to pick a template they want to install, and walk through configuring the deployment of that template. We’ve added support for configuring &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/deployments/get-started/#new-project-wizard"&gt;Pulumi Deployments&lt;/a&gt; automatically, so that the template can be deployed without needing the Pulumi CLI locally, or any other CI/CD configuration. Just a few clicks and you have deployed your infrastructure.&lt;/p&gt;
&lt;p&gt;We’ve also added integration with the newly released &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/deployments/get-started/#environments"&gt;Pulumi ESC&lt;/a&gt; so that you can set up environments (and the configuration and credentials needed to deploy to them) that users within your organization can deploy into, determine who can use which environments using RBAC, and then allow those users to deploy templates directly into the environments they can access &amp;ndash; no need to copy secrets, credentials or configuration around!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/developer-portal-platform-teams/new-project-wizard.png" alt="New Project Wizard"&gt;&lt;/p&gt;
&lt;p&gt;We’ve also added the ability for organizations to provide their own custom set of Organization Templates &amp;mdash; templates specific to their organization, which can live in either public or private Git repositories. The Organization Template Source provided will populate the templates that are displayed to members in the New Project wizard experience.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/developer-portal-platform-teams/organization-templates.png" alt="Organization Templates"&gt;&lt;/p&gt;
&lt;p&gt;Together, Organization Templates and the new New Project Wizard offer a foundational developer portal experience directly within the Pulumi Cloud console. Users can come to Pulumi Cloud, select one of the pre-defined templates set up by their Platform Team, and then in a few clicks have it deployed into a predefined cloud environment.&lt;/p&gt;
&lt;p&gt;The New Project wizard is available now for all Pulumi users, and Organization Templates are available to Pulumi Enterprise and Business Critical users. Check out the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/developer-portals/templates"&gt;documentation&lt;/a&gt; to get started.&lt;/p&gt;
&lt;h3 id="backstage-plugin"&gt;Backstage Plugin&lt;/h3&gt;
&lt;p&gt;We’ve seen many developer portal technologies rapidly growing in popularity over the last few years. In particular, we’ve seen many Pulumi users adopting &lt;a href="https://backstage.io/"&gt;Backstage&lt;/a&gt;. Last week we launched a new &lt;a href="https://www.pulumi.com/blog/pulumi-backstage-plugin/"&gt;Pulumi Backstage Plugin&lt;/a&gt; to address the needs of organizations using Backstage and Pulumi together.&lt;/p&gt;
&lt;p&gt;The new Pulumi tab gives you direct access to all Pulumi stack activity associated with your backstage projects that include Pulumi stacks.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/developer-portal-platform-teams/backstage-plugin.png" alt="Pulumi Backstage Plugin"&gt;&lt;/p&gt;
&lt;p&gt;The Pulumi Backstage Plugin also supports two new scaffolding actions, &lt;code&gt;pulumi:new&lt;/code&gt; and &lt;code&gt;pulumi:up&lt;/code&gt;, which can be used to template out new Pulumi projects and to trigger updates to Pulumi stacks, fully integrated into the Backstage scaffolding system.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;scaffolder.backstage.io/v1beta3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Template&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;kubernetes-template&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Kubernetes Cluster&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; A template for creating a new Kubernetes Cluster.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;pulumi&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;kubernetes&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pulumi-new-component&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Cookie cut the component Pulumi project&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pulumi:new&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;${{ parameters.component_id }}-infrastructure&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ parameters.description | dump }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;organization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ediri&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ parameters.stack }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://github.com/my-silly-organisation/microservice-civo/tree/main/infrastructure-${{ parameters.cloud }}-${{ parameters.language }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;node:node_count&amp;#34;: &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;${{ parameters.nodeCount }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;folder&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check out the &lt;a href="https://github.com/pulumi/pulumi-backstage-plugin"&gt;Pulumi Backstage Plugin&lt;/a&gt; in the &lt;a href="https://backstage.io/plugins/"&gt;Backstage Plugin directory&lt;/a&gt; or the &lt;a href="https://roadie.io/docs/integrations/pulumi/"&gt;Roadie Pulumi Backstage Plugin guide&lt;/a&gt; to get started today.&lt;/p&gt;
&lt;h3 id="compliance-ready-policies"&gt;Compliance Ready Policies&lt;/h3&gt;
&lt;p&gt;We first released our &lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard/"&gt;CrossGuard&lt;/a&gt; policy-as-code framework nearly 4 years ago, and have seen many large organizations leverage its rich expressiveness, flexibility and early prevention features to enforce key compliance criteria for their organization. Support in Pulumi Cloud for automatically enforcing these policies across all Pulumi updates within an organization allows platform teams to put compliance guardrails in place for users within their organization.&lt;/p&gt;
&lt;p&gt;However, traditionally each organization has needed to build their own policies, resulting in some activation energy needed to start benefiting from CrossGuard. As we’ve worked with many customers to build out their own internal compliance policies using CrossGuard, we&amp;rsquo;ve identified some common compliance standards and policies that we can offer directly as part of CrossGuard.&lt;/p&gt;
&lt;p&gt;Today, we are making a large collection of new policies available for CrossGuard users. These policies support many common compliance standards (PCI DSS, ISO 27001 and CIS) across a broad range of cloud providers (AWS, Azure, Google Cloud and Kubernetes), and dozens of services within each platform.&lt;/p&gt;
&lt;p&gt;These policies are offered as a library, from which Platform Teams can enable the subset they want to apply. For example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;PolicyPack&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;@pulumi/policy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;policyManager&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;@pulumi/compliance-policy-manager&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;PolicyPack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;aws-iso27001-compliance-ready-policies-typescript&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;policies&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;policyManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;selectPolicies&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;vendors&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;aws&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;services&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ec2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;eks&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;severities&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;critical&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;high&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;frameworks&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;iso27001&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;advisory&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The new Policy Pack wizard also makes it easier than ever to create a new policy pack from the compliance-ready policies, and enable it within your organization.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/developer-portal-platform-teams/compliance-ready-policies.png" alt="Compliance Ready Policies in New Policy Project Wizard"&gt;&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard/compliance-ready-policies"&gt;documentation&lt;/a&gt; and &lt;a href="https://github.com/pulumi/compliance-policies/"&gt;open source repository&lt;/a&gt; to get started with Compliance-Ready Policies today.&lt;/p&gt;
&lt;h3 id="remediation-policies"&gt;Remediation Policies&lt;/h3&gt;
&lt;p&gt;Existing CrossGuard policies have always had the ability to be set to Advisory to emit a warning when they fail, or to Mandatory to prevent the Pulumi deployment from completing when they fail. This enables strict prevention of non-compliant infrastructure deployments before they even get into production.&lt;/p&gt;
&lt;p&gt;However, in many cases, it’s clear what change needs to be made to the infrastructure to make it compliant. Today, we’ve launched new support in CrossGuard for Remediation Policies, a new kind of policy which actually fixes up the infrastructure to be compliant instead of just warning or erroring!&lt;/p&gt;
&lt;p&gt;This is a magical experience for both policy authors and infrastructure engineers.&lt;/p&gt;
&lt;div&gt;
&lt;pulumi-chooser type="language" options="typescript,python" mode=""&gt;
&lt;div&gt;
&lt;pulumi-choosable type="language" values="typescript" mode=""&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;s3NoPublicRead&lt;/span&gt;: &lt;span class="kt"&gt;ResourceValidationPolicy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;s3-no-public-read&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Prohibits setting the publicRead or publicReadWrite permission on AWS S3 buckets.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;enforcementLevel&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;remediate&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;remediateResource&lt;/span&gt;: &lt;span class="kt"&gt;remediateResourceOfType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;s3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Bucket&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;acl&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;public-read&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;acl&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;public-read-write&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Modify the ACL and return the new bucket state to use instead.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;acl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;private&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pulumi-choosable&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;pulumi-choosable type="language" values="python" mode=""&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;s3_no_public_read_remediator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ResourceValidationArgs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resource_type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws:s3/bucket:Bucket&amp;#34;&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;acl&amp;#34;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;acl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;acl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;acl&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;public-read&amp;#34;&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;acl&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;public-read-write&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Modify the ACL and return the new bucket state to use instead.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;acl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;private&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;props&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;s3_no_public_read&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ResourceValidationPolicy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;s3-no-public-read&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Prohibits setting the publicRead or publicReadWrite permission on AWS S3 buckets.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;enforcement_level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;EnforcementLevel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;REMEDIATE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;remediate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;s3_no_public_read_remediator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pulumi-choosable&gt;
&lt;/div&gt;
&lt;/pulumi-chooser&gt;
&lt;/div&gt;
&lt;p&gt;Check out the &lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard/core-concepts/#resource-remediation"&gt;documentation&lt;/a&gt; to get started adding remediation policies to your policy-as-code configuration today.&lt;/p&gt;
&lt;h3 id="deployments-ga"&gt;Deployments GA&lt;/h3&gt;
&lt;p&gt;In the last year since we launched Pulumi Deployments in preview, we’ve seen incredible growth in usage and scale of Pulumi Deployments across the Pulumi user base. Customers use Pulumi Deployments for a single built-for-purpose CI/CD solution for their Pulumi infrastructure delivery, but also leverage rich API-driven deployments, &lt;a href="https://www.pulumi.com/blog/review-stacks/"&gt;Review Stacks&lt;/a&gt;, Click-to-Deploy within the Pulumi Cloud Console, and much more.&lt;/p&gt;
&lt;p&gt;As part of General Availability, we are announcing pricing for deployments at $0.01 per deployment minute. The new pricing will be effective November 1st. Individual Edition users get 500 minutes free per month, and Team Edition users get 3,000 minutes free per month. Full details of the pricing can be found on the &lt;a href="https://www.pulumi.com/pricing"&gt;Pricing Page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition to pricing, we’re making available several new features in the Deployments platform.&lt;/p&gt;
&lt;p&gt;The new Deployments pane in the Pulumi Cloud console provides a unified view across all deployments in your organization. This includes in progress and queued deployments so that you can easily access any currently in flight deployments, as well as a full history of all deployments performed across all stacks you have access to within your organization.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/developer-portal-platform-teams/deployments-page.png" alt="Deployments Page in Pulumi Cloud Console"&gt;&lt;/p&gt;
&lt;p&gt;And finally, we’re extending Pulumi Deployments to support additional key enterprise needs. We recently added support for connecting Pulumi Deployments to GitHub Enterprise, and we will be delivering support for self-hosted Pulumi Deployments agents which can be run within your own infrastructure later this month. You can &lt;a href="https://share.hsforms.com/1GEUed27WQquRcQxY-dKOlw2mxud"&gt;fill out this form&lt;/a&gt; to register for the private preview of self-hosted agents today.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Pulumi Cloud offers a rich and broad platform to support any platform team today. Across the entire lifecycle of cloud infrastructure and application delivery, Pulumi Cloud supports platform teams in building cloud platforms for their organizations which empower developers via rich IaC components and developer portals, enable seamless delivery through Deployments and Automation API, provide robust compliance guardrails through Compliance-Ready Policies and Remediation Policies, and securely manage secrets and configuration across a variety of environments with Pulumi ESC.&lt;/p&gt;
&lt;p&gt;It’s never been easier to build your internal developer platform with the help of Pulumi Cloud.&lt;/p&gt;</description><author>Luke Hoban</author><category>developer-portals</category><category>templates</category><category>policy-as-code</category><category>backstage</category><category>platform-engineering</category></item><item><title>Pulumi Backstage Plugin: Developer Portal Integration</title><link>https://www.pulumi.com/blog/pulumi-backstage-plugin/</link><pubDate>Fri, 06 Oct 2023 15:00:48 -0400</pubDate><guid>https://www.pulumi.com/blog/pulumi-backstage-plugin/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/pulumi-backstage-plugin/index.png" /&gt;
&lt;p&gt;&lt;a href="https://backstage.io/"&gt;Backstage&lt;/a&gt; is an open source framework for building developer portals, created at Spotify and donated to the CNCF. It allows engineers to create their own development portal internally. Backstage makes it easy for teams to create a unified portal for their infrastructure tooling, software templates, services, documentation and &lt;a href="https://backstage.spotify.com/plugins/"&gt;plugins&lt;/a&gt; for external tools.&lt;/p&gt;
&lt;h2 id="what-are-backstage-plugins"&gt;What are Backstage plugins?&lt;/h2&gt;
&lt;p&gt;Backstage plugins typically include functions from another application or platform and place them in context in Backstage. This adds functionality within the development environment and helps centralize critical developer functions. Backstage provides a marketplace where developers can review plugins and implement them into their own applications.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-backstage-plugin/pulumi_backstage_plugin.png" alt="Screenshot showing Pulumi Backstage plugin integration interface"&gt;&lt;/p&gt;
&lt;h2 id="pulumi-joins-the-stage"&gt;Pulumi Joins the Stage&lt;/h2&gt;
&lt;p&gt;Today we are announcing a new &lt;a href="https://github.com/pulumi/pulumi-backstage-plugin"&gt;Pulumi Plugin&lt;/a&gt; for &lt;a href="https://backstage.io/"&gt;Backstage&lt;/a&gt;. Using the Pulumi Backstage Plugin, you can create a new Pulumi project from an organization template stored in Pulumi, you can run previews and updates, and you can run and view Deployment.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-backstage-plugin/pulumi_backstage_plugin_activity.png" alt="Pulumi plugin activity view in Backstage displaying stack data"&gt;&lt;/p&gt;
&lt;h2 id="how-to-get-started-with-the-pulumi-backstage-integration"&gt;How to get started with the Pulumi Backstage Integration&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-backstage-plugin/pulumi_backstage_plugin_icon.png" alt="Pulumi plugin icon used within the Backstage developer portal"&gt;&lt;/p&gt;
&lt;p&gt;The Pulumi Backstage integration has two independent components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pulumi Scaffolder Backend Module&lt;/li&gt;
&lt;li&gt;Pulumi Backstage Plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-is-scaffolding-in-backstage"&gt;What is Scaffolding in Backstage?&lt;/h2&gt;
&lt;p&gt;The Backstage Scaffolder is a core part of the Backstage developer portal. Using standardized templates, developers can create new components (services, libraries, websites, or other software). With a few clicks, developers can create new software projects provisioned with best practices, with code managed in the right repositories, and with the right configurations, all from a self-service UI.&lt;/p&gt;
&lt;h2 id="pulumi-extends-backstage-scaffolding"&gt;Pulumi Extends Backstage Scaffolding&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Pulumi Scaffolder Backend Module&lt;/strong&gt; extends the scaffolding with two new actions: &lt;strong&gt;pulumi:new and pulumi:up&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the new &lt;strong&gt;Pulumi Scaffolder Backend Module&lt;/strong&gt;, organizations can standardize infrastructure creation through their own custom templates. This enables a consistent approach for every new project while minimizing manual setup and configuration by developers and platform teams.&lt;/p&gt;
&lt;p&gt;The next component of the Pulumi Backstage integration is the &lt;strong&gt;Pulumi Plugin&lt;/strong&gt;. Backstage Plugins are extensions or add-ons to the core Backstage application that allow you to integrate additional tools, services, and functionalities into the platform, enhancing its capabilities and customizing it to meet the specific needs of your development environment.&lt;/p&gt;
&lt;p&gt;The Pulumi plugin extends Backstage by displaying essential details like the Pulumi stack, organization, project name, and description, as well as providing an activity view with aggregated information from the Pulumi Cloud.&lt;/p&gt;
&lt;h2 id="connecting-pulumi-cloud-with-backstage-with-the-pulumi-backstage-plugin"&gt;Connecting Pulumi Cloud with Backstage with the Pulumi Backstage plugin&lt;/h2&gt;
&lt;p&gt;The Pulumi plugin extends Backstage by displaying essential details like the Pulumi stack, organization, project name, and description, as well as providing an activity view for the entity with aggregating information from the Pulumi Cloud.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/pulumi-backstage-plugin/pulumi_backstage_plugin_system.png" alt="System diagram showing how Pulumi integrates with Backstage via plugin"&gt;
&lt;img src="https://www.pulumi.com/blog/pulumi-backstage-plugin/pulumi_backstage_plugin_component.png" alt="Component view of Pulumi plugin inside Backstage entity page"&gt;&lt;/p&gt;
&lt;p&gt;Utilizing the &lt;strong&gt;Pulumi Backstage&lt;/strong&gt; integration, including its plugin and scaffolder, brings forth many benefits that streamline infrastructure management, enhance developer experience, and foster a well-orchestrated DevOps culture. See the key benefits below.&lt;/p&gt;
&lt;h2 id="key-benefits-of-the-pulumi-backstage-plugin"&gt;Key Benefits of the Pulumi Backstage Plugin&lt;/h2&gt;
&lt;p&gt;By integrating with Backstage, Pulumi is simplifying a common scenario that many of our users encounter: empowering developers to self-service new infrastructure while enforcing common standards and best prctices. A few benefits of this integration are:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consolidated View&lt;/strong&gt;: Obtain a singular view of your infrastructure and application status, merging Pulumi’s infrastructure-as-code (IaC) capabilities with the Backstage developer portal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simplified Navigation&lt;/strong&gt;: Manage both applications and infrastructure from a single pane of glass - even for complex multi-cloud deployments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transparent Communication&lt;/strong&gt;: Facilitate seamless communication across development, operations, and infrastructure teams by providing a shared view and management platform.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Knowledge Sharing&lt;/strong&gt;: Enable teams to share infrastructure code, configurations, and status transparently, fostering collective knowledge and expertise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IaC Adoption&lt;/strong&gt;: Leverage Pulumi’s infrastructure-as-code capabilities to define, deploy, and manage infrastructure efficiently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automated Scaffolding&lt;/strong&gt;: Utilize the Backstage scaffolder to automate the creation and management of Pulumi projects and stacks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-Service Operations&lt;/strong&gt;: Empower developers with the ability to provision, configure, and manage infrastructure independently, reducing dependencies on operations teams.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Accelerated Development&lt;/strong&gt;: Enhance the speed and agility of development cycles by providing developers with the tools to manage their infrastructure needs autonomously.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Standardized Workflows&lt;/strong&gt;: Employ consistent and standardized workflows for infrastructure provisioning and management across all development teams.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;: Promote the usage of best practices in infrastructure management and application deployment through pre-defined templates and configurations.&lt;/p&gt;
&lt;h2 id="how-to-get-the-pulumi-backstage-plugin"&gt;How to Get the Pulumi Backstage Plugin&lt;/h2&gt;
&lt;p&gt;There are two ways to get the &lt;strong&gt;Pulumi Backstage Plugin&lt;/strong&gt;:
First, if you are hosting Backstage yourself, you can find the plugin in our &lt;a href="https://github.com/pulumi/pulumi-backstage-plugin"&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Secondly, if you are using the &lt;a href="https://roadie.io/"&gt;Roadie managed Backstage&lt;/a&gt; service, you can follow &lt;a href="https://roadie.io/docs/integrations/pulumi/"&gt;these instructions&lt;/a&gt; to use the Pulumi plugin with Roadie.&lt;/p&gt;
&lt;div class="note note-tip"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.74fadd1b94bae866bccf29a780f184a71c5cfc34c8677be70da8fe2ab0309b9e.svg#p-lightbulb-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;
&lt;p&gt;&lt;strong&gt;You might also like:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/pulumi-in-a-cloud-native-world/"&gt;
Pulumi in a Cloud Native World
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/building-developer-portals/"&gt;
Build The Best Developer Portal with Pulumi Templates
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/developer-portal-platform-teams/"&gt;
Pulumi for Platform Teams: New Features for Developer Portals, Policy and Deployments
&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Pulumi Backstage Plugin&lt;/strong&gt; brings simplicity and power to developers by combining Pulumi&amp;rsquo;s infrastructure management with the user-friendly Backstage developer portal. It makes managing apps and infrastructure easy, all from one place, boosting teamwork and making developers&amp;rsquo; lives simpler. With straightforward tools and automated setups, developers can work faster and smarter, managing their projects with fewer hurdles and more clarity.&lt;/p&gt;
&lt;p&gt;In short, it&amp;rsquo;s not just a plugin; it&amp;rsquo;s a step towards smoother, more integrated development workflows for everyone involved.&lt;/p&gt;</description><author>Engin Diri</author><category>backstage</category><category>developer-portals</category><category>features</category></item></channel></rss>