DEV Community

Cover image for เริ่มต้นใช้งาน Amazon RDS บน Graviton2 เพื่อเพิ่มประสิทธิภาพในราคาที่ถูกลง
Chatcharoen Chivakanit for AWS Community ASEAN

Posted on • Edited on

เริ่มต้นใช้งาน Amazon RDS บน Graviton2 เพื่อเพิ่มประสิทธิภาพในราคาที่ถูกลง

AWS มีการพัฒนานวัตกรรมใหม่ๆ เพื่อตอบโจทย์การใช้งานของผู้ใช้อยู่ตลอดเวลา ทั้งในด้านประสิทธิภาพ, ความง่ายในการใช้, feature ที่เพิ่มขึ้น รวมทั้งยังคำนึงถึงเรื่องการลดค่าใช้จ่ายอีกด้วย

ในโพสต์นี้จะอธิบายการเปลี่ยน Amazon RDS Instance type มาใช้ Amazon Graviton2 และมี CloudFormation template สำหรับสร้าง environment เพื่อทดสอบ

Table of Contents

  1. Amazon RDS คืออะไร
  2. Amazon Graviton2 คืออะไร
  3. Amazon RDS type และ version ที่ Support Graviton2
  4. วิธีการเปลี่ยน Instance type มาเป็น Graviton2
  5. ทดสอบ Performance
  6. CloudFormation สำหรับทดสอบ
  7. บทสรุป
  8. แหล่งข้อมูลอ้างอิง

Amazon RDS คืออะไร

Amazon Relational Database Service (Amazon RDS) คือบริการฐานข้อมูลเชิงสัมพันธ์ หรือที่คุ้นเคยในชื่อ Relational Database ซึ่งจะเก็บข้อมูลในรูปแบบของ Table มี Row และ Column เป็นส่วนประกอบ โดย Table ในฐานข้อมูลสามารถมีความเชื่อมโยงกันด้วย Primary key, Foreign Key มีการใช้ ACID เพื่อดูแลความถูกต้องของข้อมูล

Amazon RDS เข้ามาช่วยลด effort ในการดูแลจัดการฐานข้อมูล เช่น การ provision, backup, patch, encryption, disaster recovery โดยผู้ใช้สามารถตั้งค่าและ enable feature ต่างๆได้อย่างสะดวก ทำให้ผู้ใช้สามารถมีเวลา focus ในส่วนของการ design, optimize เพื่อตอบโจทย์ธุรกิจมากขึ้น

Amazon RDS ให้บริการฐานข้อมูลด้วยกันทั้งหมด 6 ประเภทคือ
Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle, Microsoft SQL Server

Amazon Graviton2 คืออะไร

Amazon Graviton2 คือ Processor ที่ AWS สร้างขึ้นมาโดยใช้สถาปัตยกรรมแบบ 64-bit Arm Neoverse โดย Amazon Graviton2 ให้ในเรื่องของประสิทธิภาพการทำงานที่ดีขึ้น ในราคาที่ถูกลง

ประเภทของ RDS Instance ที่ใช้ Graviton2 จะมีดังนี้

  • t4g : สำหรับ dev/test workload
  • m6g : สำหรับ general purpose workload
  • r6g : สำหรับ memory optimized workload

ใน Service อื่นๆเช่น EC2, EKS, ECS ก็สามารถสร้าง Instance type ที่เป็น Graviton2 ได้
สามารถดูรายละเอียด instance เพิ่มเติมได้ ที่นี่

Amazon RDS type และ version ที่ Support Graviton2

  • Amazon Aurora
    • Aurora (MySQL 5.7) version 2.09.1 and higher
    • Aurora PostgreSQL version 11.9 and higher
  • Amazon RDS for MySQL
    • MySQL version 8.0.17 and higher
  • Amazon RDS for PostgreSQL
    • PostgreSQL version 12.5 and higher
  • Amazon RDS for MariaDB
    • MariaDB version 10.4.13 and higher

Amazon RDS Graviton2 instance มีหลากหลาย configuration ให้เลือกใช้ตามตารางตัวอย่างด้านล่าง
Amazon RDS Graviton2 instance Type สามารถตรวจสอบ RDS Instance type ทั้งหมดได้ ที่นี่

วิธีการเปลี่ยน Instance type มาเป็น Graviton2

⚠️ มี Downtime ประมาณ ~10-15 นาที อาจจะมากขึ้นตามขนาดของฐานข้อมูล

  • ใช้ AWS Console
    1. เปิด RDS service console https://console.aws.amazon.com/rds RDS Console
    2. เลือก​ RDS database ที่ต้องการ และคลิก Modify Modify RDS database
    3. เลือก DB instance Class ที่ต้องการ ในตัวอย่างนี้จะใช้ db.m6g.large DB instance Class
    4. เลื่อนลงมาด้านล่าง คลิก Continue Continue
    5. เลือก Apply immediately เพื่อเปลี่ยน RDS instance type ทันที และคลิก Modify DB instance Apply immediate หลังจากนั้น RDS instance จะขึ้น status: Modifying Modifying ใช้เวลาประมาณ 10 นาที RDS instance ก็จะเปลี่ยนมาใช้ db.m6g.large ซึ่งเป็น Graviton2 instance type เรียบร้อยแล้ว Complete
  • ใช้ AWS Command Line Interface (CLI) ก่อนอื่นต้องเตรียม Access key และ Secret key เพื่อเข้าใช้งานและให้สิทธิ์ในการสร้าง RDS instance https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

    ถัดมาก็ติดตั้ง AWS CLI version 2
    https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

    หลังจากที่ Config AWS CLI กับ Notebook หรือ PC แล้วก็สามารถที่จะเปลี่ยน RDS instance type ตาม command ตัวอย่างด้านล่าง ต้องการเปลี่ยน RDS instance : rdsgraviton เป็น db.m6g.large

    aws rds modify-db-instance --db-instance-identifier rdsgraviton --db-instance-class db.m6g.large --apply-immediately
    

ทดสอบ Performance

เราจะใช้ sysbench ซึ่งเป็น benchmark tool ที่ได้รับความนิยม มาทดสอบประสิทธิภาพของ RDS MySQL
ในตัวอย่างนี้จะใช้ Amazon Linux2 bastion host บน EC2 เพื่อติดตั้ง sysbench และ connect ไปที่ RDS

  1. รัน command นี้บน bastion host เพื่อเตรียม environment สำหรับติดตั้ง sysbench
    sudo yum -y install git gcc make automake libtool openssl-devel ncurses-compat-libs
    
    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    
    sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
    
    sudo yum -y install mysql-community-devel mysql-community-client mysql-community-common
    
  2. Clone sysbench git repository และ install
    git clone https://github.com/akopytov/sysbench.git
    cd sysbench
    sudo ./autogen.sh
    sudo ./configure
    sudo make
    sudo make install
    
  3. Check sysbench version
    sysbench --version
    
  4. สร้าง MySQL database sbtest สำหรับทดสอบ
    mysql -u admin -pAWSpassword \
      -hrdsgraviton.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com \
      -P3306 -e 'create database sbtest;'
    
  5. Prepare และรัน sysbench
    sysbench oltp_read_write --db-driver=mysql --mysql-user=admin --mysql-password=AWSpassword --mysql-host=rdsgraviton.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com prepare
    sysbench oltp_read_write --db-driver=mysql --mysql-user=admin --mysql-password=AWSpassword --mysql-host=rdsgraviton.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com run
    

    ภาพด้านล่างคือผลลัพธ์จากการรัน sysbench บน RDS for MySQL db.m5.large
    sysbench-db.m5.large

    ภาพด้านล่างคือผลลัพธ์จากการรัน sysbench บน RDS for MySQL db.m6g.large
    sysbench-db.m6g.large

    เปรียบเทียบผลลัพธ์
    Compare

    RDS Graviton2 สามารถทำ performance ได้ดีขึ้น ~10% ใน testing environment นี้
    ดังนั้นทางผู้ใช้งาน RDS สามารถทดสอบกับ environment dev/test ก่อนที่จะนำไปใช้บน production environment

    โดยการเปลี่ยน RDS instance type มาใช้งาน Graviton2 ข้อดีคือ Application ที่ใช้ database อยู่ไม่ต้องมีแก้ไข เพราะ database engine, version ไม่ได้ถูกแก้ ซึ่งจะเปลี่ยนในส่วนของ infrastructure hardware

    ทีนี้มาดูในส่วนของ cost กันบ้าง เมื่อเปรียบเทียบกันแล้ว Graviton2 instance type (db.m6g.large) จะถูกกว่า Intel instance type (db.m5.large) อยู่ประมาณ ~10%
    Compare cost

    ตัวอย่างการคำนวณ cost
    https://calculator.aws/#/estimate?id=ed9f868fac8a92e62642455ed394868fecab382f

CloudFormation สำหรับทดสอบ

ถ้าต้องการ deploy environment สำหรับทดสอบสร้าง RDS for MySQL เพื่อลองเปลี่ยน Instance Type และเตรียม EC2 สำหรับเป็น Bastion host
สามารถ deploy CloudFormation ใน Singapore region (ap-southeast-1) ได้เลย
⚠️ cost ของการรัน Resource ทั้งหมดจะประมาณ ~$0.27 ต่อชั่วโมง
รายละเอียดเกี่ยวกับ cost เพิ่มเติม

Architecture diagram
Architecture diagram

ขั้นตอนการ Deploy

  • Deploy CloudFormation โดยคลิก ที่นี่
  • คลิก Next CloudFormation
  • ในหน้านี้ สามารถใส่ค่า parameters ได้ดังนี้
    • เปลี่ยน Stack name ตามตัวอย่างจะใช้ RDSGraviton2Workshop
    • เปลี่ยน Database password ตามตัวอย่างจะใช้ AWSpassword
    • เลือก EC2 KeyPair สำหรับ SSH เข้า bastion host
    • สำหรับ Network component เช่น VPC, Subnet สามารถตั้งตามค่า Default และคลิก Next
    • CloudFormation
  • เลื่อนลงมาด้านล่าง และคลิก Next CloudFormation
  • Review CloudFormation และคลิก Next CloudFormation
  • หลังจากนั้น CloudFormation ก็จะสร้าง resources ต่างๆตาม Architecture Diagram และเมื่อสร้างเสร็จแล้วจะขึ้น status: CREATE_COMPLETE
    CloudFormation

บทสรุป

จะเห็นได้ว่า RDS Graviton2 instance type ได้เข้ามาช่วยในเรื่องของ performance ที่ดีขึ้น และสามารถลด cost ได้ โดยที่ไม่ต้องมีการแก้ไข Application

ผมแนะนำให้ทำการทดสอบใน dev/test database ก่อนนำไปปรับใช้บน production นะครับ

แหล่งข้อมูลอ้างอิง

หวังว่าโพสต์นี้จะเป็นประโยชน์กับท่านผู้อ่าน เพื่อเป็นแนวทางการใช้งาน Amazon RDS บน Graviton2 instance type กันนะครับ

Top comments (3)

Collapse
 
chatchaikomrangded profile image
Chatchai Komrangded (Bas)

I love the benchmark!!

Collapse
 
nutchanon profile image
Nutchanon Leelapornudom

Better price/performance !!

Collapse
 
aomjk profile image
Orawan Juprapattasri

good article ja