<?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: DomeCloud</title>
    <description>The latest articles on DEV Community by DomeCloud (@domecloud).</description>
    <link>https://dev.to/domecloud</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.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1690%2F707e4378-2d69-411f-8ecc-3cad17a6290d.png</url>
      <title>DEV Community: DomeCloud</title>
      <link>https://dev.to/domecloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/domecloud"/>
    <language>en</language>
    <item>
      <title>ระบบลงทะเบียน ใช้ Firebase ดีไหม?</title>
      <dc:creator>Narate Ketram</dc:creator>
      <pubDate>Thu, 12 Aug 2021 19:14:22 +0000</pubDate>
      <link>https://dev.to/domecloud/firebase-2i3b</link>
      <guid>https://dev.to/domecloud/firebase-2i3b</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;สวัสดีครับ ผม&lt;a href="https://www.facebook.com/koonnarate/" rel="noopener noreferrer"&gt;นเรศ&lt;/a&gt; หรือว่า เรียกสั้น ๆ ว่า นเรศ เฉย ๆ ก็ได้&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;วันนี้ ผมจะมาวิเคราะห์ระบบลงทะเบียน สำหรับการฉีดวัคซีนฟรี เพื่อเป็นกรณีศึกษาครับ เนื่องจาก &lt;a href="https://www.facebook.com/domecloud.io" rel="noopener noreferrer"&gt;DomeCloud&lt;/a&gt; ได้เสนอตัวเพื่อทำระบบการลงทะเบียน เพื่อฉีดวัคซีนซิโนฟาร์มฟรี ให้กับจังหวัดชลบุรี โดยเป็นหนึ่งในการทำระบบเพื่อสังคม ไม่ต้องเสียค่าใช้จ่ายใด ๆ ให้ DomeCloud (ถ้ามีใครสนใจอยากสอบถาม ถามไปที่ Inbox page DomeCloud Facebook ได้เลย)&lt;/p&gt;

&lt;p&gt;โดยส่วนตัวผมเอง ผมมักจะพูดถึงการทำระบบลงทะเบียนต่าง ๆ ที่ไม่สามารถรองรับผู้ใช้งานได้ว่า "ทำเว็บสวย ๆ แล้วใช้ไม่ได้ ทำทำไม" ซึ่งกรณีนี้อยากจะสื่อความว่า เว็บสวย ๆ ทำงาน มันก็แค่ Static file ทำให้มันล่ม ยากกว่าอีก&lt;/p&gt;

&lt;p&gt;แต่...&lt;/p&gt;

&lt;p&gt;แต่ การทำเว็บแบบ Static มันก็ไม่ได้ตอบโจทย์ของระบบการลงทะเบียนอะไรเหล่านี้ มันก็จริงอยู่ว่า ทำเป็น SPA (Single Page Application) มันก็ Static file นี่ ?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdx0vulzi3jnv0uq72u8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdx0vulzi3jnv0uq72u8.jpg" alt="Spa" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ใช่ แต่...&lt;/p&gt;

&lt;p&gt;แต่อีกแล้ว คือหน้าเว็บเอง มัน Static แหละ แต่ข้อมูลมันไม่ Static โดยธรรมชาติของระบบลงทะเบียน ข้อมูลต่างๆ มันจะเก็บลงฐานข้อมูล&lt;/p&gt;




&lt;p&gt;เข้าเรื่องเลย การออกแบบระบบนี้ อาศัยความขี้เกียจ ออกแบบระบบไว้ประมาณนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzsn9m1fnzjy5kxyziuww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzsn9m1fnzjy5kxyziuww.png" alt="Register Diagram" width="569" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เราเลือกใช้ Firebase สำหรับงาน Backend เพราะว่าทำให้สามารถสร้างระบบการลงทะเบียนขึ้นมาได้ง่าย แบบ ง่ายมาก ไม่ต้องดูแล Backend ของตัวเอง มีแค่ Static file ที่เราคิดว่า ดูแลเองง่ายกว่า (เพราะว่า เคยเจอปัญหาตอนฝากไฟล์ไว้ที่ Cloudflare)&lt;/p&gt;

&lt;p&gt;แต่พอใช้งานจริง มันไม่ง่ายอย่างที่คิด&lt;/p&gt;

&lt;p&gt;หลังจากที่ออกแบบและสร้างมันขึ้นมาแล้ว ผมก็ได้ทำการโหลดเทสระบบ โดยเทสไปที่แค่ส่วนของ Static file หรือหน้าเว็บที่เราสร้างมา เพื่อดูว่าเราสามารถรองรับการใช้งานได้ที่เท่าไหร่&lt;/p&gt;

&lt;p&gt;ผลโหลดเทสแรกๆเลย ตามภาพข้างบน เราใช้ Cloudflare + Proxy ที่ Cloudflare เลย ผลโหลดเทส ออกมา กระจอกมาก ได้ที่ประมาณ 2,000 Request per sec. อันนี้ ผมคิดว่าอาจจะเป็น Limit ฝั่ง Cloudflare จากนั้นนำเสนอข้อมูลการโหลดเทส ไปยังที่ประชุมว่า ได้ที่ 2,000 RPS เพราะ Cloudflare มัน Limit ไว้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4co1dpovkplo012kr2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4co1dpovkplo012kr2u.png" alt="Chon Buri with CF Proxy" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;แต่ที่ประชุมบอกว่ามันน้อยเกินไป ผมเลยปลด Cloudflare Proxy ให้ใช้เป็น DNS Only แล้วยิงโหลดเทสใหม่ ผลคือ ได้ประมาณ 50,000 RPS อันนี้เป็นอีกโดเมนหนึ่ง ซึ่งเป็นของ เทศบาลตำบลเสม็ด จังหวัดชลบุรี ที่ยิงไปตรง ๆ แบบ HTTP&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0q1xsocrgy0cc8123c1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0q1xsocrgy0cc8123c1.png" alt="Samet Load testing HTTP" width="800" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ผลทดสอบแบบ HTTPS&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrrqk7ear4zh8m641x6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrrqk7ear4zh8m641x6g.png" alt="Samet Load testing HTTPS" width="800" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากผลการทดสอบ ทั้งของจังหวัด และเทศบาล พอจะสรุปได้คร่าวๆว่า HTTP เรารับได้มากกว่า 50,000 Request per sec. แน่ๆ และ ถ้าเรา Terminate HTTPS เอง จะได้ราวๆ 20,000 Request per sec.&lt;/p&gt;

&lt;p&gt;ตัวเลขทั้งสองค่า ทั้ง HTTP, HTTPS ผมค่อนข้างพอใจกับตัวเลขนี้ คิดว่า คนจังหวัดชลบุรี ไม่น่าจะใช้เกินนี้ เลยสรุปกันกับทีมว่า จะใช้ Cloudflare เป็น DNS Only เท่านั้น เพราะที่ประชุมเห็นตัวเลขว่ารับได้มากกว่า&lt;/p&gt;

&lt;p&gt;การโหลดเทส ทีมไม่ได้โหลดเทสไปยัง Firebase เพราะเราเชื่อว่า Google จะสามารถรองรับผู้ใช้งานให้เราได้ เราใช้ Firebase Realtime Database ในการเก็บข้อมูล และเช็คว่ามีการลงทะเบียนครบหรือยัง ถ้าครบแล้วจะปิดการลงทะเบียนอัตโนมัติ&lt;/p&gt;




&lt;p&gt;จากการออกแบบ ที่ความไว้ใจ Firebase เราก็ชะล่าใจไประดับหนึ่ง แต่ก็คิดว่า ยังไงมันก็อาจจะเกินโควต้าฟรีของ Firebase ก็เลยไปเพิ่มแพลนของ Firebase เป็น Pay as you go...&lt;/p&gt;




&lt;p&gt;วันที่ระบบขึ้นใช้งานจริง ตอนวันที่ 12 สิงหาคม 2564 เวลาท้องถิ่น 09:00 น. ผมซึ่งคืนก่อนหน้า นั่งทำระบบ Logging Server ไปนอนตอนตีห้า ป่าน น้องในทีมแชทมาว่า ระบบเริ่มหน่วง ผมก็คิดว่า ไม่น่าจะมีปัญหาอะไร เลยตอบแชทไปและนอนต่อ&lt;/p&gt;

&lt;p&gt;ผ่านไปไม่ถึงห้านาที ป่านโทรมา บอกว่า ล่มแล้ว หน่วงมาก ใช้งานไม่ได้ ผมลุกจากที่นอนทันที จากนั้นสิ่งแรกที่ทำคือ ให้ Cloudflare Proxy และแคชให้ด้วยเลย&lt;/p&gt;

&lt;p&gt;แต่ว่าเจอปัญหาต่อมา&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftr771vri97mn0axuci93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftr771vri97mn0axuci93.png" alt="Cloudflare Ratelimit" width="800" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เราเชื่อใน Cloudflare มากว่า มันเก่ง แต่ลืมคิดไปว่า มันก็มี Limit ของมัน พอผมเจอปัญหานี้ เลยกดจ่ายเงินไป (ตัดบัตรพี่โดม 5555) สำหรับ Pro Plan ราคา $20 ต่อเดือน แต่ว่า เกิดปัญหาขึ้นว่า ตัว Cloudflare เอง มันแคช Dashboard มันเองด้วย (สัส คิดในใจ) ผมคิดว่า แย่ละ Pro Plan ไม่เพียงพอ เลยกดเพิ่มเป็น Biz Plan บวกเพิ่มไปอีก $200 ต่อเดือน (รวม $220 ที่กดไป)&lt;/p&gt;

&lt;p&gt;หลังจากกดไปแล้ว มันเหมือนเดิม... เอ๊ะ...&lt;/p&gt;

&lt;h1&gt;
  
  
  เอ๊ะะะะะ ?
&lt;/h1&gt;

&lt;p&gt;อีหยังวะ ทำไม Cloudflare มันไม่อัปเกรดให้&lt;/p&gt;

&lt;p&gt;ระหว่างนี้คือ ผ่านไปราวๆครึ่งชั่วโมง (ณ 09:30) ผมยังคงเห็น Cloudflare return 503 กลับมาว่า ติด Rate Limit อยู่เลย จากนั้นก็ได้รับแจ้งมาว่า คนลงทะเบียนครบแล้ว คือ รอบแรก จะให้ลงทะเบียนราวๆ 25,000 คน มั้ง ประมาณนั้น แต่ พอคงลงเต็มไปแล้ว ระบบยังได้รับข้อมูลเข้ามาเรื่อยๆ จบที่ราวๆ 30,000 คน&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlgvx4lk0zlgp5ilr59t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlgvx4lk0zlgp5ilr59t.png" alt="Cloudflare Request" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;จากกราฟ จะเห็นว่าตอนช่วงเริ่มเปิดให้ลงทะเบียน จะมี Request พุ่งไปที่ประมาณ 150,000 Request per sec. ซึ่งมากกว่าที่เราโหลดเทสราวๆ 3 เท่า (โหลดเทสที่ 50,000 request per sec)&lt;/p&gt;

&lt;p&gt;ผลก็คือ หน้าเว็บมันไม่แสดงผลแบบสมบูรณ์ แต่ว่า ใช้ cURL ทดสอบเรียกหน้าเว็บจะได้  200 OK นะ แต่ว่า เราออกแบบหน้าเว็บไว้ให้เช็คว่า ลงทะเบียนครบหรือยัง ทำให้ยังมี Request ไปที Firebase Realtime Database อยู่&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbrnesut0oqdfox288os.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbrnesut0oqdfox288os.png" alt="Full" width="800" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ซึ่งตัว Firebase เอง มันคิดค่า Data Transfer ด้วย!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpyx5hb4efpcl0hpum5h6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpyx5hb4efpcl0hpum5h6.png" alt="Firebase Data Transfer" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เหี้ย! แล้วเรา! โดน Data Transfer ไปราวๆ 3.5 TB คิดเป็นเงินราวๆ $3,500 หรือ ราวๆ 115,000 บาท โดยประมาณ จากการเปิดใช้งานระบบ 1 ชั่วโมง&lt;/p&gt;




&lt;p&gt;ข้อมูลจาก Cloudflare&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkuvujwadkgyuhhg421u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkuvujwadkgyuhhg421u.png" alt="Cloudflare Request" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  ปัญหา
&lt;/h1&gt;

&lt;p&gt;ปัญหาที่เราเจอคือ จาก Cloudflare มาหา Origin Server ของเรา Bandwidth เต็ม... เราเลยให้ Cloudflare Cache ให้ แต่ว่า ปัญหามันไม่ได้จบที่ตรงนั้น หลังจากโหลดไฟล์ไปครบจากฝั่ง Cloudflare แล้ว ปัญหาต่อมาคือ Firebase Realtime Database มัน Response ช้า ทำให้หน้าแรกโหลดไม่สมบูรณ์เพราะ รอข้อมูลจาก Firebase ซึ่งเราทำอะไรไม่ได้เลย ณ เวลานั้น&lt;/p&gt;




&lt;h1&gt;
  
  
  สรุป
&lt;/h1&gt;

&lt;p&gt;Firebase ใช้งานได้ดี ถ้าไม่ได้ใช้มากจนเกินไป แต่การเขียน Query ฝั่ง Firebase ต้องคำนึงถึง Data Transfer ด้วย เพื่อลดค่าใช้จ่ายที่จะเกิดขึ้น&lt;/p&gt;




&lt;p&gt;แผนต่อไปของการลงทะเบียนผมได้ออกแบบแนวทางไว้แล้ว 2 ทาง ไว้จะมาเล่าต่อรอบหน้า&lt;/p&gt;

</description>
      <category>register</category>
      <category>firebase</category>
    </item>
    <item>
      <title>Kong 2.0 Hybrid Mode</title>
      <dc:creator>Narate Ketram</dc:creator>
      <pubDate>Mon, 13 Jan 2020 06:15:42 +0000</pubDate>
      <link>https://dev.to/domecloud/kong-2-0-hybrid-mode-h43</link>
      <guid>https://dev.to/domecloud/kong-2-0-hybrid-mode-h43</guid>
      <description>&lt;p&gt;Kong เป็น API Gateway ที่ได้รับความนิยมสูง เพราะใช้งานสามารถรันได้บนแพลตฟอร์มที่หลากหลาย ทั้งบน Cloud, On Premise มีวิธีการ Deploy ที่ครอบคลุมทุกการใช้งาน ทั้ง Binary, Docker หรือ Kuberbetes&lt;/p&gt;

&lt;p&gt;ใครยังไม่เคยใช้ Kong ลองใช้ Kong ตามบล็อกนี้ &lt;a href="https://i.dont.works/kong-api-gateway-in-10-minute/" rel="noopener noreferrer"&gt;KONG API GATEWAY ฉบับรวบรัด&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly3kqy26l8n8v6d43yan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fly3kqy26l8n8v6d43yan.png" alt="Kong API Gateway" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;การใช้ Kong ในเวอร์ชั่นแรกๆ จำเป็นที่จะต้องมีฐานข้อมูลสำหรับเก็บค่าคอนฟิกต่างๆของ Gateway ซึ่ง Kong รองรับการใช้งานฐานข้อมูล 2 ตัวคือ PostgreSQL และ Cassandra ซึ่งการนำไปใช้งานจะต่างกัน ตามความต้องการของระบบ&lt;/p&gt;

&lt;p&gt;ใน &lt;a href="https://konghq.com/blog/kong-1-1-released/" rel="noopener noreferrer"&gt;Kong version 1.1&lt;/a&gt; นอกจาก Kong จะสามารถใช้ฐานข้อมูลในการเก็บคอนฟิกต่างๆแล้ว ยังสามารถใช้งาน Kong แบบไม่ต้องมีฐานข้อมูลได้ โดยการใช้ไฟล์คอนฟิกแทน เรียกโหมดนี้ว่า Kong DB-less ข้อดีคือ ไม่ต้องดูแลฐานข้อมูล แต่ข้อเสียก็มีคือ บาง Plugin จะไม่สามารถใช้งานได้&lt;/p&gt;

&lt;p&gt;การใช้ Kong DB-less มีข้อดี และข้อเสีย ใน Community ของ Kong มีการพูดถึงเรื่องการใช้งาน Kong DB-less แบบกระจายคอนฟิกไปยังโหนดต่างๆ เพื่อเหตุผลบางอย่าง เช่น Kong Ingress บน Kubernetes หรือ อยากรัน Kong DB-less ที่เอาไฟล์คอนฟิกมาจากที่เดียวกัน&lt;/p&gt;

&lt;p&gt;จากคำเรียกร้องจากแฟนคลับ ทำให้ Kong ต้องเข็นฟีเจอร์ Hybrid Mode ออกมา คือทั้งมีฐานข้อมูล และไม่มีฐานข้อมูลในเวลาเดียวกัน สงสัยฟังเพลง Getsunova มากไป&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0wbylny3i5b8v4o6jlls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0wbylny3i5b8v4o6jlls.png" alt="Kong Hybrid Mode" width="477" height="686"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ในโหมดนี้ จะมี Kong รันอยู่ 2 role คือ &lt;code&gt;control_plane&lt;/code&gt; และ &lt;code&gt;data_plane&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Control Plane จะเป็น Kong ที่รันด้วยโหมดที่มีฐานข้อมูล เหมือน Kong ปกติ มี Admin API ให้ใช้งาน ทำหน้าที่กระจายคอนฟิกไปยังโหนดในคลัสเตอร์ เรียกว่า Data Plane&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh356ws9ci1xkmld2wrap.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh356ws9ci1xkmld2wrap.gif" alt="Cat Control Plane" width="400" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data Plane คือ Kong Proxy ที่รันเป็น Kong DB-less โดยจะมีการอัปเดตคอนฟิกเมื่อมีการเปลี่ยนแปลงที่ Control Plane&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/OaLMugjy7bI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>kong</category>
      <category>api</category>
      <category>gateway</category>
    </item>
    <item>
      <title>ย้ายค่าย เบื่อ Medium</title>
      <dc:creator>dome</dc:creator>
      <pubDate>Wed, 01 Jan 2020 14:17:31 +0000</pubDate>
      <link>https://dev.to/domecloud/medium-4nfa</link>
      <guid>https://dev.to/domecloud/medium-4nfa</guid>
      <description>&lt;h1&gt;
  
  
  ย้ายค่าย เบื่อ Medium
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei3fgx4wy6cu8eqg1257.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei3fgx4wy6cu8eqg1257.jpg" alt="Alt Text" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
