<?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: Jachin Ocacio</title>
    <description>The latest articles on DEV Community by Jachin Ocacio (@jachin_ocacio_e8de2a25158).</description>
    <link>https://dev.to/jachin_ocacio_e8de2a25158</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%2F4063265%2F912320f7-d3d8-4432-876b-a7e372adb01a.jpg</url>
      <title>DEV Community: Jachin Ocacio</title>
      <link>https://dev.to/jachin_ocacio_e8de2a25158</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jachin_ocacio_e8de2a25158"/>
    <language>en</language>
    <item>
      <title>When You Should Not Run Kubernetes, and What a Single Docker Compose Host Really Costs You</title>
      <dc:creator>Jachin Ocacio</dc:creator>
      <pubDate>Thu, 06 Aug 2026 08:17:33 +0000</pubDate>
      <link>https://dev.to/jachin_ocacio_e8de2a25158/when-you-should-not-run-kubernetes-and-what-a-single-docker-compose-host-really-costs-you-526i</link>
      <guid>https://dev.to/jachin_ocacio_e8de2a25158/when-you-should-not-run-kubernetes-and-what-a-single-docker-compose-host-really-costs-you-526i</guid>
      <description>&lt;p&gt;Do not run Kubernetes for a client project that fits on one server, has no autoscaling requirement, and is maintained by fewer than three people who touch infrastructure. A single Docker Compose host running behind a reverse proxy handles the majority of small agency workloads, and it costs you exactly two things: minutes of downtime during reboots, and a manual path back from hardware failure. Kubernetes does not remove those costs, it converts them into a control plane you now have to keep alive. Pick the failure mode you can actually staff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR by reader profile:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agency running 12 client sites on one provider (WordPress, Node APIs, a few static builds):&lt;/strong&gt; one Compose host per client tier, because per client blast radius matters more to you than scheduling, and your real risk is a botched deploy, not capacity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two person team with one revenue critical app (SaaS, single Postgres, 24/7 traffic):&lt;/strong&gt; Compose plus a warm standby and tested restores, because a second machine you can promote beats a cluster nobody on the team can debug at 3am.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team of six with a genuine multi service platform (8 or more services, several deploys a day):&lt;/strong&gt; Kubernetes starts paying for itself here, because rolling deploys, health gating and per service resource limits stop being manual work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contractor handing infrastructure back to the client at the end of the engagement:&lt;/strong&gt; Compose, because a docker-compose.yml plus a README is a deliverable the client can actually run, and a cluster is a dependency on you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone under a contractual uptime commitment with penalties (SLA with credits attached):&lt;/strong&gt; you need redundancy of some kind, and that is the one case where the orchestration question becomes a real engineering decision rather than a preference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solo developer hosting side projects and one paying client:&lt;/strong&gt; Compose on a single host, because every hour spent on cluster maintenance is an hour not billed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The central tradeoff: Kubernetes buys you automatic recovery and rolling deploys at the price of a permanent operational surface you must keep patched, while Compose buys you a system one person can hold in their head at the price of doing recovery yourself.&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When should you not run Kubernetes?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When should you not run Kubernetes?
&lt;/h2&gt;

&lt;p&gt;Skip Kubernetes when the cluster would exist to solve a problem you do not have yet. Four conditions, and if three of them describe your project, stop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your workload fits on one machine:&lt;/strong&gt; the whole stack, application, database, cache and reverse proxy, runs inside the RAM and CPU of a single server you can afford. If you are not resource constrained, the scheduler has nothing to schedule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traffic is predictable:&lt;/strong&gt; you know roughly what next Tuesday looks like because it looks like last Tuesday. Horizontal Pod Autoscaler is worth real money when load swings by an order of magnitude within an hour. It is worth nothing when your peak is 3x your trough and both fit on the same box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nobody on the team owns infrastructure full time:&lt;/strong&gt; Kubernetes is a system that needs a person. Version skew between control plane and nodes, CNI upgrades, cert rotation, ingress controller changes and deprecated API versions all arrive whether or not anyone is assigned to them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The client will eventually own this:&lt;/strong&gt; you are building something you hand over. A cluster is a hiring requirement disguised as a deployment target.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Points to Compose&lt;/th&gt;
&lt;th&gt;Points to Kubernetes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Capacity&lt;/td&gt;
&lt;td&gt;Everything fits on one host&lt;/td&gt;
&lt;td&gt;You are already sharding across machines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traffic shape&lt;/td&gt;
&lt;td&gt;Predictable, within 3x daily swing&lt;/td&gt;
&lt;td&gt;Spiky, unpredictable, event driven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team&lt;/td&gt;
&lt;td&gt;Under 3 people touching infra&lt;/td&gt;
&lt;td&gt;A named platform owner or team&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deploy frequency&lt;/td&gt;
&lt;td&gt;A few times a week&lt;/td&gt;
&lt;td&gt;Several times a day across services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Handover&lt;/td&gt;
&lt;td&gt;Client inherits the stack&lt;/td&gt;
&lt;td&gt;You operate it indefinitely&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uptime terms&lt;/td&gt;
&lt;td&gt;Best effort, informal&lt;/td&gt;
&lt;td&gt;Contractual SLA with penalties&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The inverse is also true, and worth saying plainly so this does not read as a hit piece. If you run 8 or more services that deploy independently, if two teams need to ship without coordinating, or if your uptime commitment survives a single machine failing, Kubernetes is the correct answer and Compose will hurt you.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>docker</category>
      <category>devops</category>
    </item>
    <item>
      <title>Immich vs Google Photos: Why Self-Hosting Your Photo Library Wins in 2026</title>
      <dc:creator>Jachin Ocacio</dc:creator>
      <pubDate>Thu, 06 Aug 2026 06:31:57 +0000</pubDate>
      <link>https://dev.to/jachin_ocacio_e8de2a25158/immich-vs-google-photos-why-self-hosting-your-photo-library-wins-in-2026-m34</link>
      <guid>https://dev.to/jachin_ocacio_e8de2a25158/immich-vs-google-photos-why-self-hosting-your-photo-library-wins-in-2026-m34</guid>
      <description>&lt;p&gt;Immich is the better choice if you own a machine that stays powered on and you care where your photos live. It gives you the parts of Google Photos people actually use every day, mobile auto backup, face grouping, map view, albums and shared links, without a storage meter that raises your bill as your library grows. Google Photos still wins on zero maintenance and on search that understands a sentence. If you are willing to spend one evening on setup and roughly an hour a quarter on updates, Immich replaces it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR by reader profile:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Family archivist with 15 years of photos (Marta, two phones, one shared library):&lt;/strong&gt; move to Immich on a small always on box, because a growing archive is exactly the case where a per gigabyte subscription compounds against you forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Photographer shooting RAW every weekend (Tomas, 40 megapixel bodies):&lt;/strong&gt; Immich, because RAW files eat cloud tiers fast and you already keep a local working copy that you can point the server at.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non technical user with one phone and no home server (Elena, iPhone, no NAS):&lt;/strong&gt; stay on Google Photos for now, because Immich needs someone to own updates, backups and remote access, and that someone would be you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy sensitive professional handling client images (lawyer, therapist, journalist):&lt;/strong&gt; Immich on hardware you control, because the legal question is not whether the provider is trustworthy but who can be compelled to hand over the data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Homelab owner already running Docker (Sam, existing NAS and reverse proxy):&lt;/strong&gt; Immich, because the marginal cost is one compose stack on infrastructure you maintain anyway.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small team or studio sharing a shoot library (five people, one archive):&lt;/strong&gt; Immich with per user accounts and shared albums, because Google Photos was built for one person and gets awkward the moment several people need write access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The central tradeoff: Google Photos sells you freedom from maintenance and pays for it with a recurring bill and a library you do not control, while Immich hands you control and a one time hardware cost and charges you in setup time, backup discipline and the responsibility for your own uptime.&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is Immich, and can it really replace Google Photos?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What is Immich, and can it really replace Google Photos?
&lt;/h2&gt;

&lt;p&gt;Immich is an open source, self-hosted photo and video backup server. You install it on a machine you own, install the Immich app on your phone, and it uploads new photos in the background the way Google Photos does. It is licensed under AGPL-3.0, developed in the open on GitHub, and released on a fast cadence with frequent tagged versions. It is not a photo viewer bolted onto a file share. It is a full stack with its own database, machine learning container and mobile clients for Android and iOS.&lt;/p&gt;

&lt;p&gt;The honest answer on replacement: yes for the daily loop, partially for search.&lt;/p&gt;

&lt;p&gt;The daily loop is backup, browse, album, share. Immich covers all four. You get automatic background upload, a timeline grouped by date, albums, shared albums with other users on your server, public share links with optional passwords and expiry, a map view built from EXIF GPS data, face grouping into named people, and duplicate detection. Multi user support is built in, so each family member gets their own library on the same server.&lt;/p&gt;

&lt;p&gt;Where it differs is the part Google spent a decade on: semantic search quality and the automatic memories and collages that surface old photos without you asking.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Google Photos&lt;/th&gt;
&lt;th&gt;Immich&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Automatic phone backup&lt;/td&gt;
&lt;td&gt;Yes, first party OS integration&lt;/td&gt;
&lt;td&gt;Yes, background service in the app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Face grouping and named people&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes, runs locally on your server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Natural language search&lt;/td&gt;
&lt;td&gt;Yes, strong&lt;/td&gt;
&lt;td&gt;Yes, CLIP based, weaker on complex phrasing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage limit&lt;/td&gt;
&lt;td&gt;Bound to your Google One tier&lt;/td&gt;
&lt;td&gt;Bound to your disk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who holds the data&lt;/td&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;You&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance owner&lt;/td&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;You&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Treat Immich as a replacement for the product, not a clone of the company. You give up an army of engineers tuning search ranking. You gain a library that cannot be reindexed, repriced or closed without your consent.&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>immich</category>
      <category>privacy</category>
      <category>photography</category>
    </item>
  </channel>
</rss>
