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

นี่เป็นบทความแปล ที่มีเนื้อหามาจากบทความภาษาญี่ปุ่นของ Classmethod, Inc. ในหัวข้อ「AWS再入門ブログリレー AWS Amplify編」หากผู้อ่านสนใจอ่านเนื้อหาต้นฉบับสามารถอ่านได้ที่ลิ้งค์ "บทความต้นฉบับ" ด้านล่าง เนื้อหาในบทความนี้การอธิบายบางอย่างจะถูกปรับให้เข้าใจง่ายขึ้นทำให้แตกต่างจากต้นฉบับในบางจุด
2022.07.21

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

สวัสดีครับทุกคน โมะโค ครับ

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

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

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

AWS Amplify คือ?

AWS Amplify(ขอย่อว่า Amplify) คือ Framework and hosting service ที่ใช้ในการพัฒนาแอปพลิเคชันมือถือและเว็บแอปพลิเคชัน (SPA (Single Page Application)) โดยผ่านการใช้งาน AWS
เมื่อใช้ Amplify ทำให้ไม่จำเป็นต้องสร้าง CI / CD pipeline ของการ Build หรือ Deploy
เป็นโครงสร้าง Severless ทำให้สบายในการใช้งาน และมีค่าใช้จ่ายที่ต่ำ
การใช้ SDK กับ UI component ที่ให้บริการโดย Framework Level ของ SPA ที่สามารถทำงานร่วมกับ AppSync(GraphQL) หรือ Cognito จะสามารถช่วยการลดเวลาในการพัฒนาลงได้เยอะครับ

โดยบทความนี้จะเน้นไปที่การแนะนำการพัฒนาเว็บแอปพลิเคชัน(React)ครับ

Service ของ Amplify และ Feature ต่างๆ

Amplify สามารถแบ่งออกใหญ่ๆได้เ)้น 2 อย่างด้านล่างนี้

  • Amplify Console: มีฟังก์ชัน Static hosting และ CI / CD
  • Amplify Framework: ให้บริการ libraries หรือ UI components กับ CLI

Amplify Console

ใน Amplify Console จะสามารถ Build, Test, Deploy, Hosting แอปพลิเคชันและการจัดการโดเมน รวมไปถึงการตั้งค่าฟังก์ชัน CI/CD, Basic authentication ที่มีทำงานร่วมกับ Github เช่น Git provider

เนื่องจากการ Hosting ของ Amplify Console ใช้ CloudFront + S3 ภายใน จึงทำให้ทราบได้ว่าสามารถปรับขนาดได้(Scaleable)และทนต่อการโหลด(Strong against load)

และเราสามารถสร้างและลบ custom sub-domains สำหรับ branch deployments ได้อัตโนมัติ โดย Amplify Console โดยสามารถดูรายละเอียดเพิ่มเติมได้ที่ลิ้งค์ด้านล่าง

Amplify Framework

เราจะเรียกฟังก์ชัน libraries, UI components, CLI รวมกันว่า Amplify Framework

Amplify Framework จะมีให้บริการที่ Front-end framework level โดยจะมีตัวอย่างเช่น React, Vue.js, Angular

เมื่อเราใช้ libraries กับ UI components เราจะสามารถนำ Authentication(ทำงานร่วมกับ Cognito) ที่ต้องใช้เวลานานให้การติดตั้งและ หน้าต่าง Login ของ Application ใส่เข้าไปใน Application อย่างง่ายดาย

Amplify Framework สามารถทำงานร่วมกับ AWS Service ได้หลายชนิด ยกตัวอย่างเช่น Storage, Cognito หรือ Pinpoint โดยเฉพาะ AppSync(+Cognito) ที่ทำงานร่วมกันได้ดีมาก แค่เขียน Schema ลงไปใน schema.graphql แล้วปรับให้ใช้กับสภาพแวดล้อม ทำให้แค่ใส่ Data กับเขียน Schema ก็สามารถสร้าง Resolver ของ GraphQL กับ Query ได้โดยอัตโนมัติ

ข้อดี และ ข้อเสียของ AWS Amplify

หลังจากได้ลองใช้งานฟังก์ชันต่างๆ ของ Amplify ทำให้ผมสามารถรวบรวมข้อดีข้อเสียของ Amplify ออกมาได้ดังนี้

ข้อดี

  • ช่วยร่น(ลด)เวลาในการพัฒนาได้เยอะมาก
    • ไม่จำเป็นต้องสร้าง CI / CD pipeline
    • เป็นโครงสร้าง serverless + โครงสร้าง SPA ทำให้สามารถสร้าง architecture ที่สร้างง่าย ใช้งานง่าย และ ทนทานต่อการโหลด
    • ไม่จำเป็นต้องสร้างหน้าต่างล็อกอินกับสมัครสมาชิกทั้งฟังก์ชันและ UI เอง เพราะมีให้บริการ UI components มาให้อยู่แล้ว
      • ทำให้สามารถมีสมาธิกับการสร้าง Prototype มากขึ้น เพราะขั้นตอนในการสร้าง Service ลดลง
    • การทำงานร่วมกันระหว่าง Amplify+AppSync(+DynamoDB) ทำให้สามารถสร้าง Resolver ของ GraphQL กับ GraphQL query ของ Query/Mutation/Subscription ได้โดยอัตโนมัติ
      • เขียน Schema ลงไปใน schema.graphql ก็สามารถทำฟังก์ชันในการสร้าง Amplify โดยอัตโนมัติได้ โดยพื้นฐานแล้วไม่จำเป็นต้องใช้ Resolver
  • สามารถใช้ Backend DB ของ GraphQL เป็น DynamoDB ได้
  • มีราคาถูก สามารถเริ่มต้นใช้งานได้ ด้วยราคาที่ถูก
    • ค่าใช้จ่าย ณ วันที่ 20 เดือน กรกฎาคม 2022
      • 0.01 USD ต่อนาทีในการสร้าง
      • 0.023 USD ต่อ Storage 1 GB (คิดเป็นรายเดือน)
      • 0.015 USD ต่อ Hosting Service(Traffic)

ข้อเสีย

  • ไม่สามารถ migration แอปพลิเคชันที่ไม่มี SPA(React, Vue.js, Angular เป็นต้น) ได้
  • กรณีที่ไม่ได้ติดตั้ง SPA ในโปรเจ็กต์ จำเป็นต้องมีความรู้ ความสามารถเกี่ยวกับ SPA(React, Vue.js, Angular เป็นต้น)
    • ความรู้ ความสามารถเกี่ยวกับ SPA นั้นกำลังติดเทรนอยู่ จะเรียนไว้ก็ไม่เสียหายครับ(ความเห็นส่วนตัว)

Tutorial AWS Amplify

สำหรับใครที่ลองอ่านแล้วยังไม่เห็นภาพ สามารถลองไปลองทำ Tutorial กับลิ้งค์ด้านล่างได้เลย

สอนการใช้ AWS Amplify Console ภายใน 10 นาที(ภาษาไทย)
สารบัญข้อมูลต่างๆเกี่ยวกับ AWS Amplify - Amplify Framework Documentation

สารบัญข้อมูลต่างๆเกี่ยวกับ AWS Amplify - Amplify Framework Documentation

รวมข้อมูล hands-on tutorials ของ AWS Amplify(ภาษาอังกฤษ)
Hands-On Tutorials for Amazon Web Services (AWS)

สรุป

เป็นยังไงกันบ้างครับกับ AWS Amplify การใช้เจ้านี่จะทำให้สามารถสร้างโครงสร้าง Serverless SPA ได้อย่างง่ายดาย ทำให้ช่วยลดเวลาในการพัฒนา และใช้งานร่วมกับ Service ของ AWS ได้ด้วย
หากท่านผู้อ่านต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ AWS Amplify สามารถเข้าไปดูได้ที่บทความที่เกี่ยวข้องได้ครับ แล้วเจอกันในบทความต่อไป สวัสดีครับ / ต้า

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

AWS再入門ブログリレー AWS Amplify編 | DevelopersIO

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