<?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>DEV Community: PePoDev</title>
    <description>The latest articles on DEV Community by PePoDev (@pepodev).</description>
    <link>https://dev.to/pepodev</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%2F276563%2F80140195-8918-4e9b-9b00-77a0e9b3bcdc.jpg</url>
      <title>DEV Community: PePoDev</title>
      <link>https://dev.to/pepodev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pepodev"/>
    <language>en</language>
    <item>
      <title>AWS Graviton ทักครับ 👋</title>
      <dc:creator>PePoDev</dc:creator>
      <pubDate>Sun, 14 Jan 2024 16:05:32 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-graviton-thakkhrab-5bj9</link>
      <guid>https://dev.to/aws-builders/aws-graviton-thakkhrab-5bj9</guid>
      <description>&lt;p&gt;ภาพรวมของ AWS Graviton ที่ให้ประสิทธิภาพแรงขึ้นแต่ราคาถูกลง บ้าไปแล้ววววว&lt;/p&gt;

&lt;p&gt;เห็นคำว่า Graviton นี่เราไม่ได้หมายถึงแรงโน้มถ่วงควอนตัมแต่อย่างใด แต่เรากำลังพูดถึง AWS Graviton กันอยู่ ซึ่งถ้าเอาแบบง่ายๆ AWS Graviton ก็คือ CPU Arm-based processors ของทาง AWS ซึ่งเป็นหนึ่งใน &lt;a href="https://aws.amazon.com/silicon-innovation/" rel="noopener noreferrer"&gt;AWS custom chips&lt;/a&gt; ที่มีจุดเด่นในด้านของราคาต่อประสิทธิภาพ&lt;/p&gt;

&lt;p&gt;ปัจจุบันเวอร์ชั่นล่าสุดของ AWS Graviton คือ Generation 4 ที่เพิ่งเปิดตัวกันไปในงาน &lt;a href="https://reinvent.awsevents.com/" rel="noopener noreferrer"&gt;AWS re:Invent 2023&lt;/a&gt; ที่ผ่านมา (ขณะนี้อยู่ใน preview สามารถ &lt;a href="https://aws.amazon.com/ec2/instance-types/r8g/" rel="noopener noreferrer"&gt;signup&lt;/a&gt; เผื่อทดลองใช้งานได้) ซึ่งมีการปรับปรุงในเรื่องของ performance และ cost-effective ที่มากขึ้น&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%2F6jxnbahoi97u594113np.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%2F6jxnbahoi97u594113np.png" alt="AWS custom chips"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ประสิทธิภาพของ Graviton
&lt;/h2&gt;

&lt;p&gt;ถ้าถามว่า อะไรที่ทำให้ AWS Graviton แรงกว่า คุ้มกว่า เรามาลองดูรูปนี้กันครับ&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%2F6pa0aa2uh62y3z41oecm.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%2F6pa0aa2uh62y3z41oecm.png" alt="Graviton Performance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากรูปนี้เราจะเห็นอยู่สองเรื่องนั่นก็คือ&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Every vCPU is a full core - หมายความว่าโดยปกติแล้ว vCPU ที่เราเห็นๆกันมันเป็นแค่ thread (logical core) ไม่ใช่ physical core ซึ่งจริงๆแล้วเป็นการทำสิ่งที่เรียกว่า &lt;a href="https://en.wikipedia.org/wiki/Simultaneous_multithreading" rel="noopener noreferrer"&gt;Simultaneous Multithreading&lt;/a&gt; หรือ &lt;a href="https://en.wikipedia.org/wiki/Hyper-threading" rel="noopener noreferrer"&gt;hyperthreading&lt;/a&gt; ฉะนั้นเวลาที่ต้องประมวลผล workload จำนวนมาก อาจทำให้เกิด latency ขึ้นระหว่าง logical core ด้วยกันเองได้ &lt;a href="https://www.linkedin.com/pulse/understanding-physical-logical-cpus-akshay-deshpande/" rel="noopener noreferrer"&gt;(Core and Thread)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uniform memory access - คือการที่ processor มี local memory เป็นของตัวเอง ไม่แชร์ข้ามระหว่างกัน ทำให้สามารถ access ได้ไวกว่า non-local memory (&lt;a href="https://en.wikipedia.org/wiki/Non-uniform_memory_access" rel="noopener noreferrer"&gt;Memory Design NUMA&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ถ้าหากว่าใครไหวเรื่องพวกนี้แนะนำให้ไปต่อกับ &lt;a href="https://docs.aws.amazon.com/whitepapers/latest/ec2-networking-for-telecom/overview-of-performance-optimization-options.html" rel="noopener noreferrer"&gt;AWS whitepaper&lt;/a&gt; อันนี้ได้เลยครับ&lt;br&gt;
ส่วนตัวผมนั้น ไม่ไหวครับ 🥲&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%2F7enznd4qgceu48yic0s6.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%2F7enznd4qgceu48yic0s6.png" alt="x86 vs graviton"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ด้วยสองเหตุผลที่กล่าวไปทำให้เราสามารถรีดประสิทธิภาพของ CPU ได้มากขึ้น แทบจะ 100% กันเลยทีเดียว ต่างจาก x86 ที่จะเริ่มมี Latency มากขึ้นเรื่อยๆเพราะ Physical core ถูกแบ่งกันใช้งาน ทำให้เราต้องมาตั้ง trigger scaling ตั้งแต่เนิ่นๆก่อนที่จะเกิด Bottleneck กันอย่างในปัจุบัน&lt;/p&gt;

&lt;p&gt;ถัดไปลองมาดู Benchmark กันบ้างครับ&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%2Flf8ifo36qeh75t0rluit.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%2Flf8ifo36qeh75t0rluit.png" alt="Benchmark"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;รูปนี้ก็เป็น Benchmark ของทาง &lt;a href="https://www.anandtech.com/show/15578/cloud-clash-amazon-graviton2-arm-against-intel-and-amd/9" rel="noopener noreferrer"&gt;Anandtech&lt;/a&gt; ที่ทำเทียบระหว่าง AWS Graviton 2 กับ x86 ทั้งทางฝั่ง AMD และ Intel ครับ จะเห็นได้ว่าในจำนวนเงิน dollar ที่จ่ายไปเท่ากันนั้น การใช้งาน AWS Graviton สามารถให้ผลลัพธ์ที่ค่อนข้างมากกว่านั่นเอง และหากมาลองดู real world scenario ที่เราใช้กันอย่างเช่น Nginx ก็ยังให้ Requests/Sec ที่มากกว่าเช่นกัน&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%2Ft940kvzgjy4byxwm4f4w.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%2Ft940kvzgjy4byxwm4f4w.png" alt="Nginx with Graviton"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ลองมาดู feedback จากลูกค้าที่ใช้ AWS Graviton กันบ้างครับ&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%2Fcphroa0er9y9qxmy69fa.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%2Fcphroa0er9y9qxmy69fa.png" alt="EPIC"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"AWS Graviton4 instances are the fastest EC2 instances we've evert tested and are delivering outstanding performance across our most competitive and latency sensitive workloads. we look forward to using Graviton4 to improve player experience and expand what is possible within Fortnite."&lt;/p&gt;

&lt;p&gt;Epic Game&lt;/p&gt;
&lt;/blockquote&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%2F2988uc0m5qfx34v1vhk2.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%2F2988uc0m5qfx34v1vhk2.png" alt="Datadog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Integrating Graviton4-based instances into our environment was seamless and gave us an immediate performance boost out of the box, and we're looking forward to using Graviton4 when it becomes generally available"&lt;/p&gt;

&lt;p&gt;Datadog&lt;/p&gt;
&lt;/blockquote&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%2Fl6ckr1thhseyewsniqqu.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%2Fl6ckr1thhseyewsniqqu.png" alt="Stripe"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Measured up to 50% query performance improvement and 10%-15% reduced error rate (fewer timeouts)"&lt;/p&gt;

&lt;p&gt;Stripe&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;อันนี้ก็เป็นแค่ตัวอย่างที่เราหยิบยกมาเบื้องต้นแค่นั้น จะเห็นได้ว่าหลายๆบริษัทสามารถนำ AWS Graviton มาใช้เพื่อเพิ่มประสิทธิภาพของระบบได้มากขึ้นเลยทีเดียว ถ้าหากว่าอยากอ่านเพิ่มเติม สามารถเข้าไปดูลูกค้าของ AWS Graviton เต็มๆได้&lt;a href="https://aws.amazon.com/ec2/graviton/customers/?ec2-instances-customers-cards.sort-by=item.additionalFields.date-added&amp;amp;ec2-instances-customers-cards.sort-order=desc&amp;amp;awsf.success-story-topic=*all&amp;amp;awsf.content-type=*all&amp;amp;awsf.use-case=*all&amp;amp;awsf.processor=*all&amp;amp;awsf.instance-name=*all&amp;amp;awsf.managed-services=*all&amp;amp;awsf.programming-language=*all&amp;amp;awsf.industry=*all&amp;amp;awsf.region=*all&amp;amp;awsf.year=*all" rel="noopener noreferrer"&gt;ที่นี่&lt;/a&gt;เลยครับ&lt;/p&gt;
&lt;h2&gt;
  
  
  การใช้งาน Graviton
&lt;/h2&gt;

&lt;p&gt;เกริ่นกันมาซะขนาดนี้ คิดว่าทุกคนคงอยากจะกระโดดเข้ามาใช้งานเจ้า CPU ตัวนี้ของ AWS กันเป็นแน่แท้ งั้นไม่รอช้าครับ เรามาดูกันดีกว่าว่าก่อนที่เราจะใช้งานเจ้า Graviton นี้ได้ เราต้องเตรียมความพร้อมอะไรกันบ้าง&lt;/p&gt;
&lt;h3&gt;
  
  
  1/ CPU Architecture
&lt;/h3&gt;

&lt;p&gt;เนื่องด้วยความต่างของ CPU Architecture ทำให้เราต้องมีการเตรียมความพร้อมสำหรับการนำ software ไปรันอยู่บน AWS Graviton กันก่อนครับ สามารถเช็คไปทีล่ะข้อได้เลยตามรายการด้านล่างนี้ได้เลยครับ&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Language - ถ้าหากว่าภาษา programming ที่คุณใช้เป็นประเภทที่ต้อง compile ก่อน เช่น C, C++, GO, หรือ Rust ก็สามารถเปลี่ยนมา compile สำหรับ ARM64 Architecture ได้เลยครับ หรือถ้าภาษาที่ใช้เป็น Interpreted หรือ Compiled-bytecode เช่น Python, Java, PHP, Node.js หรือ .NET ก็แค่เปลี่ยนตัว runtime ให้เป็นของ ARM64 ก็เป็นอันเรียบร้อย จริงๆตอนที่เราทำเองอาจจะไม่ได้ง่ายขนาดนั้น ลองเข้าไปอ่านคำแนะนำเบื้องต้นของแต่ล่ะภาษาที่เราใช้งานกันได้เลยครับ&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/c-c++.md" rel="noopener noreferrer"&gt;C/C++&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/golang.md" rel="noopener noreferrer"&gt;Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/java.md" rel="noopener noreferrer"&gt;Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/dotnet.md" rel="noopener noreferrer"&gt;.NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/php.md" rel="noopener noreferrer"&gt;PHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/python.md" rel="noopener noreferrer"&gt;Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/rust.md" rel="noopener noreferrer"&gt;Rust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;และเพื่อความมั่นใจก็ลองไปเช็ค &lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/rust.md" rel="noopener noreferrer"&gt;Known issues&lt;/a&gt; กันก่อนซักเล็กน้อยเผื่อจะได้ไม่เสียเวลาไปกับปัญหาที่เราอาจจะเจอครับ&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operating System - ปัจจุบันแทบจะทุก Linux distributions รองรับ ARM64 กันเป็นที่เรียบร้อย ถ้าหากคุณใช้ AMI มาตราฐานอย่าง Amazon Linux, Ubuntu, หรือ Alpine Linux ก็สบายใจได้ แต่ถ้าไม่หรือเป็นมีการปรับแต่งกันขึ้นมาเอง ก็อาจจะต้องไปดู &lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/os.md" rel="noopener noreferrer"&gt;Operating System&lt;/a&gt; ที่รองรับกันนิดนึงว่ารองรับหรือไม่ครับ&lt;/li&gt;
&lt;/ul&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%2Fiv0jru7jedc5hcyh3nqp.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%2Fiv0jru7jedc5hcyh3nqp.png" alt="Graviton OS Support"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version - นอกจากการเปลี่ยนวิธีการ compile ของภาษาที่เราใช้แล้ว เราก็ควรจะอัพเกรดเวอร์ชั่นที่ใช้ให้ใหม่ที่สุดเท่าที่จะเป็นไปได้ด้วยเช่นกัน เพราะในตอนที่ยุคของ ARM computer มาถึง หลายๆภาษาก็เริ่มมีการ optimize ให้เข้ากับ ARM มากยิ่งขึ้น อย่างเช่น &lt;a href="https://tip.golang.org/doc/go1.18" rel="noopener noreferrer"&gt;Go version 1.18&lt;/a&gt; ที่มีการปรับปรุงการส่งฟังก์ชั่นเป็นอาร์กิวเมนต์ในรูปแบบใหม่ที่ทำให้ได้ performance มามากขึ้นกว่า 10% นั่นเอง&lt;/li&gt;
&lt;/ul&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%2F2y7ifxfq1pdn8q62iwb0.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%2F2y7ifxfq1pdn8q62iwb0.png" alt="Go 1.18"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ref: &lt;a href="https://aws.amazon.com/blogs/compute/making-your-go-workloads-up-to-20-faster-with-go-1-18-and-aws-graviton/" rel="noopener noreferrer"&gt;Making your Go workloads up to 20% faster with Go 1.18 and AWS Graviton&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2/ Workload Transition
&lt;/h3&gt;

&lt;p&gt;เมื่อ software ของเรานั้นรองรับการทำงานบน AWS Graviton กันเป็นที่เรียบร้อยแล้ว ถัดไปเราจะมาดูว่าการเปลี่ยน workload ของเราไปใช้เป็น AWS Graviton มีขั้นตอนเบื้องต้นยังไง ในที่นี้เราจะขอยกตัวอย่างเป็น AWS EKS ซึ่งเป็น Kubernetes Platform สำหรับบริหารและจัดการ Container workload ที่ใช้กันอย่างแพร่หลายในปัจจุบัน เมื่อพร้อมแล้วเรามาเริ่มกันที่&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Container Image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;จากข้อที่หนึ่ง เมื่อเราได้ทดลอง compile หรือเปลี่ยน runtime ของภาษาที่เราใช้งาน เราก็จะมาทำสิ่งที่เรียกว่า Multi-arch container images ที่ทำให้ Image ของเราทำงานได้บนหลาย CPU architectures (arm64 และ amd64) ซึ่งสามารถใช้เครื่องมืออย่าง &lt;a href="https://github.com/docker/buildx#getting-started" rel="noopener noreferrer"&gt;Docker Buildx&lt;/a&gt; มาช่วยในขั้นตอนนี้ได้เลยครับ&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%2Fwjl0ii0x3iqjm1euo9yt.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%2Fwjl0ii0x3iqjm1euo9yt.png" alt="Docker Buildx"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;เมื่อ build เสร็จก็ต้อง deploy ถูกต้องไหมครับ ใน EKS เราสามารถสร้าง Node Group ใหม่โดยใช้ instance type ที่เป็นประเภท Graviton ได้เลย วิธีดูว่า Instance Type ไหนเป็น AWS Graviton ก็คือตัวลงท้ายในประเภทจะเป็นตัว g เช่น t4g.mediumครับ หลังจากนั้นเราก็ควร taint node group นี้ไว้ด้วยแล้วก็ค่อยไปใส่ toleration ให้ service ที่พร้อมสำหรับการรันบน AWS Graviton ถึงเข้ามาใช้งานได้ครับ&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;  &lt;span class="na"&gt;tolerations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kubernetes.io/arch&lt;/span&gt;
    &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Equal&lt;/span&gt;
    &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;arm64&lt;/span&gt;
    &lt;span class="na"&gt;effect&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;NoSchedule&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;จริงๆแล้ววิธีการย้าย workload มีค่อนข้างหลากหลายครับ นอกจาก &lt;a href="https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/" rel="noopener noreferrer"&gt;Taint and Toleration&lt;/a&gt; ก็ยังมี &lt;a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/" rel="noopener noreferrer"&gt;Node label selector&lt;/a&gt; และ &lt;a href="https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/" rel="noopener noreferrer"&gt;Node affinity&lt;/a&gt; อีกด้วย ซึ่งเราสามารถใช้งานร่วมกันเผื่อให้ได้ผลลัพธ์ตามที่ควรจะเป็นได้ครับ&lt;/p&gt;

&lt;p&gt;นอกจากการรันให้ถูก node แล้ว เรายังสามารถผสาน technique ที่เกี่ยวกับ &lt;a href="https://gateway-api.sigs.k8s.io/guides/traffic-splitting/" rel="noopener noreferrer"&gt;Traffic splitting&lt;/a&gt; ได้อีกด้วย ทำให้เราสามารถลองแบ่ง Traffic จำนวนหนึ่งมารันบน AWS Graviton เพื่อทำการทดสอบอะไรบางอย่างก่อนจะย้ายไปใช้จริง 100% ได้ครับ&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%2Fsmx026mncidfozm2hbcc.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%2Fsmx026mncidfozm2hbcc.png" alt="Traffic Split"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;เราจะรู้ได้ยังไงหล่ะว่าการมาใช้ AWS Graviton ทำให้ระบบเราได้ Performance ที่มากขึ้นและ Latency ลดลงเหมือนที่คนอื่นเขาเล่ากันมา คำตอบคือการทำ Testing ครับ หากว่าระบบเรามี script สำหรับการทำ Smoke Test เราก็สามารถนำมาทดลองรันกับ Service ที่ทำงานอยู่บน AWS Graviton เผื่อ Monitor ผลลัพธ์ได้เลยครับ&lt;/p&gt;

&lt;p&gt;อย่างไรก็ตาม การใช้งาน AWS Graviton ไม่ได้หมายความว่าเราจะได้ประสิทธิภาพเพิ่มขึ้นกันตลอดทุกครั้งนะครับ เพราะอย่างที่เรากล่าวกันไปในหัวข้อก่อน ว่าถ้าเวอร์ชั่นของภาษาที่เราใช้ยังไม่ได้ Optimize มาสำหรับ CPU ประเภท ARM อาจจะทำให้ประสิทธิภาพลดลงก็เป็นได้ โดยในส่วนนี้เราสามารถใช้เครื่องมือที่เรียกว่า &lt;a href="https://github.com/brendangregg/FlameGraph" rel="noopener noreferrer"&gt;Flame Graphs&lt;/a&gt; มาดู stack frame ของ application ว่ามันช้าลงที่ส่วนไหนเพื่อทำการ optimize เพิ่มเติมได้ครับ&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%2Ferdm3re4nnho3djglwrh.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%2Ferdm3re4nnho3djglwrh.png" alt="Flame Graphs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ทั้งหมดนี้ก็เป็นเพียงขั้นตอนคร่าวๆเท่านั้น ทุกคนสามารถเข้าไปอ่านเรื่อง &lt;a href="https://github.com/docker/buildx#getting-started" rel="noopener noreferrer"&gt;Transition Guide&lt;/a&gt; เพิ่มเติมเพื่อขั้นตอนและวิธีการวางแผนที่ถูกต้องมากขึ้นครับ&lt;/p&gt;

&lt;h3&gt;
  
  
  3/ Managed Services
&lt;/h3&gt;

&lt;p&gt;นอกจาก workload ของเราเองแล้ว เรายังสามารถใช้งานเจ้า Graviton กับ Managed services ต่างๆของ AWS ได้ด้วยนะ ซึ่งในส่วนนี้เราไม่ต้องทำอะไรเลยครับ สามารถ upgrade แล้วก็ enjoy ได้เลย ลองเข้าไปดูรายละเอียดของแต่ล่ะ &lt;a href="https://github.com/aws/aws-graviton-getting-started/blob/main/managed_services.md" rel="noopener noreferrer"&gt;managed services&lt;/a&gt; ที่เราต้องการใช้งานได้เลยครับ&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%2Fkj53x8nsy3380e4ok03j.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%2Fkj53x8nsy3380e4ok03j.png" alt="AWS re:Invent 2023 - AWS Graviton: The best price performance for your AWS workloads"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  สรุป
&lt;/h2&gt;

&lt;p&gt;ถ้าหากว่าคุณเริ่มที่จะสนใจ AWS Graviton แล้วล่ะก็ ลองเข้าไปที่ &lt;a href="https://aws.amazon.com/ec2/graviton/fast-start/" rel="noopener noreferrer"&gt;AWS Graviton Fast Start&lt;/a&gt; ซึ่งเป็นโปรแกรมสำหรับการย้าย workload ของเรามาอยู่บน AWS Graviton ซึ่งมีตัวอย่างของ Serverless, Container, Database และ Caching ครับ&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%2Fma7lt90mmjhpaz2pbc6j.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%2Fma7lt90mmjhpaz2pbc6j.png" alt="AWS Graviton Fast Start"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ขอพลังของ ARM จงสถิตอยู่กับทุกคนครับ ⚔️&lt;/p&gt;

&lt;h2&gt;
  
  
  Continue readings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-graviton-getting-started" rel="noopener noreferrer"&gt;https://github.com/aws/aws-graviton-getting-started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/whitepapers/latest/aws-graviton2-for-isv/transitioning-your-service-or-application.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/whitepapers/latest/aws-graviton2-for-isv/transitioning-your-service-or-application.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>eks</category>
      <category>aws</category>
      <category>graviton</category>
    </item>
    <item>
      <title>ผิดไหมถ้าใจอยากจะใช้ Arch Linux บน WSL</title>
      <dc:creator>PePoDev</dc:creator>
      <pubDate>Fri, 22 Dec 2023 17:53:59 +0000</pubDate>
      <link>https://dev.to/pepodev/phidaihmthaaaicchyaakcchaaich-arch-linux-bn-wsl-4o10</link>
      <guid>https://dev.to/pepodev/phidaihmthaaaicchyaakcchaaich-arch-linux-bn-wsl-4o10</guid>
      <description>&lt;h2&gt;
  
  
  เกริ่นนำ
&lt;/h2&gt;

&lt;p&gt;มีช่วงนึงที่เราหันไปใช้ Linux แบบจริงๆจังๆ จนเราได้ไปลอง Distro ตัวหนึ่งที่ชื่อ Arch Linux ในตอนนั้นเราก็ตกหลุมรักเข้ากับมนต์เสน่ห์แปลกๆของมัน ไม่ว่าจะการอัพเดตที่มีมาบ่อยจนรู้สึกหวาดกลัว หรือ package manager ที่แสนจะอัจฉริยะอย่างเจ้า pacman ทำให้เราต้องการนำมันกลับมาใช้งานใน WSL บนคอมเครื่องหลักของเรา แต่หลังจากที่ลอง search บน Windows Store เราเจอแต่ unofficial package ที่ไม่ได้อัพเดตมาหลายเดือนแล้ว เลยไปลองหาข้อมูลเพิ่มจนได้ใจความว่า ในปัจจุบันมี project open-source อยู่ตัวหนึ่งชื่อว่า wsldl ที่เราไว้ติดตั้ง rootfs หรือ disk image (ext4 vhdx) ใดๆก็ตามลงใน WSL ซึ่งเขาก็ได้ทำ rootfs สำหรับ Arch Linux ไว้ด้วยให้เราใช้ติดตั้งลงบน WSL ได้เลย ซึ่ง Package บน Windows Store ที่เราเจอก็เอาอันนี้ไปใช้นี่แหละ แต่เดี๋ยวเราจะมาลงกันเองเพื่อความ up-to-date!&lt;/p&gt;

&lt;p&gt;สำหรับคนที่ไม่รู้จัก WSL มันก็คือเครื่องมือที่ช่วยให้นักพัฒนาสามารถใช้งานความสามารถของ Linux ได้โดยที่ไม่จ้องไปปวดหัวกับการทำ virtual machine หรือการทำ dual boot แต่ก็มาปวดหัวกับ WSL อยู่ดีนะ 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  ลงมือ
&lt;/h2&gt;

&lt;p&gt;ด้วยความที่เจ้าของโปรเจ็คนี้ได้เตรียมอะไรหลายๆอย่างไว้ให้เราแล้ว ทำให้การติดตั้งนั้นมีหลายวิธีและค่อนข้างง่าย และในวันนี้เราจะใช้วิธีการติดตั้งผ่าน appx เพราะว่าง่ายมว๊าก เราสามารถทำตามขั้นตอนนี้ได้เลย&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;เข้าไปดาวน์โหลดตัวติดตั้งที่เป็น .appx กับตัว .cer มาไว้ที่เครื่องเราซึ่งเราก็เลือกแบบ AppX หรือ Online-AppX ก็ได้จะแตกต่างแค่ Online จะเป็นไฟล์ขนาดนั้นเล็ก จะมีการโหลดเพิ่มระหว่างการติดตั้งเฉยๆ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;พอทำการโหลดทุกอย่างเสร็จเรียบร้อยก็ทำการ Install Cer เข้าไปก่อนเผื่อเป็นการยืนยันว่าเราเชื่อถือผู้พัฒนานี้ ก็คลิกตาม docs นี้ได้เลย&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ขั้นตอนสุดท้ายก็ดับเบิ้ลคลิก .appx เพื่อทำการ install ก็เป็นอันเสร็จพิธีครับ&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;appx ก็คือ package file ของ windows ที่เอาไว้ใช้แจกจ่ายสำหรับการติดตั้ง application ที่เป็น Universal Windows Platform (UWP) ส่วนมากใช้สำหรับนำแอพขึ้น Windows Store&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;นอกจาก Arch Linux แล้ว เรายังสามารถเอา wsldl มาใช้ได้กับทุก distro ที่เราต้องการได้เลย สามารถใช้กับ CPU ประเภท ARM ได้อีกด้วย&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wzEfVzjp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2h5s3xy5r25y8438zgle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wzEfVzjp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2h5s3xy5r25y8438zgle.png" alt="wsldl show case" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ขอให้สนุกกับ WSL ครับ 👋&lt;/p&gt;

&lt;p&gt;References&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/windows/wsl/install"&gt;https://learn.microsoft.com/en-us/windows/wsl/install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yuk7/wsldl"&gt;https://github.com/yuk7/wsldl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yuk7/ArchWSL"&gt;https://github.com/yuk7/ArchWSL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wsldl-pg.github.io/ArchW-docs/"&gt;https://wsldl-pg.github.io/ArchW-docs/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>wsl</category>
      <category>archlinux</category>
    </item>
    <item>
      <title>Obsidian กับเรื่อง Multiple-Devices</title>
      <dc:creator>PePoDev</dc:creator>
      <pubDate>Fri, 22 Dec 2023 10:19:30 +0000</pubDate>
      <link>https://dev.to/pepodev/obsidian-kaberuueng-multiple-devices-2heg</link>
      <guid>https://dev.to/pepodev/obsidian-kaberuueng-multiple-devices-2heg</guid>
      <description>&lt;h2&gt;
  
  
  เกริ่นนำกันซักนิด
&lt;/h2&gt;

&lt;p&gt;ถ้าหากคุณหลงเข้ามาโดยที่ยังไม่รู้ว่าเจ้า Obsidian คืออะไร เราขอสรุปสั้นๆว่า Obsidian ก็คือ Note taking เจ้านึงที่เน้นเรื่อง Privacy first หรือก็คือ note ของเรา เราดูแลเอง บวกกับการจด Note ในแบบที่ Developer ชอบก็คือ Markdown style นั่นเอง เท่านั้นยังไม่พอ community ยังช่วยกันทำ plugin เพื่อให้เจ้า Obsidian มีความสามารถที่มากขึ้น ถือเป็น note taking app ที่มี feature ที่หลากหลาย ทำงานแบบ offline ได้ ที่สำคัญ ทั้งหมดที่กล่าวมานั้น ฟรี!!!!!!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kPhm4p6b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmalkl1j2a7fp920f9r6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kPhm4p6b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmalkl1j2a7fp920f9r6.png" alt="Obsidian Features" width="800" height="777"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;แต่เดี๋ยวก่อน ถึงแม้จะบอกว่าโปรแกรมนี้ฟรี แต่ก็มีจุดที่เขาหารายได้อยู่เหมือนกันด้วยการขายบริการหรือ add-ons แยกเพื่อใช้คู่กับ Obsidian ซึ่งมีอยู่สองส่วน ส่วนแรกก็คือระบบของการ Publish ที่จะช่วยให้เราสามาระแชร์ Note ของเราออกมาเป็น Link ที่สามารถเปิดดูได้ผ่าน Internet และส่วนที่สองคือการ Sync ที่จะช่วยให้โน๊ตของเราเหมือนกับ device เครื่องอื่นๆ เช่นแก้จากคอมไปดูในมือถือเป็นต้น&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Uj0UXVQO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txuvlteyn49ta4yzskao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uj0UXVQO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txuvlteyn49ta4yzskao.png" alt="Obsidian Service Price" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตอนนี้เราอาจจะมีคำถามว่า แล้วถ้าไม่อยากจ่ายเงินหล่ะ ไหนบอกฟรี? โอเค ไม่เป็นไร ผมมีข่าวดีสำหรับสาย Apple ทุกท่านก็คือ iCloud ใน iOS มัน mount file system ลงในเครื่องให้เลย ทำให้เราเปิด vault ของเราบน iCloud drive ได้ทั้งใน Mac แล้วก็ iPhone และ Sync กันได้เลยโดยที่ไม่ต้องทำอะไร แต่สำหรับสาย Android อย่างกระผมนั้นก็ไม่ต้องน้อยใจกันไป ตามมาดูวิธีต่างๆที่เราสามารถทำได้กัน&lt;/p&gt;

&lt;p&gt;เป็นที่แน่นอนว่าถ้ามีระบบ plugin หรือการเก็บโน๊ตของเราลงบนเครื่องเราเองอยู่แล้ว เราย่อมมีทางเลือก ซึ่งวันนี้เราจะมาเสนอสี่ทางเลือกที่จะช่วยให้เราสามารถใช้งาน Obsidian บนหลายๆ device ได้พร้อมๆกัน (Publish ก็ทำแบบฟรีๆได้นะ แต่วันนี้เราจะมาโฟกัสกับการ Sync กันก่อน) เริ่มกันที่วิธีแรก&lt;/p&gt;

&lt;h2&gt;
  
  
  1/ Autosync
&lt;/h2&gt;

&lt;p&gt;วิธีแรกคือการใช้ Cloud Storage อย่าง Google Drive เข้ามาช่วย Sync ข้อมูลให้เราโดยที่ใน PC หรือ Laptop เราก็ลงพวก File sync ของ Cloud ใดก็ได้ที่เราชื่อชอบ เช่น Google Drive for Desktop หลังจากนั้นก็ใช้แอพ AutoSync เข้ามาช่วย sync ข้อมูลเหล่านั้นมาลงบนโทรศัพท์ของเราได้เลย&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Oy11ycB0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1bhau6j4e1kxell8vyt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Oy11ycB0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1bhau6j4e1kxell8vyt.png" alt="AutoSync" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;สำหรับวิธีนี้ การตั้งค่าจะค่อนข้างง่าย เพียงแค่ login กับทาง Google Drive ทั้งสองอุปกรณ์ของเรา ตัว folder ก็จะเริ่ม Sync กันโดยอันตโนมัติ เพียงแต่ข้อเสียของวิธีคือมันไม่ real-time เพราะเราต้องตั้ง interval ว่าจะให้มันทำการ Sync ทุกๆกี่นาที ซึ่งถ้าเราตั้งถี่มากๆก็หมายถึง Battery ที่จะโดนสูบเข้าไปมากเช่นกัน หรือถ้าเราต้องการ sync มาทันทีก็ต้องมากด sync เองแบบ manual ครับ นอกจากแอพ AutoSync ก็ยังมีอีกเจ้านึงที่ชื่อ FolderSync สามารถไปลองโหลดมาทดสอบกันดูได้เลยครับ&lt;/p&gt;

&lt;p&gt;นี่ก็จบกันไปแล้วกับวิธีแรก ซึ่งถ้าหากว่าวิธีแรกมันง่ายไป เชิญคุณอ่านต่อไปได้เลยครับ แต่ถ้ามันยากไปคุณอาจจะต้องทบทวนว่าจะจ่ายเงินให้ Obsidian ดีไหมแทนแล้วหล่ะ เพราะหลังจากนี้จะเริ่มยากขึ้น และใช้ความรู้ทางด้านสายงาน IT พอสมควร ซึ่งจะมีความเสี่ยงต่อการสูญหายของข้อมูลด้วย หากคุณจัดการมันได้ไม่ดีพอ ถ้าคุณอ่านแล้วยังไม่กลัว ก็เชิญไปที่วิธีถัดไปได้เลยครับ&lt;/p&gt;

&lt;h2&gt;
  
  
  2/ Remotely Save (Plugin)
&lt;/h2&gt;

&lt;p&gt;อย่างที่กล่าวไปในตอนต้นว่า Obsidian เปิด API ให้นักพัฒนาสามารถเข้าไปทำ plugin เพื่อเสริมความสามารถได้เต็มที่ เลยทำให้มีคนทำ plugin ที่ชื่อว่า Remotely Save ที่สามารถ Sync note ของเราเข้ากับ Cloud services ต่างๆได้ ซึ่งในปัจจุบันก็รองรับ S3, Dropbox, Webdav และ OneDrive ซึ่งการใช้งานก็เพียงแค่ติดตั้งและทำการ connect plugin เข้ากับ cloud service ที่เราต้องการก็เป็นที่เรียบร้อยแล้ว ที่เหลือเราก็เลือกได้เลยว่าต้องการให้ Sync ทุกๆกี่นาที หรือให้ทำการ Sync ทุกครั้งที่เปิดแอพขึ้นมาก็ได้เช่นกัน&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FX3F32nI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pcrmr27jmw4pcflyhzr8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FX3F32nI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pcrmr27jmw4pcflyhzr8.png" alt="Remotely Save Plugin" width="800" height="670"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เราอาจจะสังเกตว่าจะเริ่มมีคำเตือนมากขึ้นเมื่อเราเริ่มที่จะใช้ plugin เพราะการ Sync note ของเราระหว่างเครื่องอื่นๆก็คือการเขียนทับ ลบไฟล์ต่างในเครื่องของเรา ดังนั้นหากคุณหรือตัว plugin เองทำบางอย่างผิดพลาดไป ก็อาจจะเกิดการสูญหายของข้อมูลได้เช่นกัน ดังนั้นเราเลยต้องมีวิธี backup ข้อมูลของเราเช่นกัน&lt;/p&gt;

&lt;h2&gt;
  
  
  3/ Git (Plugin)
&lt;/h2&gt;

&lt;p&gt;อันนี้อาจจะไม่เชิง sync ซะทีเดียว แต่เรายังสามารถใช้เผื่อ backup vault ของเราได้อีกด้วย เพราะ Git ก็คือ version control system ตัวนึงที่ทำให้เราสามารถติดตามการเปลี่ยนแปลงของไฟล์เราได้ การใช้งาน plugin นี้ก็เหมือนวิธีก่อนหน้าเลยครับ เข้าไปติดตั้ง plugin Obsidian Git แล้วก็ทำการ enable กับ config ให้เรียบร้อยก็จะใช้งานได้ทันทีครับ ซึ่ง plugin ตัวนี้สามารถตั้งค่าได้ครอบคลุมการใช้งานที่หลากหลายมากๆ เช่นให้ backup แล้ว push ไปที่ remote repository ของเรา ในทุกๆเสลาที่เรากำหนดหรือทุกครั้งที่เราเปิดโปรแกรมขึ้นมา หรือคอย pull ดูอยู่เรื่อยๆว่ามีอัพเดตอะไรมาใหม่หรือไม่ แต่เนื่องด้วยความที่ Git เป็นความรู้เฉพาะทาง ทำให้การตั้งค่าในโทรศัพท์มือถือก็มีขั้นตอนที่เพิ่มขึ้นมาไม่น้อยเช่นกัน การขาดความเข้าใจอาจจะทำให้ข้อมูลหลุดหรือสูญหายได้เลยทีเดียว ฉะนั้นหากคุณไม่ได้เข้าใจว่า Git คืออะไรก็ขอให้ข้ามมันไปก่อนล่ะกันครับ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pQbE2jbN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjv8lo26fgfpuoq59ak3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pQbE2jbN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjv8lo26fgfpuoq59ak3.png" alt="Obsidian Git Plugin" width="800" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4/ Syncthing
&lt;/h2&gt;

&lt;p&gt;เข้าสู่ดาวเด่นของงานในวันนี้ ซึ่งเป็นวิธีที่ผมชอบมากที่สุดเลยก็ว่าได้ เพราะเจ้าตัว Syncthing มันทำงานแบบ real-time ทำให้เมื่อเราแก้ไฟล์ที่ laptop ของเรา โทรศัพท์ก็จะเห็นการเปลี่ยนแปลงนั้นแบบไวมากๆ เรียกว่ามีข้อดีเต็มไปหมด แต่ก็ใช่ว่าจะไม่มีข้อเสีย ข้อเสียหลักๆของ Syncthing นั่นก็คือการที่ตัวมันเป็นอีกโปรแกรมนึงเลยที่เราต้องดูแลและตั้งค่ามัน เพราะแท้จริงแล้ว Syncthing เป็นเพียงโปรแกรมที่เอาไป sync ไฟล์ระหว่างสองเครื่อง ไม่ได้มีส่วนเกี่ยวข้องอะไรกับ Obsidian แต่อย่างใด ซึ่งในการใช้งานเราจะต้องทำการเพิ่ม remote devices ให้อุปกรณ์ของเรารู้จักกันเสียก่อน หลังจากนั้นเราจึงสามารถ share folder ของเราไปให้อุปกรณ์อื่นได้ และข้อมูลระหว่างสองอุปกรณ์ก็จะ sync กันอยู่เสมอตราบเท่าที่โปรแกรม Syncthing ยังคงทำงานอยู่ครับ และการใช้งานโปรแกรมนี้ก็ควรระมัดระวังเรื่องของการตั้งค่าให้ดีเพราะค่อนข้างเฉพาะทางมากๆครับ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NGH0ybnF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ky00jjtg46bqmd5jy56h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NGH0ybnF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ky00jjtg46bqmd5jy56h.png" alt="Syncthing" width="800" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หากคุณสนใจก็ลองอ่านเรื่องความปลอดภัยของเจ้าโปรแกรมตัวนี้ดูก่อนได้ แล้วก็ค่อยๆอ่าน document ในส่วนที่เราสงสัยตามไปเรื่อยๆครับ เมื่อเข้าใจพื้นฐานของมัน โปรแกรมนี้ก็เป็นอีกเครื่องมือที่ประยุกต์ใช้ในสถานการณ์อื่นๆได้ดีเช่นกันครับ&lt;/p&gt;

&lt;h2&gt;
  
  
  สรุป
&lt;/h2&gt;

&lt;p&gt;หลังจากที่เราเต็มอิ่มกับวิธีทั้งหมดที่มีกันไปแล้ว หากเพื่อนๆมีวิธีอื่นที่น่าสนใจก็ comment บอกกันได้เลยครับ ซึ่งจากที่เราเห็นบางวิธีก็ง่าย แต่ก็อาจจะไม่ได้ตามที่เราต้องการ หรือบางวิธีที่ดูจะได้ตามสิ่งที่เราต้องการก็ดูยากเย็นเหลือเกินกว่าจะได้มันมา ถ้าทำไม่ดี หรือทำอะไรผิดไปบางขั้นตอนก็อาจเป็นเหตุให้ข้อมูลสูญหายกันได้อีกด้วย ฉะนั้นการจ่างเงินในบางครั้งก็ดูเป็นทางออกที่ไม่เลวครับ 😅&lt;/p&gt;

&lt;p&gt;ถ้าคุณชอบบทความแบบนี้ อย่าลืมกดติดตาม เพื่อรับการแจ้งเตือนบทความถัดไปด้วยนะครับ 🙇🏻‍♂️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QM_40IIJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9d2x313m0vwvwh7qqp8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QM_40IIJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9d2x313m0vwvwh7qqp8u.png" alt="My Obsidian" width="800" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://help.obsidian.md/Getting+started/Sync+your+notes+across+devices"&gt;https://help.obsidian.md/Getting+started/Sync+your+notes+across+devices&lt;/a&gt;&lt;/p&gt;

</description>
      <category>obsidian</category>
      <category>syncthing</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Do the Fun Chaos Engineering with Gamification!</title>
      <dc:creator>PePoDev</dc:creator>
      <pubDate>Fri, 12 May 2023 13:11:45 +0000</pubDate>
      <link>https://dev.to/pepodev/do-the-fun-chaos-engineering-with-gamification-50ij</link>
      <guid>https://dev.to/pepodev/do-the-fun-chaos-engineering-with-gamification-50ij</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;disclaimer: This post focuses on how fun chaos engineering can be. This does not cover the principal and real practicalities of chaos engineering.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Chaos Engineering?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Chaos engineering is the process of testing a distributed computing system to ensure that it can withstand unexpected disruptions. It relies on concepts underlying chaos theory, which focuses on random and unpredictable behavior.&lt;br&gt;
&lt;a href="https://www.techtarget.com/searchitoperations/definition/chaos-engineering"&gt;TechTarget&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The meaning is relatively straightforward, In short, It's is "rude to your cluster and hope it can survive". But the real world of Chaos Engineering has a lot of topics for measuring the metrics that you can ensure your experiment runs successfully or not.&lt;/p&gt;

&lt;p&gt;Leave it behind, Because in this article we will talk only about the FUN part of chaos engineering, But it might not be fun for everyone 🤣&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zUy8LIi---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66j6rbhzx8waqkk3i492.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zUy8LIi---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66j6rbhzx8waqkk3i492.png" alt="meme" width="768" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Gamification?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The practice of making activities more like games in order to make them more interesting or enjoyable.&lt;br&gt;
&lt;a href="https://dictionary.cambridge.org/dictionary/english/gamification"&gt;Cambridge Dictionary&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example, In the classroom, the teacher can give you a point that you can use to exchange with a special score or some benefits like gaining more time to do the homework than other people and the point will give to the student that participated and answers in the classroom. Does it sound like the game?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pk-sGSsn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ubnpfeh8t7ubpt0rnmqj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pk-sGSsn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ubnpfeh8t7ubpt0rnmqj.png" alt="meme" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready for the fun?
&lt;/h2&gt;

&lt;p&gt;The formula is -&amp;gt; &lt;code&gt;Chaos engineering + Gamification = Fun (Maybe)!&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To make it fun, We need to make the process more like a game. That you can play a game while doing the chaos engineering at the same time.&lt;/p&gt;

&lt;p&gt;A lot of the interesting projects to make chaos engineering more fun has created on GitHub, Thanks for the open sources.&lt;/p&gt;

&lt;p&gt;Are you ready? Let's get started.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ Warning: Do with your own risk!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. Kube Doom
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;KubeDoom is The next level of chaos engineering! Kill pods inside your Kubernetes cluster by shooting them in Doom! - &lt;a href="https://github.com/storax/kubedoom"&gt;KubeDoom&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0Rf2Qnh9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8iy5c5p42iwrbwizhzk8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0Rf2Qnh9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8iy5c5p42iwrbwizhzk8.png" alt="Kube Doom" width="647" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. KubeInvaders
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Gamified Chaos Engineering Tool for Kubernetes - &lt;a href="https://github.com/lucky-sideburn/KubeInvaders"&gt;KubeInvaders&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HaIzLOyM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wnbqyu7pb1k0smrqvbd5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HaIzLOyM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wnbqyu7pb1k0smrqvbd5.png" alt="KubeInvaders" width="800" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Kube Chaos
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A chaos engineering style game where you seek out and destroy Kubernetes pods, twinstick shmup style - &lt;a href="https://github.com/Shogan/kube-chaos"&gt;Kube Chaos&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lXxBpYoR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hoyofuvjte2dd2rtfg63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lXxBpYoR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hoyofuvjte2dd2rtfg63.png" alt="Kube Chaos" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;These are the example projects that I found to make chaos engineering fun. If you find more interesting projects please tell me. But also please note that this is not the real principle of chaos engineering. It's just fun to implement the game with some chaos engineering concepts. To make it right, You need to understand more in the context of what you are doing and experiment for the result that you are looking for to improve the durability of your system.&lt;/p&gt;

&lt;p&gt;Have fun! and see you in the next post.&lt;/p&gt;

</description>
      <category>chaosengineering</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>gamification</category>
    </item>
    <item>
      <title>งานเปิดตัว AWS Local Zone ประเทศไทย</title>
      <dc:creator>PePoDev</dc:creator>
      <pubDate>Fri, 12 May 2023 11:21:24 +0000</pubDate>
      <link>https://dev.to/aws-builders/ngaanepidtaw-aws-local-zone-praethsaithy-41kj</link>
      <guid>https://dev.to/aws-builders/ngaanepidtaw-aws-local-zone-praethsaithy-41kj</guid>
      <description>&lt;p&gt;พอดีผมได้มีโอกาสไปร่วมงานเปิดตัว AWS Bangkok Local zone ที่โรงแรม Anantara Siam Bangkok Hotel เมื่อวันที่ 31 มกราที่ผ่านมา เลยลองสรุปสาระสำคัญจากงานมาฝากครับ&lt;/p&gt;

&lt;h2&gt;
  
  
  ทำไมต้อง Local Zone?
&lt;/h2&gt;

&lt;p&gt;เกริ่นก่อนสำหรับคนที่ยังไม่เข้าใจ Local zone มากนัก เอาง่ายๆเลย มันก็คือโซนท้องถิ่นนั่นเอง! อย่าเพิ่งเอ๊ะไป เราลองเข้าไปดูใน &lt;a href="https://aws.amazon.com/about-aws/global-infrastructure/"&gt;AWS Global Infrastructure&lt;/a&gt; ได้บอกไว้ว่า Region ประกอบไปด้วย Avaliability zone ซึ่งบ่อยครั้งก็อยู่ห่างจาก User มากเกินไป จึงทำให้เกิด Local Zone ที่มีคุณลักษณะคล้าย Availibility Zone หลายประการ แต่เข้าไปอยู่ใกล้ User มากขึ้นเพื่อรองรับการทำงานที่ต้องการ latency ต่ำนั่นเอง ซึ่ง Bangkok Local Zone ก็ถือเป็น Zone ภายใต้ &lt;code&gt;ap-southeast-1&lt;/code&gt; หรือ Singapore (อนาคตก็จะไม่ได้อยู่ใน Thailand region นะ)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zUIaWEtQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vhy52du5ne8lkv094cr0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zUIaWEtQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vhy52du5ne8lkv094cr0.png" alt="Local Zone Architecture" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Latency ที่ตอบโจทย์
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XmMCtc-l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0cm1hr79pqxpy2t6m35x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XmMCtc-l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0cm1hr79pqxpy2t6m35x.png" alt="Latency Comparison" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากรูปของการทดสอบที่ลองสั่ง &lt;code&gt;ping&lt;/code&gt; ไปยังเครื่องใน &lt;code&gt;ap-southeast-1&lt;/code&gt; (รูปซ้าย) ที่ใช้เวลาประมาณ 27ms กับฝั่ง local zone (รูปขวา) ประมาณ 4ms จะเห็นได้ว่า local zone ให้ latency ที่ต่ำกว่าประมาณ 6 เท่าเลยทีเดียว!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0FDRqKip--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gabdthk556z8o9mdbo05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0FDRqKip--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gabdthk556z8o9mdbo05.png" alt="Local Zone latency" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;และเนื่องจาก Bangkok Local zone จะอยู่ภายใต้ Region Singapore จึงใช้ Network backbone เดียวกัน ทำให้เราสามารถติดต่อกับ Service ที่มีตามเดิมใน region ได้ปกติ ไม่ได้วิ่งออก public network แต่อย่างใด&lt;/p&gt;

&lt;h2&gt;
  
  
  Services ที่รองรับ
&lt;/h2&gt;

&lt;p&gt;ณ ปัจจุบัน Services ที่พร้อมให้บริการบน Local Zone (วงกลมส้ม) จะยังมีไม่มากแต่ทาง AWS ก็มีแพลนจะเพิ่ม Services ที่สามารถใช้งานบน Local zone ขึ้นอีกในอนาคต (วงกลมขาว)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hRwhkeB4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8m1r6o0s7piue94qcjom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hRwhkeB4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8m1r6o0s7piue94qcjom.png" alt="Local Zone Services" width="747" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;และถึงแม้ว่า services จะยังไม่มากนัก แต่ก็ค่อนข้างเพียงพอต่อความต้องการในการยกระดับ system ที่มี latency sensitive ให้มี performance ที่มากขึ้นได้ และนอกจาก Services ในข้างต้น เรายังสามารถใช้ AWS Marketplace Partner ภายใน Local zone ได้เหมือน region ปกติอีกด้วย&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wy-TYkWA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s122wcuso2e6it51us4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wy-TYkWA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s122wcuso2e6it51us4j.png" alt="Marketplace" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ราคาเท่าไหร่กันนะ
&lt;/h2&gt;

&lt;p&gt;พูดกันมาถึงขนาดนี้ หลายๆท่านคงเตรียมเปิด console ไปกดสร้างหรือเตรียมแผนงานย้ายระบบมาอยู่บน Local zone กันเป็นแน่แท้ แต่ก่อนจะไปขั้นนั้น ลองมาดูค่าใช้จ่ายเมื่อเทียบกับ compute ทั่วไปบน region กันก่อน&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;EC2 (Region)&lt;/th&gt;
&lt;th&gt;EC2 (Local Zone)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Instance (c5.2xlarge) / hours&lt;/td&gt;
&lt;td&gt;$0.392&lt;/td&gt;
&lt;td&gt;$0.549&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EBS (gp2) / GB&lt;/td&gt;
&lt;td&gt;$0.12&lt;/td&gt;
&lt;td&gt;$0.246&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;จะเห็นได้ว่าราคาของ compute บน local zone สูงกว่าบน region ประมาณ 40% เลยทีเดียว นอกจากนี้เรายังเสียค่า Network Transfer ทั้ง In และ Out $0.08/GB อีกด้วย (&lt;a href="https://aws.amazon.com/th/about-aws/global-infrastructure/localzones/pricing/"&gt;ดูราคาเพิ่มเติม&lt;/a&gt;) นอกจากราคาที่เพิ่มขึ้นแล้วยังมี Instance Type และ Disk Type ให้เลือกค่อนข้างจำกัด ฉะนั้น เราจะมาพูดคุยถึง Use case ของการนำ Local zone มาใช้ให้เกิดความคุ้มค่าในด้านไหนได้บ้าง ช่วงท้ายของบทความ&lt;/p&gt;

&lt;h2&gt;
  
  
  การมาของ Thailand Region
&lt;/h2&gt;

&lt;p&gt;ยังไม่หมดเพียงเท่านั้น ภายในงานยังมีการพูดถึงการมาในอนาคตของ Thailand Region เพราะ AWS ถึงกับทุ่มเงินจำนวน 190 ล้านบาท เพื่อเข้ามาทำ Region ในประเทศไทยกันเลยทีเดียว&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8uzdGR5Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/inkvmodnba2vpxs17oac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8uzdGR5Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/inkvmodnba2vpxs17oac.png" alt="Thai Region" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;และภายในงานยังมีคำถามที่น่าสนใจดังนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1WR1Ardk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pn1uywxwrpmr3h7sd3fs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1WR1Ardk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pn1uywxwrpmr3h7sd3fs.png" alt="Questions" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;กล่าวโดยสรุปคือ BKK Local zone จะเป็นส่วนต่อขยายของ Singapore และจะไม่มีอะไรเกี่ยวข้องกับ TH Region ในอนาคต ถึงแม้ว่า TH Region จะเสร็จและพร้อมใช้งาน ก็จะไม่มีการย้าย BKK Local Zone มาที่ TH region แต่อย่างใด&lt;/p&gt;

&lt;h2&gt;
  
  
  ใช้ให้ถูกงาน
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Rs602VQz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/awse1pgd6pwj8mc5unvh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rs602VQz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/awse1pgd6pwj8mc5unvh.png" alt="Use case" width="800" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ลองมาดูตัวอย่างหรือ Use case การนำ Local zone มาใช้เพื่อให้เกิดประโยชน์กันดีกว่า&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Game

&lt;ul&gt;
&lt;li&gt;ตัวอย่างจากค่ายเกม Supercell เจ้าของเกมยอดนิยมอย่าง Clash of Clans ที่ต้องการให้บริการ Game Server ให้ผู้เล่นมี latency ที่ต่ำเพื่อให้ได้รับประสบการณ์การเล่นเกมที่ดีมากยิ่งขึ้น&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Content creation

&lt;ul&gt;
&lt;li&gt;อันนี้ยกตัวอย่างถึงบริษัท Netflix ที่มีการเอา Local zone ไปให้บริการสำหรับ service ที่ run latency sensitive เช่นการ live production video editing ให้ใกล้กับเหล่า artist มากยิ่งขึ้น&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Remote broadcasting

&lt;ul&gt;
&lt;li&gt;Esports Engine สามารถพัฒนาระบบที่มี latency ต่ำและมี performance ที่ดีขึ้นสำหรับการ broadcasting video ด้วยการวาง AWS Local zone ให้ใกล้กับผู้ใช้งาน พร้อมทั้งสามารถ scale ไปสู่ Global ได้ทันทีอีกด้วย&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  สรุป 🗒️
&lt;/h2&gt;

&lt;p&gt;สำหรับองค์กรที่คิดจะกระโดดเข้ามาสู่การใช้ Bangkok Local zone จะต้องมี Use case ที่เหมาะสม เพราะนอกจากจะมีราคาที่มากกว่าเดิมแล้ว Service หลายๆตัวก็ยังไม่พร้อมให้บริการ ณ ขณะที่เขียนบทความนี้ แต่ก็ถือว่าเป็นสิ่งที่น่าสนใจมาก ที่จะนำมาช่วยพัฒนาระบบที่ต้องการ latency ที่ต่ำเพื่อให้ได้ performance ที่มากขึ้น ใครต้องการจะทดสอบก็สามารถลองทำตาม&lt;a href="https://aws.amazon.com/th/blogs/thailand/aws-local-zones-bangkok-%E0%B8%9E%E0%B8%A3%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B9%83%E0%B8%AB%E0%B9%89%E0%B8%9A%E0%B8%A3%E0%B8%B4%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%81%E0%B8%A5%E0%B9%89%E0%B8%A7/"&gt;บทความ&lt;/a&gt;จาก AWS ได้เลย&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c1AiFkAk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1nirklh5mrabku8frn0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c1AiFkAk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1nirklh5mrabku8frn0n.png" alt="Architecture" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ถ้าชอบก็อย่าลืมกดติดตามบทความถัดๆไปด้วยนะ ขอบคุณครับ 🙇🏻‍♂️&lt;/p&gt;

</description>
      <category>aws</category>
      <category>bangkok</category>
      <category>devops</category>
      <category>news</category>
    </item>
  </channel>
</rss>
