<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cloud on IT Comparison</title><link>https://comparison.metacog.co.kr/tags/cloud/</link><description>Recent content in Cloud on IT Comparison</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 03 Aug 2026 06:30:21 +0900</lastBuildDate><atom:link href="https://comparison.metacog.co.kr/tags/cloud/index.xml" rel="self" type="application/rss+xml"/><item><title>Managed Database vs Self-Hosted Database: Who Runs the Stack</title><link>https://comparison.metacog.co.kr/posts/2026-08-03-managed-database-vs-self-hosted-database-who-runs-the-stack/</link><pubDate>Mon, 03 Aug 2026 06:30:21 +0900</pubDate><guid>https://comparison.metacog.co.kr/posts/2026-08-03-managed-database-vs-self-hosted-database-who-runs-the-stack/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;A managed database hands the operating system, patching, backups, and failover to a &lt;strong class="kw"&gt;cloud provider&lt;/strong&gt;, while a self-hosted database keeps the entire stack under your team&amp;rsquo;s &lt;strong class="kw"&gt;direct control&lt;/strong&gt;. The choice trades operational convenience against flexibility, cost structure, and how much low-level tuning you&amp;rsquo;re allowed to do.&lt;/p&gt;
&lt;h2 id="comparison-diagram"&gt;Comparison Diagram&lt;/h2&gt;
&lt;div class="compare-diagram"&gt;
&lt;svg viewBox="0 0 640 360" xmlns="http://www.w3.org/2000/svg"&gt;&lt;text x="160" y="30" text-anchor="middle" font-size="16" font-weight="bold" style="fill:var(--primary)"&gt;Managed Database&lt;/text&gt;&lt;text x="480" y="30" text-anchor="middle" font-size="16" font-weight="bold" style="fill:var(--primary)"&gt;Self-Hosted Database&lt;/text&gt;&lt;rect x="60" y="55" width="200" height="45" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="160" y="82" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;Application / Queries&lt;/text&gt;&lt;rect x="50" y="110" width="220" height="195" rx="6" style="fill:var(--compare-a-soft);stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;text x="160" y="128" text-anchor="middle" font-size="12" font-weight="600" style="fill:var(--compare-a)"&gt;Provider Manages&lt;/text&gt;&lt;rect x="70" y="140" width="180" height="40" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="160" y="164" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;DB Engine&lt;/text&gt;&lt;rect x="70" y="195" width="180" height="40" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="160" y="219" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;Operating System&lt;/text&gt;&lt;rect x="70" y="250" width="180" height="40" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="160" y="274" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;Hardware / Storage&lt;/text&gt;&lt;text x="160" y="330" text-anchor="middle" font-size="11" style="fill:var(--secondary)"&gt;Less control, less toil&lt;/text&gt;&lt;rect x="370" y="55" width="220" height="250" rx="6" style="fill:var(--compare-b-soft);stroke:var(--compare-b)" stroke-width="1.5"/&gt;&lt;text x="480" y="73" text-anchor="middle" font-size="12" font-weight="600" style="fill:var(--compare-b)"&gt;You Manage Everything&lt;/text&gt;&lt;rect x="390" y="85" width="180" height="40" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="480" y="109" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;Application / Queries&lt;/text&gt;&lt;rect x="390" y="140" width="180" height="40" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="480" y="164" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;DB Engine&lt;/text&gt;&lt;rect x="390" y="195" width="180" height="40" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="480" y="219" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;Operating System&lt;/text&gt;&lt;rect x="390" y="250" width="180" height="40" rx="4" style="fill:none;stroke:var(--border)" stroke-width="1.5"/&gt;&lt;text x="480" y="274" text-anchor="middle" font-size="12" style="fill:var(--content)"&gt;Hardware / Storage&lt;/text&gt;&lt;text x="480" y="330" text-anchor="middle" font-size="11" style="fill:var(--secondary)"&gt;More control, more toil&lt;/text&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id="comparison-table"&gt;Comparison Table&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Managed Database&lt;/th&gt;
&lt;th&gt;Self-Hosted Database&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Provisioning &amp;amp; setup&lt;/td&gt;
&lt;td&gt;Spin up via console or API in minutes; provider installs and configures the engine&lt;/td&gt;
&lt;td&gt;Manually install and configure the OS, storage, and database software yourself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration &amp;amp; tuning access&lt;/td&gt;
&lt;td&gt;Limited to exposed parameters and flags; some engine internals and OS access are locked&lt;/td&gt;
&lt;td&gt;Full root or admin access to every config file, kernel setting, and storage layout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scaling&lt;/td&gt;
&lt;td&gt;Resize compute or add read replicas with a click or API call; provider automates the process&lt;/td&gt;
&lt;td&gt;Provision new hardware and reconfigure sharding or replication topology yourself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backups &amp;amp; recovery&lt;/td&gt;
&lt;td&gt;Automated snapshots and point-in-time restore built into the service&lt;/td&gt;
&lt;td&gt;You script, schedule, and test your own backup and restore procedures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patching &amp;amp; upgrades&lt;/td&gt;
&lt;td&gt;Provider applies OS and engine security patches on a maintenance schedule&lt;/td&gt;
&lt;td&gt;You plan, test, and execute every patch and major version upgrade&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High availability &amp;amp; failover&lt;/td&gt;
&lt;td&gt;Multi-AZ replication and automatic failover configured with a toggle&lt;/td&gt;
&lt;td&gt;You design, build, and test the replication and failover setup yourself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitoring &amp;amp; support&lt;/td&gt;
&lt;td&gt;Built-in dashboards and alerts, plus vendor support tickets for engine-level issues&lt;/td&gt;
&lt;td&gt;You assemble your own monitoring stack; support is internal or community-based&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost model&lt;/td&gt;
&lt;td&gt;Higher per-hour price that bundles operational labor into the bill&lt;/td&gt;
&lt;td&gt;Lower raw infrastructure cost but a hidden cost in engineering time&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="key-differences"&gt;Key Differences&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Managed services abstract patching and OS maintenance behind a &lt;strong class="kw"&gt;provider&lt;/strong&gt; SLA.&lt;/li&gt;
&lt;li&gt;Self-hosted setups grant full &lt;strong class="kw"&gt;root access&lt;/strong&gt; to tune kernel, storage, and engine internals.&lt;/li&gt;
&lt;li&gt;Failover and multi-AZ replication are &lt;strong class="kw"&gt;automated&lt;/strong&gt; in managed offerings but hand-built elsewhere.&lt;/li&gt;
&lt;li&gt;Cost shifts from engineering hours to a recurring &lt;strong class="kw"&gt;subscription fee&lt;/strong&gt; with managed databases.&lt;/li&gt;
&lt;li&gt;Self-hosting permits any &lt;strong class="kw"&gt;custom extension&lt;/strong&gt; or fork that managed platforms often restrict.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when-to-use-each"&gt;When to Use Each&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Managed Database&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Horizontal Scaling vs Vertical Scaling: Growing Out vs Growing Up</title><link>https://comparison.metacog.co.kr/posts/2026-08-02-horizontal-scaling-vs-vertical-scaling-growing-out-vs-growin/</link><pubDate>Sun, 02 Aug 2026 23:47:18 +0900</pubDate><guid>https://comparison.metacog.co.kr/posts/2026-08-02-horizontal-scaling-vs-vertical-scaling-growing-out-vs-growin/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Horizontal and vertical scaling are the two fundamental strategies for adding capacity to a system: one adds &lt;strong class="kw"&gt;more nodes&lt;/strong&gt; working in parallel, the other adds &lt;strong class="kw"&gt;more resources&lt;/strong&gt; to a single existing node. The choice shapes cost, downtime, fault tolerance, and how much your application architecture has to change to support it.&lt;/p&gt;
&lt;h2 id="comparison-diagram"&gt;Comparison Diagram&lt;/h2&gt;
&lt;div class="compare-diagram"&gt;
&lt;svg viewBox="0 0 640 360" xmlns="http://www.w3.org/2000/svg"&gt;&lt;line x1="320" y1="20" x2="320" y2="340" style="stroke:var(--border)" stroke-width="1" stroke-dasharray="4,4"/&gt;&lt;text x="160" y="36" text-anchor="middle" style="fill:var(--primary)" font-size="18" font-weight="600"&gt;Horizontal Scaling&lt;/text&gt;&lt;text x="480" y="36" text-anchor="middle" style="fill:var(--primary)" font-size="18" font-weight="600"&gt;Vertical Scaling&lt;/text&gt;&lt;rect x="125" y="58" width="70" height="32" rx="4" style="fill:var(--compare-a-soft);stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;text x="160" y="79" text-anchor="middle" style="fill:var(--content)" font-size="12"&gt;Load Balancer&lt;/text&gt;&lt;line x1="160" y1="90" x2="70" y2="148" style="stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;line x1="160" y1="90" x2="145" y2="148" style="stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;line x1="160" y1="90" x2="220" y2="148" style="stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;line x1="160" y1="90" x2="295" y2="148" style="stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;rect x="40" y="150" width="60" height="60" rx="4" style="fill:var(--compare-a-soft);stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;text x="70" y="185" text-anchor="middle" style="fill:var(--content)" font-size="13"&gt;S1&lt;/text&gt;&lt;rect x="115" y="150" width="60" height="60" rx="4" style="fill:var(--compare-a-soft);stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;text x="145" y="185" text-anchor="middle" style="fill:var(--content)" font-size="13"&gt;S2&lt;/text&gt;&lt;rect x="190" y="150" width="60" height="60" rx="4" style="fill:var(--compare-a-soft);stroke:var(--compare-a)" stroke-width="1.5"/&gt;&lt;text x="220" y="185" text-anchor="middle" style="fill:var(--content)" font-size="13"&gt;S3&lt;/text&gt;&lt;rect x="265" y="150" width="60" height="60" rx="4" style="fill:none;stroke:var(--compare-a)" stroke-width="1.5" stroke-dasharray="5,4"/&gt;&lt;text x="295" y="185" text-anchor="middle" style="fill:var(--compare-a)" font-size="18"&gt;+&lt;/text&gt;&lt;text x="160" y="245" text-anchor="middle" style="fill:var(--secondary)" font-size="12"&gt;scale out: add identical nodes&lt;/text&gt;&lt;text x="160" y="262" text-anchor="middle" style="fill:var(--secondary)" font-size="12"&gt;no downtime, redundant&lt;/text&gt;&lt;rect x="440" y="235" width="70" height="70" rx="4" style="fill:var(--compare-b-soft);stroke:var(--compare-b)" stroke-width="1.5"/&gt;&lt;text x="475" y="265" text-anchor="middle" style="fill:var(--content)" font-size="12"&gt;Server&lt;/text&gt;&lt;text x="475" y="282" text-anchor="middle" style="fill:var(--content)" font-size="11"&gt;2 CPU / 4GB&lt;/text&gt;&lt;line x1="475" y1="230" x2="475" y2="200" style="stroke:var(--compare-b)" stroke-width="2"/&gt;&lt;polygon points="475,190 469,202 481,202" style="fill:var(--compare-b)"/&gt;&lt;rect x="390" y="90" width="170" height="105" rx="4" style="fill:none;stroke:var(--compare-b)" stroke-width="1.5" stroke-dasharray="5,4"/&gt;&lt;text x="475" y="135" text-anchor="middle" style="fill:var(--content)" font-size="13"&gt;Same Server&lt;/text&gt;&lt;text x="475" y="155" text-anchor="middle" style="fill:var(--content)" font-size="11"&gt;16 CPU / 64GB&lt;/text&gt;&lt;text x="475" y="172" text-anchor="middle" style="fill:var(--secondary)" font-size="11"&gt;upgraded&lt;/text&gt;&lt;text x="475" y="325" text-anchor="middle" style="fill:var(--secondary)" font-size="12"&gt;scale up: add CPU/RAM/disk&lt;/text&gt;&lt;text x="475" y="342" text-anchor="middle" style="fill:var(--secondary)" font-size="12"&gt;often needs downtime&lt;/text&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id="comparison-table"&gt;Comparison Table&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Horizontal Scaling&lt;/th&gt;
&lt;th&gt;Vertical Scaling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mechanism&lt;/td&gt;
&lt;td&gt;Add more machines/nodes to the pool&lt;/td&gt;
&lt;td&gt;Add more CPU, RAM, or disk to an existing machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Implementation&lt;/td&gt;
&lt;td&gt;Requires a load balancer and clustering to distribute work&lt;/td&gt;
&lt;td&gt;Swap hardware or resize the VM/instance in place&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Downtime&lt;/td&gt;
&lt;td&gt;Typically none; new nodes join the pool live&lt;/td&gt;
&lt;td&gt;Usually requires a reboot or maintenance window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Application requirements&lt;/td&gt;
&lt;td&gt;App must be stateless or handle distributed state&lt;/td&gt;
&lt;td&gt;App can remain unaware, since it still runs on one node&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost model&lt;/td&gt;
&lt;td&gt;Roughly linear cost per added commodity node&lt;/td&gt;
&lt;td&gt;Cost rises steeply at high-end hardware tiers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fault tolerance&lt;/td&gt;
&lt;td&gt;Redundant; a node failing doesn&amp;rsquo;t take the system down&lt;/td&gt;
&lt;td&gt;Single point of failure; that node failing is an outage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Capacity ceiling&lt;/td&gt;
&lt;td&gt;Practically unbounded, add nodes as needed&lt;/td&gt;
&lt;td&gt;Bounded by the largest machine/instance available&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical use case&lt;/td&gt;
&lt;td&gt;Web-scale services, microservices, cloud-native apps&lt;/td&gt;
&lt;td&gt;Databases, legacy monoliths, short-term quick fixes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="key-differences"&gt;Key Differences&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Horizontal scaling adds &lt;strong class="kw"&gt;more nodes&lt;/strong&gt; in parallel, while vertical scaling adds &lt;strong class="kw"&gt;more resources&lt;/strong&gt; to one existing node.&lt;/li&gt;
&lt;li&gt;Horizontal scaling needs a &lt;strong class="kw"&gt;load balancer&lt;/strong&gt; and app-level statelessness; vertical scaling needs no architectural change.&lt;/li&gt;
&lt;li&gt;Vertical scaling eventually hits a &lt;strong class="kw"&gt;hardware ceiling&lt;/strong&gt;; horizontal scaling can grow near-limitlessly.&lt;/li&gt;
&lt;li&gt;Vertical scaling usually requires &lt;strong class="kw"&gt;downtime&lt;/strong&gt; to resize, while horizontal scaling can add capacity live.&lt;/li&gt;
&lt;li&gt;Horizontal scaling improves &lt;strong class="kw"&gt;fault tolerance&lt;/strong&gt; through redundancy; vertical scaling keeps a single point of failure.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when-to-use-each"&gt;When to Use Each&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Horizontal Scaling&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>