Amazon ElastiCache คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS

นี่เป็นบทความแปล ที่มีเนื้อหามาจากบทความภาษาญี่ปุ่นของ Classmethod, Inc. ในหัวข้อ「AWS再入門2022 AWS ElastiCacheについて」 หากผู้อ่านสนใจอ่านเนื้อหาต้นฉบับสามารถอ่านได้ที่ลิ้งค์ "บทความต้นฉบับ" ด้านล่าง เนื้อหาในบทความนี้การอธิบายบางอย่างจะถูกปรับให้เข้าใจง่ายขึ้นทำให้แตกต่างจากต้นฉบับในบางจุด
2022.06.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

สวัสดีครับทุกคน ชิไรชิ ครับ

รายการนี้จะเขียนเกี่ยวกับ AWS ปี 2022 ฉบับเบื้องต้น โดยฝ่าย Consulting ของบริษัทเราเอง นี่เป็นบทความที่จะมาเล่าเกี่ยวกับเนื้อหา AWS Service มาเล่าใหม่อีกครั้งว่ามีอะไรถูกอัพเดทอะไรบ้างแล้ว
แบบละเอียด/เจาะลึกตั้งแต่เบสิกพร้อมคำอธิบาย โดยเหล่าสมาชิกที่เคยเขียนบทความเหล่านี้มาแล้ว

เหมาะสำหรับผู้ที่ต้องการเริ่มเรียนเกี่ยวกับ AWS หรือผู้ที่ใช้งาน AWS อยู่แล้ว แต่ต้องการหาความรู้ใหม่ว่าปี 2022 มีการอัพเดทอะไรบ้าง หากคุณใช่บุคคลเหล่านี้
ทางผู้เขียนก็หวังว่าบทความนี้จะเป็นประโยชน์สำหรับคุณครับ

งั้นก็ไปเริ่มกันเลยครับ Theme ในวันนี้คือ "Amazon ElastiCache" ครับ

Amazon ElastiCache คืออะไร

Amazon ElastiCache – บริการแคชที่มีการจัดการ – Amazon Web Services

Amazon ElastiCache เป็นบริการแคชในหน่วยความจำที่มีการจัดการอย่างเต็มรูปแบบซึ่งรองรับกรณีการใช้งานแบบเรียลไทม์ที่ยืดหยุ่น คุณสามารถใช้ ElastiCache สำหรับ การแคช ซึ่งเร่งความเร็วของแอปพลิเคชันและประสิทธิภาพของฐานข้อมูล หรือเป็นที่จัดเก็บข้อมูลหลักสำหรับกรณีการใช้งานที่ไม่จำเป็นต้องมีความทนทาน เช่น การจัดเก็บเซสชัน ตารางอันดับคะแนนของเกม การสตรีม และการวิเคราะห์ ElastiCache ทำงานร่วมกันได้กับ Redis และ Memcached

Memcached เป็น Database Key-value ประเภท In-memory
Redis เองก็เป็น Database Key-value ประเภท In-memory แต่เมื่อเทียบกับ Memcached แล้วจะมีฟังก์ชันต่างๆ เช่น Replication กับ transactions มีฟังก์ชันในการทำงานสูง
โดยทั้งสองตัวเป็น Service ที่มักถูกใช้ใน Fast cache server ที่มีวิธีการใช้งานที่คล้ายๆ กัน ครับ

จุดเด่น

Amazon ElastiCache Features

Amazon ElastiCache สามารถใช้เพื่อปรับปรุง latency และปริมาณงานได้อย่างมาก สำหรับ workloads ของแอปพลิเคชันที่มีการอ่านจำนวนมาก (เช่น โซเชียลเน็ตเวิร์ก เกม การแชร์สื่อ หรือ portals Q&A) หรือ workloads ที่เน้นการประมวลผล (เช่น recommendation engine) โดยการอนุญาตให้คุณจัดเก็บ Object ที่อ่านเจอในแคชบ่อยๆ นอกจากนี้ ด้วย Redis support สำหรับ advanced data structures คุณสามารถเพิ่มระดับฐานข้อมูลเพื่อให้ฟีเจอร์ต่างๆ(เช่น leaderboard, counting, session หรือ tracking) ที่ไม่สามารถทำได้ง่ายๆ ผ่าน database ด้วยวิธีที่คุ้มกับเงินในกระเป๋า

ค่าใช้จ่าย

สำหรับ On-demand nodes(โหมดตามความต้องการ) จะเป็นการคิดเงินตามชั่วโมงที่ใช้
ถ้าเป็น Reserved Nodes(โหนดแบบเหมาจ่าย) จะเป็นการจ่ายเหมาแบบ 1 ปี หรือ 3 ปี
และมีค่าใช้จ่ายเพิ่มเติมสำหรับ Backup Storage(พื้นที่จัดเก็บข้อมูลสำรอง)กับ Data Transfer(การถ่ายโอนข้อมูล) และหากมีการเปิดใช้งาน ElastiCache for Outposts ก็จะมีค่าใช้จ่ายเพิ่มอีก

ราคาบริการแคชที่มีการจัดการ – ราคา Amazon ElastiCache – Amazon Web Services

Usecase

สำหรับ Business Uescase แล้ว จะมีการใช้ Cache Data สำหรับข้อมูลที่ต้องการให้ Access จำนวนมากเข้าถึงเร็ว และสำคัญต่อผู้ใช้งานที่สุดครับ เช่นการเปิดใช้ Cache สำหรับ แอปพลิเคชัน หรือ Database Performance เพื่อให้เปิดใช้งานได้เร็วขึ้น หรือจะเป็นการใช้กับ Session store, gaming leaderboard, streaming, รวมไปถึง
Primary data store สำหรับ usecases ที่ไม่ต้องการความทนทาน เช่น การวิเคราะห์

โดยประสบการณ์ส่วนตัวของผม ก็เคยเห็นการใช้ในหลายๆที่เช่น การคำนวณและแสดง User Ranking ของ multiplayer game, การจัดเก็บผลการคำนวณข้อมูลแบบฟอร์มชั่วคราว, เงื่อนไขการแบ่งสถานะของผู้ใช้แต่ละคน, Session data ของเว็บไซต์หวยหรือเว็บสตรีมมิ่ง, recommendation, หรือ Temporary savedata / redundant save of Database data

เปรียบเทียบระหว่าง Memcached กับ Redis

ใน AWS Official Document ในหัวข้อ Memcached ด้านล่างนี้ได้เขียนไว้ว่า "You need the simplest model possible." แต่ว่าโดยส่วนตัวแล้วผมคิดว่ามันไม่ค่อยสำคัญเท่าไหร่ ในการใช้งาน Cache เราจำเป็นต้องพิจารณาทีละอย่างๆ เกี่ยวกับ การกำหนดค่าของแต่ละโหนดที่จัดการใน Product, การ Backup กับ resilience ไปพร้อมกับ การประมวลผล วิธีการ notification ครับ

Nodes, Shards, Clusters คืออะไร

จากลิ้งค์ด้านบน เราจะเห็นคำศัพท์เกี่ยวกับ "Nodes, Shards, Clusters" ซึ่งเราจะมาอธิบายกันในช่วงนี้ครับ

Notes คือ Building Block ที่เล็กที่สุดของการปรับใช้ Amazon ElastiCache เป็น RAM ที่เชื่อมต่อกับ Network ที่มีขนาดคงที่ แต่ละ Nodes จะ runs Instance ของบริการที่สอดคล้องกับ Protocol Memcached หรือ Redis และมีชื่อ DNS และ port ของตัวเอง และมีการซัพพอร์ต Nodes หลายประเภท โดยแต่ละโหนดจะมี Memory ที่เชื่อมโยงแตกต่างกันไป
Redis shard คือ เซตย่อยของ cluster’s keyspace ซึ่งสามารถรวม primary node ตัวจำลองการอ่านค่าศูนย์หรือมากกว่า สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการปรับใช้ Redis โปรดดูหัวข้อ Redis ด้านล่าง
Cluster คือ Shards หลายๆตัวมารวมกัน
(คุณผู้อ่านสามารถข้อความต้นฉบับได้จากลิ้งค์ด้านล่าง) Amazon Elasticache FAQs - Amazon Web Service

จะว่าง่ายๆ
Notes คือ Building Block ที่เล็กที่สุดที่เอาไปปรับใช้ Amazon ElastiCache Shard คือกลุ่มของ Nodes
Cluster คือ Shards หลายๆตัวมารวมกัน

Shard (ใน API และ CLI node group) คือการจัดเรียงโหนดตามลำดับชั้น
Redis nodes and shards - Amazon ElastiCache for Redis

Turtorial

หากท่านผู้อ่านสนใจจะลองใช้ Amazon ElastiCache ณ ปัจจุบัน เรามี Tutorial เกี่ยวกับ Amazon ElastiCache อยู่ทั้งหมด 3 Tutorial
โดยสามารถเข้าไปทดลองได้ที่ลิ้งค์ด้านล่างนี้ครับ
บทแนะนำสอนการใช้งานสำหรับ Amazon Web Services (AWS)

โดยในบรรดา 3 อันนี้ผมแนะนำให้ลองทำ การเพิ่มประสิทธิภาพฐานข้อมูล MySQL ด้วย Amazon ElastiCache for Redis - Amazon Web Services ก่อนเพราะเป็นบทเรียนที่สั้น และ เรียนเสร็จแล้วจะสามารถเข้าใจคอนเซ็ปของ Amazon ElastiCache ได้

(อ้างอิงจากในเว็บ)
ในบทแนะนำสอนการใช้งานนี้ คุณจะได้เรียนรู้วิธีเพิ่มประสิทธิภาพแอปพลิเคชันของคุณโดยการเพิ่มชั้นการแคชในหน่วยความจำให้กับฐานข้อมูลเชิงสัมพันธ์ของคุณ คุณจะได้ดำเนินกลยุทธ์แบบไม่ใช้แคชโดยใช้ Amazon ElastiCache for Redis นอกเหนือจากฐานข้อมูล MySQL กลยุทธ์แบบไม่ใช้แคชเป็นหนึ่งในตัวเลือกซึ่งเป็นที่นิยมที่สุดสำหรับการเพิ่มประสิทธิภาพฐานข้อมูล เมื่อแอปพลิเคชันจำเป็นต้องอ่านข้อมูลจากฐานข้อมูล จะต้องสืบค้นแคชเป็นอันดับแรก หากไม่พบข้อมูล แอปพลิเคชันจะสืบค้นฐานข้อมูลและนำเข้าข้อมูลแคชพร้อมผลลัพธ์ มีหลายวิธีในการหักล้างแคชหากบันทึกที่เกี่ยวข้องมีการดัดแปลงในฐานข้อมูลพื้นฐาน แต่สำหรับในบทแนะนำสอนการใช้งานนี้ เราจะใช้ฟีเจอร์การหมดอายุ Time To Live (TTL) ที่จัดเตรียมไว้ให้โดย Redis

สรุป

เป็นยังไงกันบ้างครับกับ Amazon ElastiCache ถ้าอ่านบทความนี้แล้วรู้สึกว่ายังไม่ค่อยเข้าใจว่า Amazon ElastiCache นั้นทำอะไรได้
ผมแนะนำให้ลองทำ Tutorial ที่แนบมาในบทความนี้ รับรองว่าจะเห็นภาพมากกว่าขึ้นแน่นอนครับ Amazon ElastiCache นั้นมีการทำงานอย่างไรบ้าง
หามีการตอบรับหรือมีท่านผู้อ่านอยากรู้เกี่ยวกับ Amazon ElastiCache มากขึ้น ครั้งหน้าถ้ามีโอกาสเราจะมาทำ Turtorial ของ Amazon ElastiCache กันครับ

บทความต้นฉบับ

AWS再入門2022 AWS ElastiCacheについて | DevelopersIO

บทความที่เกี่ยวข้อง