Skip to main content

Process and culture

ในการออกแบบสถาปัตยกรรมเวิร์กโหลด มีหลักการและแนวปฏิบัติที่คุณสามารถนำมาใช้เพื่อให้รันเวิร์กโหลดบนคลาวด์ได้อย่างมีประสิทธิภาพและมีสมรรถนะสูงขึ้น เพื่อสร้างวัฒนธรรมที่ส่งเสริมประสิทธิภาพของเวิร์กโหลดบนคลาวด์ ควรพิจารณาหลักการและแนวปฏิบัติที่สำคัญดังนี้:

  • โครงสร้างพื้นฐานในรูปแบบโค้ด (Infrastructure as code): กำหนดโครงสร้างพื้นฐานของคุณเป็นโค้ดโดยใช้แนวทางต่างๆ เช่น เทมเพลตของ AWS CloudFormation การใช้เทมเพลตช่วยให้คุณสามารถจัดเก็บโครงสร้างพื้นฐานไว้ในระบบควบคุมเวอร์ชัน (Source control) ร่วมกับโค้ดแอปพลิเคชันและการตั้งค่าต่างๆ สิ่งนี้ช่วยให้คุณสามารถนำแนวปฏิบัติเดียวกันกับที่ใช้พัฒนาซอฟต์แวร์มาใช้กับโครงสร้างพื้นฐาน เพื่อให้สามารถพัฒนาซ้ำ (Iterate) ได้อย่างรวดเร็ว

  • ระบบส่งมอบการติดตั้ง (Deployment pipeline): ใช้ไปป์ไลน์การรวมโค้ดและการจัดส่งต่อเนื่อง (CI/CD) เช่น ระบบจัดเก็บซอร์สโค้ด, ระบบ Build, ระบบการติดตั้ง และการทดสอบอัตโนมัติ เพื่อติดตั้งโครงสร้างพื้นฐานของคุณ วิธีนี้ช่วยให้คุณสามารถติดตั้งระบบซ้ำได้ มีความสม่ำเสมอ และต้นทุนต่ำในขณะที่คุณพัฒนาปรับปรุงระบบ

  • ตัวชี้วัดที่กำหนดไว้อย่างชัดเจน (Well-defined metrics): ตั้งค่าและตรวจสอบตัวชี้วัดเพื่อบันทึกดัชนีชี้วัดผลงานหลัก (KPIs) เราแนะนำให้คุณใช้ทั้งตัวชี้วัดทางเทคนิคและทางธุรกิจ สำหรับเว็บไซต์หรือแอปมือถือ ตัวชี้วัดสำคัญคือการบันทึกเวลาที่ได้รับข้อมูลไบต์แรก (Time-to-first-byte) หรือการแสดงผล (Rendering) ตัวชี้วัดทั่วไปอื่นๆ ได้แก่ จำนวนเธรด (Thread count), อัตราการคืนหน่วยความจำ (Garbage collection rate) และสถานะรอคอย (Wait states) ส่วนตัวชี้วัดทางธุรกิจ เช่น ต้นทุนสะสมรวมต่อการส่งคำขอ (Aggregate cumulative cost per request) สามารถแจ้งเตือนคุณถึงวิธีการลดต้นทุนได้ นอกจากนี้ควรพิจารณาอย่างรอบคอบว่าจะตีความตัวชี้วัดอย่างไร เช่น คุณอาจเลือกใช้ค่าสูงสุด หรือเปอร์เซ็นไทล์ที่ 99 (99th percentile) แทนการใช้ค่าเฉลี่ย

  • ทดสอบประสิทธิภาพโดยอัตโนมัติ (Performance test automatically): ในฐานะส่วนหนึ่งของกระบวนการติดตั้ง ให้เริ่มการทดสอบประสิทธิภาพโดยอัตโนมัติหลังจากที่การทดสอบที่รันเร็วผ่านการตรวจสอบแล้ว ระบบอัตโนมัติควรสร้างสภาพแวดล้อมใหม่ ตั้งค่าเริ่มต้น เช่น ข้อมูลทดสอบ แล้วจึงรันการทดสอบเกณฑ์มาตรฐาน (Benchmarks) และการทดสอบการรับโหลด (Load tests) ผลลัพธ์จากการทดสอบเหล่านี้ควรเชื่อมโยงกลับไปยังขั้นตอน Build เพื่อให้คุณสามารถติดตามการเปลี่ยนแปลงของประสิทธิภาพตามกาลเวลาได้ สำหรับการทดสอบที่รันนาน คุณสามารถแยกส่วนนี้ออกจากไปป์ไลน์หลักได้ หรืออาจรันการทดสอบประสิทธิภาพในช่วงข้ามคืนโดยใช้ Amazon EC2 Spot Instances

  • การจำลองโหลด (Load generation): คุณควรสร้างชุดสคริปต์ทดสอบที่จำลองเส้นทางการใช้งานของผู้ใช้ (User journeys) ทั้งแบบสังเคราะห์หรือแบบที่บันทึกไว้ล่วงหน้า สคริปต์เหล่านี้ควรทำงานซ้ำได้โดยให้ผลลัพธ์คงเดิม (Idempotent) และไม่ยึดติดกัน และคุณอาจต้องใส่สคริปต์สำหรับ "อุ่นระบบ" (Pre-warming) เพื่อให้ได้ผลลัพธ์ที่ถูกต้อง สคริปต์ทดสอบของคุณควรเลียนแบบพฤติกรรมการใช้งานในระบบจริงให้มากที่สุดเท่าที่จะเป็นไปได้ คุณสามารถใช้ซอฟต์แวร์หรือโซลูชัน SaaS เพื่อสร้างโหลด และควรพิจารณาใช้โซลูชันจาก AWS Marketplace และ Spot Instances ซึ่งเป็นวิธีที่คุ้มค่าในการสร้างโหลดจำลอง

  • การมองเห็นประสิทธิภาพ (Performance visibility): ตัวชี้วัดสำคัญควรแสดงให้ทีมเห็นได้อย่างชัดเจน โดยเฉพาะตัวชี้วัดสำหรับแต่ละเวอร์ชันของ Build สิ่งนี้ช่วยให้คุณเห็นแนวโน้มที่สำคัญทั้งทางบวกหรือทางลบ นอกจากนี้คุณควรแสดงตัวชี้วัดจำนวนข้อผิดพลาดหรือข้อยกเว้น (Exceptions) เพื่อให้แน่ใจว่าคุณกำลังทดสอบระบบที่ทำงานได้จริง

  • การแสดงผลเป็นภาพ (Visualization): ใช้เทคนิคการนำเสนอข้อมูลด้วยภาพเพื่อให้เห็นได้ชัดเจนว่าปัญหาประสิทธิภาพ, จุดที่ใช้งานหนัก (Hot spots), สถานะรอคอย หรือจุดที่การใช้งานทรัพยากรต่ำเกิดขึ้นที่ใด การวางตัวชี้วัดประสิทธิภาพทับซ้อนลงบนแผนผังถาปัตยกรรม (Call graphs) หรือโค้ด จะช่วยให้ระบุปัญหาได้อย่างรวดเร็ว

  • กระบวนการทบทวนอย่างสม่ำเสมอ (Regular review process): สถาปัตยกรรมที่มีประสิทธิภาพแย่มักเป็นผลมาจากกระบวนการทบทวนประสิทธิภาพที่ไม่มีอยู่จริงหรือล้มเหลว หากสถาปัตยกรรมของคุณทำงานได้ไม่ดี การเริ่มใช้กระบวนการทบทวนประสิทธิภาพจะช่วยให้คุณขับเคลื่อนการปรับปรุงซ้ำๆ ได้

  • การเพิ่มประสิทธิภาพอย่างต่อเนื่อง (Continual optimization): รับเอาวัฒนธรรมในการเพิ่มประสิทธิภาพการทำงานของเวิร์กโหลดคลาวด์ของคุณอย่างต่อเนื่อง

คำถามต่อไปนี้จะเน้นที่การพิจารณาด้านประสิทธิภาพในการทำงาน:

PERF 5: คุณใช้กระบวนการใดเพื่อสนับสนุนประสิทธิภาพของเวิร์กโหลดให้ดียิ่งขึ้น? ในการออกแบบสถาปัตยกรรมเวิร์กโหลด มีหลักการและแนวปฏิบัติที่คุณสามารถนำมาใช้เพื่อให้รันเวิร์กโหลดบนคลาวด์ได้อย่างมีประสิทธิภาพและมีสมรรถนะสูงขึ้น เพื่อสร้างวัฒนธรรมที่ส่งเสริมประสิทธิภาพของเวิร์กโหลดบนคลาวด์ ควรพิจารณาหลักการและแนวปฏิบัติที่สำคัญเหล่านี้