<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Finops</title><link>https://www.pulumi.com/blog/tag/finops/</link><description>Pulumi blog posts: Finops.</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;div class="rounded-lg bg-violet-50 p-6 my-8"&gt;
&lt;p class="heading-4 m-0 mb-3 flex items-center gap-1.5"&gt;Build your internal developer platform&lt;/p&gt;
&lt;div class="body-base m-0 text-gray-950"&gt;Give developers self-service infrastructure with reusable components, golden paths, and governance built in using Pulumi IDP.&lt;/div&gt;
&lt;a href="https://www.pulumi.com/product/internal-developer-platforms/" data-track="blog-body-cta" class="btn btn-primary mt-4"&gt;
Explore Pulumi IDP
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--regular size-4" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.70121449e0dde6f8c01ff68423fffaa0336ecc73c7bbc87506404126694ca58c.svg#p-arrow-right-regular"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&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>FinOps With Pulumi</title><link>https://www.pulumi.com/blog/finops-with-pulumi/</link><pubDate>Tue, 14 Feb 2023 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/finops-with-pulumi/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/finops-with-pulumi/index.png" /&gt;
&lt;h2 id="what-is-finops"&gt;What is FinOps?&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://www.finops.org/"&gt;FinOps Foundation&lt;/a&gt; eloquently defines FinOps as “an evolving cloud financial management discipline and cultural practice that enables organizations to get maximum business value by helping engineering, finance, technology and business teams to collaborate on data-driven spending decisions.” Simply put, FinOps is the continuous effort to control cloud spend.&lt;/p&gt;
&lt;p&gt;Just as organizations have adopted operations-focused best practices into software development cycles and have considered how to best insert security best practices along the way, financial best practices may also be codified by developers writing cloud programs.&lt;/p&gt;
&lt;p&gt;Adopting a FinOps practice brings real world &lt;a href="https://en.wikipedia.org/wiki/Operating_expense"&gt;OpEx(Operating Expenses)&lt;/a&gt; considerations to the decisions that cloud engineers regularly make. When you add FinOps to your &lt;a href="https://finops.world/en/organization-and-key-roles/"&gt;Cloud Center of Excellence&lt;/a&gt;, technical teams bring financial context into service level and recovery objectives, scaling and placement decisions, and business continuity planning. Developers are typically more conscious of the resources they are using and consider the impact of their application design decisions at both development, test and production scale. Therefore organizations usually realize substantial OpEx savings while better forecasting their growth.&lt;/p&gt;
&lt;h2 id="who-is-responsible-for-cloud-financial-decisions"&gt;Who is Responsible for Cloud Financial Decisions?&lt;/h2&gt;
&lt;p&gt;In most smaller organizations, developers themselves are often responsible for the decisions that impact cost. In larger organizations, this responsibility typically falls to a central IT or Cloud Platform team, often seen as the cost center for infrastructure, and the best team to optimize that spend continuously. Some organizations are evolving toward FinOps as a practice, with dedicated teams responsible for enabling the organization to make smarter financial decisions and negotiating with cloud vendors for discounts.&lt;/p&gt;
&lt;p&gt;Ultimately, the cloud account owner is responsible for the cloud bill, and failure to pay that bill will result in the suspension of cloud services. Given that infrastructure is often code, developers or IT teams are often made responsible for the task of optimization. Optimization recommendations may range from simply deleting orphaned cloud resources to re-architecting the entire application to use a modern serverless framework that would consume less resources overall.&lt;/p&gt;
&lt;h2 id="establishing-finops-practices"&gt;Establishing FinOps Practices&lt;/h2&gt;
&lt;p&gt;The first step of establishing many FinOps practices is &lt;strong&gt;determining the allocation of costs&lt;/strong&gt;. It is easy to allocate costs to individual users launching cloud services, but it becomes compoundingly hard once pipeline automation, team structure, and business unit reporting come into play. As an organization scales, it grows increasingly difficult to allocate costs across different business units and teams, across environments such as development versus production, or across application component services such as the data layer. Further, how does an organization account for supporting systems and services running alongside applications in the cloud, including third-party commercial software?&lt;/p&gt;
&lt;p&gt;When starting your FinOps Journey is essential to understand cost allocation, typically done with consistent and enforced tagging of cloud resources. Creating a Tag Policy is covered below.&lt;/p&gt;
&lt;h2 id="finops-reactive-vs-proactive-optimization"&gt;FinOps: Reactive vs. Proactive Optimization&lt;/h2&gt;
&lt;p&gt;Most FinOps processes today are reactive; once you have received your bill, you will observe (and pay) the costs and resources accounted for, review your architecture and make necessary adjustments such as reserving, reallocating or removing resources. Next month, you will do it again, also factoring in your company’s cloud growth, application design changes, team shifts and other dynamics that occurred in the meantime. Many platforms, tools, and job descriptions are oriented toward this reactive optimization process.&lt;/p&gt;
&lt;p&gt;Proactive optimization and enforcement means providing real time feedback on how cloud engineering architectural changes may impact cost and creating preventative policies which do not allow for budget-busting cloud services to be provisioned. This is an evolving practice in many modern cloud-centric organizations. As more cloud operations are defined as code, this preventative, proactive optimization model is becoming more popular.&lt;/p&gt;
&lt;p&gt;Financial optimization can also come in the form of strategic sourcing; most cloud providers offer multiple discount mechanisms, including large enterprise discount plans for committed consumption that may extend to third party SaaS software purchased through the cloud marketplaces, as Pulumi is. This level of optimization will provide dramatic savings on your top-line spend.&lt;/p&gt;
&lt;h2 id="finops-with-pulumi"&gt;FinOps with Pulumi&lt;/h2&gt;
&lt;p&gt;Using cloud engineering practices with Pulumi, you have the opportunity to implement both proactive and reactive models to control your cloud spend.&lt;/p&gt;
&lt;p&gt;As an &lt;a href="https://www.pulumi.com/product/"&gt;infrastructure as code platform&lt;/a&gt;, &lt;strong&gt;Pulumi is in the unique position to be proactive about managing your costs&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can design guardrails on your provisioning to limit expensive resource types or quantities,&lt;/li&gt;
&lt;li&gt;Direct resources to reserved allocations,&lt;/li&gt;
&lt;li&gt;Ensure resources are tagged and traceable to the correct cost center,&lt;/li&gt;
&lt;li&gt;Connect resources to your observability and dedicated FinOps platforms,&lt;/li&gt;
&lt;li&gt;Provide preventative visibility and control.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Consider uses for CrossGuard Policy as Code, multi-language components for defining resource abstractions, and Automation API to package up orchestration into web service endpoints, as described in Pulumi Features below.&lt;/p&gt;
&lt;p&gt;If you are proactively managing your infrastructure, then reactively, the largest contributor to financial overrun is drift; the misalignment between the desired state and the actual state. Pulumi is used to define your desired state; however, many things may cause the actual state to begin to deviate from the desired state in your code, such as manual actions from the cloud console or ad-hoc deployment pipelines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Drift detection&lt;/strong&gt;, which is the name given to continuously scanning your environment to compare the actual state with the desired state and alerting and/or automatically remediating the difference in state, &lt;strong&gt;is a primary method of managing these creeping cloud costs&lt;/strong&gt;. Leverage an automation system, such as a CI tool, to implement continuous scanning against your Pulumi code as described below.&lt;/p&gt;
&lt;p&gt;Remediation of any infrastructure mismanagement requires infrastructure reconfiguration action to be taken; often resources need to be replaced with better suited, more cost effective resources, and resources that were provisioned outside of acceptable policies may have to be destroyed. However, any remediation should carefully consider the underlying reasoning for the misalignment in the first place. That should include both the reason for the initial deployment specifications as well as any decisions for why that’s no longer acceptable. Be sure to consider all architectural decisions, such as disaster recovery and business continuity planning, regional latency, and any other impact to service level objectives (SLOs). Understanding the context will help you code preventative measures into your Pulumi programs going forward and the self-documenting nature of infrastructure-as-code will ensure your decisions are memorialized for future developers and operators, for example, in a Stack README as described.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automation of remediation is a goal for many cloud engineering organizations; if the perfect state is defined in code, then any drift may indicate the need to reconcile back to the desired perfect state&lt;/strong&gt;. Given that some cloud resources may necessarily drift due to limitations in how they are managed, a combination of alerting and remediation of known patterns is implemented. For example, you might choose to detect and deprovision any newly instantiated resource not provisioned by Pulumi, but allow manual resizing of resources if needed. Just be sure to capture any infrastructure and improvements you want to make default and/or repeatable as infrastructure as code.&lt;/p&gt;
&lt;h2 id="best-first-action-implement-a-tag-policy"&gt;Best First Action: Implement a Tag Policy&lt;/h2&gt;
&lt;p&gt;Getting started with a FinOps usually falls to the resource owners or Cloud Engineering teams themselves. The more resources you have, the more complex and noisy things are going to get and the harder it will be to both allocate costs and resources where they are needed, as well as identify and eliminate the unneeded ones.&lt;/p&gt;
&lt;p&gt;Implementing Tag Policy is the best first action to take. Tags are the set of required cloud metadata tags for any resources provisioned by your organization. While not every resource in every cloud may be tagged, most are. Getting into the practice early will help you maintain accountability for what you are running, demystify your cloud bills as they grow larger, and help update the application architecture or make cost-effective product decisions long-term.&lt;/p&gt;
&lt;h3 id="a-basic-tag-policy-for-finops-will-include"&gt;A Basic Tag Policy for FinOps will include:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Owner&lt;/strong&gt; - the person responsible for this resource that you would contact if you had to (e.g., johndoe@pulumi.com)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Origin&lt;/strong&gt; - the pipeline, process, and/or system through which this came to be (e.g., ArgoCD, Jenkins, Pulumi)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business Unit&lt;/strong&gt; - the team responsible typically maps to the cost center associated (e.g., Sales, Engineering)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment&lt;/strong&gt; - the teams/customers this deployment services (e.g., Dev, Staging, Production)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application Component&lt;/strong&gt; - the part of the application that this resource serves (e.g., data pipeline, authentication, front end)*&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You will now be able to report on and manage resources in those tag groups. It’s advisable that you do not create too many required tags, or it will quickly get difficult to manage and it increases the likelihood of multiple tags applying, which reduces the insightfulness of the data.&lt;/p&gt;
&lt;p&gt;Read more about Tag Policy implementation with Pulumi below, and for extended reading, refer to this post, &lt;a href="https://www.pulumi.com/blog/automatically-enforcing-aws-resource-tagging-policies/"&gt;Automatically Enforcing AWS Resource Tagging Policies&lt;/a&gt; from CEO, Joe Duffy.&lt;/p&gt;
&lt;h2 id="pulumi-features-in-context"&gt;Pulumi Features in Context&lt;/h2&gt;
&lt;h3 id="multi-language-components"&gt;Multi-Language Components&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/blog/pulumiup-pulumi-packages-multi-language-components/"&gt;Multi-language components&lt;/a&gt; allow you to create repeatable infrastructure patterns, modular abstractions of resources and/or groups of resources that meet your desired configuration standards. Packaging up resources within and across clouds, implementing standard deployment best practices, and making those components available to developers reduces the cognitive load that they have when building new applications from those pre-assembled, ready-to-run components.&lt;/p&gt;
&lt;p&gt;Use these guardrails to enforce Tag Policies, for example that every tag for “Production” is actually “Production” and not “Prod” or “production” (yes, case sensitivity matters). Or you may ensure teams only deploy resources such as VMs to regions where you have allocated Reserved Instances or other financial benefits in your application architecture. With MLCs end users have access to your component and not to the underlying infrastructure resources, guaranteeing repeatabality, however, in order to realize the benefits of MLCs, your developers must be empowered to leverage them, but limited from using other methods.&lt;/p&gt;
&lt;h2 id="crossguard"&gt;CrossGuard&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard/"&gt;CrossGuard Policy as Code&lt;/a&gt; allows an Organization to define global rules for how resources may be provisioned and prevent resources from being provisioned by Pulumi in any other configuration. Pulumi Stacks that do not meet the Organization’s financial, security, data protection, or other pre-defined standards are prevented from provisioning any resources, and the developer is instructed to correct their desired configuration or program in accordance with the Organization-wide policies.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard/"&gt;Policy as code&lt;/a&gt; ensures that any Pulumi code written and run meets an organization’s stated policies. It is the ultimate preventative weapon to prevent financial, security, or other placement and provisioning decisions that may lead to exposure or overrun.&lt;/p&gt;
&lt;p&gt;Go here for &lt;a href="https://github.com/pulumi/examples/tree/master/policy-packs/aws-ts-finops"&gt;examples of FinOps policies&lt;/a&gt; to get you started!&lt;/p&gt;
&lt;h2 id="automation-api"&gt;Automation API&lt;/h2&gt;
&lt;p&gt;Of the many things &lt;a href="https://www.pulumi.com/docs/using-pulumi/automation-api/"&gt;Automation API&lt;/a&gt; allows you to do, one is you can create an HTTP endpoint for a Pulumi program. Organizations have used this to control easy on/off switches for applications such as provisioning/deprovisioning single tenant SaaS architectures, short lived environments, and complex testing and blue/green deployments. Because of the encapsulation of a Pulumi program and the simplification this provides, this endpoint may be directly exposed to those responsible for making the financial decisions in the moment, such as a Sales Engineer who must turn on a new POC environment for testing who then must be sure to shut that off when completed. Oftentimes, these decisions are automated in processes and pipelines.&lt;/p&gt;
&lt;h2 id="pulumi-finops-in-practice-sweeping-up-dev-and-qa"&gt;Pulumi FinOps in Practice: Sweeping up Dev and QA&lt;/h2&gt;
&lt;p&gt;A common automation in FinOps is to destroy things that don’t meet your Tag Policy. These “Sweeper Bots” will continuously query AWS for resources with specific tags and delete them. Read more about how Pulumi has implemented this using Pulumi to set tags and Lambda to sweep through and remove resources that meet certain specifications in this post, &lt;a href="https://www.pulumi.com/blog/controlling-aws-costs-with-lambda-and-pulumi/"&gt;Controlling AWS Costs with Lambda and Pulumi&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In the manner of &lt;a href="https://www.finops.org/framework/maturity-model/"&gt;&amp;ldquo;Crawl, Walk, Run&amp;rdquo;&lt;/a&gt;, it’s best to &lt;strong&gt;start by implementing policies as code in a manner that will cause the most benefit while causing the least amount of change and/or downtime&lt;/strong&gt;. Make sure you have the appropriate billing tags applied to all supported resources, ensuring you are able to allocate costs to the appropriate business units in your company. Then add in additional policies to make sure you are using instances covered by any reserved instance or similar savings plans. Continue evolving your infrastructure and policy as code strategy to incorporate both preventative and reactive checks and balances.&lt;/p&gt;
&lt;p&gt;Have questions about using Pulumi when implementing FinOps in your IaC pipelines? &lt;a href="https://www.pulumi.com/contact/?form=sales"&gt;Contact us&lt;/a&gt; and let us know your questions or &lt;a href="https://www.pulumi.com/request-a-demo/"&gt;request a demo&lt;/a&gt;.&lt;/p&gt;</description><author>Matt Small</author><author>Richard Shade</author><category>finops</category><category>policy-as-code</category><category>cloud-engineering</category><category>automation-api</category></item></channel></rss>