<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Chatcharoen Chivakanit</title>
    <description>The latest articles on Forem by Chatcharoen Chivakanit (@chatcharoen).</description>
    <link>https://forem.com/chatcharoen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F502799%2F96377bff-7e8d-4a20-b194-b965d0c02599.jpg</url>
      <title>Forem: Chatcharoen Chivakanit</title>
      <link>https://forem.com/chatcharoen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chatcharoen"/>
    <language>en</language>
    <item>
      <title>Get Started with Amazon RDS on Graviton2 for better price performance</title>
      <dc:creator>Chatcharoen Chivakanit</dc:creator>
      <pubDate>Wed, 06 Jul 2022 08:10:47 +0000</pubDate>
      <link>https://forem.com/awscommunity-asean/get-started-with-amazon-rds-on-graviton2-for-better-price-performance-12m7</link>
      <guid>https://forem.com/awscommunity-asean/get-started-with-amazon-rds-on-graviton2-for-better-price-performance-12m7</guid>
      <description>&lt;p&gt;AWS is developing new innovations to meet the needs of users at all times both in terms of efficiency, ease of use, increased features, as well as taking into account the cost optimization as well.&lt;/p&gt;

&lt;p&gt;In this post, I will explain how to change Amazon RDS Instance type to use Amazon Graviton2 and provide CloudFormation template for create environment for testing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Table of Contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;What's Amazon RDS&lt;/li&gt;
&lt;li&gt;What's Amazon Graviton2&lt;/li&gt;
&lt;li&gt;Amazon RDS type and version that Support Graviton2&lt;/li&gt;
&lt;li&gt;How to change Instance type to Graviton2 based&lt;/li&gt;
&lt;li&gt;Performance testing&lt;/li&gt;
&lt;li&gt;CloudFormation for testing&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;li&gt;References&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a&gt; &lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Amazon RDS
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Amazon Relational Database Service (Amazon RDS)&lt;/strong&gt; is Relational database service which store data in Table based consists of row and column. Some tables have relationship using &lt;a href="https://en.wikipedia.org/wiki/Primary_key" rel="noopener noreferrer"&gt;Primary key&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Foreign_key" rel="noopener noreferrer"&gt;Foreign Key&lt;/a&gt; and apply &lt;a href="https://en.wikipedia.org/wiki/ACID" rel="noopener noreferrer"&gt;ACID&lt;/a&gt; for data consistency.&lt;/p&gt;

&lt;p&gt;Amazon RDS help customers to reduce effort in database operations such as provision, backup, patch, encryption, disaster recovery and allow user to enable features easily. So, users can focus on database design, optimize to fulfill  business goals.&lt;/p&gt;

&lt;p&gt;Amazon RDS provides 6 relational database engines:&lt;br&gt;
&lt;a href="https://aws.amazon.com/rds/aurora" rel="noopener noreferrer"&gt;Amazon Aurora&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/postgresql" rel="noopener noreferrer"&gt;PostgreSQL&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/mysql" rel="noopener noreferrer"&gt;MySQL&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/mariadb" rel="noopener noreferrer"&gt;MariaDB&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/oracle" rel="noopener noreferrer"&gt;Oracle&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/sqlserver" rel="noopener noreferrer"&gt;Microsoft SQL Server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  What's Amazon Graviton2
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Amazon Graviton2&lt;/strong&gt; is Processor which AWS create by using 64-bit Arm Neoverse architecture. Amazon Graviton2 provides better performance in lower price.&lt;/p&gt;

&lt;p&gt;There're RDS Instance type that Graviton2&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;t4g : For dev/test workload &lt;/li&gt;
&lt;li&gt;m6g : For general purpose workload&lt;/li&gt;
&lt;li&gt;r6g : For memory optimized workload &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other Services such as EC2, EKS, ECS you can provision Instance type that support Graviton2. &lt;br&gt;
You can see more details about supported instance &lt;a href="https://aws.amazon.com/ec2/graviton" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Amazon RDS type and version that Support Graviton2
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Aurora&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Aurora (MySQL 5.7) version 2.09.1 and higher&lt;/li&gt;
&lt;li&gt;Aurora PostgreSQL version 11.9 and higher&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;
&lt;strong&gt;Amazon RDS for MySQL&lt;/strong&gt;

&lt;ul&gt;&lt;li&gt;MySQL version 8.0.17 and higher&lt;/li&gt;&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Amazon RDS for PostgreSQL&lt;/strong&gt;&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;PostgreSQL version 12.5 and higher&lt;/li&gt;&lt;/ul&gt;




&lt;li&gt;

&lt;strong&gt;Amazon RDS for MariaDB&lt;/strong&gt;

&lt;ul&gt;&lt;li&gt;MariaDB version 10.4.13 and higher&lt;/li&gt;&lt;/ul&gt;




&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Amazon RDS Graviton2 instance provides configurations for use as table below&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz1qzivbw14iso4hazmn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz1qzivbw14iso4hazmn.png" alt="Amazon RDS Graviton2 instance Type"&gt;&lt;/a&gt; you can find all RDS Instance type information &lt;a href="https://aws.amazon.com/rds/instance-types" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  How to change Instance type to Graviton2 based
&lt;/h3&gt;

&lt;p&gt;⚠️ There's Downtime ~10-15 minutes and might higher depend on your data size.&lt;br&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use AWS Console&lt;/strong&gt;&lt;ol&gt;
&lt;li&gt;Open RDS service console 
&lt;a href="https://console.aws.amazon.com/rds" rel="noopener noreferrer"&gt;https://console.aws.amazon.com/rds&lt;/a&gt; &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhz8nus261lf76mw5udjv.png" alt="RDS Console"&gt;
&lt;/li&gt;

&lt;li&gt;Choose​ RDS database that you would like to change instance type and click &lt;strong&gt;Modify&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6q67gac4nfv9dsc79858.png" alt="Modify RDS database"&gt;
&lt;/li&gt;

&lt;li&gt;Choose DB instance Class, For this example is &lt;strong&gt;db.m6g.large&lt;/strong&gt; 
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fal4zntu7sv5ipaqoffop.png" alt="DB instance Class"&gt;
&lt;/li&gt;

&lt;li&gt;scroll down and click &lt;strong&gt;Continue&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffv365yvn0sa84p8jtaz5.png" alt="Continue"&gt;
&lt;/li&gt;

&lt;li&gt;Choose &lt;strong&gt;Apply immediately&lt;/strong&gt; for change RDS instance type immediately, then click &lt;strong&gt;Modify DB instance&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foag7y5a6a4c7p8t8p16v.png" alt="Apply immediate"&gt; After that RDS instance will show status: Modifying &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6atpwgmg1ezkq876gchy.png" alt="Modifying"&gt; it takes time around 10 minutes RDS instance will change to &lt;strong&gt;db.m6g.large&lt;/strong&gt; which is Graviton2 instance type successfully &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfof67kp2y8hwokyd7yw.png" alt="Complete"&gt;
&lt;/li&gt;

&lt;/ol&gt;

&lt;/li&gt;




&lt;li&gt;
&lt;strong&gt;Use AWS Command Line Interface (CLI)&lt;/strong&gt;
Prepare Access key และ Secret key for access and grant privileges to build RDS instance &lt;a href="https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys&lt;/a&gt;

&lt;p&gt;Then, install AWS CLI version 2&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After configure AWS CLI in Notebook or PC, you can change RDS instance type by using command as below. In this example I'll change RDS instance : rdsgraviton to db.m6g.large&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;aws rds modify-db-instance &lt;span class="nt"&gt;--db-instance-identifier&lt;/span&gt; rdsgraviton &lt;span class="nt"&gt;--db-instance-class&lt;/span&gt; db.m6g.large &lt;span class="nt"&gt;--apply-immediately&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;






&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance testing
&lt;/h3&gt;

&lt;p&gt;I'll use &lt;strong&gt;sysbench&lt;/strong&gt; which is popular benchmark tool to test performance of RDS MySQL &lt;br&gt;
In this example, I'll use Amazon Linux2 bastion host on EC2 then, install sysbench and connect to RDS &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run this command on bastion host for prepare environment to install sysbench

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;git gcc make automake libtool openssl-devel ncurses-compat-libs

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

&lt;span class="nb"&gt;sudo &lt;/span&gt;rpm &lt;span class="nt"&gt;-ivh&lt;/span&gt; mysql-community-release-el7-5.noarch.rpm

&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;mysql-community-devel mysql-community-client mysql-community-common
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; Clone sysbench git repository และ install

&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/akopytov/sysbench.git
&lt;span class="nb"&gt;cd &lt;/span&gt;sysbench
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./autogen.sh
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./configure
&lt;span class="nb"&gt;sudo &lt;/span&gt;make
&lt;span class="nb"&gt;sudo &lt;/span&gt;make &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; Check sysbench version

&lt;pre class="highlight shell"&gt;&lt;code&gt;sysbench &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; Create MySQL database sbtest for testing

&lt;pre class="highlight shell"&gt;&lt;code&gt;mysql &lt;span class="nt"&gt;-u&lt;/span&gt; admin &lt;span class="nt"&gt;-pAWSpassword&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-hrdsgraviton&lt;/span&gt;.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-P3306&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'create database sbtest;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; Prepare and run sysbench

&lt;pre class="highlight shell"&gt;&lt;code&gt;sysbench oltp_read_write &lt;span class="nt"&gt;--db-driver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql &lt;span class="nt"&gt;--mysql-user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;admin &lt;span class="nt"&gt;--mysql-password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;AWSpassword &lt;span class="nt"&gt;--mysql-host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;rdsgraviton.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com prepare
sysbench oltp_read_write &lt;span class="nt"&gt;--db-driver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql &lt;span class="nt"&gt;--mysql-user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;admin &lt;span class="nt"&gt;--mysql-password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;AWSpassword &lt;span class="nt"&gt;--mysql-host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;rdsgraviton.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com run
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;This below picture is the result from command sysbench on RDS for MySQL &lt;strong&gt;db.m5.large&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql7qzu1yg28o3wy49hrz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql7qzu1yg28o3wy49hrz.png" alt="sysbench-db.m5.large"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This below picture is the result from command sysbench on RDS for MySQL &lt;strong&gt;db.m6g.large&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63wzswsg40l1tl5qgvnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63wzswsg40l1tl5qgvnm.png" alt="sysbench-db.m6g.large"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Compare the result&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm2tygfypc3h6lvr0tfa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm2tygfypc3h6lvr0tfa.png" alt="Compare"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RDS Graviton2 can perform better performance ~10% in this testing environment&lt;br&gt;&lt;br&gt;
So, you can test on your RDS in environment dev/test before apply on production environment &lt;/p&gt;

&lt;p&gt;Changing RDS instance type to Graviton2 you can gain benefit that no need to change application that using database because there's no change on database engine, version. Only infrastructure hardware that changed.&lt;/p&gt;

&lt;p&gt;Regarding cost when compare the result. You can see Graviton2 instance type (db.m6g.large) is lower cost than Intel instance type (db.m5.large) ~10%&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek3ozgbj8qlferashi56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek3ozgbj8qlferashi56.png" alt="Compare cost"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example cost calculation&lt;br&gt;
&lt;a href="https://calculator.aws/#/estimate?id=ed9f868fac8a92e62642455ed394868fecab382f" rel="noopener noreferrer"&gt;https://calculator.aws/#/estimate?id=ed9f868fac8a92e62642455ed394868fecab382f&lt;/a&gt; &lt;br&gt;
&lt;/p&gt;


&lt;/li&gt;


&lt;/ol&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CloudFormation for testing
&lt;/h3&gt;

&lt;p&gt;If you would like to deploy environment for provision RDS for MySQL and change Instance Type. And using EC2 as a Bastion host.&lt;br&gt;
You can deploy CloudFormation in Singapore region (ap-southeast-1) &lt;br&gt;
⚠️ There're cost of Resources ~$0.27 per hour.&lt;br&gt;
You can see more details about EC2 cost&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EC2 : &lt;a href="https://aws.amazon.com/ec2/pricing" rel="noopener noreferrer"&gt;https://aws.amazon.com/ec2/pricing&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;RDS for MySQL : &lt;a href="https://aws.amazon.com/rds/mysql/pricing" rel="noopener noreferrer"&gt;https://aws.amazon.com/rds/mysql/pricing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architecture diagram&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoqbll6rxjx4e3hoinqq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoqbll6rxjx4e3hoinqq.png" alt="Architecture diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step to Deploy&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deploy CloudFormation by click &lt;a href="https://console.aws.amazon.com/cloudformation/home#/stacks/new?stackName=RDSGraviton2Workshop&amp;amp;templateURL=https://rdsgraviton2-20210528065643-hostingbucket-master.s3-ap-southeast-1.amazonaws.com/RDSGraviton2Workshop.yaml" rel="noopener noreferrer"&gt;here&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;คลิก &lt;strong&gt;Next&lt;/strong&gt; &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4zymic6cnlyhx0o8oadc.png" alt="CloudFormation"&gt; &lt;/li&gt;
&lt;li&gt; In this page you can input parameters as below &lt;ul&gt;
&lt;li&gt; Change Stack name in this example will use &lt;strong&gt;RDSGraviton2Workshop&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt; Change Database password in example will use &lt;strong&gt;AWSpassword&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt; Choose EC2 KeyPair for SSH into bastion host &lt;/li&gt;
&lt;li&gt; For Network component such as VPC, Subnet will leave Default. Then, click &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9n74twbh92pvzudkvj7a.png" alt="CloudFormation"&gt;
&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt; Scroll down and click &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d3vw21sm4tls2i9klps.png" alt="CloudFormation"&gt;
&lt;/li&gt;

&lt;li&gt; Review CloudFormation and click &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz1e744m9wc2l46bf94g.png" alt="CloudFormation"&gt;
&lt;/li&gt;

&lt;p&gt;After that CloudFormation will provision resources in this Architecture Diagram and after complete will show status: CREATE_COMPLETE&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyo3ot0dl84ldzeiajovj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyo3ot0dl84ldzeiajovj.png" alt="CloudFormation"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;You can see RDS Graviton2 instance type will help increase better performance and reduce cost without changing Application.&lt;/p&gt;

&lt;p&gt;I recommend to test in dev/test database before apply in production environment.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="https://graviton2-workshop.workshop.aws/en" rel="noopener noreferrer"&gt;Graviton2 Workshop&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/aws/new-amazon-rds-on-graviton2-processors" rel="noopener noreferrer"&gt;Amazon RDS on Graviton2 Processors&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I hope this post can be informative for you to show step-by-step to use Amazon RDS on Graviton2 instance type.&lt;br&gt;
Thank you.&lt;/p&gt;

</description>
      <category>awsthai</category>
      <category>rds</category>
      <category>graviton2</category>
      <category>database</category>
    </item>
    <item>
      <title>แนวทางการเลือก Amazon RDS for PostgreSQL กับ Amazon Aurora PostgreSQL</title>
      <dc:creator>Chatcharoen Chivakanit</dc:creator>
      <pubDate>Thu, 03 Mar 2022 17:34:13 +0000</pubDate>
      <link>https://forem.com/awscommunity-asean/amazon-rds-for-postgresql-and-amazon-aurora-postgresql-comparison-2pjo</link>
      <guid>https://forem.com/awscommunity-asean/amazon-rds-for-postgresql-and-amazon-aurora-postgresql-comparison-2pjo</guid>
      <description>&lt;p&gt;Credit post &lt;a href="https://aws.amazon.com/blogs/database/is-amazon-rds-for-postgresql-or-amazon-aurora-postgresql-a-better-choice-for-me" rel="noopener noreferrer"&gt;https://aws.amazon.com/blogs/database/is-amazon-rds-for-postgresql-or-amazon-aurora-postgresql-a-better-choice-for-me&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;ทั้ง Amazon RDS for PostgreSQL กับ Amazon Aurora PostgreSQL ต่างก็เป็น Option ที่ดีทั้งคู่ในการรัน Database workload สำหรับ Modern Application&lt;/p&gt;

&lt;p&gt;ซึ่งในโพสต์นี้จะตอบคำถามที่หลายๆท่านสงสัยว่า จะเลือกอะไรดีระหว่าง Amazon RDS for PostgreSQL กับ Amazon Aurora PostgreSQL &lt;/p&gt;

&lt;p&gt;ก่อนที่จะไปดูความแตกต่าง เรามาทำความรู้จักกับ Amazon RDS for PostgreSQL และ Aurora PostgreSQL ในภาพรวมกันครับ&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon RDS for PostgreSQL&lt;/strong&gt; และ &lt;strong&gt;Aurora PostgreSQL&lt;/strong&gt; เป็น fully managed open-source PostgreSQL database ซึ่งให้ในเรื่องของความง่ายในการสร้าง, ดูแลจัดการ,​ การทำ High availability, การ scale ในด้านรองรับ Read-only/Reporting workload, การทำ Auto scaling ในส่วนของ Storage&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon RDS for PostgreSQL&lt;/strong&gt; รองรับ Storage สูงถึง 64 TiB และมีการใช้งาน Amazon Elastic Block Store (Amazon EBS) volume สำหรับเก็บ database และ log file&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Aurora PostgreSQL&lt;/strong&gt; เป็น Cloud native database พัฒนาโดย AWS ซึ่ง re-design ในส่วนของ Database engine และ Storage และมีการเพิ่มความสามารถเพิ่มเติม เช่น การขยาย Storage ได้สูงถึง 128 TiB, ปรับปรุงเรื่องของ Performance ให้รองรับ Throughput ได้มากขึ้น &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foq4djkw008jkxagveham.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foq4djkw008jkxagveham.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RDS PostgreSQL จะมี Primary database ที่ AZ1 และถ้าเลือก deployment เป็น Multi-AZ จะมีการสร้าง RDS PostgreSQL secondary database ใน AZ2 &lt;/p&gt;

&lt;p&gt;Amazon Aurora PostgreSQL ในส่วนที่เป็น Database instance ทั้ง Writer และ Reader จะใช้ Storage ชุดเดียวกัน มีการกระจาย copy ของ data ไปถึง 6 copy กระจายไปทั้ง 3 AZ&lt;/p&gt;

&lt;h3&gt;
  
  
  โดยจะแบ่งข้อแตกต่างเป็น 7 ด้านดังนี้
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Crash recovery&lt;/li&gt;
&lt;li&gt;Failover&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;High availability and disaster recovery&lt;/li&gt;
&lt;li&gt;Backup&lt;/li&gt;
&lt;li&gt;PostgreSQL version&lt;/li&gt;
&lt;li&gt;Additional Features&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability
&lt;/h3&gt;

&lt;p&gt;Amazon RDS สามารถลดงานทางด้านการ Read เช่น การออก Report, การ Query data โดยใช้ feature Read replica ซึ่งเป็นการสร้าง Replica database instance เพื่อรองรับงานทางด้าน Read&lt;/p&gt;

&lt;p&gt;Amazon RDS รองรับการสร้าง Read replica ถึง 5 replica เมื่อมีการเปลี่ยนแปลงของ data ที่ Primary database ใน Write-ahead log (WAL) ไฟล์ จะส่งไปที่ Read replica แบบ Asynchronous mode&lt;/p&gt;

&lt;p&gt;Aurora PostgreSQL รองรับการสร้าง Read replica ได้สูงสุด 15 replica  จุดที่แตกต่างกับ Amazon RDS for PostgreSQL คือ Aurora ใช้ Share storage กันทั้งหมด data ทั้งใน Primary database และ Read Replica จะมีการ sync กันตลอดเวลาจะมี data ที่แตกต่างกันในส่วนของ Memory เท่านั้น ทำให้เรื่องของ Lag time จะอยู่ในระดับ millisecond หรือในบางเคสที่ Primary database มี Workload activities สูงๆ Lag time อาจจะอยู่ในระดับ 30 วินาที  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อสรุปด้าน Scalability&lt;/strong&gt;&lt;br&gt;
ถ้า Business requirement ที่จำเป็นต้องมี Replication lag time ต่ำๆ หรือต้องการ Read replica มากกว่า 5 replica, Aurora PostgreSQL จะเป็นตัวเลือกที่ดีกว่า แต่ถ้า Replication lag time สามารถที่จะเป็นระดับวินาที หรือนาที หรือ Read replica 5 replica ก็เพียงพอ, Amazon RDS for PostgreSQL จะตัวเลือกที่ดี&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Crash recovery
&lt;/h3&gt;

&lt;p&gt; เมื่อ Database เกิด crash และต้องการทำ crash recovery, Amazon RDS for PostgreSQL จะมีการ replay transaction log ที่เกิดขึ้น หลัง checkpoint ครั้งล่าสุด ซึ่ง checkpoint คือการ flush ข้อมูลที่มีการเปลี่ยนแปลงของ database block ใน memory และ Write-ahead log (WAL) จาก memory ไปที่ disk &lt;br&gt;
โดย default checkpoint จะเกิดขึ้นทุกๆ 5 นาที, ถ้า checkpoint เกิดบ่อย ก็จะช่วยให้ทำ crash recovery ได้รวดเร็วมากขึ้น&lt;/p&gt;

&lt;p&gt;Aurora PostgreSQL จะไม่ได้ทำกระบวนการ checkpoint ใน database node เพราะจะทำใน storage system ซึ่งข้อมูล log records ที่มีการเปลี่ยนแปลงใน database node จะถูกเขียนลง database pages ใน storage nodes และ Aurora จะทำ crash recovery เป็นแบบ asynchronous มีการกระจายงานโดยใช้ parallel thread ทำให้สามารถ start database หลังจากเกิด crash recovery ได้อย่างรวดเร็ว&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อสรุปด้าน Crash recovery&lt;/strong&gt;&lt;br&gt;
ถ้า business requirements ต้องการให้สามารถทำ crash recovery อย่างรวดเร็ว Aurora PostgreSQL จะเป็นตัวเลือกที่ดีกว่า แต่ถ้าเรื่อง crash recovery ไม่ใช่ปัจจัยหลัก Amazon RDS for PostgreSQL ก็จะเป็นตัวเลือกที่เหมาะสม &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Failover
&lt;/h3&gt;

&lt;p&gt; Amazon RDS for PostgreSQL Multi-AZ deployment รองรับการทำ failover โดยอัตโนมัติ ซึ่ง Application ไม่จำเป็นต้องมีการเปลี่ยนแปลง database endpoint ที่ใช้ connect database โดยทั่วไปจะใช้เวลาประมาณ 60-120 วินาที ในการทำ failover&lt;/p&gt;

&lt;p&gt;Aurora PostgreSQL จะใช้เวลาในการ failover โดยทั่วไป ประมาณ 30 วินาที ซึ่งประกอบไปด้วยเวลาในการ detect failure ประมาณ 15-20 วินาที เพื่อ confirm node failure, DNS propagation ประมาณ 10-15 วินาที, และใช้เวลาในการ recovery time ประมาณ 3-10 วินาที &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อสรุปด้าน Failover&lt;/strong&gt;&lt;br&gt;
ถ้า Application ต้องการ failover time น้อยๆ Aurora จะเป็นตัวเลือกที่ดีกว่า แต่ถ้า Application ยอมรับการทำ failover มากกว่า 60 วินาที Amazon RDS for PostgreSQL ก็จะเป็นตัวเลือกที่เหมาะสม&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Storage
&lt;/h3&gt;

&lt;p&gt; Amazon RDS for PostgreSQL จะใช้ Amazon EBS เป็น storage ที่เก็บข้อมูล โดยสามารถเลือกประเภทเป็นแบบ General Purpose SSD และ Provisioned IOPS, General Purpose SSD จะมี baseline 3 IOPS ต่อ provisioned GB และสามารถ burst ได้สูงสุด 3,000 IOPS ต่อ provisioned GB และมี baseline IOPS limit อยู่ที่ 16,000 IOPS&lt;br&gt;
Provisioned IOPS SSD จะให้ IOPS อยู่ที่ 1,000 - 80,000 IOPS&lt;br&gt;
Amazon RDS for PostgreSQL รองรับการทำ Storage Auto Scaling ซึ่งสามารถขยาย storage ได้ครั้งละ 5 GiB หรือ 10% ของ allocated storage &lt;/p&gt;

&lt;p&gt;Aurora PostgreSQL จะใช้ virtual cluster volume โดยใช้ SSD, Aurora Storage รองรับ Auto Scaling และ storage สามารถเพิ่มครั้งละ 10 GiB และ storage มากสูงสุด 128 TiB&lt;br&gt;
ข้อมูลจะมีการกระจาย copy ไปทั้ง 3 Availability Zone ทำให้ได้ benefit ในเรื่องของ high available และ durable &lt;br&gt;
แม้ว่าจะไม่มี IOPS virtual limitation ตาม storage size แต่ก็สามารถ scale up instance เพื่อรองรับ workload ที่ต้องการ IOPS ที่เพิ่มสูงขึ้น&lt;br&gt;
ภาพด้านล่างคือ Aurora PostgreSQL storage architecture &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9pw42qby3qkmisfurwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9pw42qby3qkmisfurwz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อสรุปด้าน Storage&lt;/strong&gt;&lt;br&gt;
ถ้า Database workload ต้องใช้ IOPS มากกว่า 80,000 IOPS Aurora PostgreSQL จะเป็นตัวเลือกที่เหมาะสม แต่ถ้าต้องการน้อยกว่า 80,000 IOPS ก็สามารถเลือกได้ทั้ง Amazon RDS for PostgreSQL หรือ Aurora PostgreSQL &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  High availability and Disaster recovery
&lt;/h3&gt;

&lt;p&gt; Amazon RDS for PostgreSQL รองรับการทำ high availability และ disaster recovery (DR) โดยใช้ feature Multi-AZ deployment, read replica, และ sharing snapshot ในส่วนของ Multi-AZ จะ replicate data ไปที่ secondary หรือ standby instance ที่อยู่คนละ AZ เป็นรูปแบบ synchronous mode, Amazon RDS for PostgreSQL รองรับ Read Replica ทั้งใน Region เดียวกัน และต่าง Region (Cross Region)&lt;br&gt;
และยังสามารถ copy และ share Amazon RDS snapshot ไปต่าง AWS account หรือ Region เพื่อจุดประสงค์การทำ DR &lt;/p&gt;

&lt;p&gt;Aurora PostgreSQL รองรับ Multi-AZ deployment และจะส่งข้อมูลกันใน 6 storage node ใน cluster volume ทั้ง 3 AZ เป็นแบบ synchronous mode ในระดับ storage level, Aurora replica สามารถจะ promote ขึ้นมาเป็น primary instance ได้ทันที ในกรณีที่มีปัญหา &lt;br&gt;
นอกจากนี้ยังมี feature Amazon Aurora Global Database ที่สามารถทำ cross-region replication โดยที่ใช้ความสามารถของ infrastructure ใน AWS ทำให้สามารถลด replication latency ได้ต่ำกว่า 1 วินาที&lt;br&gt;
ในการ copy และ share Aurora cluster snapshots ไปต่าง AWS account หรือ Region เพื่อจุดประสงค์การทำ DR ก็สามารถทำได้เช่นกัน&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อสรุปด้าน High availability and Disaster recovery&lt;/strong&gt;&lt;br&gt;
ถ้า requirement ทางด้าน High availability ต้องมีการทำ Multi-AZ, สามารถยอมรับ cross-region replication lag time ได้ Amazon RDS for PostgreSQL จะตอบโจทย์ แต่ถ้าต้องการ design High availability และต้องการทำ DR solution เพื่อลด Recovery Point Objective (RPO) และ Recovery Time Objective (RTO) Aurora PostgreSQL ก็จะเป็นตัวเลือกที่เหมาะสม&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Backup
&lt;/h3&gt;

&lt;p&gt; Amazon RDS สามารถ enable backup และระหว่างช่วงเวลาการทำ backup อาจจะกระทบในเรื่องของ performance เล็กน้อย ถ้ามีการสร้าง RDS เป็นแบบ single AZ deployment และ Amazon RDS จะ backup transaction logs (WALs) ด้วย, ในกรณีที่ทำ PITR (Point-in-time recovery) จะมีการ Restore full backup ก่อน และ replay WALs จนถึงเวลาที่ต้องการ recovery, ถ้า RDS for PostgreSQL มี write-intensive workload การ replay transaction logs อาจจะใช้เวลานานขึ้น&lt;/p&gt;

&lt;p&gt;Aurora PostgreSQL จะ backup cluster volume และมีการเก็บ retention ไว้ตาม period ที่กำหนด, ในกรณีที่ทำ PITR จะมีการสร้าง copy ของ database cluster ขึ้นมาใหม่จาก backup ดังนั้นจะช่วยให้ improve ในเรื่องของ PITR restore time&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อสรุปด้าน Backup&lt;/strong&gt;&lt;br&gt;
ถ้า requirement ต้องการที่จะลด RPO, RTO และถ้า workload มีความ sensitive เกี่ยวกับ performance ที่ลดลงระหว่างการทำ backup, Aurora PostgreSQL จะเป็นตัวเลือกที่ดีกว่า แต่ถ้าเรื่อง performance ที่ลดลงไม่ใช่ปัจจัยหลัก Amazon RDS for PostgreSQL ก็จะสามารถตอบโจทย์ได้ ซึ่งสามารถที่จะปรับช่วงเวลาที่จะทำการ backup เพื่อหลีกเลี่ยงผลกระทบเรื่อง performance ในช่วง peak hours หรือมีการใช้ Multi-AZ deployment เพื่อให้ backup จาก standby instance ได้&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  PostgreSQL version
&lt;/h3&gt;

&lt;p&gt; ในเรื่องของการอัพเดท version ให้ทันกับ PostgreSQL ตรงจุดนี้ Amazon RDS for PostgreSQL จะมีการอัพเดท version ได้รวดเร็วมากกว่า Aurora PostgreSQL เพราะเป็น PostgreSQL database engine &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อสรุปด้าน PostgreSQL version&lt;/strong&gt;&lt;br&gt;
ถ้า application ต้องการ PostgreSQL version ที่ใหม่ รวมทั้งต้องมีการ update version ให้ทันกับ PostgreSQL version ใหม่ๆที่ออกมา, Amazon RDS for PostgreSQL จะเป็นตัวเลือกที่เหมาะสมกว่า&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional features
&lt;/h3&gt;

&lt;p&gt; AWS ได้มีการพัฒนา features เพิ่มเติม เพื่อให้ Aurora PostgreSQL ตอบโจทย์การใช้งานมากยิ่งขึ้น เช่น fast database cloning, query plan management, cluster cache management, serverless และ global database&lt;/p&gt;

&lt;p&gt;ในส่วนของ &lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Clone.html" rel="noopener noreferrer"&gt;database cloning&lt;/a&gt; จะช่วยให้สามารถ clone database ใน cluster ได้อย่างรวดเร็วกว่า restore database จาก snapshot ใน RDS for PostgreSQL &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html" rel="noopener noreferrer"&gt;Query plan management&lt;/a&gt; จะช่วยให้ Aurora PostgreSQL สามารถ control การเปลี่ยนแปลงของ query plan ได้อย่างมีประสิทธิภาพ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.cluster-cache-mgmt.html" rel="noopener noreferrer"&gt;Cluster cache management&lt;/a&gt; จะช่วย improve เรื่องของ performance ของ writer instance ใหม่ หลังจาก failover เพราะว่าจะมีการทำ replicate cache ระหว่าง writer instance กับ read replica ที่ต้องการจะ promote ซึ่งใน Amazon RDS for PostgreSQL หลังจากที่มีการทำ failover, database buffer จะต้องมีการสร้างขึ้นมาใหม่จากศูนย์เลย เพราะ database จะต้องอ่านข้อมูลจาก disk ก่อน และจะส่งผลต่อ performance&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html" rel="noopener noreferrer"&gt;Aurora Serverless&lt;/a&gt; คือ database cluster ที่สามารถ starts, scales และ shutdown ได้ตาม application ต้องการ, เหมาะกับ Application ที่ยังไม่มี pattern ที่แน่นอนในการใช้ &lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/rds/aurora/global-database/" rel="noopener noreferrer"&gt;Aurora Global Database&lt;/a&gt; คือ Aurora database ที่มีการกระจายตัวไปหลายๆ region เพื่องานด้านการ read ที่สามารถทำได้อย่างรวดเร็วในแต่ละ region และลด latency ให้น้อยมากกว่า 1 วินาที ซึ่งถ้าเป็น Amazon RDS for PostgreSQL จะรองรับ cross-Region replication แต่จะมี replication lag มากกว่า&lt;/p&gt;

&lt;p&gt;feature ต่างๆเหล่านี้สามารถรองรับ requirement ของ application ได้หลากหลาย และยังเพิ่มในเรื่องของ performance ให้ดีขึ้น&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt; Amazon RDS for PostgreSQL เป็นตัวเลือกที่เหมาะสมกับ workload ที่มีขนาด small-medium-large แต่ถ้าต้องการ feature เพิ่มเติมที่ช่วยตอบโจทย์ในแง่ของ performance และการใช้งาน feature เพิ่มเติม, Aurora PostgreSQL ก็เป็นอีกหนึ่งตัวเลือกที่สามารถพิจารณาเพื่อใช้งานครับ&lt;/p&gt;

&lt;p&gt;สำหรับข้อมูลเพิ่มเติมในการ migrate จาก Amazon RDS for PostgreSQL หรือ Aurora PostgreSQL สามารถศึกษาเพิ่มเติมตามรายละเอียดด้านล่างครับ&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-amazon-rds-for-postgresql.html" rel="noopener noreferrer"&gt;Migrate an on-premises PostgreSQL database to Amazon RDS for PostgreSQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.html" rel="noopener noreferrer"&gt;Migrating data to Amazon Aurora with PostgreSQL compatibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;หวังว่าโพสต์นี้จะเป็นประโยชน์กับท่านผู้อ่าน เพื่อเป็นแนวทางในการเลือกระหว่าง Amazon RDS for PostgreSQL และ Amazon Aurora PostgreSQL กันนะครับ &lt;/p&gt;

</description>
      <category>awsthai</category>
      <category>rds</category>
      <category>aurora</category>
      <category>postgres</category>
    </item>
    <item>
      <title>เริ่มต้นใช้งาน Amazon RDS บน Graviton2 เพื่อเพิ่มประสิทธิภาพในราคาที่ถูกลง</title>
      <dc:creator>Chatcharoen Chivakanit</dc:creator>
      <pubDate>Wed, 22 Sep 2021 05:23:53 +0000</pubDate>
      <link>https://forem.com/awscommunity-asean/amazon-rds-graviton2-20bl</link>
      <guid>https://forem.com/awscommunity-asean/amazon-rds-graviton2-20bl</guid>
      <description>&lt;p&gt;AWS มีการพัฒนานวัตกรรมใหม่ๆ เพื่อตอบโจทย์การใช้งานของผู้ใช้อยู่ตลอดเวลา ทั้งในด้านประสิทธิภาพ, ความง่ายในการใช้, feature ที่เพิ่มขึ้น รวมทั้งยังคำนึงถึงเรื่องการลดค่าใช้จ่ายอีกด้วย&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Table of Contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Amazon RDS คืออะไร&lt;/li&gt;
&lt;li&gt;Amazon Graviton2 คืออะไร&lt;/li&gt;
&lt;li&gt;Amazon RDS type และ version ที่ Support Graviton2&lt;/li&gt;
&lt;li&gt;วิธีการเปลี่ยน Instance type มาเป็น Graviton2&lt;/li&gt;
&lt;li&gt;ทดสอบ Performance&lt;/li&gt;
&lt;li&gt;CloudFormation สำหรับทดสอบ&lt;/li&gt;
&lt;li&gt;บทสรุป&lt;/li&gt;
&lt;li&gt;แหล่งข้อมูลอ้างอิง&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a&gt; &lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Amazon RDS คืออะไร
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Amazon Relational Database Service (Amazon RDS)&lt;/strong&gt; คือบริการฐานข้อมูลเชิงสัมพันธ์ หรือที่คุ้นเคยในชื่อ Relational Database ซึ่งจะเก็บข้อมูลในรูปแบบของ Table มี Row และ Column เป็นส่วนประกอบ โดย Table ในฐานข้อมูลสามารถมีความเชื่อมโยงกันด้วย &lt;a href="https://en.wikipedia.org/wiki/Primary_key" rel="noopener noreferrer"&gt;Primary key&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Foreign_key" rel="noopener noreferrer"&gt;Foreign Key&lt;/a&gt; มีการใช้ &lt;a href="https://en.wikipedia.org/wiki/ACID" rel="noopener noreferrer"&gt;ACID&lt;/a&gt; เพื่อดูแลความถูกต้องของข้อมูล&lt;/p&gt;

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

&lt;p&gt;Amazon RDS ให้บริการฐานข้อมูลด้วยกันทั้งหมด 6 ประเภทคือ&lt;br&gt;
&lt;a href="https://aws.amazon.com/rds/aurora" rel="noopener noreferrer"&gt;Amazon Aurora&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/postgresql" rel="noopener noreferrer"&gt;PostgreSQL&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/mysql" rel="noopener noreferrer"&gt;MySQL&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/mariadb" rel="noopener noreferrer"&gt;MariaDB&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/oracle" rel="noopener noreferrer"&gt;Oracle&lt;/a&gt;, &lt;a href="https://aws.amazon.com/rds/sqlserver" rel="noopener noreferrer"&gt;Microsoft SQL Server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Amazon Graviton2 คืออะไร
&lt;/h3&gt;

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

&lt;p&gt;ประเภทของ RDS Instance ที่ใช้ Graviton2 จะมีดังนี้&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;t4g : สำหรับ dev/test workload &lt;/li&gt;
&lt;li&gt;m6g : สำหรับ general purpose workload&lt;/li&gt;
&lt;li&gt;r6g : สำหรับ memory optimized workload &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ใน Service อื่นๆเช่น EC2, EKS, ECS ก็สามารถสร้าง Instance type ที่เป็น Graviton2 ได้ &lt;br&gt;
สามารถดูรายละเอียด instance เพิ่มเติมได้ &lt;a href="https://aws.amazon.com/ec2/graviton" rel="noopener noreferrer"&gt;ที่นี่&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Amazon RDS type และ version ที่ Support Graviton2
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Aurora&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Aurora (MySQL 5.7) version 2.09.1 and higher&lt;/li&gt;
&lt;li&gt;Aurora PostgreSQL version 11.9 and higher&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;
&lt;strong&gt;Amazon RDS for MySQL&lt;/strong&gt;

&lt;ul&gt;&lt;li&gt;MySQL version 8.0.17 and higher&lt;/li&gt;&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Amazon RDS for PostgreSQL&lt;/strong&gt;&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;PostgreSQL version 12.5 and higher&lt;/li&gt;&lt;/ul&gt;




&lt;li&gt;

&lt;strong&gt;Amazon RDS for MariaDB&lt;/strong&gt;

&lt;ul&gt;&lt;li&gt;MariaDB version 10.4.13 and higher&lt;/li&gt;&lt;/ul&gt;




&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Amazon RDS Graviton2 instance มีหลากหลาย configuration ให้เลือกใช้ตามตารางตัวอย่างด้านล่าง&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz1qzivbw14iso4hazmn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz1qzivbw14iso4hazmn.png" alt="Amazon RDS Graviton2 instance Type"&gt;&lt;/a&gt; สามารถตรวจสอบ RDS Instance type ทั้งหมดได้ &lt;a href="https://aws.amazon.com/rds/instance-types" rel="noopener noreferrer"&gt;ที่นี่&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  วิธีการเปลี่ยน Instance type มาเป็น Graviton2
&lt;/h3&gt;

&lt;p&gt;⚠️ มี Downtime ประมาณ ~10-15 นาที อาจจะมากขึ้นตามขนาดของฐานข้อมูล&lt;br&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ใช้ AWS Console&lt;/strong&gt;&lt;ol&gt;
&lt;li&gt;เปิด RDS service console 
&lt;a href="https://console.aws.amazon.com/rds" rel="noopener noreferrer"&gt;https://console.aws.amazon.com/rds&lt;/a&gt; &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhz8nus261lf76mw5udjv.png" alt="RDS Console"&gt;
&lt;/li&gt;

&lt;li&gt;เลือก​ RDS database ที่ต้องการ และคลิก &lt;strong&gt;Modify&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6q67gac4nfv9dsc79858.png" alt="Modify RDS database"&gt;
&lt;/li&gt;

&lt;li&gt;เลือก DB instance Class ที่ต้องการ ในตัวอย่างนี้จะใช้ &lt;strong&gt;db.m6g.large&lt;/strong&gt; 
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fal4zntu7sv5ipaqoffop.png" alt="DB instance Class"&gt;
&lt;/li&gt;

&lt;li&gt;เลื่อนลงมาด้านล่าง คลิก &lt;strong&gt;Continue&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffv365yvn0sa84p8jtaz5.png" alt="Continue"&gt;
&lt;/li&gt;

&lt;li&gt;เลือก &lt;strong&gt;Apply immediately&lt;/strong&gt; เพื่อเปลี่ยน RDS instance type ทันที และคลิก &lt;strong&gt;Modify DB instance&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foag7y5a6a4c7p8t8p16v.png" alt="Apply immediate"&gt; หลังจากนั้น RDS instance จะขึ้น status: Modifying &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6atpwgmg1ezkq876gchy.png" alt="Modifying"&gt; ใช้เวลาประมาณ 10 นาที RDS instance ก็จะเปลี่ยนมาใช้  &lt;strong&gt;db.m6g.large&lt;/strong&gt; ซึ่งเป็น Graviton2 instance type เรียบร้อยแล้ว &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfof67kp2y8hwokyd7yw.png" alt="Complete"&gt;
&lt;/li&gt;

&lt;/ol&gt;

&lt;/li&gt;




&lt;li&gt;
&lt;strong&gt;ใช้ AWS Command Line Interface (CLI)&lt;/strong&gt;
ก่อนอื่นต้องเตรียม Access key และ Secret key เพื่อเข้าใช้งานและให้สิทธิ์ในการสร้าง RDS instance &lt;a href="https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys&lt;/a&gt;

&lt;p&gt;ถัดมาก็ติดตั้ง AWS CLI version 2&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html&lt;/a&gt;&lt;/p&gt;

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

&lt;pre class="highlight shell"&gt;&lt;code&gt;aws rds modify-db-instance &lt;span class="nt"&gt;--db-instance-identifier&lt;/span&gt; rdsgraviton &lt;span class="nt"&gt;--db-instance-class&lt;/span&gt; db.m6g.large &lt;span class="nt"&gt;--apply-immediately&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;






&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ทดสอบ Performance
&lt;/h3&gt;

&lt;p&gt;เราจะใช้ &lt;strong&gt;sysbench&lt;/strong&gt; ซึ่งเป็น benchmark tool ที่ได้รับความนิยม มาทดสอบประสิทธิภาพของ RDS MySQL &lt;br&gt;
ในตัวอย่างนี้จะใช้ Amazon Linux2 bastion host บน EC2 เพื่อติดตั้ง sysbench และ connect ไปที่ RDS &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;รัน command นี้บน bastion host เพื่อเตรียม environment สำหรับติดตั้ง sysbench

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;git gcc make automake libtool openssl-devel ncurses-compat-libs

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

&lt;span class="nb"&gt;sudo &lt;/span&gt;rpm &lt;span class="nt"&gt;-ivh&lt;/span&gt; mysql-community-release-el7-5.noarch.rpm

&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;mysql-community-devel mysql-community-client mysql-community-common
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; Clone sysbench git repository และ install

&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/akopytov/sysbench.git
&lt;span class="nb"&gt;cd &lt;/span&gt;sysbench
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./autogen.sh
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./configure
&lt;span class="nb"&gt;sudo &lt;/span&gt;make
&lt;span class="nb"&gt;sudo &lt;/span&gt;make &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; Check sysbench version

&lt;pre class="highlight shell"&gt;&lt;code&gt;sysbench &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; สร้าง MySQL database sbtest สำหรับทดสอบ

&lt;pre class="highlight shell"&gt;&lt;code&gt;mysql &lt;span class="nt"&gt;-u&lt;/span&gt; admin &lt;span class="nt"&gt;-pAWSpassword&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-hrdsgraviton&lt;/span&gt;.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-P3306&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'create database sbtest;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;/li&gt;


&lt;li&gt; Prepare และรัน sysbench

&lt;pre class="highlight shell"&gt;&lt;code&gt;sysbench oltp_read_write &lt;span class="nt"&gt;--db-driver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql &lt;span class="nt"&gt;--mysql-user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;admin &lt;span class="nt"&gt;--mysql-password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;AWSpassword &lt;span class="nt"&gt;--mysql-host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;rdsgraviton.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com prepare
sysbench oltp_read_write &lt;span class="nt"&gt;--db-driver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql &lt;span class="nt"&gt;--mysql-user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;admin &lt;span class="nt"&gt;--mysql-password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;AWSpassword &lt;span class="nt"&gt;--mysql-host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;rdsgraviton.c2lep43gswjd.ap-southeast-1.rds.amazonaws.com run
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;ภาพด้านล่างคือผลลัพธ์จากการรัน sysbench บน RDS for MySQL &lt;strong&gt;db.m5.large&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql7qzu1yg28o3wy49hrz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql7qzu1yg28o3wy49hrz.png" alt="sysbench-db.m5.large"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ภาพด้านล่างคือผลลัพธ์จากการรัน sysbench บน RDS for MySQL &lt;strong&gt;db.m6g.large&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63wzswsg40l1tl5qgvnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63wzswsg40l1tl5qgvnm.png" alt="sysbench-db.m6g.large"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เปรียบเทียบผลลัพธ์&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm2tygfypc3h6lvr0tfa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm2tygfypc3h6lvr0tfa.png" alt="Compare"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;ทีนี้มาดูในส่วนของ cost กันบ้าง เมื่อเปรียบเทียบกันแล้ว Graviton2 instance type (db.m6g.large) จะถูกกว่า Intel instance type (db.m5.large) อยู่ประมาณ ~10%&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek3ozgbj8qlferashi56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek3ozgbj8qlferashi56.png" alt="Compare cost"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตัวอย่างการคำนวณ cost&lt;br&gt;
&lt;a href="https://calculator.aws/#/estimate?id=ed9f868fac8a92e62642455ed394868fecab382f" rel="noopener noreferrer"&gt;https://calculator.aws/#/estimate?id=ed9f868fac8a92e62642455ed394868fecab382f&lt;/a&gt; &lt;br&gt;
&lt;/p&gt;


&lt;/li&gt;


&lt;/ol&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CloudFormation สำหรับทดสอบ
&lt;/h3&gt;

&lt;p&gt;ถ้าต้องการ deploy environment สำหรับทดสอบสร้าง RDS for MySQL เพื่อลองเปลี่ยน Instance Type และเตรียม EC2 สำหรับเป็น Bastion host &lt;br&gt;
สามารถ deploy CloudFormation ใน Singapore region (ap-southeast-1) ได้เลย&lt;br&gt;
⚠️ cost ของการรัน Resource ทั้งหมดจะประมาณ ~$0.27 ต่อชั่วโมง&lt;br&gt;
รายละเอียดเกี่ยวกับ cost เพิ่มเติม&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EC2 : &lt;a href="https://aws.amazon.com/ec2/pricing" rel="noopener noreferrer"&gt;https://aws.amazon.com/ec2/pricing&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;RDS for MySQL : &lt;a href="https://aws.amazon.com/rds/mysql/pricing" rel="noopener noreferrer"&gt;https://aws.amazon.com/rds/mysql/pricing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architecture diagram&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoqbll6rxjx4e3hoinqq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoqbll6rxjx4e3hoinqq.png" alt="Architecture diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนการ Deploy&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deploy CloudFormation โดยคลิก &lt;a href="https://console.aws.amazon.com/cloudformation/home#/stacks/new?stackName=RDSGraviton2Workshop&amp;amp;templateURL=https://rdsgraviton2-20210528065643-hostingbucket-master.s3-ap-southeast-1.amazonaws.com/RDSGraviton2Workshop.yaml" rel="noopener noreferrer"&gt;ที่นี่&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;คลิก &lt;strong&gt;Next&lt;/strong&gt; &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4zymic6cnlyhx0o8oadc.png" alt="CloudFormation"&gt; &lt;/li&gt;
&lt;li&gt; ในหน้านี้ สามารถใส่ค่า parameters ได้ดังนี้ &lt;ul&gt;
&lt;li&gt; เปลี่ยน Stack name ตามตัวอย่างจะใช้ &lt;strong&gt;RDSGraviton2Workshop&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt; เปลี่ยน Database password ตามตัวอย่างจะใช้ &lt;strong&gt;AWSpassword&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt; เลือก EC2 KeyPair สำหรับ SSH เข้า bastion host &lt;/li&gt;
&lt;li&gt; สำหรับ Network component เช่น VPC, Subnet สามารถตั้งตามค่า Default และคลิก &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9n74twbh92pvzudkvj7a.png" alt="CloudFormation"&gt;
&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt; เลื่อนลงมาด้านล่าง และคลิก &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d3vw21sm4tls2i9klps.png" alt="CloudFormation"&gt;
&lt;/li&gt;

&lt;li&gt; Review CloudFormation และคลิก &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz1e744m9wc2l46bf94g.png" alt="CloudFormation"&gt;
&lt;/li&gt;

&lt;p&gt;หลังจากนั้น CloudFormation ก็จะสร้าง resources ต่างๆตาม Architecture Diagram และเมื่อสร้างเสร็จแล้วจะขึ้น status: CREATE_COMPLETE&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyo3ot0dl84ldzeiajovj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyo3ot0dl84ldzeiajovj.png" alt="CloudFormation"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  บทสรุป
&lt;/h3&gt;

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

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

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  แหล่งข้อมูลอ้างอิง
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="https://graviton2-workshop.workshop.aws/en" rel="noopener noreferrer"&gt;Graviton2 Workshop&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/aws/new-amazon-rds-on-graviton2-processors" rel="noopener noreferrer"&gt;Amazon RDS on Graviton2 Processors&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

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

</description>
      <category>awsthai</category>
      <category>rds</category>
      <category>graviton2</category>
      <category>database</category>
    </item>
  </channel>
</rss>
