<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Luân Dương</title>
        <link>http://localhost/</link>
        <description>Backend Engineer&#39;s journey — Golang, PHP, and everything in between</description>
        <generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>luandnh98@gmail.com (Dương Nguyễn Hoàng Luân)</managingEditor>
            <webMaster>luandnh98@gmail.com (Dương Nguyễn Hoàng Luân)</webMaster><lastBuildDate>Sun, 07 Jun 2026 01:00:00 &#43;0700</lastBuildDate>
            <atom:link href="http://localhost/index.xml" rel="self" type="application/rss+xml" />
        <item>
    <title>Graceful shutdown: lợi ích và lý do phải có</title>
    <link>http://localhost/posts/graceful-shutdown/</link>
    <pubDate>Thu, 28 Aug 2025 10:00:00 &#43;0700</pubDate>
    <author>luandnh98@gmail.com (Dương Nguyễn Hoàng Luân)</author>
    <guid>http://localhost/posts/graceful-shutdown/</guid>
    <description><![CDATA[<h2 id="mở-đầu">Mở đầu</h2>
<p>Triển khai bản mới, scale xuống pod, hay dừng dịch vụ để bảo trì — tất cả đều đụng đến bài toán tắt hệ thống. Nếu ta &ldquo;giết&rdquo; tiến trình ngay lập tức, request đang xử lý bị cắt ngang, dữ liệu có thể dở dang, hàng đợi bỏ dở, connection rò rỉ.</p>
<p>Graceful shutdown là kỹ thuật giúp dịch vụ dừng có trật tự: ngừng nhận việc mới, chờ nốt việc đang làm, đóng tài nguyên, và báo trạng thái rõ ràng cho hạ tầng xung quanh.</p>]]></description>
</item>
<item>
    <title>Quản lý goroutine: errgroup, leak-proof, backpressure</title>
    <link>http://localhost/posts/quan-ly-goroutine/</link>
    <pubDate>Mon, 25 Aug 2025 10:00:00 &#43;0700</pubDate>
    <author>luandnh98@gmail.com (Dương Nguyễn Hoàng Luân)</author>
    <guid>http://localhost/posts/quan-ly-goroutine/</guid>
    <description><![CDATA[<h2 id="mở-đầu">Mở đầu</h2>
<p>Goroutine là món &ldquo;shot espresso&rdquo; của Go: nhẹ, rẻ, bật là chạy. Mỗi goroutine chỉ tốn ~2KB stack ban đầu — so với ~1MB của OS thread, bạn có thể chạy hàng trăm ngàn goroutine trong một tiến trình. Nhưng nếu rót liên tục mà không kiểm soát, bạn sẽ có một quầy pha chế quá tải, chảy tràn và khách chờ dài cổ.</p>
<p>Bài này chia sẻ cách tôi quản lý goroutine ở những dịch vụ có tải cao: dùng errgroup để phối hợp và huỷ đồng loạt; thiết kế leak-proof để không rò rỉ; và áp dụng backpressure để bảo vệ tài nguyên. Không lý thuyết suông — mỗi pattern đều có nguyên nhân từ kinh nghiệm thực tế.</p>]]></description>
</item>
<item>
    <title>Khi nào nên dùng cache (và khi nào không)</title>
    <link>http://localhost/posts/khi-nao-dung-cache/</link>
    <pubDate>Fri, 22 Aug 2025 10:00:00 &#43;0700</pubDate>
    <author>luandnh98@gmail.com (Dương Nguyễn Hoàng Luân)</author>
    <guid>http://localhost/posts/khi-nao-dung-cache/</guid>
    <description><![CDATA[<h2 id="mở-đầu">Mở đầu</h2>
<p>Cache giống như bình giữ nhiệt trong quán cà phê: barista pha sẵn một mẻ Americano vì biết món này bán chạy nhất. Khi khách gọi, chỉ cần rót từ bình ra — nhanh, không chờ pha. Nhưng nếu chọn sai món để pha sẽ — giữ nóng một ly matcha latte mà chỉ có 1 khách gọi trong ngày — bạn tốn gas, tốn chỗ, và nước để nguội rồi bỏ đi.</p>]]></description>
</item>
<item>
    <title>API Filtering: gọi dữ liệu như dân sành cà phê</title>
    <link>http://localhost/posts/api-filtering/</link>
    <pubDate>Wed, 20 Aug 2025 10:00:00 &#43;0700</pubDate>
    <author>luandnh98@gmail.com (Dương Nguyễn Hoàng Luân)</author>
    <guid>http://localhost/posts/api-filtering/</guid>
    <description><![CDATA[<h2 id="mở-đầu">Mở đầu</h2>
<p>Bạn bước vào quán cà phê, menu dài cả trang. Bạn không muốn &ldquo;nào cũng được&rdquo;, bạn muốn đúng gu: iced Americano, ít đường, hạt Ethiopia. Barista ghi order, pha chế, bạn nhận ly cà phê đúng ý — không thừa, không thiếu.</p>
<p>Khi làm việc với API cũng vậy: ta không lấy cả &ldquo;menu&rdquo; dữ liệu, ta chỉ lấy đúng phần mình cần. Bài viết này giải thích cách &ldquo;đặt món&rdquo; dữ liệu hiệu quả với Filtering, Sorting và Selecting fields — những kỹ thuật giúp API nhẹ hơn, nhanh hơn, và dễ dùng hơn.</p>]]></description>
</item>
<item>
    <title>Context trong Go: truyền dữ liệu, deadline, cancel - dùng đúng hay chết hiệu năng</title>
    <link>http://localhost/posts/context-trong-go/</link>
    <pubDate>Fri, 15 Aug 2025 10:00:00 &#43;0700</pubDate>
    <author>luandnh98@gmail.com (Dương Nguyễn Hoàng Luân)</author>
    <guid>http://localhost/posts/context-trong-go/</guid>
    <description><![CDATA[<h2 id="mở-đầu">Mở đầu</h2>
<p><code>context.Context</code> là mảnh ghép nhỏ nhưng ảnh hưởng lớn tới độ ổn định và hiệu năng của dịch vụ Go. Dùng đúng: request dừng đúng lúc, hệ thống nhẹ nhàng. Dùng sai: rò rỉ goroutine, deadline chồng chéo, context.Value bị lạm dụng, CPU nhảy vọt.</p>
<p>Bài này tóm gọn cách tôi áp dụng context trong dự án backend: truyền dữ liệu gì, đặt deadline/timeout/cancel ở đâu, những lỗi làm chết hiệu năng, kèm ví dụ thực tế theo ngữ cảnh quán cà phê/đồ ăn để dễ hình dung.</p>]]></description>
</item>
</channel>
</rss>
