<?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: ZedGi</title>
    <description>The latest articles on DEV Community by ZedGi (@zedgi).</description>
    <link>https://dev.to/zedgi</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%2F4064283%2F6dd2b5f5-69ea-43e8-a5b6-27ee654a9714.png</url>
      <title>DEV Community: ZedGi</title>
      <link>https://dev.to/zedgi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zedgi"/>
    <language>en</language>
    <item>
      <title>ZedGi: call your own Redis, Postgres, and MySQL from serverless over HTTPS</title>
      <dc:creator>ZedGi</dc:creator>
      <pubDate>Tue, 15 Sep 2026 09:39:01 +0000</pubDate>
      <link>https://dev.to/zedgi/zedgi-call-your-own-redis-postgres-and-mysql-from-serverless-over-https-2478</link>
      <guid>https://dev.to/zedgi/zedgi-call-your-own-redis-postgres-and-mysql-from-serverless-over-https-2478</guid>
      <description>&lt;p&gt;Serverless runtimes are HTTP-first. Redis, Postgres, and MySQL are still TCP.&lt;/p&gt;

&lt;p&gt;If you want a Worker, an Edge function, or a Lambda to use the database you already have, you usually get pushed into a vendor HTTP API, a VPN, or a public 5432.&lt;/p&gt;

&lt;p&gt;ZedGi is a TCP-to-HTTP access layer instead.&lt;/p&gt;

&lt;p&gt;Register host + port (the dashboard never takes the database password).&lt;br&gt;
Call &lt;a href="https://your-subdomain.zedgi.app/rpc" rel="noopener noreferrer"&gt;https://your-subdomain.zedgi.app/rpc&lt;/a&gt; with the SDK.&lt;br&gt;
A Cloudflare Worker authenticates the request. A Node bridge opens pooled TCP. You get JSON back.&lt;br&gt;
Credentials are encrypted in your app (X25519 + AES-256-GCM) and only decrypted in memory on the bridge. Requests are HMAC-signed with a timestamp and a single-use nonce.&lt;/p&gt;

&lt;p&gt;TypeScript&lt;br&gt;
npm install &lt;a class="mentioned-user" href="https://dev.to/zedgi"&gt;@zedgi&lt;/a&gt;/zedgi-client&lt;/p&gt;

&lt;p&gt;import { createZedgiClient } from '&lt;a class="mentioned-user" href="https://dev.to/zedgi"&gt;@zedgi&lt;/a&gt;/zedgi-client';&lt;/p&gt;

&lt;p&gt;const zedgi = createZedgiClient({&lt;br&gt;
  url: '&lt;a href="https://YOUR_SUBDOMAIN.zedgi.app" rel="noopener noreferrer"&gt;https://YOUR_SUBDOMAIN.zedgi.app&lt;/a&gt;',&lt;br&gt;
  key: process.env.ZEDGI_KEY!,&lt;br&gt;
  credentials: {&lt;br&gt;
    redis: { default: { password: process.env.REDIS_PASSWORD!, db: 0 } },&lt;br&gt;
    postgres: {&lt;br&gt;
      default: {&lt;br&gt;
        user: 'app',&lt;br&gt;
        password: process.env.PG_PASSWORD!,&lt;br&gt;
        database: 'app',&lt;br&gt;
      },&lt;br&gt;
    },&lt;br&gt;
  },&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;await zedgi.redis().set('hello', 'edge');&lt;br&gt;
const { rows } = await zedgi.postgres().query('SELECT NOW() AS ts');&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
pip install zedgi&lt;/p&gt;

&lt;p&gt;import os&lt;br&gt;
from zedgi import create_client&lt;/p&gt;

&lt;p&gt;zedgi = create_client(&lt;br&gt;
    url="&lt;a href="https://YOUR_SUBDOMAIN.zedgi.app" rel="noopener noreferrer"&gt;https://YOUR_SUBDOMAIN.zedgi.app&lt;/a&gt;",&lt;br&gt;
    key=os.environ["ZEDGI_KEY"],&lt;br&gt;
    credentials={&lt;br&gt;
        "redis": {"default": {"password": os.environ["REDIS_PASSWORD"], "db": 0}},&lt;br&gt;
    },&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;print(zedgi.redis().get("hello"))&lt;/p&gt;

&lt;p&gt;Works from Cloudflare Workers, Vercel Edge, Deno, Bun, Node, AWS Lambda, FastAPI, and anything that can send HTTPS. Raw HTTP is documented if you are not using an SDK — it is still signed; it is not anonymous fetch.&lt;/p&gt;

&lt;p&gt;Not a hosted database, not a Prisma wire tunnel, not Hyperdrive (Hyperdrive is excellent for Workers + Postgres/MySQL via a binding; ZedGi is multi-runtime and includes Redis).&lt;/p&gt;

&lt;p&gt;1,000 requests/day free, then $10 / million, $5 prepaid minimum.&lt;/p&gt;

&lt;p&gt;Docs: docs.zedgi.app Playground: zedgi.app/dashboard/playground AI agents: paste Add an agent to my app using instructions from &lt;a href="https://zedgi.app/agents.md" rel="noopener noreferrer"&gt;https://zedgi.app/agents.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>redis</category>
      <category>postgres</category>
      <category>cloudflare</category>
    </item>
    <item>
      <title>Keep the Database. Close the Port.</title>
      <dc:creator>ZedGi</dc:creator>
      <pubDate>Mon, 17 Aug 2026 11:00:10 +0000</pubDate>
      <link>https://dev.to/zedgi/keep-the-database-close-the-port-39gb</link>
      <guid>https://dev.to/zedgi/keep-the-database-close-the-port-39gb</guid>
      <description>&lt;h1&gt;
  
  
  Keep the Database. Close the Port.
&lt;/h1&gt;

&lt;p&gt;Why 2026 security, FinOps, and edge-runtime facts all point at the access layer — not another data migration.&lt;/p&gt;

&lt;p&gt;Infrastructure programs fail when three decisions get bundled into one ticket:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where code runs&lt;/strong&gt; — VMs, containers, functions, or the edge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where data lives&lt;/strong&gt; — the Redis, Postgres, or MySQL estate you already run, or a new vendor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How code reaches data&lt;/strong&gt; — public ports, a VPN, a vendor HTTP API, or a signed HTTPS access path&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most “modernization” decks treat #2 as the price of #1. The 2026 public record says the expensive failures are on &lt;strong&gt;#3&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Keep the approved database. Close the public port. Standardize how every runtime reaches it. Do not migrate data just to reach it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The open port is still the cheap attack
&lt;/h2&gt;

&lt;p&gt;Production databases are not web servers. They are designed to sit behind a private network. When they do not, the rest of the security program is optional.&lt;/p&gt;

&lt;p&gt;Intruder’s 2026 Attack Surface Management Index, drawn from more than &lt;strong&gt;3,000&lt;/strong&gt; customer estates over the year ending March 2026, found that &lt;strong&gt;26%&lt;/strong&gt; of organizations had an internet-facing MySQL instance. MySQL was the single most common exposure. &lt;strong&gt;49%&lt;/strong&gt; of organizations exposed some risky port or service. Large firms (5,000–10,000 employees) took an average of &lt;strong&gt;56 days&lt;/strong&gt; to close exposures; small firms took &lt;strong&gt;14–18 days&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That window is long enough. Wiz’s database-ransomware research describes the current playbook: internet-wide scans of &lt;strong&gt;3306&lt;/strong&gt; (MySQL) and &lt;strong&gt;5432&lt;/strong&gt; (PostgreSQL), a check for missing auth or a weak password, then ordinary SQL — &lt;code&gt;DROP DATABASE&lt;/code&gt;, bulk &lt;code&gt;DELETE&lt;/code&gt;, a new table named &lt;code&gt;README_TO_RECOVER&lt;/code&gt;. No malware binary. No exotic exploit. The database’s own commands do the damage.&lt;/p&gt;

&lt;p&gt;Redis is the other common miss. Wiz found Redis in &lt;strong&gt;74%&lt;/strong&gt; of cloud environments, but only &lt;strong&gt;5.3%&lt;/strong&gt; of environments had an instance on the public internet. Of those that did, &lt;strong&gt;72%&lt;/strong&gt; had at least one instance with no authentication or with weak credentials. Attackers often use that foothold for the host, not for a ransom note — which is worse, not better.&lt;/p&gt;

&lt;p&gt;This is not a new control. CISA’s 2025 cyber-hygiene advisory (AA25-212A) restates CIS Control 9.2: close unused ports, protocols, and services. Wiz’s operational guidance is the same sentence every CISO already writes: there is rarely a legitimate reason for a production database to accept connections from arbitrary internet IPs.&lt;/p&gt;

&lt;p&gt;If a serverless or edge rollout requires you to open 3306, 5432, or 6379 “temporarily,” the rollout is the vulnerability.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Credentials are still the payload
&lt;/h2&gt;

&lt;p&gt;Verizon’s 2026 Data Breach Investigations Report changed the &lt;em&gt;first-step&lt;/em&gt; ranking: &lt;strong&gt;31%&lt;/strong&gt; of breaches now start with a software vulnerability, overtaking stolen passwords as the most common initial access path. That is a real shift. It is not a reason to relax on secrets.&lt;/p&gt;

&lt;p&gt;Read the rest of the same report. Credential abuse as the &lt;em&gt;initial&lt;/em&gt; vector fell from &lt;strong&gt;22%&lt;/strong&gt; in the 2025 DBIR to &lt;strong&gt;13%&lt;/strong&gt;. Credentials still appeared as compromised &lt;em&gt;data&lt;/em&gt; in &lt;strong&gt;28%&lt;/strong&gt; of breaches. &lt;strong&gt;48%&lt;/strong&gt; of breaches involved ransomware. Attackers changed where they walk in. They did not stop picking up keys once inside.&lt;/p&gt;

&lt;p&gt;The cost side is worse than last year. IBM’s 2026 Cost of a Data Breach Report (Ponemon, 602 organizations, March 2025–February 2026) puts the global average at &lt;strong&gt;$4.99 million&lt;/strong&gt;, &lt;strong&gt;up 12%&lt;/strong&gt;, a record. AI-driven attacks rose &lt;strong&gt;56%&lt;/strong&gt;. One in four malicious breaches were AI-enabled; those cost &lt;strong&gt;$6 million&lt;/strong&gt;, about &lt;strong&gt;$1 million&lt;/strong&gt; above the average. Only &lt;strong&gt;37%&lt;/strong&gt; of breached organizations said they encrypt sensitive data both at rest and in transit. Only &lt;strong&gt;34%&lt;/strong&gt; had visibility into their cryptographic assets.&lt;/p&gt;

&lt;p&gt;Secrets are also multiplying faster than they are rotated. GitGuardian’s State of Secrets Sprawl 2026 counted &lt;strong&gt;28.65 million&lt;/strong&gt; new hardcoded secrets in public GitHub commits in 2025 — &lt;strong&gt;+34%&lt;/strong&gt; year over year, the largest jump they have recorded. AI-service secrets reached &lt;strong&gt;1,275,105&lt;/strong&gt;, &lt;strong&gt;up 81%&lt;/strong&gt;. When GitGuardian retested credentials that were valid in 2022, &lt;strong&gt;64%&lt;/strong&gt; were still valid in January 2026. Internal repositories were about &lt;strong&gt;six times&lt;/strong&gt; more likely to contain hardcoded secrets than public ones. About &lt;strong&gt;28%&lt;/strong&gt; of incidents originated outside git entirely — Slack, Jira, Confluence.&lt;/p&gt;

&lt;p&gt;NIST SP 800-207 (Zero Trust) is blunt on the design implication: every data source is a resource; all communication is secured regardless of network location; access is per-session and least-privilege. That is the opposite of “paste the production password into the new SaaS form” and the opposite of “hardcode &lt;code&gt;DATABASE_URL&lt;/code&gt; into the edge config.”&lt;/p&gt;

&lt;p&gt;For an access layer, the procurement questions write themselves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where does the database password live after onboarding?&lt;/li&gt;
&lt;li&gt;Is it stored as long-lived plaintext by a third party?&lt;/li&gt;
&lt;li&gt;Can the caller prove freshness (timestamp, nonce) and integrity (signature) on every request?&lt;/li&gt;
&lt;li&gt;Can you restrict which IPs may call the path?&lt;/li&gt;
&lt;li&gt;If the access vendor is compromised, what exactly do they hold?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A design that encrypts credentials on the client, never stores the plaintext password, and signs every request is a different risk conversation from a design that asks you to become another vault of production secrets.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Waste is up. Do not spend the year moving data.
&lt;/h2&gt;

&lt;p&gt;Flexera’s 2026 State of the Cloud Report (753 cloud decision-makers) is the FinOps counterpart to the security numbers.&lt;/p&gt;

&lt;p&gt;Estimated wasted cloud spend ticked up to &lt;strong&gt;29%&lt;/strong&gt; — the first increase after five years of decline. Managing cloud spend remains a top challenge for &lt;strong&gt;85%&lt;/strong&gt; of respondents. &lt;strong&gt;76%&lt;/strong&gt; of large enterprises now spend more than &lt;strong&gt;$5 million a month&lt;/strong&gt; on public cloud. &lt;strong&gt;73%&lt;/strong&gt; operate hybrid environments. Flexera attributes the waste reversal to AI workloads and a thicker layer of PaaS/SaaS, not to a sudden loss of FinOps interest.&lt;/p&gt;

&lt;p&gt;That is the wrong year to invent a second program: move Redis to vendor A, Postgres to vendor B, rewrite drivers, dual-run backups, re-open compliance, and hope the compute savings survive contact with the data bill.&lt;/p&gt;

&lt;p&gt;Managed serverless databases are good products when the &lt;em&gt;goal&lt;/em&gt; is to re-host data. They are a different trade. If leadership’s actual goal is “stop paying for idle application servers” or “let this function reach the system of record we already run,” a data migration is optional. Treat it as optional on paper.&lt;/p&gt;

&lt;p&gt;An honest TCO line has four entries, not one:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compute (functions, edge, remaining VMs)&lt;/li&gt;
&lt;li&gt;Data platform (the current database, plus any new one)&lt;/li&gt;
&lt;li&gt;Connectivity (VPN, NAT, custom proxies, vendor poolers)&lt;/li&gt;
&lt;li&gt;People (on-call, dual-running, incident load)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The access layer is meant to shrink #3 and keep #2 from growing unless you chose that growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The runtime map, stated accurately
&lt;/h2&gt;

&lt;p&gt;Do not brief the board with “edge cannot do TCP.” That sentence is false for some runtimes and incomplete for others.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Runtime / product&lt;/th&gt;
&lt;th&gt;What is actually true&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vercel Edge Runtime&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Official network APIs are &lt;code&gt;fetch&lt;/code&gt;, WebSocket, and Web standards. There is no Node &lt;code&gt;net&lt;/code&gt; / general TCP socket API. HTTP-capable drivers or a proxy are the path.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare Workers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Outbound TCP exists via &lt;code&gt;connect()&lt;/code&gt;. Sockets cannot be created in global scope and shared across requests. Each open socket counts toward the isolate’s simultaneous-connection limit. App-managed pools do not survive the isolate model.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare Hyperdrive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Connection pooling and query caching for &lt;strong&gt;existing Postgres or MySQL&lt;/strong&gt;, used &lt;strong&gt;from Workers&lt;/strong&gt;. It is not a multi-runtime layer and it is not Redis.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AWS Lambda / Node functions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;TCP works. The remaining work is connection storms, pool leaks when environments freeze, and private-network glue.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Corporate VPN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strong for VMs and laptops. A poor universal client for short-lived edge isolates.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mixed org (the common case)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One-off tunnels per team become shadow infrastructure.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;NIST’s Zero Trust framing is useful here too: do not treat “we are on the VPN” as the security model for every new runtime. Secure the session to the resource.&lt;/p&gt;

&lt;p&gt;The practical standard for a company that runs Workers &lt;em&gt;and&lt;/em&gt; Lambda &lt;em&gt;and&lt;/em&gt; a few Node services is one HTTPS access model: signed, credential-aware, IP-restrictable, same from every runtime that can call &lt;code&gt;fetch&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A 30-day playbook
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Split the three decisions on one page.&lt;/strong&gt; Where it runs, where data stays, how it reaches that data. If sentence two is “we migrate because serverless cannot see the database,” rewrite sentence three.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Close public database ports first.&lt;/strong&gt; Scan 3306, 5432, 6379, 27017. Private segment. Jump host with MFA if a human needs a shell.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freeze accidental data migrations.&lt;/strong&gt; Re-host only when the data platform itself is the product decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat database passwords as non-human identities.&lt;/strong&gt; Prefer client-side encryption and short-lived use. Rotate anything valid since 2022 — GitGuardian’s &lt;strong&gt;64%&lt;/strong&gt; figure exists because most teams do not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick one access standard.&lt;/strong&gt; One signed HTTPS path across Workers, Lambda, Node, Python, and scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review at 30 / 60 / 90 days.&lt;/strong&gt; Open ports, secret findings, function spend, leftover VM spend, access-layer spend, incidents.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  6. Where an HTTPS access layer fits
&lt;/h2&gt;

&lt;p&gt;This is the job an access layer is for: keep Redis, Postgres, and MySQL where they already run; reach them from runtimes that speak HTTPS; do not open the database port; do not hand the password over as dashboard plaintext.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zedgi.app" rel="noopener noreferrer"&gt;ZedGi&lt;/a&gt; is one implementation of that pattern. It is a TCP-to-HTTP proxy control plane, not a database.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your serverless / edge / Node app
        │  HTTPS (HMAC-signed + client-encrypted creds)
        ▼
Control plane (Cloudflare Workers + D1 + KV)
        │  short-lived bridge token
        ▼
Bridge node (Node.js, pooled TCP)
        │  native protocol
        ▼
Your Redis / Postgres / MySQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live today:&lt;/strong&gt; Redis, Postgres, MySQL / MariaDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beta:&lt;/strong&gt; Memcached, MongoDB, RabbitMQ, NATS, MQTT, LDAP/LDAPS, SFTP, plus custom TCP on request&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credentials:&lt;/strong&gt; encrypted client-side with ECIES (X25519 + AES-256-GCM) before they leave the app. ZedGi does not store the database password in plaintext. The bridge decrypts it in memory only long enough to open TCP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth:&lt;/strong&gt; every &lt;code&gt;/rpc&lt;/code&gt; call is HMAC-signed (API key + timestamp + nonce + body hash). Optional caller IP allowlist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing (public):&lt;/strong&gt; about &lt;strong&gt;30,000&lt;/strong&gt; free requests/month, no card; &lt;strong&gt;$10 per 1M&lt;/strong&gt; after that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not a managed database. It is not Cloudflare Hyperdrive (Workers-only SQL pooling). It is not a Prisma &lt;code&gt;DATABASE_URL&lt;/code&gt; / native wire-protocol tunnel. It is not unsigned &lt;code&gt;fetch&lt;/code&gt; to a public port.&lt;/p&gt;

&lt;h3&gt;
  
  
  When not to use this pattern
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You need a drop-in native driver URL for an ORM&lt;/li&gt;
&lt;li&gt;The hot path is extremely chatty and every extra hop must be local LAN&lt;/li&gt;
&lt;li&gt;You need long-lived server-push semantics that do not map to request/response RPC&lt;/li&gt;
&lt;li&gt;Re-hosting onto a managed serverless database &lt;em&gt;is&lt;/em&gt; the strategy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Decision line
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Close the port&lt;/strong&gt; because Intruder, Wiz, CISA, and CIS are describing the same cheap failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop scattering database passwords&lt;/strong&gt; because IBM’s encryption gap and GitGuardian’s 28.65 million new secrets are the same failure in a different costume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not buy a data migration&lt;/strong&gt; to unlock functions, because Flexera’s waste line just turned up for the first time in five years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standardize the access path&lt;/strong&gt; because Workers, Edge, and Lambda do not share a socket model — they share HTTPS.&lt;/p&gt;

&lt;p&gt;That is the whole program. The product you pick for the last step is secondary. The sequence is not.&lt;/p&gt;

&lt;p&gt;Try it: &lt;a href="https://zedgi.app" rel="noopener noreferrer"&gt;https://zedgi.app&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://docs.zedgi.app" rel="noopener noreferrer"&gt;https://docs.zedgi.app&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/reports/data-breach" rel="noopener noreferrer"&gt;IBM Cost of a Data Breach Report 2026&lt;/a&gt; — $4.99M global average (+12%); AI-driven attacks +56%&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://newsroom.ibm.com/2026-07-29-ibm-study-one-in-four-malicious-breaches-are-ai-enabled,-costing-companies-6-million-on-average" rel="noopener noreferrer"&gt;IBM press, 29 Jul 2026&lt;/a&gt; — 1 in 4 malicious breaches AI-enabled; 37% encrypt at rest and in transit&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.verizon.com/business/resources/reports/dbir/" rel="noopener noreferrer"&gt;Verizon 2026 DBIR&lt;/a&gt; — 31% start with vulnerabilities; 48% involve ransomware; credentials as data in 28%&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.gitguardian.com/the-state-of-secrets-sprawl-2026/" rel="noopener noreferrer"&gt;GitGuardian State of Secrets Sprawl 2026&lt;/a&gt; — 28.65M public GitHub secrets in 2025; 64% of 2022-valid secrets still live&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.flexera.com/about-us/press-center/flexera-finds-cloud-value-is-rising-while-ai-waste-grows" rel="noopener noreferrer"&gt;Flexera 2026 State of the Cloud&lt;/a&gt; — 29% wasted spend; first rise in five years&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://securitybrief.co.uk/story/intruder-finds-exposed-mysql-databases-in-26-of-firms" rel="noopener noreferrer"&gt;Intruder 2026 ASM Index&lt;/a&gt; — 26% exposed MySQL&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wiz.io/blog/database-ransomware-research" rel="noopener noreferrer"&gt;Wiz, Database Ransomware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.cloudflare.com/hyperdrive/" rel="noopener noreferrer"&gt;Cloudflare Hyperdrive&lt;/a&gt; · &lt;a href="https://developers.cloudflare.com/workers/runtime-apis/tcp-sockets/" rel="noopener noreferrer"&gt;Workers TCP sockets&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://edge-runtime.vercel.app/features/available-apis" rel="noopener noreferrer"&gt;Vercel Edge Runtime APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-212a" rel="noopener noreferrer"&gt;CISA AA25-212A&lt;/a&gt; · &lt;a href="https://csrc.nist.gov/publications/detail/sp/800-207/final" rel="noopener noreferrer"&gt;NIST SP 800-207&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>database</category>
      <category>security</category>
    </item>
    <item>
      <title>Serverless Transition Best Practices for Companies (Without Forcing a Database Migration)</title>
      <dc:creator>ZedGi</dc:creator>
      <pubDate>Mon, 10 Aug 2026 07:25:49 +0000</pubDate>
      <link>https://dev.to/zedgi/serverless-transition-best-practices-for-companies-without-forcing-a-database-migration-30ml</link>
      <guid>https://dev.to/zedgi/serverless-transition-best-practices-for-companies-without-forcing-a-database-migration-30ml</guid>
      <description>&lt;h1&gt;
  
  
  Serverless Transition Best Practices for Companies (Without Forcing a Database Migration)
&lt;/h1&gt;

&lt;p&gt;Moving to serverless is not a framework choice. It is an operating-model change: how you buy capacity, how you ship slices of product, and how every runtime reaches the systems of record you already run.&lt;/p&gt;

&lt;p&gt;This guide is a practical checklist for companies mid-transition. It is written so platform teams can hand it to product engineering without hand-waving.&lt;/p&gt;

&lt;h2&gt;
  
  
  Principle 0: Split three decisions
&lt;/h2&gt;

&lt;p&gt;Before any migration ticket, separate:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Compute placement&lt;/strong&gt; — VM / container / function / edge
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data ownership&lt;/strong&gt; — keep existing Redis/Postgres/MySQL vs re-host
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access path&lt;/strong&gt; — VPC, VPN, vendor HTTP API, or HTTPS proxy layer
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most failed programs collapse #1 and #2. Successful ones treat #3 as an explicit product.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best practice 1 — Start with idle economics, not fashion
&lt;/h2&gt;

&lt;p&gt;Serverless wins when you previously paid for capacity that sat idle.&lt;/p&gt;

&lt;p&gt;Public anchors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capital One reported &lt;strong&gt;up to 90% cost savings&lt;/strong&gt; for some applications moved to AWS Lambda (&lt;a href="https://aws.amazon.com/solutions/case-studies/capital-one-lambda-ecs-case-study/" rel="noopener noreferrer"&gt;AWS case study&lt;/a&gt;).
&lt;/li&gt;
&lt;li&gt;A widely cited Coca-Cola Lambda example put ~&lt;strong&gt;360M yearly requests&lt;/strong&gt; at about &lt;strong&gt;$4,490&lt;/strong&gt; vs about &lt;strong&gt;$12,864&lt;/strong&gt; on six always-on T2 Medium servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also track the opposite case: &lt;strong&gt;steady 24/7&lt;/strong&gt; services often stay cheaper on right-sized provisioned capacity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; label each service &lt;code&gt;spiky&lt;/code&gt;, &lt;code&gt;batch&lt;/code&gt;, or &lt;code&gt;steady&lt;/code&gt;. Only the first two are default serverless candidates.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best practice 2 — Strangle; do not big-bang
&lt;/h2&gt;

&lt;p&gt;Migration research and AWS guidance converge here: extract slices, ship them on the new model, leave the monolith behind a gradual cutover.&lt;/p&gt;

&lt;p&gt;Good first slices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Webhooks and outbound integrations
&lt;/li&gt;
&lt;li&gt;Async jobs and queue consumers with idle gaps
&lt;/li&gt;
&lt;li&gt;Internal tools and admin APIs
&lt;/li&gt;
&lt;li&gt;AI agent / automation backends that only need request/response data access
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bad first slices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The hottest multi-join transactional path with sub-5ms DB RTT requirements
&lt;/li&gt;
&lt;li&gt;Anything that needs exotic long-lived server-push semantics on day one
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Best practice 3 — Do not pay the database migration tax by accident
&lt;/h2&gt;

&lt;p&gt;Re-hosting Redis or Postgres onto a managed serverless data product can be the right strategy. It is still a &lt;strong&gt;data program&lt;/strong&gt;, with dual-run cost, driver changes, backup/compliance work, and exit risk.&lt;/p&gt;

&lt;p&gt;If leadership’s actual goal is “stop paying for idle app servers,” make data migration optional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; for each pilot, write one sentence: “Data stays on X because Y.” If you cannot write Y, you are doing an accidental platform rewrite.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best practice 4 — Design the access layer on purpose
&lt;/h2&gt;

&lt;p&gt;Reality by runtime (simplified, accurate enough for planning):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Runtime&lt;/th&gt;
&lt;th&gt;Connectivity reality&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vercel Edge&lt;/td&gt;
&lt;td&gt;HTTP-first; no general TCP sockets like Node&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Workers&lt;/td&gt;
&lt;td&gt;TCP &lt;code&gt;connect()&lt;/code&gt; exists; app-managed pools across isolates are fragile; Hyperdrive helps Workers-side SQL pooling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Lambda&lt;/td&gt;
&lt;td&gt;TCP works; connection pooling + private networking still need design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mixed org (common)&lt;/td&gt;
&lt;td&gt;One-off tunnels per team become shadow infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; pick &lt;strong&gt;one&lt;/strong&gt; access standard for pilots. Document auth, IP policy, and failure modes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where ZedGi fits
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://zedgi.app" rel="noopener noreferrer"&gt;ZedGi&lt;/a&gt; is a bring-your-own Redis / Postgres / MySQL HTTPS access layer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;App (Workers, Edge, Lambda, Node, Python, …)
  → signed HTTPS
  → ZedGi control plane (Cloudflare Workers + D1 + KV)
  → Node bridge with pooled TCP
  → your database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Credentials encrypted client-side; not stored as plaintext on ZedGi
&lt;/li&gt;
&lt;li&gt;Optional caller IP allowlist
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Free ~&lt;strong&gt;30K requests/month&lt;/strong&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Beta adapters for additional TCP services (MongoDB, RabbitMQ, NATS, MQTT, LDAP, SFTP, …)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not&lt;/strong&gt; a managed database. &lt;strong&gt;Not&lt;/strong&gt; a Prisma wire-protocol drop-in.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best practice 5 — Put security gates before traffic
&lt;/h2&gt;

&lt;p&gt;Edge fleets multiply secret surfaces.&lt;/p&gt;

&lt;p&gt;Minimum gates for any access layer (including ZedGi):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Short-lived or rotatable application credentials
&lt;/li&gt;
&lt;li&gt;Request authenticity (signing / mTLS / equivalent)
&lt;/li&gt;
&lt;li&gt;Network allowlisting where applicable
&lt;/li&gt;
&lt;li&gt;Explicit “where are DB passwords stored?” answer
&lt;/li&gt;
&lt;li&gt;Audit trail for key creation and service registration
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ZedGi’s model: client-side encryption of DB credentials, HMAC-signed RPC, optional IP allowlist, transient decrypt only on the bridge hop.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best practice 6 — Instrument unit economics weekly
&lt;/h2&gt;

&lt;p&gt;Track for each pilot:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cost per million invocations&lt;/td&gt;
&lt;td&gt;Catches runaway chatter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;p95 end-to-end latency&lt;/td&gt;
&lt;td&gt;Catches geography + hop issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Error budget / timeout rate&lt;/td&gt;
&lt;td&gt;Catches pool and auth failures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remaining always-on VM spend&lt;/td&gt;
&lt;td&gt;Proves real savings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dual-run data cost&lt;/td&gt;
&lt;td&gt;Proves you avoided (or paid) migration tax&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If cost per million climbs because the app issues 200 DB round trips per user click, fix the application shape before blaming the platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best practice 7 — Keep an exit plan
&lt;/h2&gt;

&lt;p&gt;Procurement and security will ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can we self-host the proxy path later?
&lt;/li&gt;
&lt;li&gt;What happens if we leave?
&lt;/li&gt;
&lt;li&gt;Are we locked into a data format?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BYOD architectures score well here because the &lt;strong&gt;data never left your control&lt;/strong&gt;. Prefer vendors that document self-hosted options and transparent pricing (&lt;a href="https://zedgi.app/self-hosted" rel="noopener noreferrer"&gt;ZedGi self-hosted&lt;/a&gt; / enterprise pages on the product site).&lt;/p&gt;




&lt;h2&gt;
  
  
  30 / 60 / 90 day plan
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Days 0–30
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Inventory idle VMs and spiky services
&lt;/li&gt;
&lt;li&gt;Choose one pilot + one access standard
&lt;/li&gt;
&lt;li&gt;Register Redis or Postgres on ZedGi free tier (or equivalent)
&lt;/li&gt;
&lt;li&gt;Ship one production-adjacent path with observability
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 31–60
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Expand to a second runtime (e.g. Workers + Lambda) using the same access model
&lt;/li&gt;
&lt;li&gt;Add IP allowlists and key rotation drill
&lt;/li&gt;
&lt;li&gt;Compare pilot cost vs previous always-on path
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Days 61–90
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Promote patterns into platform docs
&lt;/li&gt;
&lt;li&gt;Decide which steady services stay provisioned
&lt;/li&gt;
&lt;li&gt;Only then evaluate optional data re-hosting on its own ROI
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When this checklist says “stop”
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need native wire-protocol ORM tunnels
&lt;/li&gt;
&lt;li&gt;Your hot path is extremely chatty and must stay on a local LAN
&lt;/li&gt;
&lt;li&gt;Migration to a managed serverless database &lt;strong&gt;is&lt;/strong&gt; the strategy (not a side effect)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honesty here protects the serverless brand inside the company.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Split compute, data ownership, and access path.
&lt;/li&gt;
&lt;li&gt;Start with spiky workloads and strangler slices.
&lt;/li&gt;
&lt;li&gt;Treat database migration as optional unless it is the goal.
&lt;/li&gt;
&lt;li&gt;Standardize secure multi-runtime access — this is where ZedGi is designed to help.
&lt;/li&gt;
&lt;li&gt;Measure unit economics; keep steady cores on provisioned capacity when cheaper.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Try ZedGi:&lt;/strong&gt; &lt;a href="https://zedgi.app" rel="noopener noreferrer"&gt;https://zedgi.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://docs.zedgi.app" rel="noopener noreferrer"&gt;https://docs.zedgi.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Contact:&lt;/strong&gt; &lt;a href="mailto:olaoluwa@zedgi.app"&gt;olaoluwa@zedgi.app&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AWS Capital One Lambda case study
&lt;/li&gt;
&lt;li&gt;Public Coca-Cola / AWS Lambda cost comparison recaps
&lt;/li&gt;
&lt;li&gt;IBM serverless pay-for-execution model
&lt;/li&gt;
&lt;li&gt;Cloudflare / Vercel ecosystem materials on TCP and Edge constraints
&lt;/li&gt;
&lt;li&gt;Serverless migration literature on gradual cutover patterns
&lt;/li&gt;
&lt;li&gt;ZedGi public product, pricing, and protocol roadmap&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>How Companies Cut Serverless Costs Without Migrating Redis, Postgres, or MySQL</title>
      <dc:creator>ZedGi</dc:creator>
      <pubDate>Thu, 06 Aug 2026 15:19:06 +0000</pubDate>
      <link>https://dev.to/zedgi/how-companies-cut-serverless-costs-without-migrating-redis-postgres-or-mysql-5b5i</link>
      <guid>https://dev.to/zedgi/how-companies-cut-serverless-costs-without-migrating-redis-postgres-or-mysql-5b5i</guid>
      <description>&lt;p&gt;Serverless platforms sell a simple idea: &lt;strong&gt;stop paying for idle capacity&lt;/strong&gt;. That idea is real and incomplete.&lt;/p&gt;

&lt;p&gt;For many companies, the first wave of savings shows up in compute. The second wave of cost and delay shows up in the &lt;strong&gt;data plane&lt;/strong&gt;: Redis caches, Postgres systems of record, MySQL estates, queue brokers, and private TCP services that never moved.&lt;/p&gt;

&lt;p&gt;This post is a business-oriented field guide for teams that want serverless economics &lt;strong&gt;without&lt;/strong&gt; a forced database migration. It also explains where &lt;a href="https://zedgi.app" rel="noopener noreferrer"&gt;ZedGi&lt;/a&gt; fits as a bring-your-own-database (BYOD) HTTPS access layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Why serverless saves money (and when it does not)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What the public cases actually show
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Capital One&lt;/strong&gt; reported &lt;strong&gt;up to 90% cost savings&lt;/strong&gt; for some applications after moving them to AWS Lambda (official AWS case study).&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;widely cited Coca-Cola / AWS Lambda example&lt;/strong&gt; compared roughly &lt;strong&gt;360 million yearly requests&lt;/strong&gt; at about &lt;strong&gt;$12,864&lt;/strong&gt; on six always-on T2 Medium servers versus about &lt;strong&gt;$4,490&lt;/strong&gt; with Lambda.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those numbers are about &lt;strong&gt;function hosting economics&lt;/strong&gt;, not magic. They work when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traffic is spiky or event-driven
&lt;/li&gt;
&lt;li&gt;Idle time used to be expensive
&lt;/li&gt;
&lt;li&gt;Ops load of patching and capacity planning was high
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When serverless is the wrong cost lever
&lt;/h3&gt;

&lt;p&gt;If a service is &lt;strong&gt;near-constant load 24/7&lt;/strong&gt;, provisioned VMs or containers can be cheaper than per-invocation pricing. Good FinOps practice is to &lt;strong&gt;measure&lt;/strong&gt; before rewriting:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload shape&lt;/th&gt;
&lt;th&gt;Often cheaper on&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Webhooks, cron bursts, campaign spikes&lt;/td&gt;
&lt;td&gt;Serverless functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overnight batch, queue consumers with idle gaps&lt;/td&gt;
&lt;td&gt;Serverless or scale-to-zero containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Steady multi-core API with constant QPS&lt;/td&gt;
&lt;td&gt;Reserved VMs / right-sized containers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Takeaway for leadership:&lt;/strong&gt; serverless is a &lt;strong&gt;portfolio&lt;/strong&gt; decision, not a religion.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The hidden migration tax
&lt;/h2&gt;

&lt;p&gt;Teams that “go serverless” often invent a second project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Move Redis to a hosted serverless Redis
&lt;/li&gt;
&lt;li&gt;Move Postgres to a hosted serverless Postgres
&lt;/li&gt;
&lt;li&gt;Change drivers, auth, backup, compliance, and runbooks
&lt;/li&gt;
&lt;li&gt;Run dual systems during cutover
&lt;/li&gt;
&lt;li&gt;Discover edge runtimes still need a special access path
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the &lt;strong&gt;migration tax&lt;/strong&gt;. It can erase year-one compute savings.&lt;/p&gt;

&lt;p&gt;Managed serverless databases are excellent products for many teams. They are still a &lt;strong&gt;different trade&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You usually &lt;strong&gt;move or re-host data&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Pricing mixes requests, storage, bandwidth, and platform limits
&lt;/li&gt;
&lt;li&gt;Multi-protocol stacks (Redis &lt;strong&gt;and&lt;/strong&gt; Postgres &lt;strong&gt;and&lt;/strong&gt; MySQL) become multi-vendor
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the strategic goal is “reduce idle compute” — not “replace our data estate” — reverse the order of operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Connectivity reality across serverless runtimes
&lt;/h2&gt;

&lt;p&gt;Do not oversimplify this as “edge cannot do TCP.” Reality is more specific:&lt;/p&gt;

&lt;h3&gt;
  
  
  Vercel Edge runtime
&lt;/h3&gt;

&lt;p&gt;The Edge runtime is &lt;strong&gt;HTTP-first&lt;/strong&gt;. TCP/UDP socket APIs are not available the way they are in Node. Database access typically requires HTTP-capable drivers or a proxy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloudflare Workers
&lt;/h3&gt;

&lt;p&gt;Workers support outbound TCP via &lt;code&gt;connect()&lt;/code&gt;, and Cloudflare also offers Hyperdrive for &lt;strong&gt;Workers-bound&lt;/strong&gt; SQL pooling. Practical issues remain for many apps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Isolates freeze between requests
&lt;/li&gt;
&lt;li&gt;App-managed pools (&lt;code&gt;pg.Pool&lt;/code&gt;, long-lived sockets) go stale
&lt;/li&gt;
&lt;li&gt;You still need a model for Redis and multi-runtime callers
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AWS Lambda / classic serverless Node
&lt;/h3&gt;

&lt;p&gt;TCP works. The pain is &lt;strong&gt;connection storms&lt;/strong&gt;, pool leaks when execution environments suspend, and operational glue for private networks.&lt;/p&gt;

&lt;h3&gt;
  
  
  VPNs
&lt;/h3&gt;

&lt;p&gt;WireGuard/IPSec are strong tools for VMs. They are not something you casually run inside edge isolates for every function invocation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Business translation:&lt;/strong&gt; connectivity is an architecture product. Leaving every team to invent tunnels is how “serverless” becomes more expensive, not less.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. What ZedGi is (and is not)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ZedGi&lt;/strong&gt; is a TCP-to-HTTP proxy control plane. Your app sends signed HTTPS requests. ZedGi routes to a bridge node that opens the real TCP connection to your service, runs the command/query, and returns the result.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your serverless / edge app
        │  HTTPS (signed + encrypted creds)
        ▼
ZedGi control plane (Cloudflare Workers + D1 + KV)
        │  short-lived bridge token
        ▼
Bridge node (Node.js, pooled TCP)
        │  native protocol
        ▼
Your Redis / Postgres / MySQL (or beta TCP services)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Live today
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Redis
&lt;/li&gt;
&lt;li&gt;Postgres
&lt;/li&gt;
&lt;li&gt;MySQL / MariaDB
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Beta adapters
&lt;/h3&gt;

&lt;p&gt;Memcached, MongoDB, RabbitMQ, NATS, MQTT, LDAP/LDAPS, SFTP, plus custom TCP on request.&lt;/p&gt;

&lt;h3&gt;
  
  
  What ZedGi is &lt;strong&gt;not&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Not a managed database
&lt;/li&gt;
&lt;li&gt;Not a Prisma / native wire-protocol &lt;code&gt;DATABASE_URL&lt;/code&gt; tunnel
&lt;/li&gt;
&lt;li&gt;Not “unsigned bare &lt;code&gt;fetch&lt;/code&gt; to a public DB port”
&lt;/li&gt;
&lt;li&gt;Not Workers-only (unlike Hyperdrive bindings)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Security model that holds up in reviews
&lt;/h2&gt;

&lt;p&gt;Security teams care about where passwords live.&lt;/p&gt;

&lt;p&gt;ZedGi’s model:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Client-side encryption&lt;/strong&gt; of database credentials (AES-256 / ECIES) before they leave your app
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No plaintext password storage&lt;/strong&gt; in ZedGi’s control plane stores
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HMAC-signed requests&lt;/strong&gt; (API key + timestamp + nonce + body hash) to reduce tampering/replay
&lt;/li&gt;
&lt;li&gt;Optional &lt;strong&gt;caller IP allowlist&lt;/strong&gt; per service
&lt;/li&gt;
&lt;li&gt;Bridge decrypts credentials &lt;strong&gt;transiently in memory&lt;/strong&gt; only long enough to open TCP
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is a deliberate trade: ZedGi is an access path, not a password vault for your database.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Cost model: public numbers only
&lt;/h2&gt;

&lt;p&gt;From &lt;a href="https://zedgi.app" rel="noopener noreferrer"&gt;zedgi.app&lt;/a&gt; pricing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;~&lt;strong&gt;30,000 requests/month&lt;/strong&gt; (~1,000/day), no credit card, caller IP allowlist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom pricing above ~&lt;strong&gt;10M&lt;/strong&gt; requests/month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Compare that TCO conversation to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always-on proxy VMs + on-call
&lt;/li&gt;
&lt;li&gt;VPN mesh for every environment
&lt;/li&gt;
&lt;li&gt;Multi-vendor serverless DB bills during a multi-year dual-run
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Again: industry Lambda cases prove &lt;strong&gt;compute&lt;/strong&gt; leverage. ZedGi’s role is to &lt;strong&gt;unlock that leverage&lt;/strong&gt; without making data migration the gate.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Best practices for a company serverless transition
&lt;/h2&gt;

&lt;p&gt;These practices show up consistently in migration research and AWS guidance: start gradual, prefer strangler cutovers, and invest in observability early.&lt;/p&gt;

&lt;h3&gt;
  
  
  Checklist for engineering leadership
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Inventory idle spend&lt;/strong&gt; — VMs that exist for rare peaks are prime candidates.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classify data dependencies&lt;/strong&gt; — which paths need Redis, Postgres, MySQL, queues?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick pilot slices&lt;/strong&gt; — webhooks, internal tools, async jobs, AI agent backends.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep data ownership&lt;/strong&gt; unless migration is the actual goal.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standardize access&lt;/strong&gt; — one HTTPS access model beats five SSH tunnels.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instrument first&lt;/strong&gt; — latency, error budgets, cost per million invocations.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define “done” for security&lt;/strong&gt; — where secrets live, who can call which service, IP policy.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid big-bang rewrites&lt;/strong&gt; — strangler pattern keeps the cost case honest.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revisit steady-state services&lt;/strong&gt; — not everything belongs on pure serverless.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write a exit plan&lt;/strong&gt; — self-hosted proxy options matter for procurement.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ZedGi maps to steps 4–7: BYOD connectivity, signed access, IP allowlists, predictable per-request pricing.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Minimal developer path (accurate)
&lt;/h2&gt;

&lt;p&gt;Install the TypeScript client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @zedgi/zedgi-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createZedgiClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@zedgi/zedgi-client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;zedgi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createZedgiClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://YOUR_SUBDOMAIN.zedgi.app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ZEDGI_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;credentials&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;redis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;REDIS_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;postgres&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PG_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Redis over HTTPS&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;redis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;zedgi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;redis&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;redis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;edge:hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Postgres over HTTPS&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;zedgi&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;postgres&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SELECT now() AS ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The SDK handles request signing and client-side credential encryption. Python and raw HTTPS are also supported.&lt;/p&gt;

&lt;p&gt;Docs: &lt;a href="https://docs.zedgi.app" rel="noopener noreferrer"&gt;https://docs.zedgi.app&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. When &lt;strong&gt;not&lt;/strong&gt; to use ZedGi
&lt;/h2&gt;

&lt;p&gt;Be honest with stakeholders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need a &lt;strong&gt;native wire-protocol&lt;/strong&gt; ORM tunnel (e.g. drop-in Prisma &lt;code&gt;DATABASE_URL&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;Your hot path is extremely &lt;strong&gt;chatty&lt;/strong&gt; (thousands of round trips per user action) and every hop must be local LAN
&lt;/li&gt;
&lt;li&gt;You require long-lived &lt;strong&gt;server-push&lt;/strong&gt; semantics that do not map well to request/response RPC for your use case
&lt;/li&gt;
&lt;li&gt;You are happy to &lt;strong&gt;fully migrate&lt;/strong&gt; into a managed serverless database and that is the product strategy
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ZedGi optimizes for &lt;strong&gt;ownership + multi-runtime reach + operational simplicity&lt;/strong&gt;, not for replacing every database driver on the planet.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Competitive framing (tradeoffs, not trash-talk)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;Tradeoff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Managed serverless DB (e.g. Upstash, Neon)&lt;/td&gt;
&lt;td&gt;Great DX if you adopt their data plane&lt;/td&gt;
&lt;td&gt;Migration / lock-in; multi-DB stacks multiply vendors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Hyperdrive&lt;/td&gt;
&lt;td&gt;Strong Workers-side SQL pooling&lt;/td&gt;
&lt;td&gt;Workers-bound; not a multi-runtime Redis+SQL BYOD layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPN / private network&lt;/td&gt;
&lt;td&gt;Familiar enterprise networking&lt;/td&gt;
&lt;td&gt;Heavy for edge isolates; ops overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In-house proxy&lt;/td&gt;
&lt;td&gt;Full control&lt;/td&gt;
&lt;td&gt;You own auth, pooling, multi-region, on-call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ZedGi&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;BYOD Redis/Postgres/MySQL over HTTPS; client-side encrypted creds&lt;/td&gt;
&lt;td&gt;RPC hop; not a wire-protocol tunnel&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Bottom line for decision-makers
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Serverless can cut &lt;strong&gt;idle compute&lt;/strong&gt; cost — public cases from Capital One and Coca-Cola’s Lambda example show the scale of the opportunity when the workload fits.
&lt;/li&gt;
&lt;li&gt;Forced &lt;strong&gt;database migration&lt;/strong&gt; is a separate, expensive program.
&lt;/li&gt;
&lt;li&gt;Connectivity is the silent blocker between “we want serverless” and “we shipped it.”
&lt;/li&gt;
&lt;li&gt;ZedGi exists so companies can keep Redis, Postgres, and MySQL, reach them from modern runtimes over HTTPS, and start free: &lt;strong&gt;~30K requests/month&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Try it: &lt;a href="https://zedgi.app" rel="noopener noreferrer"&gt;https://zedgi.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Docs: &lt;a href="https://docs.zedgi.app" rel="noopener noreferrer"&gt;https://docs.zedgi.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Contact: &lt;a href="mailto:olaoluwa@zedgi.app"&gt;olaoluwa@zedgi.app&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Sources (industry)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AWS — Capital One Lambda / ECS case study (up to 90% cost savings for some apps)
&lt;/li&gt;
&lt;li&gt;Public recaps of the Coca-Cola / Michael Connor AWS serverless cost comparison (~$12,864 → ~$4,490 for ~360M yearly requests)
&lt;/li&gt;
&lt;li&gt;IBM Think — serverless pay-for-execution / reduced idle capacity model
&lt;/li&gt;
&lt;li&gt;Serverless migration literature on gradual/strangler approaches
&lt;/li&gt;
&lt;li&gt;Cloudflare / Vercel public docs and ecosystem write-ups on TCP and Edge limitations
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
