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

สวัสดีครับ LIGHT จากบริษัท Classmethod (Thailand) ครับ

ครั้งนี้อยากจะมาแนะนำให้ทุกคนได้รู้จักกับบริการ Amazon Kinesis กันครับ

Amazon Kinesis คือ

เป็นบริการ fully managed service ซึ่งทำหน้าที่เป็นเกตเวย์สำหรับการจัดเก็บข้อมูลการสตรีมที่สร้างขึ้นจำนวนมากอย่างต่อเนื่องบน AWS โดยสามารถใช้งานเป็นบัฟเฟอร์ที่มีความน่าเชื่อถือสูง คงทน และประสิทธิภาพด้านต้นทุนที่ยอดเยี่ยม

จุดเด่น

Amazon Kinesis Data Streams

  • Kinesis Data Streams สามารถลงบันทึกด้วยขนาดสูงสุดที่ 1 MB/วินาที และ 1,000 บันทึกต่อวินาทีสำหรับการเขียน และ 2 MB/วินาทีสำหรับการอ่าน รวมถึงสามารถดูข้อมูลได้แบบกึ่งเรียลไทม์ (ภายในไม่กี่วินาที)

  • บันทึกที่มีการลงทะเบียนไว้จะถูกกำหนดให้ไม่ซ้ำกันไว้ และสามารถใช้อ้างอิงข้อมูลจากแหล่งต่างๆได้ ไม่ว่าจะเป็น EC2、EMR、Lambda เป็นต้น

  • บันทึกจะถูกเก็บรักษาไว้เป็นเวลา 24 ชั่วโมง (และสามารถขยายได้ถึง 7 วันโดยการตั้งค่าเพิ่มเติม)

  • สามารถปรับประสิทธิภาพได้โดยการเพิ่มหรือลดจำนวน shard (ประสิทธิภาพต่อ 1 shard, 1000 PUT ต่อ 1 วินาที หรือ 1 MB ต่อ วินาที)

Amazon Kinesis Firehose

  • ข้อมูลที่ลงทะเบียนได้จะเหมือนกับ Kinesis Data Streams

  • ข้อมูลที่ลงทะเบียนจะถูกส่งออกไปยัง S3, Redshift โดยอัตโนมัติ

  • ไม่จำเป็นต้องใช้ shard ในการจัดการประสิทธิภาพ อย่างที่จำเป็นใน Kinesis Data Streams และยังสามารถใช้การเรียกเก็บเงินแบบจ่ายตามการใช้งานจริงตามจำนวนข้อมูลที่ป้อนเข้าไปได้

  • สามารถ PUT ได้ที่ 2500 ครั้งต่อวินาที และยังสามารถการปรับขีดจำกัดของบริการเพิ่มได้อีกด้วย

Amazon Kinesis Analytics

  • การประมวลผลแบบ TimeWindow ของข้อมูลสตรีมที่ลงทะเบียนใน Amazon Kinesis จะสามารถรวบรวมจากช่วงเวลาล่าสุดได้โดยใช้ SQL

  • สามารถใช้สำหรับการประมวลผลการสตรีมที่หลากหลาย เช่น "Streaming ETL", "continuous metric generation", "Responsive real-time analytics" เป็นต้น

ราคา

ตัวอย่างราคาของบริการ Kinesis Streams ตรวจสอบค่าบริการตัวอย่างได้จากลิ้งค์ทางด้านล่างนี้ครับ

Amazon Kinesis Data Firehose Pricing

Amazon Kinesis Data Streams Pricing

หรือท่านใดมีรายละเอียดการใช้งานในใจแล้วก็สามารถลงข้อมูลเพื่อตรวจสอบราคาที่เหมาะกับตนเองตามลิ้งค์ทางด้านล่างได้ครับ

AWS Pricing Calculator

Amazon Kinesis Data Streams

แผนบริการจะมีให้เลือก 2 อย่างคือ

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

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

โดยในบทความนี้เราจะแสดงตัวอย่างราคาของโหมดตามความต้องการครับ

ตัวอย่างค่าบริการต่อเดือนโหมดตามความต้องการ (On-Demand Mode)

  • ค่าบริการรายเดือน = 1125 USD

รายละเอียด

ในกรณีที่ส่งข้อมูลสตรีม 1,000 บันทึกต่อวินาที โดยแต่ละบันทึกมีขนาด 3 KB ไปยัง Amazon Kinesis Data Stream ที่ทำงานในโหมดความจุตามความต้องการใน Singapore Region

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

ขนาดบันทึก 3 KB ปัดขึ้นให้ใกล้เคียงกับ 1 KB มากที่สุด = 3 KB

ข้อมูลที่นำเข้า (GB ต่อวินาที) = (1,000 บันทึก/วินาที * 3 KB/บันทึก) / 1,048,576 KB/GB = 0.00286 GB/วินาที

ข้อมูลที่นำเข้า (GB ต่อเดือน) = 30 วัน/เดือน * 86,400 วินาที/วัน * 0.00286 GB/วินาที = 7,413.12 GB/เดือน

เนื่องจากคุณมีผู้ใช้บริการหนึ่งราย: ข้อมูลที่เรียกดู (GB ต่อวินาที) = 1 (ผู้ใช้บริการ) * (1,000 บันทึก/วินาที * 3 KB/บันทึก) / 1,048,576 KB/GB = 0.00286 GB/วินาที

ข้อมูลที่เรียกดู (GB ต่อเดือน) = 30 วัน/เดือน * 86,400 วินาที/วัน * 0.00286 GB/วินาที = 7,413.12 GB/เดือน

การเก็บรักษาหนึ่งวันรวมอยู่ในค่าบริการที่นำเข้าข้อมูล

ราคาของ Singapore Region อยู่ที่ 0.98 USD ต่อ GB ของข้อมูลที่นำเข้า

ค่าบริการรายเดือนของข้อมูลเข้า = 7,413.12 GB * 0.098 USD/GB = 726.48 USD

ราคาของ Singapore Region อยู่ที่ 0.049 USD ต่อ GB ของข้อมูลที่นำเข้า

ค่าบริการรายเดือนของข้อมูลออก = 7,413.12 GB * 0.049 USD/GB = 363.24 USD

เนื่องจากมีการใช้งานสตรีมเป็นเวลา 30 วันในเดือนดังกล่าว: ค่าบริการต่อสตรีม = 30 * 24 * 0.049 (อัตรา) = 35.28 USD

ค่าใช้จ่ายรายเดือนทั้งหมด = 726.48 USD + 363.24 USD + 35.28 USD = 1125 USD

Amazon Kinesis Firehose

ตัวอย่างค่าบริการต่อเดือน

  • ค่าบริการรายเดือน = 45.73 USD

รายละเอียดที่ใช้ในการคำนวณ

  • ราคาสำหรับ 500 TB แรก/ เดือน = 0.037 USD ต่อ GB (ราคาของ Singapore Region)
  • ขนาดบันทึก 3 KB ปัดขึ้นให้ใกล้เคียงกับปริมาณข้อมูลที่นำเข้า 5 KB มากที่สุด = 5 KB
  • GB ที่เรียกเก็บสำหรับการนำเข้าข้อมูล = (100 บันทึก/วินาที * 5 KB/บันทึก) / 1,048,576 KB/GB * 30 วัน / เดือน * 86,400 วินาที/วัน = 1,235.96 GB
  • ค่าบริการการนำเข้าข้อมูลต่อเดือน = 1,235.96 GB * 0.029 USD/GB = 45.73 USD

ข้อมูลอ้างอิง(Amazon DynamoDB)

  • ถึงการนำไปใช้จะต่างกัน แต่ก็ลองคำนวณดูว่าถ้าสมมติว่ามีการใช้ DynamoDB แทน Kinesis ในการรับข้อมูลสตรีมและจัดเก็บข้อมูลเป็นเวลา 24 ชั่วโมงราคาจะเป็นยังไง
  • คำนวณโดยใช้ AWS SIMPLE MONTHLY CALCULATOR

รายละเอียด
Region - Singapore
411 GB ต่อเดือน (การเก็บรักษาข้อมูล 1 วัน)
Item Size - 3KB
จำนวน Item ที่เขียนต่อวินาที - 2,000 (เขียน 1,000, ลบ 1,000)

Use Case

Kinesis Streams + Lambda, EC2, EMR

  • Lambda เหมาะอย่างยิ่งสำหรับการประมวลผลข้อมูลขนาดเล็กที่จัดเก็บข้อมูลที่ได้รับจาก Kinesis ลงใน S3, DynamoDB

  • EC2 สามารถใช้งานเป็นสภาพแวดล้อมการดำเนินการสำหรับแอพพลิเคชันที่ซับซ้อน และ ในกรณีที่มีข้อกำหนดในการรักษาประสิทธิภาพแบบเรียลไทม์ (ไม่กี่วินาที)

  • พิจารณาการใช้ EMR โดยคำนึงถึงขนาดข้อมูลและการประมวลผลเนื้อหา

Kinesis Firehose

  • แนะนำให้ใช้ Firehose ในการทำ Data archive ไปยัง S3, Redshift

  • สามารถทำการประมวลผลแบบกึ่งเรียลไทม์ (หลายนาที) ได้ผ่านการเชื่อมโยง Lambda กับ S3 ที่เป็น Trigger

การใช้งานร่วมกับบริการของ AWS

  • สามารถรับข้อมูลจาก AWS IoT, CloudWatch Logs ด้วย Kinesis ได้

  • Kinesis และ Lambda จะมีฟังก์ชั่นที่จะทำหน้าที่เป็น HUB ในการทำงานร่วมกับบริการอื่นๆ

  • Kinesis Analytics สามารถตั้งค่าการแจ้งเตือนขั้นสูง อย่าง log monitoring ได้

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

สุดท้ายนี้

Amazon Kinesis เป็นหนึ่งในระบบที่ถือเป็นกระดูกสันหลังของบริการคลาวด์ โดยถูกพัฒนาขึ้นมาเพื่อรวบรวมบันทึกการใช้บริการจริงที่เชื่อถือได้ และในบริการต่างๆของ Amazon Kinesis จะสังเกตได้ว่า AWS พัฒนาบริการนี้ให้ใช้งานง่ายขึ้นเยอะเลยครับ