มองไปที่ Redis: เราเป็นนักพัฒนาที่สร้างสรรค์สิ่งประดิษฐ์จริงหรือ?
(blog.day1swhan.com)เมื่อมองไปที่ระบบนิเวศของ Redis ก็ทำให้ผมกลับมาคิดอีกครั้งว่าผมสามารถพูดได้อย่างภาคภูมิใจหรือไม่ว่าตัวเองเป็น นักพัฒนาที่สร้างสรรค์สิ่งประดิษฐ์
การกำเนิดของสตอเรจแบบ Key-Value
- หลังยุคปี 2000 เมื่อเข้าสู่ยุคเว็บ 2.0 บริษัทผู้ให้บริการเว็บต้องเผชิญกับสถานการณ์ที่ต้องรองรับจำนวนผู้ใช้งานมหาศาล
- เพื่อรองรับทราฟฟิกมหาศาลนี้ จึงต้องการระบบกระจายขนาดใหญ่ที่เล็กแต่ราคาถูก แทนที่จะเป็นเซิร์ฟเวอร์เครื่องใหญ่ราคาแพง
- โชคดีที่โครงสร้างข้อมูลส่วนใหญ่เรียบง่าย (เช่น ดึงข้อมูล
userid = 1234) - การใช้ฐานข้อมูลเชิงสัมพันธ์ (RDBMS) นั้นหนักเกินไป แพงเกินไป และซับซ้อนเกินไป
- ทฤษฎี CAP ปรากฏขึ้น
- ถ้าอย่างนั้น ต่อให้ต้องทิ้งความสอดคล้อง ก็ขอรักษาความพร้อมใช้งานและความเร็วไว้
- จึงเกิดฐานข้อมูลแบบง่ายที่ให้ key แล้วโยน value กลับมา (Memcached-2003, Amazon Dynamo-2007)
การกำเนิดของ Redis
- ที่อิตาลี ดินแดนแห่งพาสตา นักพัฒนาชื่อ Salvatore Sanfilippo กำลังดำเนินสตาร์ตอัปชื่อ LLOOGG (สะกด Log ด้วยตัว o สองตัวถูกแล้ว)
- LLOOGG ให้บริการติดตามผู้เยี่ยมชมเว็บไซต์แบบเรียลไทม์
- แม้จะเป็นธุรกิจขนาดเล็ก แต่ก็มีผู้ใช้งานจริง
- ในเวลานั้น การวิเคราะห์แบบเรียลไทม์เป็นงานที่ค่อนข้างยาก
- ข้อมูลเริ่มสะสม → RDBMS เดิมค่อย ๆ ช้าลง → ไม่สามารถตอบสนองแบบเรียลไทม์ได้
- หากต้องการการตอบสนองแบบเรียลไทม์ก็ต้องใช้หน่วยความจำ → แต่ Memcached ในตอนนั้นรองรับแค่ GET, PUT แบบง่ายในรูป string
- ต้องการฟังก์ชันแบบ dictionary ที่ขยายขึ้นมาอีกหน่อย เช่น INCR, DECR, LIST แต่ไม่มี DB แบบนั้น? → งั้นก็สร้างเองซะเลย
- จึงเกิดเวอร์ชันแรกที่ทำงานบน TCP server แบบเรียบง่ายสุด ๆ (ยังไม่มีฟีเจอร์ระดับสูงอย่างคลัสเตอร์, AOF, การทำสำเนาแบบ replication)
วิวัฒนาการของ Redis
- Redis ไม่ได้ถือกำเนิดมาเพื่อเป็น แคช แต่เพื่อเป็น คลังเก็บโครงสร้างข้อมูลสำหรับการประมวลผลแบบเรียลไทม์
- แต่แล้วผู้คนก็เริ่มนำมันไปใช้เป็นแคช
- ความต้องการด้าน โครงสร้างข้อมูลที่ไปไกลกว่าแคช จากบรรดายักษ์ใหญ่เดิม (Facebook, Twitter, GitHub, Stack Overflow ฯลฯ) เพิ่มขึ้น
- เริ่มถูกนำมาใช้ทีละน้อยจากฟังก์ชันเล็ก ๆ อย่างการเก็บเซสชัน การจัดการโทเคนล็อกอิน ตัวนับแบบเรียลไทม์ ระบบจัดอันดับ จำนวนไลก์
- ฟังก์ชันและโครงสร้างข้อมูลต่าง ๆ ที่จำเป็นถูกเพิ่มเข้ามาอย่างค่อยเป็นค่อยไป (Sorted Set, HASH, Cluster, persistence...)
- สุดท้ายมันก็กลายเป็น แพลตฟอร์มประมวลผลข้อมูล ที่ยืดหยุ่น
ชุมชน, UX และปรัชญาของนักพัฒนา
- Redis ตั้งอยู่บนปรัชญาว่า ถึงจะมีฟีเจอร์มาก ก็ต้องไม่ซับซ้อน
- เอกสารทางการมีตัวอย่างที่รันได้ทันทีบน CLI พร้อมคำอธิบายพฤติกรรมที่ชัดเจน
- คำสั่งที่เข้าใจง่ายอย่าง
SET,GET,LPUSH,ZADD,HGETALLเป็นต้น แค่กวาดตาดูเอกสารทางการครั้งเดียวก็พอจับความได้ทันทีว่าทำหน้าที่อะไร - ความตรงไปตรงมานี้ไม่ได้แค่ทำให้สะดวก แต่ยังช่วย ลดกำแพงทางจิตใจต่อเครื่องมือ และเพิ่มประสิทธิภาพการทำงานของนักพัฒนา
- ความอเนกประสงค์ที่เกิดจากโครงสร้างแบบนี้ส่งผลดีต่อทั้งผู้ใช้ ผู้ให้บริการคลาวด์ และผู้มีส่วนร่วมในโอเพนซอร์ส
- ในระบบนิเวศที่ประกอบขึ้นจากผลประโยชน์ร่วมกัน Redis จึงก้าวขึ้นมาเป็น มาตรฐานโดยพฤตินัยของ In-memory DB ผ่านการเลือกใช้ที่ ไม่ได้ถูกบังคับ
มองไปที่ระบบนิเวศของ Redis
- Redis เริ่มต้นจากการเป็นวิธีสำหรับทำให้แนวคิดที่อาจดูธรรมดาอย่างการวิเคราะห์ผู้เยี่ยมชมแบบเรียลไทม์เกิดขึ้นได้จริง
- มันทะลวงข้อจำกัดของวิธีเดิมอย่าง SQL (ช้าและแพง) ด้วยแนวทางใหม่
- ไม่ใช่การใช้เส้นสายกับบริษัทคู่ค้า การบีบซัพพลายเออร์ การจูนฮาร์ดแวร์ หรือการจำกัดการใช้งานเพื่อเพิ่มประสิทธิภาพภายใต้กติกาเดิม
- แต่มันคือการสร้าง กติกาใหม่ ว่าให้หน่วยความจำกลายเป็นองค์ประกอบหลักของฐานข้อมูล
- หากจะออกแบบเครื่องมือด้วยตัวเอง เสนอแนวทางที่ไม่เคยมีมาก่อน และทำให้คนทั้งโลกยอมรับมันได้ ความรู้พื้นฐาน สำหรับการประยุกต์ใช้ย่อมสำคัญ
- แค่ดู Amazon Dynamo ที่ออกแบบมาเพื่อแก้ปัญหาการเก็บตะกร้าสินค้า ก็จะเห็นว่าต้องประยุกต์ใช้ความรู้ระบบกระจายที่ซับซ้อน
- เมื่อมันกลายเป็นมาตรฐานอุตสาหกรรมจากการเลือกใช้โดยสมัครใจของทุกคน ก็จะ สร้างมูลค่าเพิ่มและงานจำนวนมหาศาล
- ถ้ามองไปที่บุคลากรผู้เชี่ยวชาญ Redis, โครงสร้างพื้นฐานฮาร์ดแวร์, เนื้อหาสำหรับการเรียนรู้, managed service (AWS, Azure) และโซลูชันเฉพาะทาง (Redis Enterprise) ก็จะเข้าใจได้ทันที
- ทั้งหมดนี้ไม่ได้เกิดจากนโยบายรัฐหรือกฎหมายประเภทช่วยอุตสาหกรรมโน้นนี้หรือช่วยเหลือ SME อะไรทำนองนั้น
เราควรกลับมาคิดให้ดีว่า หรือแท้จริงแล้วเรายังเป็นเพียงประเทศพัฒนาแล้วแค่ภายนอก และอาจยังใช้วิธีคิดแบบยุคอุตสาหกรรมการผลิต พร้อมกับ เข้าใจผิดว่านักพัฒนาคือผู้ทำงานในอุตสาหกรรมบริการความรู้ อยู่หรือไม่
- เราสามารถ พิสูจน์ผ่านผลลัพธ์ ได้หรือไม่ว่าเทคโนโลยีพื้นฐาน (เช่น อัลกอริทึม) สำคัญเพียงใด
- เรามีวัฒนธรรมและระบบการศึกษาที่สร้างนักพัฒนาที่ สร้างเครื่องมือเพื่อแก้ปัญหาได้ด้วยตนเอง หรือไม่
- แม้ทุกคนจะพูดว่าต้องสร้างวัฒนธรรมที่ยอมรับความล้มเหลว แต่ตัวผมเองกำลังโกรธหรือด่าความผิดพลาดของคนอื่นอยู่หรือเปล่า
- เราเข้าใจ มูลค่าเพิ่ม ที่แท้จริงของอุตสาหกรรมบริการความรู้ และสามารถผลักดันมันต่อไปอย่างไม่ยอมแพ้ได้จริงหรือไม่
ผมย้ำเตือนกับตัวเองอีกครั้งว่า นักพัฒนาตัวจริงไม่ใช่แค่คนที่ใช้เครื่องมือเก่ง แต่คือคนที่แม้จะเริ่มจากของที่ยังไม่สมบูรณ์ ก็ยัง ออกแบบเครื่องมือที่ตัวเองต้องการได้ด้วยตนเอง และทำให้คนอื่นใช้งานเครื่องมือนั้นได้ง่ายเช่นกัน เพื่อ ขยายระบบนิเวศและสร้างมูลค่าเพิ่ม
2 ความคิดเห็น
ผมคงเป็นของปลอมมั้ง ฮือ
สิ่งประดิษฐ์ที่มีประโยชน์…