Scalable architecture using Redis as backend database using Golang + Redis
Quantity
Scalable architecture using Redis as backend database using Golang + Redis
Scalable architecture using Redis as backend database using Golang + Redis
ปัญหาการ Register แล้วเว็บล่มเป็นปัญหา classic ระดับชาตินะครับ คำถามคือ ทำยังไงถึงจะแก้ได้ ผมใช้ Redis ในการทำระบบที่ สามารถ Scale รองรับ load ได้มหาศาลมาแล้ว เนื่องจากความเข้าใจง่าย และตรงไปตรงมา แต่มีประสิทธิภาพสูงของ Redis ทำให้ Redis สามารถถูกใช้ได้ในหลายusecase เช่น
1) Cache Layer เพื่อรองรับการ เรียกดูข้อมูลจำนวนมหาศาล
2) Persistent Layer เพื่อรองรับการ save ข้อมูลจำนวนมหาศาล
3) Event Streaming เพื่อส่งต่องานไปทำแบบ Asynchrounous
เรียกได้ว่า Database เดียว ตอบโจทย์ได้หลายๆโจทย์เลย
สอนโดย คุณ ไชยพงศ์ ลาภเลี้ยงตระกูล ผู้ออกแบบและสร้างระบบ PAM Marketing Automation
Workshop Outline
Chapter 1. เรียนรู้พื้นฐานความแตกต่างระหว่าง Redis และ RDBMS ตัวอื่นๆ สาเหตุที่นำมาใช้ในงานที่มี load สูง
Chapter 2. ทำความเข้าใจ และ ลงมือ run load test เพื่อทดสอบ API ว่ามี TPS สูงตามมที่ต้องการหรือไม่
Chapter 3. ทดลอง load test API ที่เขียนเชื่อมต่อกับ RDBMS และ Redis ว่ามีความต่างกันในประสิทธิภาพอย่างไร
Chapter 4. เข้าใจคำสั่งที่อาจจะเกิดปัญหาถ้านำมาใช้โดยรู้เท่าไม่ถึงการณ์ของ Redis
Chapter 5. จัดการกลุ่มของ Key ใน Redis ด้วย data structure ประเภท Hashes
Chapter 6. สร้าง API ยอดฮิต ที่ใช้ในการ register member และ load test เพื่อรีดประสิทธิภาพสูงที่สุด
Chapter 7. สร้าง API ยอดฮิต ที่ใช้ในการ นับ Counter โดยได้ inspire จาก API ของ Popcat
Chapter 8. ทำความเข้าใจ Horizontal Scaling และสร้างระบบการ Shardings by key ด้วยตัวเอง
Chapter 9. ทดลองเขียน API เพื่อให้สามารถเก็บข้อมูลการ vote จาก 2 พัน ล้านคนโดยใช้ RAM ไม่ถึง 1Gb ด้วย bitfield
Chapter 10. ใช้ Pub/Sub ของ Redis ใน use case ต่างๆเช่น เพิ่มประสิทธิภาพของ local cache
Chapter 11. ทำความเข้าใจ config ที่สำคัญของ Redis เช่น Max Memory และ Eviction Policy ในแบบเข้าใจง่าย
Workshop Objective
หลังจากเรียนจบ ผู้เรียนจะสามารถออกแบบ API ที่รองรับโหลดจำนวนมากได้โดยใช้ Redis เป็น Backend Database และ Golang เป็นภาษาที่ใช้ในการพัฒนา รวมไปถึงสามารถยิง Load Test API เพื่อทดสอบ TPS (Transaction per second) และ Average Latency ได้ และรู้วิธีการเพิ่ม TPS หลังจากทดสอบ
ขั้นตอนในการเข้า workshop
1. ทำการสั่งซื้อ และชำระเงินภายในเว็ป https://bit.ly/scalable-redis-web
2. copy เลขใบสั่งซื้อที่ได้รับเมื่อชำระเงินสำเร็จ ตัวอย่างเลขใบสั่งซื้อ BEST2102010XXXXXXXXX
3. request invitation ไปที่ Facebook Group https://www.facebook.com/groups/458018778857775
4. ตอบคำถามเพื่อเข้า group โปรดแจ้ง email หรือเบอร์โทรศัพท์ ที่สมัครในเว็ป boodaBEST และกรอกเลขใบสั่งซื้อ
5. รอไม่เกิน 24 ชั่วโมงเพื่อให้ admin approve เข้ากลุ่ม
6. คลิปการสอนทั้งหมดจะอยู่ในกลุ่ม สามารถดูได้ตลอดชีพ และอาจจะมี clip ใหม่ๆ update เข้ามา
7. หากท่านมีข้อสงสัยประการใดสามารถติดต่อสอบถามได้ที่ Facebook Page : boodaBEST
Workshop Lessons
Chapter 1. Start Redis project
Lesson 1.1 Start Redis with docker
Lesson 1.2 Redis detail explain
Chapter 2. Load test setup
Lesson 2.1 Setup our load test
Lesson 2.2 Run load test with SET, GET
Chapter 3. Optimize SET, GET with MSET, MGET
Lesson 3.1 Optimize SET, GET with MSET, MGET
Chapter 4. Optimize KEYS with SCAN
Lesson 4.1 Optimize KEYS with SCAN
Chapter 5. Use hashes for group of keys
Lesson 5.1 Use hashes to manage group of keys
Chapter 6. Build register API using Redis
Lesson 6.1 Build register API
Chapter 7. INCR, DECR for counter
Lesson 7.1 Build popcat counter API
Chapter 8. Custom shardings to scale write throughput
Lesson 8.1 Custom shardings
Chapter 9. Eco memory using Bitfield
Lesson 9.1 Optimize memory with Bitfield
Chapter 10. PUB/SUB
Lesson 10.1 Create message queue with PUB/SUB
Lesson 10.2 Optimize local cache using PUB/SUB
Chapter 11. Data persistence
Lesson 11.1 Start and shutdown
Lesson 11.2 Config max memory and eviction policy
Prerequisite
Workshop นี้เหมาะสำหรับ Developer, Software Engineer, Network Engineer ที่มีพื้นฐานการโปรแกรมมาพอสมควร มีความเข้าใจในการเขียนโปรแกรมพื้นฐานมาบ้างแล้ว ไม่เหมาะกับบุคคลที่ไม่เคยเขียนโปรแกรมมาก่อน เนื้อหาต่างๆใน Workshop ทดสอบและบันทึกบนเครื่อง Mac ดังนั้น ถ้าจะทำตามเนื้อหาใน Workshop ควรจะใช้ Mac เป็นเครื่องที่ใช้ทำ Workshop
อย่างไรก็ตามเครื่องมือ ต่างๆใน Workshop เป็นเครื่องมือที่มีใน Cross Platform ทั้งใน Mac, Windows หรือ Ubuntu ด้วยเช่นกัน เช่น Golang, Git, Docker, VSCode, Kafka, Redis ฯลฯ ซึ่งสามารถนำความรู้ใน Workshop ดังกล่าวไปใช้บนระบบอื่นๆได้ เพียงแต่การทำตามตัวอย่างใน Clip อาจจะไม่ได้ตรงกัน 100% ต้องมีการปรับเปลี่ยนไปตาม OS บ้าง แต่เนื่องจากผู้สอนใช้ Mac เป็นเครื่องมือหลัก จึงขออนุญาตที่จะไม่ตอบปัญหาในกรณีที่ปัญหาเกิดจากการใช้ OS อื่น