<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Developer first infrastructure</title><link>https://www.pulumi.com/blog/tag/developer-first-infrastructure/</link><description>Pulumi blog posts: Developer first infrastructure.</description><language>en-us</language><pubDate>Mon, 16 Dec 2024 10:43:07 +0000</pubDate><item><title>Your Perfect Infrastructure May Not Be So Perfect</title><link>https://www.pulumi.com/blog/your-perfect-infrastructure/</link><pubDate>Mon, 16 Dec 2024 10:43:07 +0000</pubDate><guid>https://www.pulumi.com/blog/your-perfect-infrastructure/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/your-perfect-infrastructure/index.png" /&gt;
&lt;p&gt;&lt;strong&gt;Guest Article:&lt;/strong&gt; &lt;em&gt;Simen A. W. Olsen from &lt;a href="https://bjerk.io"&gt;Bjerk&lt;/a&gt;, is here to share his lessons learned on why designing the perfect architecture for your future needs might be a mistake&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I remember standing in front of our engineering team in 2018, proudly presenting what I believed was the future-proof architectural design for our new distributed system. The diagrams were immaculate, the technology choices were cutting-edge, and the scalability patterns were ready for any possible future scenario.&lt;/p&gt;
&lt;p&gt;I was basically the Leonardo da Vinci of system design… if Leonardo had been really into Kubernetes and had a concerning addiction to coffee. But six months later, that “future-proof” architecture had become a constraint rather than an enabler, and my masterpiece was looking more like a finger painting done by a caffeinated raccoon.&lt;/p&gt;
&lt;p&gt;This experience taught me something crucial: trying to build the perfect system that anticipates every future need is often worse than creating a system designed to change quickly. It’s like trying to predict what your kid will want to be when they grow up and pre-buying all the necessary equipment. Congrats, you now own a space suit, a stethoscope, and a dragon costume — and they decided to become a software engineer anyway.&lt;/p&gt;
&lt;h2 id="the-over-planning"&gt;The Over-Planning&lt;/h2&gt;
&lt;p&gt;Many teams fall into a common trap: they try to design systems that anticipate every possible future requirement. This happens even in agile teams, where we convince ourselves we need to “get the architecture right” before we can start iterating. You know, because nothing says “agile” like spending three months in a room drawing boxes and arrows while muttering “microservices” under your breath like it’s a magic spell.&lt;/p&gt;
&lt;p&gt;In 2008, Netflix faced a choice: build the perfect data center that could handle all their anticipated future needs, or move to the cloud with a simpler architecture that could evolve. They chose the latter, focusing on making their system easy to change rather than trying to make it perfect. Smart move — unlike those my past self made who probably would’ve insisted on building a data center capable of streaming to Mars, just in case Elon asked nicely.&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.70121449e0dde6f8c01ff68423fffaa0336ecc73c7bbc87506404126694ca58c.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/p3-some-assembly-required/"&gt;
Pulumi Patterns and Practices Platform (P3): Some Assembly Required
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/pulumi-patterns-and-practices/"&gt;
Pulumi Patterns and Practices Platform (P3): A reference architecture for large-scale organizations
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/next-level-iac-briding-the-declarative-gap/"&gt;
Next-level IaC: Bridging the Declarative Gap
&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="the-core-principles-of-change-ready-architecture"&gt;The Core Principles of Change-Ready Architecture&lt;/h2&gt;
&lt;p&gt;Through both failures and successes, I’ve identified three principles that define truly adaptable architecture:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Embrace simplicity.&lt;/strong&gt; I think it makes sense to start with the simplest architecture that could possibly work for your current needs. Complexity should be earned, not presumed. If your architecture diagram looks like a plate of spaghetti that’s been hit by lightning, you might be doing it wrong.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make change cheap.&lt;/strong&gt; Instead of trying to avoid change, make it inexpensive. This means investing in automated testing, continuous deployment, and monitoring. When change is cheap, you don’t need to fear it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn through action.&lt;/strong&gt; Rather than trying to predict the future, build mechanisms that help you learn quickly about real needs. It includes feature toggles (Protip: Try &lt;a href="https://www.getunleash.io/"&gt;Unleash&lt;/a&gt;.), A/B testing, and robust monitoring of how your system is actually being used. You know, actual data, not just what that one loud guy in planning insists will definitely happen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The rise of AI and machine learning systems has made one thing clear: we can’t predict how our systems will need to evolve. The most successful teams aren’t those that try to build the perfect AI architecture upfront, but those that can rapidly experiment and adapt their systems based on real-world feedback.&lt;/p&gt;
&lt;p&gt;The biggest pushback I hear is, “But what if we need to scale?” or “What about future requirements?” These fears often drive teams to over-architect their solutions. But here’s the reality: the cost of changing a simple system is usually lower than the cost of maintaining an over-engineered one. The key is understanding that good architecture isn’t about predicting the future — it’s about making future changes as painless as possible.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That over-engineered system I was so proud of in 2018? Its most significant flaw wasn’t in what it got wrong about the future — it was that it tried too hard to be right about the future in the first place. It’s like bringing a fully packed suitcase to a first date. Today, I know that the best architecture isn’t one that anticipates every need, but one that makes it easy to respond to needs as they emerge.&lt;/p&gt;
&lt;p&gt;The next time you’re tempted to design for every possible future scenario, remember: the goal isn’t to build a perfect system, but to build one that’s perfectly easy to change. And if someone tells you they’ve designed the perfect future-proof architecture, they’re either lying, or they’ve discovered time travel — and in that case, they should be sharing lottery numbers, not system designs.&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.70121449e0dde6f8c01ff68423fffaa0336ecc73c7bbc87506404126694ca58c.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/p3-some-assembly-required/"&gt;
Pulumi Patterns and Practices Platform (P3): Some Assembly Required
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/pulumi-patterns-and-practices/"&gt;
Pulumi Patterns and Practices Platform (P3): A reference architecture for large-scale organizations
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pulumi.com/blog/next-level-iac-briding-the-declarative-gap/"&gt;
Next-level IaC: Bridging the Declarative Gap
&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>Simen A. W. Olsen</author><category>architecture</category><category>developer-first-infrastructure</category><category>best-practices</category><category>cloud-engineering</category><category>cloud-deployment</category><category>developer-experience</category><category>people-ops</category><category>application-scalability</category></item><item><title>Pulumi and RedMonk on developer-first infrastructure and why it matters</title><link>https://www.pulumi.com/blog/redmonk-pulumi-developer-first-infrastructure/</link><pubDate>Tue, 26 Apr 2022 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/redmonk-pulumi-developer-first-infrastructure/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/redmonk-pulumi-developer-first-infrastructure/index.png" /&gt;
&lt;p&gt;What do assembly languages and the cloud have in common? Are abstractions the future of cloud computing? What does &amp;ldquo;infrastructure&amp;rdquo; really mean? And why do these questions matter to the platform engineers, infrastructure engineers, and developers who are building modern cloud applications today?&lt;/p&gt;
&lt;p&gt;Joe Duffy (Founder &amp;amp; CEO, Pulumi) and James Governor (Co-founder, RedMonk) recently answered these questions and more in a conversation about developer-first infrastructure. Developer-first infrastructure means empowering developers to build and deploy modern cloud applications and infrastructure through the use of software engineering practices that tame modern cloud complexity.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re interested in learning how the worlds of software engineering and cloud infrastructure are intersecting in addition to principles and best practices for building in the cloud, then watch the 28-minute video below.&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/h4nA1-O0QrI?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="highlights-of-pulumi-and-redmonks-discussion-on-developer-first-infrastructure"&gt;Highlights of Pulumi and RedMonk&amp;rsquo;s discussion on developer-first infrastructure&lt;/h2&gt;
&lt;p&gt;In the first half of the discussion, Joe and James discuss the complexities of building on the modern cloud as application architectures have evolved from simple three-tier apps to the modern, distributed applications of today. Joe traces the evolution of modern computing in which complexity has been tamed over time through abstractions: from low-level assembly languages to higher-level languages and runtimes that make software more accessible, and finally to operating systems. They then discuss how an analogous transformation has yet to occur in the cloud on a mainstream basis.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The level of abstraction [that most people are doing] with cloud infrastructure reminds me of assembly languages. You look at writing these YAML templates that over-specify every detail of the underlying architecture. I think [the industry] can do better. I think we can be inspired by what we&amp;rsquo;ve done in programming languages.&amp;rdquo; &amp;mdash; Joe Duffy&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In the second half of the discussion, the two discuss what developer-first infrastructure is, and how companies can use this philosophy to tame modern cloud complexity and accelerate development velocity. Companies that execute this well have a &amp;ldquo;developer-first multiple&amp;rdquo; &amp;mdash; that is, the most valuable companies in the world today are the ones who&amp;rsquo;ve thought hard about the developer experience for their own employees or the communities that interact with them.&lt;/p&gt;
&lt;p&gt;Joe describes five principles of developer-first infrastructure that make developers&amp;rsquo; lives easier when building on the cloud.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/cloud-engineering/"&gt;Cloud Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Harmonized Applications and Infrastructure&lt;/li&gt;
&lt;li&gt;Beyond &amp;ldquo;Lift and Shift&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Secure and Observable By-Construction&lt;/li&gt;
&lt;li&gt;An API for Everything&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/redmonk-pulumi-developer-first-infrastructure/developer-first-infra-principles.png" alt="Principles of developer-first infrastructure"&gt;&lt;/p&gt;
&lt;p&gt;Finally, Joe dives into the best practices of developer-first infrastructure:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/redmonk-pulumi-developer-first-infrastructure/developer-first-infra-best-practices.png" alt="Best practices of developer-first infrastructure"&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Unified Engineering&lt;/strong&gt;: Software engineering tools and practices for applications and infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;APIs&lt;/strong&gt;: Making everything programmable and composable with APIs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Everything as Code&lt;/strong&gt;: Use &amp;ldquo;as code&amp;rdquo; techniques like infrastructure as code and policy as code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Polyglot&lt;/strong&gt;: Embrace the best language ecosystems for the job at hand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modularity&lt;/strong&gt;: Tackle complexity with real sharing and reuse, not copy &amp;amp; paste.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous Delivery&lt;/strong&gt;: Deliver and scale applications and infrastructure with automated techniques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous Verification&lt;/strong&gt;: Verify and enforce guardrails at all times.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment Parity&lt;/strong&gt;: Share as much as possible between dev, test, and prod environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Securely Configured&lt;/strong&gt;: Loosely couple and securely configure environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distributed Architectures&lt;/strong&gt;: Go beyond &amp;ldquo;lift and shift&amp;rdquo; to building truly cloud-native applications and infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observable&lt;/strong&gt;: Instrument applications and infrastructure to log high cardinality events, early and often.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;Developer-first infrastructure means empowering developers to build and deploy modern cloud applications and infrastructure through the use of software engineering practices that tame modern cloud complexity. If you feel inspired after viewing the Pulumi/RedMonk discussion video, then consider applying developer-first principles and practices for your next greenfield project or application using an infrastructure as code tool like &lt;a href="https://www.pulumi.com/docs/get-started/"&gt;Pulumi&lt;/a&gt;. You can also &lt;a href="https://www.youtube.com/watch?v=SQRM0r5U1js"&gt;watch Joe Duffy&amp;rsquo;s presentation&lt;/a&gt; on developer-first infrastructure from the Cloud Engineering Summit to learn more about developer-first.&lt;/p&gt;</description><author>George Huang</author><category>cloud-engineering</category><category>enterprise</category><category>developer-first-infrastructure</category><category>cloud-computing</category><category>infrastructure-as-code</category></item></channel></rss>