<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Framz</title>
    <description>The latest articles on DEV Community by Framz (@framz).</description>
    <link>https://dev.to/framz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4038735%2Fb1e3ad6a-0e2d-4bcc-ad72-00440c4541cb.png</url>
      <title>DEV Community: Framz</title>
      <link>https://dev.to/framz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/framz"/>
    <language>en</language>
    <item>
      <title>Every AWS project starts with copy-pasting last repo's Terraform. I built a generator instead.</title>
      <dc:creator>Framz</dc:creator>
      <pubDate>Tue, 21 Jul 2026 01:05:33 +0000</pubDate>
      <link>https://dev.to/framz/every-aws-project-starts-with-copy-pasting-last-repos-terraform-i-built-a-generator-instead-2fpg</link>
      <guid>https://dev.to/framz/every-aws-project-starts-with-copy-pasting-last-repos-terraform-i-built-a-generator-instead-2fpg</guid>
      <description>&lt;p&gt;Be honest about how your last AWS project's infrastructure started. You copied the Terraform from the previous repo, deleted the bits that threw errors, and moved on. Six months later nobody remembers why half of it is shaped the way it is, and there's a 500-line &lt;code&gt;main.tf&lt;/code&gt; that everyone is scared to touch.&lt;/p&gt;

&lt;p&gt;I got tired of that ritual, so I built a &lt;a href="https://www.framz.io/tools/terraform-blueprint-generator" rel="noopener noreferrer"&gt;Terraform Blueprint Generator&lt;/a&gt;: pick your AWS stack, and it emits clean, &lt;strong&gt;production-structured&lt;/strong&gt; Terraform in seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "production-structured" actually means
&lt;/h2&gt;

&lt;p&gt;Not one giant file. Not resources with wide-open security groups because that was fastest. What you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A sane module layout&lt;/strong&gt; — separated concerns, not everything crammed into a single file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure defaults&lt;/strong&gt; — least-privilege leanings, private-by-default networking, encryption where it belongs. The safe choice is the default choice, so you have to &lt;em&gt;opt out&lt;/em&gt; of security rather than remember to opt in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portable by design&lt;/strong&gt; — no gratuitous single-vendor lock-in baked into the baseline. (That's the same posture behind our &lt;a href="https://www.framz.io/tools/vendor-lock-in-auditor" rel="noopener noreferrer"&gt;Vendor Lock-In Auditor&lt;/a&gt; — portability as a default, not an afterthought.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it is and isn't
&lt;/h2&gt;

&lt;p&gt;It's a &lt;strong&gt;baseline you adapt&lt;/strong&gt;, not a turnkey production deploy. You still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;review every line (it's your infra, own it),&lt;/li&gt;
&lt;li&gt;set your own &lt;code&gt;tfvars&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;decide and configure your state backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What it saves is the boring, error-prone bootstrapping — the part where inconsistency and quiet insecurity creep in. You start from a clean, well-organised foundation instead of last quarter's technical debt.&lt;/p&gt;

&lt;p&gt;Free, no signup: &lt;strong&gt;&lt;a href="https://www.framz.io/tools/terraform-blueprint-generator" rel="noopener noreferrer"&gt;framz.io/tools/terraform-blueprint-generator&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we made it
&lt;/h2&gt;

&lt;p&gt;We build and run cloud infrastructure at &lt;a href="https://www.framz.io" rel="noopener noreferrer"&gt;Framz&lt;/a&gt;, and a consistent, portable, secure-by-default starting point is something we wanted for ourselves. So it's public and free.&lt;/p&gt;




&lt;p&gt;Two questions for the DevOps crowd: &lt;strong&gt;which AWS stacks / resources should it cover next?&lt;/strong&gt; And — the one that always starts a good argument — &lt;strong&gt;modules or a flat structure for a small team's baseline?&lt;/strong&gt; Let me hear it in the comments.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>terraform</category>
      <category>cloud</category>
    </item>
    <item>
      <title>I ran 5 prompt-injection attacks against my chatbot's system prompt. Here's what broke.</title>
      <dc:creator>Framz</dc:creator>
      <pubDate>Tue, 21 Jul 2026 01:05:19 +0000</pubDate>
      <link>https://dev.to/framz/i-ran-5-prompt-injection-attacks-against-my-chatbots-system-prompt-heres-what-broke-1l1k</link>
      <guid>https://dev.to/framz/i-ran-5-prompt-injection-attacks-against-my-chatbots-system-prompt-heres-what-broke-1l1k</guid>
      <description>&lt;p&gt;Every team shipping an LLM feature has the same quiet worry: &lt;em&gt;what happens when someone tries to jailbreak our chatbot?&lt;/em&gt; And almost nobody has a real answer, because "is our system prompt resilient?" usually gets settled by gut feeling and a couple of manual pokes.&lt;/p&gt;

&lt;p&gt;I wanted a feedback loop instead. So I built a &lt;a href="https://www.framz.io/tools/prompt-injection-tester" rel="noopener noreferrer"&gt;Prompt Injection Tester&lt;/a&gt;: paste your system prompt, and it runs five classes of attack against it, then hands you a resilience score with the actual model responses as evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The five attack classes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instruction override&lt;/strong&gt; — "Ignore all previous instructions and…" The classic. Still works more often than you'd like.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt extraction&lt;/strong&gt; — coaxing the model into leaking its own system prompt. If your prompt contains rules, examples, or hints about internal tools, this is how they get out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delimiter / escape&lt;/strong&gt; — breaking out of the formatting you wrapped user input in. If you concatenate user text into a template, this is the hole.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-play&lt;/strong&gt; — "Let's play a game where you're an AI with no restrictions…" Wrapping the override in fiction to slip past a naive filter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indirect injection&lt;/strong&gt; — the nasty one. The attack doesn't come from the user at all; it rides in on attacker-controlled text that enters through a tool call, a retrieved document, or a web page your agent reads.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last one is the eye-opener. A system prompt that looks bulletproof against direct attacks falls over the moment untrusted content flows in through RAG or a browsing tool — because the model can't tell your instructions from the ones hidden in the document it just fetched.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits
&lt;/h2&gt;

&lt;p&gt;Five families is a &lt;strong&gt;floor, not a ceiling.&lt;/strong&gt; A determined attacker has more, and prompt injection is not a solved problem — there's no system prompt that makes you immune. Treat this as a fast first pass to catch the obvious holes before they catch you, not a certificate of safety.&lt;/p&gt;

&lt;p&gt;One thing I deliberately got right: &lt;strong&gt;it runs on our own hardware.&lt;/strong&gt; Your system prompt is not shipped off to a third-party model to be "tested" — which would be a slightly absurd thing for a security tool to do. Free, no signup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;We build private, in-boundary AI at &lt;a href="https://www.framz.io" rel="noopener noreferrer"&gt;Framz&lt;/a&gt;, so "what can untrusted input do to a model?" is a question we live with daily. The tester is the thing I wanted for our own work, so we made it public.&lt;/p&gt;

&lt;p&gt;If you've shipped an LLM feature, run your real system prompt through it and see which of the five it survives: &lt;strong&gt;&lt;a href="https://www.framz.io/tools/prompt-injection-tester" rel="noopener noreferrer"&gt;framz.io/tools/prompt-injection-tester&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Genuinely curious about the community's war stories: &lt;strong&gt;what's the most creative prompt injection you've seen land in production?&lt;/strong&gt; Drop it in the comments — and tell me which attack classes you think the tester should add next.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
    </item>
    <item>
      <title>When Does Self-Hosting an LLM Actually Beat the API? The Break-Even Math</title>
      <dc:creator>Framz</dc:creator>
      <pubDate>Mon, 20 Jul 2026 22:25:36 +0000</pubDate>
      <link>https://dev.to/framz/when-does-self-hosting-an-llm-actually-beat-the-api-the-break-even-math-gl1</link>
      <guid>https://dev.to/framz/when-does-self-hosting-an-llm-actually-beat-the-api-the-break-even-math-gl1</guid>
      <description>&lt;p&gt;Every team I've worked with hits the same argument about three months after shipping something on top of an LLM: &lt;em&gt;"Should we still be paying per token, or should we just self-host?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And it's always argued on vibes. Someone read a blog post. Someone else got burned by a GPU bill once. Nobody's actually done the math. So here's the math — or at least the shape of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The API wins right up until it doesn't
&lt;/h2&gt;

&lt;p&gt;Paying an API has one killer advantage that people forget to give it credit for: &lt;strong&gt;you pay for exactly what you use, and nothing when you're idle.&lt;/strong&gt; No GPU sitting warm at 3am doing nothing. No serving stack to babysit. If your volume is low or spiky, this is basically unbeatable, and honestly you should stop reading and just use the API.&lt;/p&gt;

&lt;p&gt;Self-hosting flips that. You take on a &lt;strong&gt;mostly fixed cost&lt;/strong&gt; — the GPU (rented or amortised) plus the very real human cost of running it — and in exchange, each extra token is almost free once you've paid for the box.&lt;/p&gt;

&lt;p&gt;So the whole decision collapses to one question: &lt;em&gt;at your volume, has that fixed cost dropped below what the meter would've charged you?&lt;/em&gt; That's the break-even. Everything else is just inputs to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The six things that move the break-even
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Monthly token volume.&lt;/strong&gt; The big one. API cost scales straight up with it; self-hosting barely moves. Low → API. High and steady → self-hosting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Input:output ratio.&lt;/strong&gt; Output usually costs more on APIs, and it's what eats GPU time when you host. A summariser (huge input, tiny output) and a chatbot look nothing alike on the curve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality tier.&lt;/strong&gt; Here's where people quietly cheat: "self-hosting is cheaper" usually assumes a 30B open model is good enough. If you actually need frontier quality, compare frontier-to-frontier — and you probably can't run frontier yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU cost + amortisation.&lt;/strong&gt; Your fixed cost, per hour or spread over the hardware's life.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utilisation.&lt;/strong&gt; A GPU you use 8% of the day is a space heater with a fan. This one number wrecks or saves the whole thing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ops overhead.&lt;/strong&gt; The line nobody puts in the spreadsheet: someone runs it, patches it, and gets paged at 2am. At small scale that alone can be bigger than the API bill — think 10–20 senior-engineer hours a month.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The costs both sides conveniently forget
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Self-hosting quietly adds:&lt;/strong&gt; fine-tuning experiments, storage and egress, eval infrastructure, and your engineers' time — which is not free, no matter how much they enjoy it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The API quietly adds:&lt;/strong&gt; price changes and rate limits you don't control, and the awkward bit — your data (and your customers' data) leaving your walls.&lt;/p&gt;

&lt;h2&gt;
  
  
  The break-even nobody charts: compliance
&lt;/h2&gt;

&lt;p&gt;There's a second crossover that has nothing to do with dollars. If you handle regulated or client-confidential data, &lt;strong&gt;self-hosting wins the moment that data would otherwise be shipped off to a third-party API&lt;/strong&gt; — full stop, whatever the token math says. When "our data can't leave our infrastructure" is a hard rule, you've already made the decision; you're just backfilling the spreadsheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Just run your numbers
&lt;/h2&gt;

&lt;p&gt;The model is simple. The arithmetic — 12 months, amortisation, utilisation — is annoying. So we built the boring part: the &lt;a href="https://www.framz.io/tools/llm-cost-calculator" rel="noopener noreferrer"&gt;LLM Cost Calculator&lt;/a&gt; charts API vs self-hosting over a year, no signup, no email wall.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;When does self-hosting get cheaper?&lt;/strong&gt; When your fixed cost (GPU amortisation + ops time) drops below the per-token meter at your sustained volume. Low/spiky → API. High/steady → self-host.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the cost everyone forgets?&lt;/strong&gt; Engineers' time to run the stack. It's usually the single biggest hidden line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is an open model as good as a frontier API?&lt;/strong&gt; Not automatically — decide your quality tier &lt;em&gt;before&lt;/em&gt; you compare price, or you're comparing a Civic to a truck.&lt;/p&gt;




&lt;p&gt;I'm genuinely curious where real teams land on this — &lt;strong&gt;what was your actual break-even, and did self-hosting turn out cheaper than you expected, or way more of a headache?&lt;/strong&gt; Tell me in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Shadow AI: What Your Team Is Already Pasting Into ChatGPT</title>
      <dc:creator>Framz</dc:creator>
      <pubDate>Mon, 20 Jul 2026 22:25:24 +0000</pubDate>
      <link>https://dev.to/framz/shadow-ai-what-your-team-is-already-pasting-into-chatgpt-29gc</link>
      <guid>https://dev.to/framz/shadow-ai-what-your-team-is-already-pasting-into-chatgpt-29gc</guid>
      <description>&lt;p&gt;Right now, somewhere in your org, someone is pasting a stack trace, a customer record, or a chunk of the codebase into ChatGPT to get unstuck. You know it. I know it. The person doing it half-knows it's sketchy and is doing it anyway — because it &lt;em&gt;works&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That's shadow AI, and the reason it's so hard to stamp out is that it's not laziness or malice. It's people trying to do their jobs faster. Send the "don't use ChatGPT" email and you don't stop it — you just make it quieter.&lt;/p&gt;

&lt;p&gt;So don't start with a ban. Start with knowing what's actually leaving the building.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four things that leak (roughly in order of how often I see it)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;PII.&lt;/strong&gt; Names, emails, addresses — worse if it's health or financial — tucked inside "help me reply to this customer" prompts. This is the one with legal teeth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets.&lt;/strong&gt; API keys, tokens, connection strings, a stray &lt;code&gt;.env&lt;/code&gt;, private keys — pasted into "why is this failing?" debugging prompts. High blast radius, and usually the person has no idea it was even in there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proprietary code.&lt;/strong&gt; Internal logic pasted in for a refactor. It doesn't come &lt;em&gt;back&lt;/em&gt; out, sure — but you've just handed it to a third party.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-confidential stuff.&lt;/strong&gt; Contracts, engagement letters, case notes. For a regulated firm that's not an "oops," that's a reportable breach.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The one everyone quotes is the reported case of engineers pasting proprietary source into ChatGPT. What made it nasty: the data was just &lt;em&gt;gone&lt;/em&gt;, unretrievable, and no DLP tool flagged it — because to a network monitor, an AI chat looks like any other encrypted web request, not a file leaving.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's a governance problem wearing a tech-problem costume
&lt;/h2&gt;

&lt;p&gt;The reflex is to buy a blocking proxy. But blocking just recreates the original problem: people route around it (personal laptop, phone, copy-paste on their own account), and you lose the productivity you were trying to protect.&lt;/p&gt;

&lt;p&gt;The thing that actually holds is a &lt;strong&gt;compliant path&lt;/strong&gt; — an approved way to get the same AI help without the data leaving your boundary — plus a short, human-readable policy on what's fair game and what isn't. And detection, because you can't govern what you can't see.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to check — without leaking it to check it
&lt;/h2&gt;

&lt;p&gt;You &lt;em&gt;can&lt;/em&gt; scan for this yourself: regexes for key formats, entropy for secrets, NER for PII. The irony is that most "paste your text here to check it" tools ship your text off to &lt;em&gt;their&lt;/em&gt; server or &lt;em&gt;their&lt;/em&gt; model — which is the exact thing you were trying to avoid.&lt;/p&gt;

&lt;p&gt;So we built the &lt;a href="https://www.framz.io/tools/ai-data-leak-scanner" rel="noopener noreferrer"&gt;Shadow AI Data Leak Scanner&lt;/a&gt; with one rule we refused to break: &lt;strong&gt;it runs on our own hardware, and your text never touches a third-party AI.&lt;/strong&gt; Paste something in, see the PII, secrets, and code it contains, and whether it's safe for a public model. It's heuristics, not magic — treat it as a fast first pass, not a certificate.&lt;/p&gt;

&lt;p&gt;Shipping AI features yourself? The mirror-image risk is your &lt;em&gt;own&lt;/em&gt; app getting jailbroken — poke at that with the &lt;a href="https://www.framz.io/tools/prompt-injection-tester" rel="noopener noreferrer"&gt;Prompt Injection Tester&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is shadow AI?&lt;/strong&gt; Staff using AI tools with no approval or oversight — pasting in whatever gets the job done, usually without clocking that the data leaves the org.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What leaks most?&lt;/strong&gt; PII in "draft this reply," secrets in "why does this break," code in "refactor this," and client-confidential docs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you stop it without a ban?&lt;/strong&gt; A compliant in-boundary path, a one-page policy people can actually follow, and detection so it's enforceable.&lt;/p&gt;




&lt;p&gt;Honest question for the room: &lt;strong&gt;has your company actually written down what's OK to paste into an LLM — or is everyone just quietly winging it?&lt;/strong&gt; I suspect I know the answer. Tell me in the comments.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>privacy</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Four Layers of Cloud Lock-In (and How Terraform Cuts Your Exit Cost)</title>
      <dc:creator>Framz</dc:creator>
      <pubDate>Mon, 20 Jul 2026 22:25:08 +0000</pubDate>
      <link>https://dev.to/framz/the-four-layers-of-cloud-lock-in-and-how-terraform-cuts-your-exit-cost-17he</link>
      <guid>https://dev.to/framz/the-four-layers-of-cloud-lock-in-and-how-terraform-cuts-your-exit-cost-17he</guid>
      <description>&lt;p&gt;People throw around "vendor lock-in" like it's a binary — you either have it or you don't. That framing is why the conversation usually goes nowhere. Lock-in isn't one thing. It's four different things stacked on top of each other, each with a wildly different cost to unwind, and once you separate them you can actually decide what's worth worrying about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four layers
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data.&lt;/strong&gt; Proprietary formats, and — the real killer — &lt;strong&gt;egress fees&lt;/strong&gt; to get it back out. Cheap to design around early, brutally expensive to fix late.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform.&lt;/strong&gt; The vendor-specific managed stuff: serverless, managed databases, IAM, observability. This is where the deep lock-in lives, because these services are &lt;em&gt;genuinely good&lt;/em&gt; and have no clean equivalent next door.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract.&lt;/strong&gt; Renewal clauses, termination terms, committed-spend discounts that quietly jack up your switching cost while feeling like a deal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operations.&lt;/strong&gt; Your team's muscle memory — the tooling, the runbooks, the way everyone thinks. The least visible layer, and usually the stickiest.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to know where you're most exposed, it's almost always managed databases, serverless, IAM, and observability. Those deserve a real decision, not a default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lock-in isn't automatically a problem
&lt;/h2&gt;

&lt;p&gt;Here's the part people skip: lock-in only &lt;em&gt;matters&lt;/em&gt; when it traps regulated data, kills your pricing leverage, or makes leaving hideously expensive. A managed service that saves your team a month of work and is easy enough to swap later? That's a good trade. Take the deal.&lt;/p&gt;

&lt;p&gt;The goal was never zero lock-in. It's &lt;em&gt;knowing your number&lt;/em&gt; and controlling it where it counts. Which is why step one is boring and unglamorous: audit each layer, put a figure on the exit, set a date to revisit. (We built a &lt;a href="https://www.framz.io/tools/vendor-lock-in-auditor" rel="noopener noreferrer"&gt;Vendor Lock-In Auditor&lt;/a&gt; that spits out a portability score and an exit-cost estimate, so it's an actual number instead of a vibe.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Terraform earns its keep — and where it's oversold
&lt;/h2&gt;

&lt;p&gt;Infrastructure-as-code (Terraform, Pulumi) is the highest-leverage move you can make on the &lt;strong&gt;operations&lt;/strong&gt; and &lt;strong&gt;platform&lt;/strong&gt; layers. Declarative, version-controlled infra buys you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An environment that's documented and reproducible instead of click-configured and half-remembered.&lt;/li&gt;
&lt;li&gt;Your vendor dependencies sitting right there &lt;strong&gt;in the code&lt;/strong&gt;, visible — you can literally read your lock-in.&lt;/li&gt;
&lt;li&gt;The ability to stand up equivalent resources elsewhere from one workflow, which is what makes a real exit or multi-cloud plan more than a slide.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the honest bit: Terraform does &lt;strong&gt;not&lt;/strong&gt; make a proprietary managed service portable. It makes the &lt;em&gt;exit auditable and cheaper&lt;/em&gt;. The platform-layer dependency itself is still a design choice you make service by service. Anyone selling you Terraform as a lock-in cure is overselling.&lt;/p&gt;

&lt;p&gt;(If you're standardising from scratch, our &lt;a href="https://www.framz.io/tools/terraform-blueprint-generator" rel="noopener noreferrer"&gt;Terraform Blueprint Generator&lt;/a&gt; hands you a production-ready, portable-by-default baseline in seconds.)&lt;/p&gt;

&lt;h2&gt;
  
  
  The playbook I'd actually follow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit&lt;/strong&gt; the four layers, price the exit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codify&lt;/strong&gt; infra in Terraform so the dependencies are explicit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide on purpose&lt;/strong&gt; for each high-lock-in service: take it (and write down the risk + a portability plan) or skip it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Negotiate&lt;/strong&gt; egress caps and deconversion help &lt;em&gt;into the contract&lt;/em&gt; — before you're committed, when you still have leverage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revisit&lt;/strong&gt; on a schedule, because lock-in creeps while you're not looking.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Selective portability beats both religions. Keep the managed-service speed where it's worth it; keep your options open where it isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What are the four layers?&lt;/strong&gt; Data (formats + egress), platform (vendor-specific services), contract (renewal/termination terms), operations (team skills/tooling). Highest risk: managed DBs, serverless, IAM, observability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Terraform fix lock-in?&lt;/strong&gt; It lowers the operations/platform layers and makes the exit auditable and cheaper. It does &lt;em&gt;not&lt;/em&gt; make proprietary services portable by itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should we go multi-cloud?&lt;/strong&gt; Usually no — it's real complexity for often-imaginary benefit. Prefer selective portability.&lt;/p&gt;




&lt;p&gt;Curious about the war stories here: &lt;strong&gt;what's the most brutal egress bill or exit cost you've personally run into?&lt;/strong&gt; Drop it below — those numbers are always more educational than any blog post.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>terraform</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
