<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Whitepapers on Solanica</title><link>https://solanica.io/whitepapers/</link><description>Recent content in Whitepapers on Solanica</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://solanica.io/whitepapers/index.xml" rel="self" type="application/rss+xml"/><item><title>A Complete Guide to Stateful Workloads on Kubernetes</title><link>https://solanica.io/whitepapers/production-data-on-k8s/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://solanica.io/whitepapers/production-data-on-k8s/</guid><description>&lt;section class="sol-whitepaper-hero"&gt; &lt;div class="sol-container"&gt; &lt;div class="sol-hero-content"&gt; &lt;div class="sol-breadcrumb"&gt; &lt;span class="sol-mono"&gt;/whitepapers/&lt;/span&gt; &lt;span class="sol-status-icon info"&gt;❯&lt;/span&gt; &lt;span class="sol-mono"&gt;data-on-kubernetes&lt;/span&gt; &lt;/div&gt; &lt;h1&gt;The Cloud-Native Data Manual&lt;/h1&gt; &lt;h2&gt;Engineering Production Databases on Kubernetes&lt;/h2&gt; &lt;p class="sol-tagline"&gt;The debate is over. The real question is: &lt;code&gt;how&lt;/code&gt; do you manage stateful workloads without losing data or burning cash?&lt;/p&gt; &lt;div class="sol-metadata"&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon success"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;STATUS: PRODUCTION_READY&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon info"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;AUDIENCE: SRE | DBRE | PLATFORM_ENG&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon warning"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;LEVEL: ADVANCED_OPS&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/section&gt; &lt;style&gt;
 /* --- Base --- */
 .sol-whitepaper-hero {
 background: linear-gradient(135deg, #0a0a1f 0%, #161641 100%);
 padding: 120px 20px 80px 20px;
 font-family: 'Inter', sans-serif;
 color: #ffffff;
 border-bottom: 2px solid #7790de;
 position: relative;
 overflow: hidden;
 }

 .sol-whitepaper-hero::before {
 content: '';
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
 bottom: 0;
 background-image: 
 linear-gradient(90deg, rgba(119, 144, 222, 0.05) 1px, transparent 1px),
 linear-gradient(rgba(119, 144, 222, 0.05) 1px, transparent 1px);
 background-size: 50px 50px;
 opacity: 0.3;
 pointer-events: none;
 }

 .sol-container {
 max-width: 1200px;
 margin: 0 auto;
 position: relative;
 z-index: 1;
 }

 /* --- Breadcrumb --- */
 .sol-breadcrumb {
 display: flex;
 align-items: center;
 gap: 10px;
 margin-bottom: 30px;
 font-size: 14px;
 }

 .sol-mono {
 font-family: 'Courier New', monospace;
 color: #7790de;
 font-weight: 600;
 }

 .sol-status-icon {
 font-size: 12px;
 }
 .success { color: #00ff9d; }
 .info { color: #2ecc71; }
 .warning { color: #ffbd2e; }

 /* --- Typography --- */
 .sol-hero-content h1 {
 font-size: 56px;
 line-height: 1.1;
 font-weight: 800;
 margin: 0 0 15px 0;
 color: #ffffff;
 letter-spacing: -0.5px;
 }

 .sol-hero-content h2 {
 font-size: 32px;
 line-height: 1.3;
 font-weight: 600;
 margin: 0 0 30px 0;
 color: #7790de;
 }

 .sol-tagline {
 font-size: 20px;
 line-height: 1.6;
 color: #b4bec8;
 margin-bottom: 40px;
 max-width: 800px;
 }

 .sol-tagline code {
 background: rgba(119, 144, 222, 0.15);
 color: #00ff9d;
 padding: 2px 10px;
 border-radius: 4px;
 font-family: 'Fira Code', 'Courier New', monospace;
 font-size: 0.95em;
 font-weight: 600;
 }

 /* --- Metadata --- */
 .sol-metadata {
 display: flex;
 flex-wrap: wrap;
 gap: 20px;
 margin-top: 40px;
 padding-top: 30px;
 border-top: 1px solid rgba(255,255,255,0.1);
 }

 .sol-meta-item {
 display: flex;
 align-items: center;
 gap: 8px;
 font-size: 13px;
 }

 @media (max-width: 768px) {
 .sol-hero-content h1 { font-size: 36px; }
 .sol-hero-content h2 { font-size: 24px; }
 .sol-tagline { font-size: 16px; }
 .sol-metadata { flex-direction: column; gap: 15px; }
 }
&lt;/style&gt;

&lt;section class="sol-exec-summary"&gt; &lt;div class="sol-container"&gt; &lt;div class="sol-section-header"&gt; &lt;span class="sol-mono sol-section-label"&gt;$ cat executive-summary.txt&lt;/span&gt; &lt;h2&gt;Executive Summary&lt;/h2&gt; &lt;/div&gt; &lt;div class="sol-summary-content"&gt; &lt;div class="sol-main-text"&gt; &lt;p&gt;The debate over whether databases "belong" on Kubernetes is settled. The discussion is now strictly operational: how do you manage stateful workloads at scale without losing data or overpaying for "zombie" resources? Kubernetes is a world-class orchestrator, but it is fundamentally "data-blind." It understands process status, but it is oblivious to database deadlocks or replica divergence.&lt;/p&gt;</description></item><item><title>MongoDB on Kubernetes: Replica Sets, Sharding &amp; Operators Guide</title><link>https://solanica.io/whitepapers/mongodb-on-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://solanica.io/whitepapers/mongodb-on-kubernetes/</guid><description>&lt;section class="sol-mg-hero"&gt; &lt;div class="sol-mg-container"&gt; &lt;nav class="sol-mg-breadcrumb"&gt; &lt;a href="https://solanica.io/whitepapers/" class="sol-mg-breadcrumb-link"&gt;whitepapers&lt;/a&gt; &lt;span class="sol-mg-breadcrumb-sep"&gt;❯&lt;/span&gt; &lt;span class="sol-mg-breadcrumb-current"&gt;mongodb-on-kubernetes&lt;/span&gt; &lt;/nav&gt; &lt;div class="sol-mg-hero-content"&gt; &lt;div class="sol-mg-hero-label"&gt; &lt;span class="sol-mg-mono"&gt;$ kubectl get mongodbclusters --all-namespaces&lt;/span&gt; &lt;/div&gt; &lt;h1&gt;Running MongoDB&lt;br&gt;on Kubernetes&lt;/h1&gt; &lt;h2&gt;Replica Sets, Sharded Clusters &amp;amp; Operator Comparison&lt;/h2&gt; &lt;div class="sol-mg-metadata"&gt; &lt;div class="sol-mg-badge"&gt; &lt;span class="sol-mg-badge-label"&gt;STATUS&lt;/span&gt; &lt;span class="sol-mg-badge-value"&gt;PRODUCTION_READY&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-mg-badge"&gt; &lt;span class="sol-mg-badge-label"&gt;AUDIENCE&lt;/span&gt; &lt;span class="sol-mg-badge-value"&gt;DBA | SRE | PLATFORM_ENG&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-mg-badge"&gt; &lt;span class="sol-mg-badge-label"&gt;DATABASE&lt;/span&gt; &lt;span class="sol-mg-badge-value"&gt;MongoDB 6+&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/section&gt; &lt;style&gt;
 .sol-mg-hero {
 background: linear-gradient(135deg, #0a0a1f 0%, #0f0f2d 60%, #1a0f30 100%);
 padding: 80px 20px 100px;
 font-family: 'Inter', sans-serif;
 color: #ffffff;
 position: relative;
 overflow: hidden;
 }

 .sol-mg-hero::before {
 content: '';
 position: absolute;
 top: 0; left: 0; right: 0; bottom: 0;
 background-image:
 linear-gradient(90deg, rgba(0, 255, 157, 0.03) 1px, transparent 1px),
 linear-gradient(rgba(0, 255, 157, 0.03) 1px, transparent 1px);
 background-size: 50px 50px;
 pointer-events: none;
 }

 .sol-mg-hero .sol-mg-container {
 max-width: 1200px;
 margin: 0 auto;
 position: relative;
 z-index: 1;
 }

 .sol-mg-hero .sol-mg-breadcrumb {
 display: flex;
 align-items: center;
 gap: 8px;
 margin-bottom: 48px;
 font-size: 13px;
 font-family: 'Courier New', monospace;
 opacity: 0.7;
 }

 .sol-mg-hero .sol-mg-breadcrumb-link {
 color: #00ff9d;
 text-decoration: none;
 }

 .sol-mg-hero .sol-mg-breadcrumb-link:hover { text-decoration: underline; }
 .sol-mg-hero .sol-mg-breadcrumb-sep { color: #b4bec8; }
 .sol-mg-hero .sol-mg-breadcrumb-current { color: #b4bec8; }

 .sol-mg-hero .sol-mg-mono {
 font-family: 'Courier New', monospace;
 font-size: 14px;
 color: #00ff9d;
 background: rgba(0, 255, 157, 0.1);
 padding: 8px 14px;
 border-radius: 4px;
 border-left: 3px solid #00ff9d;
 }

 .sol-mg-hero h1 {
 font-size: 64px;
 font-weight: 800;
 line-height: 1.1;
 margin: 24px 0 16px 0;
 color: #ffffff;
 letter-spacing: -1px;
 }

 .sol-mg-hero h2 {
 font-size: 22px;
 font-weight: 400;
 color: #b4bec8;
 margin: 0 0 40px 0;
 line-height: 1.4;
 }

 .sol-mg-hero .sol-mg-metadata {
 display: flex;
 flex-wrap: wrap;
 gap: 12px;
 }

 .sol-mg-hero .sol-mg-badge {
 display: inline-flex;
 align-items: center;
 border: 1px solid #2a2a5c;
 border-radius: 4px;
 overflow: hidden;
 font-family: 'Courier New', monospace;
 font-size: 12px;
 }

 .sol-mg-hero .sol-mg-badge-label {
 background: rgba(0, 255, 157, 0.1);
 color: #00ff9d;
 padding: 5px 10px;
 font-weight: 600;
 letter-spacing: 0.5px;
 border-right: 1px solid #2a2a5c;
 }

 .sol-mg-hero .sol-mg-badge-value {
 color: #d1d5db;
 padding: 5px 10px;
 }

 @media (max-width: 768px) {
 .sol-mg-hero { padding: 60px 20px 70px; }
 .sol-mg-hero h1 { font-size: 38px; }
 .sol-mg-hero h2 { font-size: 18px; }
 }
&lt;/style&gt;

&lt;section class="sol-mg-toc-section"&gt; &lt;div class="sol-mg-toc-container"&gt; &lt;div class="sol-mg-toc-header"&gt; &lt;span class="sol-mg-toc-label"&gt;$ cat mongodb-on-kubernetes/table-of-contents.md&lt;/span&gt; &lt;p class="sol-mg-toc-intro"&gt;This guide covers production MongoDB on Kubernetes end-to-end — from replica set topology and sharded cluster architecture to operator selection, PITR backups, and compute sizing.&lt;/p&gt;</description></item><item><title>MySQL on Kubernetes: Architecture, Topologies &amp; Operators Guide</title><link>https://solanica.io/whitepapers/mysql-on-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://solanica.io/whitepapers/mysql-on-kubernetes/</guid><description>&lt;section class="sol-mysql-hero"&gt; &lt;div class="sol-container"&gt; &lt;div class="sol-hero-content"&gt; &lt;div class="sol-breadcrumb"&gt; &lt;span class="sol-mono"&gt;/whitepapers/&lt;/span&gt; &lt;span class="sol-status-icon info"&gt;❯&lt;/span&gt; &lt;span class="sol-mono"&gt;mysql-on-kubernetes&lt;/span&gt; &lt;/div&gt; &lt;h1&gt;Running MySQL on Kubernetes&lt;/h1&gt; &lt;h2&gt;A Complete Architecture Guide&lt;/h2&gt; &lt;p class="sol-tagline"&gt;MySQL is one of the most mature relational databases in the world. Running it on Kubernetes is no longer a question of &lt;code&gt;if&lt;/code&gt; — it's a question of &lt;code&gt;how&lt;/code&gt;.&lt;/p&gt; &lt;div class="sol-metadata"&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon success"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;STATUS: PRODUCTION_READY&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon info"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;AUDIENCE: DBA | SRE | PLATFORM_ENG&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon warning"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;DATABASE: MySQL 8.x+&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/section&gt; &lt;style&gt;
 .sol-mysql-hero {
 background: linear-gradient(135deg, #0a0a1f 0%, #161641 100%);
 padding: 120px 20px 80px 20px;
 font-family: 'Inter', sans-serif;
 color: #ffffff;
 border-bottom: 2px solid #7790de;
 position: relative;
 overflow: hidden;
 }

 .sol-mysql-hero::before {
 content: '';
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
 bottom: 0;
 background-image: 
 linear-gradient(90deg, rgba(119, 144, 222, 0.05) 1px, transparent 1px),
 linear-gradient(rgba(119, 144, 222, 0.05) 1px, transparent 1px);
 background-size: 50px 50px;
 opacity: 0.3;
 pointer-events: none;
 }

 .sol-mysql-hero .sol-container {
 max-width: 1200px;
 margin: 0 auto;
 position: relative;
 z-index: 1;
 }

 .sol-mysql-hero .sol-breadcrumb {
 display: flex;
 align-items: center;
 gap: 10px;
 margin-bottom: 30px;
 font-size: 14px;
 }

 .sol-mysql-hero .sol-mono {
 font-family: 'Courier New', monospace;
 color: #7790de;
 font-weight: 600;
 }

 .sol-mysql-hero .sol-status-icon { font-size: 12px; }
 .sol-mysql-hero .success { color: #00ff9d; }
 .sol-mysql-hero .info { color: #2ecc71; }
 .sol-mysql-hero .warning { color: #ffbd2e; }

 .sol-mysql-hero .sol-hero-content h1 {
 font-size: 56px;
 line-height: 1.1;
 font-weight: 800;
 margin: 0 0 15px 0;
 color: #ffffff;
 letter-spacing: -0.5px;
 }

 .sol-mysql-hero .sol-hero-content h2 {
 font-size: 32px;
 line-height: 1.3;
 font-weight: 600;
 margin: 0 0 30px 0;
 color: #7790de;
 }

 .sol-mysql-hero .sol-tagline {
 font-size: 20px;
 line-height: 1.6;
 color: #b4bec8;
 margin-bottom: 40px;
 max-width: 800px;
 }

 .sol-mysql-hero .sol-tagline code {
 background: rgba(119, 144, 222, 0.15);
 color: #00ff9d;
 padding: 2px 10px;
 border-radius: 4px;
 font-family: 'Fira Code', 'Courier New', monospace;
 font-size: 0.95em;
 font-weight: 600;
 }

 .sol-mysql-hero .sol-metadata {
 display: flex;
 flex-wrap: wrap;
 gap: 20px;
 margin-top: 40px;
 padding-top: 30px;
 border-top: 1px solid rgba(255,255,255,0.1);
 }

 .sol-mysql-hero .sol-meta-item {
 display: flex;
 align-items: center;
 gap: 8px;
 font-size: 13px;
 }

 @media (max-width: 768px) {
 .sol-mysql-hero .sol-hero-content h1 { font-size: 36px; }
 .sol-mysql-hero .sol-hero-content h2 { font-size: 24px; }
 .sol-mysql-hero .sol-tagline { font-size: 16px; }
 .sol-mysql-hero .sol-metadata { flex-direction: column; gap: 15px; }
 }
&lt;/style&gt;

&lt;section class="sol-mysql-toc-section"&gt; &lt;div class="sol-container"&gt; &lt;div class="sol-toc-header"&gt; &lt;span class="sol-mono sol-toc-label"&gt;$ cat TABLE_OF_CONTENTS&lt;/span&gt; &lt;h2&gt;MySQL on Kubernetes: Architecture &amp;amp; Operations&lt;/h2&gt; &lt;p class="sol-toc-intro"&gt;Six pillars of running production MySQL on Kubernetes — from topology design to operator selection&lt;/p&gt;</description></item><item><title>PostgreSQL on Kubernetes: Architecture, Topologies &amp; Operators Guide</title><link>https://solanica.io/whitepapers/postgresql-on-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://solanica.io/whitepapers/postgresql-on-kubernetes/</guid><description>&lt;section class="sol-pg-hero"&gt; &lt;div class="sol-container"&gt; &lt;div class="sol-hero-content"&gt; &lt;div class="sol-breadcrumb"&gt; &lt;span class="sol-mono"&gt;/whitepapers/&lt;/span&gt; &lt;span class="sol-status-icon info"&gt;❯&lt;/span&gt; &lt;span class="sol-mono"&gt;postgresql-on-kubernetes&lt;/span&gt; &lt;/div&gt; &lt;h1&gt;Running PostgreSQL on Kubernetes&lt;/h1&gt; &lt;h2&gt;A Complete Architecture Guide&lt;/h2&gt; &lt;p class="sol-tagline"&gt;PostgreSQL is the world's most advanced open-source relational database. Running it on Kubernetes is no longer a question of &lt;code&gt;if&lt;/code&gt; — it's a question of &lt;code&gt;how&lt;/code&gt;.&lt;/p&gt; &lt;div class="sol-metadata"&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon success"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;STATUS: PRODUCTION_READY&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon info"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;AUDIENCE: DBA | SRE | PLATFORM_ENG&lt;/span&gt; &lt;/div&gt; &lt;div class="sol-meta-item"&gt; &lt;span class="sol-status-icon warning"&gt;●&lt;/span&gt; &lt;span class="sol-mono"&gt;DATABASE: PostgreSQL 14+&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/section&gt; &lt;style&gt;
 .sol-pg-hero {
 background: linear-gradient(135deg, #0a0a1f 0%, #161641 100%);
 padding: 120px 20px 80px 20px;
 font-family: 'Inter', sans-serif;
 color: #ffffff;
 border-bottom: 2px solid #7790de;
 position: relative;
 overflow: hidden;
 }

 .sol-pg-hero::before {
 content: '';
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
 bottom: 0;
 background-image: 
 linear-gradient(90deg, rgba(119, 144, 222, 0.05) 1px, transparent 1px),
 linear-gradient(rgba(119, 144, 222, 0.05) 1px, transparent 1px);
 background-size: 50px 50px;
 opacity: 0.3;
 pointer-events: none;
 }

 .sol-pg-hero .sol-container {
 max-width: 1200px;
 margin: 0 auto;
 position: relative;
 z-index: 1;
 }

 .sol-pg-hero .sol-breadcrumb {
 display: flex;
 align-items: center;
 gap: 10px;
 margin-bottom: 30px;
 font-size: 14px;
 }

 .sol-pg-hero .sol-mono {
 font-family: 'Courier New', monospace;
 color: #7790de;
 font-weight: 600;
 }

 .sol-pg-hero .sol-status-icon { font-size: 12px; }
 .sol-pg-hero .success { color: #00ff9d; }
 .sol-pg-hero .info { color: #7790de; }
 .sol-pg-hero .warning { color: #ffbd2e; }

 .sol-pg-hero .sol-hero-content h1 {
 font-size: 56px;
 line-height: 1.1;
 font-weight: 800;
 margin: 0 0 15px 0;
 color: #ffffff;
 letter-spacing: -0.5px;
 }

 .sol-pg-hero .sol-hero-content h2 {
 font-size: 32px;
 line-height: 1.3;
 font-weight: 600;
 margin: 0 0 30px 0;
 color: #7790de;
 }

 .sol-pg-hero .sol-tagline {
 font-size: 20px;
 line-height: 1.6;
 color: #b4bec8;
 margin-bottom: 40px;
 max-width: 800px;
 }

 .sol-pg-hero .sol-tagline code {
 background: rgba(119, 144, 222, 0.15);
 color: #00ff9d;
 padding: 2px 10px;
 border-radius: 4px;
 font-family: 'Fira Code', 'Courier New', monospace;
 font-size: 0.95em;
 font-weight: 600;
 }

 .sol-pg-hero .sol-metadata {
 display: flex;
 flex-wrap: wrap;
 gap: 20px;
 margin-top: 40px;
 padding-top: 30px;
 border-top: 1px solid rgba(255,255,255,0.1);
 }

 .sol-pg-hero .sol-meta-item {
 display: flex;
 align-items: center;
 gap: 8px;
 font-size: 13px;
 }

 @media (max-width: 768px) {
 .sol-pg-hero .sol-hero-content h1 { font-size: 36px; }
 .sol-pg-hero .sol-hero-content h2 { font-size: 24px; }
 .sol-pg-hero .sol-tagline { font-size: 16px; }
 .sol-pg-hero .sol-metadata { flex-direction: column; gap: 15px; }
 }
&lt;/style&gt;

&lt;section class="sol-pg-toc-section"&gt; &lt;div class="sol-container"&gt; &lt;div class="sol-toc-header"&gt; &lt;span class="sol-mono sol-toc-label"&gt;$ cat TABLE_OF_CONTENTS&lt;/span&gt; &lt;h2&gt;PostgreSQL on Kubernetes: Architecture &amp;amp; Operations&lt;/h2&gt; &lt;p class="sol-toc-intro"&gt;Six pillars of running production PostgreSQL on Kubernetes — from Patroni HA to operator selection&lt;/p&gt;</description></item></channel></rss>