AWS Thai Blog
10 ข้อ ที่นักออกแบบสถาปัตยกรรมแบบ serverless ควรรู้
อ้างอิงจากสามบทความก่อนหน้าของการออกแบบและแนวทางปฏิบัติของ AWS Lambda scaling ที่ผู้ใช้จะได้เรียนรู้วิธีการสร้าง Application แบบไร้ Server สำหรับเสกลขนาดใหญ่, โมเดลการเรียกใช้งาน AWS Lambda’s ในแบบต่าง ๆ และวิธีในการพัฒนาด้วย AWS Lambda ที่ดีที่สุด ซึ่งในบทความต่อไปนี้ จะช่วยให้ผู้ใช้ได้พัฒนาความรู้เชิงลึกเกี่ยวกับการทำงานแบบ serverless ไปอีกขั้นด้วยหลักการ 10 ข้อดังต่อไปนี้
1. การออกแบบ API และ Microservices
การเปลี่ยนมาใช้ระบบแบบ Microservices แทน Monothlic นั้น ทำให้มีการให้ความสำคัญกับการแยก Service เป็นส่วนย่อยๆ มากยิ่งขึ้น ผู้ใช้สามารถเรียนรู้เพิ่มเติมตามหัวข้อด้านล่างเกี่ยวกับวิธีการออกแบบ และปรับใช้ Microservices ได้ด้วย Amazon API Gateway:
- ภาพรวมของการออกแบบ Microservices
- การสร้าง API เพื่อขับเคลื่อน Microservices ด้วย API Gateway
- แนวปฏิบัติที่ดีที่สุดสำหรับการสร้าง APIs ระดับองค์กร ด้วย API Gateway
- Microservices บน AWS
หลังจากที่เรียนรู้ตามหัวข้อด้านบนแล้ว ทีนี้เรามาลองสร้างสร้าง Serverless API ด้วย API Gateway, AWS Lambda และ Amazon DynamoDB ที่ขับเคลื่อน Web Application แบบไร้ Server โดยการเรียนรู้ด้วยตัวคุณเองผ่านเวิร์คช็อป Wild Rydes web application
2. Event-driven Architectures และรูปแบบการส่งข้อมูลแบบ Asynchronous
เมื่อมีการสร้าง Event-driven Architectures ไม่ว่าคุณจะกำลังมองหาวิธี simple queueing และmessage buffering หรือ event-based choreography pattern มันคุ้มค่าที่จะเรียนรู้เกี่ยวกับกลไกในการเปิดใช้งานเพื่อรวบรวม และส่งข้อมูลแบบ Asynchronous ซึ่งถูกเปิดใช้งานผ่าน Queues หรือ Streams เป็น Message Buffer สำหรับการส่งข้อมูลแบบ pub/sub
มาดูกันว่าผู้ใช้สามารถนำจุดเด่นของทั้งสามฟีเจอร์มาใช้ได้อย่างไร:
- Streams แบบไร้ Server, หัวข้อ และ Queues: วิธีเลือกใช้รูปแบบ Application ของการทำงานไร้ Server ที่ถูกต้อง
- แนวทางปฏิบัติที่ดีที่สุดสำหรับการประมวลผล Serverless Queue
มาลองสร้างสร้าง application ประมวลผลข้อมูลแบบ Real-time โดยใช้ Amazon Kinesis Data Streams และ AWS Lambda จากการเรียนรู้ด้วยตัวผู้ใช้เองผ่านเวิร์คช็อป WildRydes data processing
3. การบริหารจัดการ Workflow สำหรับ Microservice Environment ที่มีการกระจายตัว
ใน Distributed microservice architectures ผู้ใช้ต้องออกแบบการประสาน Transactions ในรูปแบบที่แตกต่างจาก ACID transactions ของฐานของมูลแบบดั้งเดิม ซึ่งโดยทั่วไปจะดำเนินการโดยใช้ Monolithic relational database ในทางกลับกัน ผู้ใช้ต้องใช้ Sequence เพื่อเรียกใช้งานผ่าน Service พร้อมกับการ rollback และ retry กลไกอีกครั้ง สำหรับงานที่ต้องใช้ Orchestration logic หรือต้องการใช้รูปแบบ Orchestrator มากกว่าที่ถูกกล่าวถึงข้างต้น ตัว AWS Step Functions จะสามารถช่วยสร้าง Workflow ที่ซับซ้อน และกระจาย Transactions ผ่านการบริการของ AWS ที่หลากหลาย รวมถึง AWS Lambda ด้วย เรามาลองเรียนรู้เพิ่มเติมเพื่อสร้าง Workflow ทางธุรกิจ และแยก Orchestration logic ออกจาก AWS Lambda code ด้วย:
- การสร้าง Business Workflows ด้วย AWS Step Functions
- การจัดการสถานะการทำงานไร้ Server และ Orchestration สำหรับ Application สมัยใหม่
มาลองเรียนรู้การทำงานของ Workflow โดยใช้ Computer Vision AI services ด้วย AWS Rekognition และ AWS Step Functions เพื่อจัดทำ Logic โดยการเรียนรู้ผ่านเวิร์คช็อป Serverless image processing workflow
4. Lambda Computing Environment และ Programming Model
แม้ว่า AWS Lambda จะเป็นบริการที่สามารถเริ่มใช้งานได้ง่าย แต่ก็คุ้มค่าที่จะเรียนรู้เกี่ยวกับ AWS Lambda computing environment และวิธีการที่จะใช้ประโยชน์จากการทำงานเชิงลึก ไปจนถึงกลยุทธการบริหารต้นทุนอย่างมีประสิทธิภาพ ด้วย AWS Lambda runtime ให้มากขึ้น
มาพัฒนาทักษะ รวมไปถึงความเข้าใจเกี่ยวกับ AWS Lambda ให้มากขึ้นไปอีกขั้นด้วย:
- Lambda Under the Hood
- Lambda Layers, ระบบ Runtime API และ Nested Applications
- การเพิ่มประสิทธิภาพ Applications แบบไร้ Server
5. Serverless Deployment Automation และรูปแบบ CI/CD
เมื่อเราต้องรับมือกับ Microservices หรือส่วนประกอบเล็กๆ เช่น ฟังก์ชั่นทั้งหมดของ AWS Lambda ที่ทำงานร่วมกัน เพื่อขยาย Application การรวมระบบอัตโนมัติ และการจัดการ Code ลงไปใน Application ตั้งแต่เนิ่นๆ จึงเป็นสิ่งสำคัญมาก เพื่อที่จะสร้าง ปรับใช้ และกำหนด Version ของ Serverless Architectures
AWS ขอเสนอชุดเครื่องมือการปรับใช้ และ framework สำหรับ Serverless Architectures ซึ่งประกอบไปด้วย AWS Serverless Application Model (SAM), the AWS Cloud Development Kit (CDK), AWS Amplify, และ AWS Chalice พร้อมมีชุดเครื่องมือเพื่อปรับใช้สำหรับ 3rd Party อีกด้วย เช่น Serverless Framework, Claudia.ja, Sparta หรือ Zappa มากไปกว่านั้น ผู้ใช้ยังสามารถสร้าง framework ที่สามารถปรับแต่งได้ตามที่ต้องการอีกด้วย สิ่งหนึ่งที่สำคัญคือ การทำให้ผู้ใช้มั่นใจว่า กลยุทธการทำงานของระบบอัตโนมัตินี้จะสามารถทำงานได้ พร้อมช่วยสนับสนุนการรวบรวมแหล่งข้อมูล และพัฒนา Workflow
เรียนรู้เพิ่มเติมเกี่ยวกับตัวเลือกที่มีอยู่ได้ที่:
- การเร่งพัฒนา Serverless Development โดยใช้ AWS SAM และ Application Repository
- ศึกษาข้อมูลเชิงลึกของ AWS SAM
- ใช้ Code เป็นโครงสร้างพื้นฐานด้วย AWS Cloud Development Kit
- การปรับแต่ง และการใช้ Function แบบ Serverless ด้วย AWS Amplify
- เรียนรู้วิธีสร้าง CI/CD pipeline อย่างเต็มรูปแบบ และการปรับใช้ระบบ DevOps อัตโนมัติอื่นๆ จากเวิร์คช็อปต่อไปนี้:
- เวิร์คช็อป WildRydes DevOps โดยการใช้ CodeStar และ SAM
- เวิร์คช็อป AWS Cloud Developer Kit (CDK)
6. การบริหารจัดการด้านความปลอดภัย, การพิสูจน์ตัวตน และการกำหนดสิทธิในการเข้าถึงข้อมูล ของระบบการทำงานไร้ Server
นักพัฒนา Application จำเป็นต้องวางแผนเกี่ยวกับการบริหารจัดการด้านความปลอดภัยใน Application พร้อมกันกับการใช้ระบบพิสูจน์ตัวตนและกำหนดสิทธิในการเข้าถึงข้อมูลสำหรับผู้ใช้ให้ได้ ด้วย Amazon Cognito ผู้ใช้จะสามารถปรับใช้การจัดการความปลอดภัยแบบไร้ Server โดยที่ยังคงรูปแบบการ Sign-up และ Sign-in เข้าไปยัง Application โดยตรง นอกเหนือไปจากระบบการพิสูจน์ตัวตน Amazon API Gateway ยังอนุญาตให้นักพัฒนาสามารถจัดการวิธีกำหนดสิทธิการเข้าถึงข้อมูล และการพิสูจน์ตัวตนได้ โดยไม่ต้องเปิดเผยประเภทของ native authorization
ลองเรียนรู้เพิ่มเติมเกี่ยวกับตัวเลือกที่มี และประโยชน์ที่จะได้รับได้ที่:
- Serverless Authentication และ Authorization สำหรับการจัดการข้อมูลส่วนตัวของ Serverless applications
- ระบบ Authentication สำหรับ Application: เริ่มต้นใช้งานด้วย Amazon Cognito
มาสร้างประสบการณ์กับ Amazon Cognito ด้วย AWS Identity, Access Management (IAM) และ Amazon API Gateway กับเวิร์คช็อปเกี่ยวกับ Serverless Identity Management, Authentication, and Authorization
7. เทคนิคการรักษาความปลอดภัยแบบ End-to-End
นอกเหนือจากระบบบริหารจัดการด้านความปลอดภัย, การพิสูจน์ตัวตน และการกำหนดสิทธิในการเข้าถึงข้อมูลแล้ว ยังมีอีกหลายวิธีที่จะรักษาความปลอดภัยของ Serverless application รวมไปถึง:
- Input และ Request validation
- การบริหารจัดการช่องโหว่ของระบบ และการจัดเก็บชุด Code แบบแยกย่อย
- การจัดเก็บข้อมูลลับอย่างปลอดภัย และการกู้ข้อมูลคืน
- บทบาทของ IAM และนโยบายการเรียกใช้งาน
- Data encryption at-rest/in-transit
- การเข้าถึงโดยวิธี Metering และ Throttling
- ข้อกังวลในการใช้ Regulatory compliance
นี่เป็นข้อเสนอที่ทาง AWS ขอมอบให้ ผู้ใช้สามารถเรียนรู้เกี่ยวกับตัวเลือก และประโยชน์ที่จะได้รับได้ที่นี่:
- การรักษาความปลอดภัยระดับองค์กรของ Serverless Application
- การรักษาความปลอดภัยบน Serverless และ Container Service
- ภาพรวมของระบบรักษาความปลอดภัย AWS Lambda
มาสร้างประสบการณ์เพิ่มเทคนิครักษาความปลอดภัยแบบ End-to-End ลงใน serverless application ด้วยเทคนิคที่กล่าวมาข้างต้น ผ่านทางเวิร์คช็อป Serverless Security ได้เลย
8. ความสามารถในการสังเกตุการณ์การใช้งาน Application ด้วยบันทึกการส่งข้อมูล, ตัวชี้วัด และการติดตามที่ครอบคลุม
ก่อนที่จะนำ Application เข้าสู่ขั้นตอนการผลิต มันสำคัญอย่างยิ่งที่จะต้องทำให้มั่นใจว่าจะเราสามารถติดตาม Application ได้อย่างละเอียด ทั้งในระบบ Microservice หรือระบบที่แยกย่อยลงมา ตลอดจนภาพรวมที่ครอบคลุมถึงบันทึกการส่งข้อมูล ตัวชี้วัด รวมไปถึงระบบติดตาม เพื่อที่จะเข้าใจถึงการทำงานระบบ Distributed system performance และประสบการณ์ของผู้ใช้งานแบบ End-to-end ด้วยส่วนประกอบที่หลากหลายในนี้ การมีระบบการบริหารจัดการแบบรวมศูนย์ จึงทำให้ง่ายต่อการสังเกตการณ์ และการทำความเข้าใจถึงประสบการณ์ของผู้ใช้งาน
เรียนรู้เพิ่มเติมเกี่ยวกับ: AWS serverless application
9. สร้างความมั่นใจบน Application ด้วยสถาปัตยกรรมและการออกแบบที่ดี
นอกจากข้อควรพิจารณาที่กล่าวถึงข้างต้นแล้ว AWS ขอแนะนำให้ผู้ใช้ออกแบบ Application อย่างครบถ้วนทุกองค์ประกอบมากที่สุดเพื่อสู่ AWS Architected framework ที่ดี ซึ่งประกอบไปด้วย 5 หลักการสำคัญ ได้แก่ ความปลอดภัย, ความน่าเชื่อถือ, การทำงานอย่างมีประสิทธิภาพ, กลยุทธบริหารค่าใช้จ่ายอย่างมีประสิทธิภาพ และความเป็นเลิศในด้านการปฏิบัติงาน นอกเหนือไปจากนี้ ยังมี Serverless-specigfic lens เฉพาะสำหรับ Well-Architected framework เช่น RESTful microservices, Alexa skill, Mobile backends, Stream processing, Web applications เพื่อช่วยหาวิธีที่ดีที่สุดในการออกแบบมาใช้
สำหรับข้อมูลเพิ่มเติม:
10. ศึกษาหาความรู้อย่างต่อเนื่อง เช่นเดียวกับ Serverless Computing ที่ยังคงพัฒนาขึ้นไปอีกเรื่อย ๆ
ตามที่ได้มีการพูดคุยข้างต้น เรายังสามารถศึกษาเชิงลึกเกี่ยวกับ Serverless Architectures ได้อีกหลายแขนงผ่านช่องทางมากมายที่ทาง AWS ได้กล่าวถึงไปแล้วในบทความนี้ ซึ่งข้อมูลเหล่านี้จะช่วยให้คุณได้ทำความคุ้นเคยกับคอนเซปหลัก และเทคนิคต่าง ๆ แต่แน่นอนว่า ไม่มีอะไรจะดีไปกว่าการศึกษาอย่างต่อเนื่อง เพราะในโลกแห่งเทคโนโลยีนี้ มักจะมีพัฒนาการใหม่ ๆ เกิดขึ้นอยู่เสมอ
มาติดตามกันได้ที่
- ไลฟ์สดซีรีย์เวิร์คช็อป การทำงานของ Serverless บนแพลตฟอร์ม Twitch เรื่อง: Happy Little APIs และ Build On Serverless
- AWS Online Tech Talks: ฟรี! พูดคุยออนไลน์ที่ ครอบคลุมหัวข้อต่างๆ ของ AWS ทั้งข้อมูลโดยภาพรวม และข้อมูลเชิงลึก รวมถึงมีช่วงไลฟ์สดสำหรับถามตอบปัญหาหรือข้อสงสัย กดติดตามที่นี่ เพื่อรับการแจ้งเตือนสำหรับการพูดคุยแบบออนไลน์ในแต่ละเดือนที่จะจัดขึ้น
- re:Invent, Regional summits และอีเวนท์อื่นๆ: มาลองเข้าร่วม AWS อีเวนท์ใน Session หรือเวิร์คช็อปที่เกี่ยวข้องกับ Use case บนApplication หรือ ดูอีเวนท์ที่กำลังจะจัดขึ้นได้ที่ Events catalog
- AWS Meetups: เข้าร่วมกลุ่ม AWS Meetup ในพื้นที่ใกล้เคียง โดยสามารถดูรายชื่อของ Meetup groups สำหรับ AWS ได้ที่ Meetup.com
- เรียนรู้วิธีการใช้งานระบบการทำงานแบบ serverless ของผู้ใช้คนอื่น ๆ : อ่านเรื่อง หรือ ฟังเรื่องราวจากพวกเขาได้ในวีดีโอซีรีย์ This is My Architecture
สุดท้ายนี้ AWS ขอแนะนำให้ผู้ใช้ทุกคนคอยติดตามข่าวสาร การอัพเดตบทความที่เกี่ยวกับ serverless architectures อย่างต่อเนื่อง และสำหรับบทความชุดถัดไป พวกเราจะมาพูดถึงเรื่องแพทเทิร์นการออกแบบ API และแนวทางปฏิบัติที่ดีที่สุดกัน