惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
D
DataBreaches.Net
B
Blog RSS Feed
博客园_首页
The GitHub Blog
The GitHub Blog
I
InfoQ
L
LangChain Blog
G
Google Developers Blog
M
MIT News - Artificial intelligence
美团技术团队
腾讯CDC
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
From Rot to Rhythm: How We Rebuilt Our Documentation Cult...
Vincent von · 2026-05-19 · via DEV Community

The Forgotten Layer

Every infrastructure has a critical layer that doesn't show up on dashboards, but without it, everything slows down: documentation.

We learned this the hard way.

A little background for you. My team and I provide cloud services on a private cloud. This means that our customers are developers. We deliver platform features, portal functionality, maintenance, and infrastructure services. Over the last years, we invested heavily in automation and feature delivery — the things every PO dreams of. That focus allowed us to onboard more and more platforms onto our cloud service offering.

But there was one thing we consistently deprioritized: documentation.
And our customer-facing service docs paid the price.

For years, it lived in Confluence spaces — large, tangled forests of pages where knowledge went to die. And of course, search functionality is also particularly bad using Confluence. So whenever a client reached out and asked if this part of the service information was still valid, the advice was always the same:

"I am not sure, let me double check."

And that worked — until it didn't.

This post is not just a reflection. At the end, I will also share a Docusaurus scaffold we built internally — including linting, theming, and contribution workflows — so you can replicate this approach without reinventing it.


2. The Slow Decay

Documentation debt doesn't scream. It whispers.

At first, it was a broken link here, an outdated diagram there. Nothing dramatic. But as our platform grew, the gap between what we shipped and what we documented widened.

Onboarding stretched from a week to months.
Customers filed support tickets for information that should have been one search away.

When we looked closer, the symptoms all pointed to the same root cause:

  • Docs lived outside the development flow
  • Ownership was unclear
  • Updating them felt like overhead
  • And sorry for the dinosaurs out there: Confluence!

3. The Moment Everything Snapped

The real tipping point came in the form of a short email from a customer.

“This page hasn't been updated since 2022.”

We checked. They were right.

Behind that single outdated page lay dozens more in similar shape. We could have patched the page and moved on. But deep down, we knew:
this wasn't a page problem — it was a structural problem.

That was the day we stopped treating documentation as a side activity. We started treating it as part of the product.


4. Why Confluence Couldn't Keep Up

Confluence had served us well in the early years. But we had outgrown it.

Here's why it broke down at scale:

  • Disconnected from development: Docs lived in a separate place, updated weeks after features shipped (if at all).
  • DevEx: Adding interactive code snippets, or embedding multi-media content is all possible in Confluence, but the writing is cumbersome. Markdown or AsciDocs for the win.
  • No versioning: We couldn't align docs with specific releases.
  • Search pain: Finding anything meant traversing endless page trees.
  • No customer contribution: Feedback loops were slow, often going nowhere.
  • No guardrails: No linting, no validation, no CI — which meant quality drift.

And perhaps most importantly:
Confluence didn't create shared ownership.

It was "someone else's job."


5. Before the Tool Came the Story

This might sound counterintuitive for an engineering team, but we didn't start with a tool.

We started with a story.

"If documentation isn't close to the code, it will always be outdated."

This became our North Star. We repeated it in every retro, every cross-team architecture session, and every leadership conversation.

We didn't want just better docs. We wanted documentation to become part of the way we build — fast, iterative, owned by everyone, and open to customers.

Once that vision was clear, the tooling decision became much easier.


6. Choosing the Right Documentation Platform

We ran a structured evaluation of several tools. We needed something that could:

  • Git-native workflows
  • Versioning
  • Fast performance for customers
  • Low barrier to contribution
  • Enough flexibility without becoming a framework project
Tool Pros Cons Verdict
Confluence Familiar, structured Poor dev integration, outdated model ❌ Outgrown
Read the Docs Simple, Sphinx-based, versioning support Python-focused, limited customization ⚠ Too rigid
MkDocs Lightweight, good search, fast Less UI flexibility ⚠ Great but limited for branding
Hugo Very fast, flexible Requires more setup, not docs-first ⚠ Too generic
Docusaurus MDX, versioning, React components, fast CI/CD integration Initial setup heavier ✅ Perfect balance

We chose Docusaurus because it aligned with how we already worked: Git, Markdown, pull requests, CI/CD, and reusable components.


7. Understanding Docusaurus (for those new to it)

At its core, Docusaurus is a static site generator designed specifically for documentation.

It combines Markdown with React — giving you the simplicity of writing content in .md files and the flexibility of building custom UI when needed.

Key features that mattered for us:

  • Versioning: Tie docs to releases — a feature Confluence never had.
  • MDX support: Mix Markdown with React components for rich documentation (feels funky, but kind of cool).
  • Search: Fast, extensible, works out of the box (Algolia or Typesense).
  • Custom plugins: Integrate linters, search, CI checks.
  • Speed: Our site loads fast — customers notice that.
  • Familiar workflow: Pull requests, code review, previews — like any other repo.

For our engineers, writing docs started feeling less like "extra work" and more like writing code. Some even said that documentation started to be fun.


8. Our Docusaurus Documentation Platform

Instead of treating documentation as a collection of pages, we built a documentation platform on top of Docusaurus.

The goal was simple: any team should be able to start migrating from Confluence to Docs-as-Code without needing hand-holding.

Our Docusaurus came with structure, guidance, and guardrails that made contribution predictable and safe.

What our Docusaurus setup provides

Our documentation platform includes:

  • Clear structure and navigation: A predefined information architecture so teams don’t invent their own page trees.

  • Built-in tutorials: Step-by-step guides that explain how to migrate content from Confluence, how to structure pages, editing guidelines, and how to use MDX components correctly.

  • Guardrails by default: ESLint & Prettier for consistent formatting

  • Vale for terminology, style, and writing quality

  • CI checks that prevent broken builds or low-quality content from being merged

  • Reusable MDX components: Components like , , and warnings for deprecations helped teams present information consistently without custom markup.

  • Search and discoverability: Fast, global search made content immediately usable for customers.

  • CI/CD with preview environments: Every pull request gets a preview deployment so contributors can see exactly what they are about to publish.

Theming and branding: Documentation looks and feels like part of the platform, not an afterthought.

The result: teams could migrate their content incrementally, at their own pace, without breaking anything — and without needing a central documentation team to mediate every change.

Sharing is Caring!

Later in this post, we'll share a generic version of this setup — a reusable Docusaurus scaffold based on what we built internally. It includes the same structure, guardrails, and conventions, so your team can adopt Docs-as-Code without starting from scratch


9. The First Migration

We started small: one service, one team.

We rewrote only the most accessed and most broken pages. Minimal navigation. Strict linting. Then we shipped.

Then we shipped it.

The response surprised us.

  • Customers noticed the speed
  • Engineers fixed docs in the same PR as code
  • Reviews made documentation visible again

Momentum follows. What used to live across multiple Confluence spaces consolidated into a single, structured documentation system.


10. Documentation as an Enabled Ecosystem

The biggest shift wasn't technical — it was systemic.

Documentation became a shared interface between platform teams, SREs, portal developers, and customers.

  • It enabled self-service instead of support load
  • It reduced onboarding friction
  • It made platform capabilities — and gaps — visible and discoverable
  • It allowed feedback to flow directly into improvements

In other words: documentation stopped being static knowledge and became part of the platform ecosystem itself.

In hindsight, this aligns closely with what platform engineering maturity models describe as an enabled ecosystem: teams don't just consume the platform — they actively shape it.


11. What Surprised Us Most

When we moved to Docs as Code, we expected better structure.
What we didn't expect was how it would bring teams together.

SRE engineers and portal developers now speak the same documentation language. Platform teams see their work reflected directly in docs. Customers trust what they read again.

The act of writing and reviewing together created something Confluence never could: a shared documentation identity.


12. Lessons Learned Along the Way

  1. Start with a narrative, not a tool.
    Align teams on why you're doing this.

  2. Don't migrate everything.
    Migrate the docs that matter most first. Cut the old and ugly and don't be afraid to rewrite stuff

  3. Make contribution effortless.
    A good scaffold lowers the barrier.

  4. Automate quality.
    Vale, CI, formatting — make good docs the default, not the exception.

  5. Documentation is never done.
    Build habits, not one-time migrations.

  6. Customers are collaborators.
    Give them a way to contribute — it builds trust.


13. Why We're Sharing Our Scaffold

This isn't just a success story. It's also a pattern other teams can use.

We’re making our internal scaffold available as a private starter repo: https://github.com/VincentvonBueren/erfa-docusaurus-demo/

You can fork it, clone it, or just learn from how we structured it.

We don't believe great documentation should be an afterthought.
We believe it should be a first-class citizen of every cloud platform.


14. The Moral of the Story

Our journey began with a customer pointing out an outdated page.
It ended with documentation that moves at the speed of our platform.

Docusaurus wasn't the hero of this story.
It was the vehicle that helped us tell a new one.

If your team is still fighting Confluence sprawl, don't start with a tool.

Start with a narrative. Then give it the right structure. And watch your docs come alive.