Container Instance

สุดยอดเลยครับ! ขอแสดงความยินดีด้วย นี่คือ "Container Instance" แรกของคุณที่ทำงานอยู่บน Google Cloud สำเร็จแล้ว! หน้าจอนี้คือศูนย์บัญชาการของฟังก์ชันที่เราเพิ่งสร้างเสร็จครับ

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


 

???? กรอบสีเขียว: แผงควบคุมและสรุปบริการ (Service Control & Summary Panel)

  • ชื่อเรียก: เราจะเรียกส่วนนี้ว่า "แผงสรุปบริการ"

  • หน้าที่: เปรียบเสมือน "ห้องนักบิน" หรือ "Dashboard" ของฟังก์ชัน hello-world-php นี้โดยเฉพาะครับ มันจะบอกสถานะและข้อมูลที่สำคัญที่สุดให้เรารู้ได้อย่างรวดเร็ว

  • คุณสมบัติ:

    • สถานะการ Deploy: คุณจะเห็นข้อความ "Completed" และ "Active" ซึ่งเป็นการยืนยันว่าการสร้างและนำฟังก์ชันของเราขึ้นทำงานนั้น สำเร็จ 100%

    • ชื่อและภูมิภาค: บอกว่านี่คือฟังก์ชัน hello-world-php ที่ทำงานอยู่ที่ asia-southeast1 (สิงคโปร์)

    • URL: (สำคัญที่สุด) นี่คือ "ประตูสู่ฟังก์ชันของเรา" เป็นที่อยู่บนอินเทอร์เน็ตที่เราสามารถเรียกใช้งานฟังก์ชันนี้ได้จากทุกที่ในโลก

    • Scaling: Auto (Min: 0) เป็นการยืนยันคุณสมบัติ Serverless คือ มันจะสร้าง Instance อัตโนมัติเมื่อมีคนเรียกใช้ และจะ ลดจำนวน Instance เหลือ 0 เมื่อไม่มีใครใช้ เพื่อไม่ให้เสียค่าใช้จ่าย


 

???? กรอบสีเหลือง: แผงจัดการโค้ดและรายละเอียดทางเทคนิค (Code & Technical Details Panel)

  • ชื่อเรียก: เราจะเรียกส่วนนี้ว่า "แผงจัดการโค้ด" หรือ "แผงตั้งค่าทางเทคนิค"

  • หน้าที่: เปรียบเสมือน "ห้องเครื่อง" หรือ "แบบแปลน" ของฟังก์ชันนี้ครับ เป็นส่วนที่เราใช้ดูและแก้ไขการทำงานเบื้องหลังทั้งหมด

  • คุณสมบัติ (ดูจากแท็บต่างๆ)

    • Source (ที่คุณกำลังดูอยู่) คือแท็บที่แสดง "Source Code" ที่เราใช้สร้างฟังก์ชันนี้ขึ้นมา คุณจะเห็นไฟล์ index.php และ composer.json และสามารถแก้ไขโค้ดเล็กๆ น้อยๆ แล้วกด "Save and redeploy" จากตรงนี้ได้เลย

    • Revisions (การแก้ไข) ทุกครั้งที่คุณแก้ไขและ deploy โค้ดใหม่ Cloud Run จะสร้าง "เวอร์ชัน" ใหม่ให้เป็น Revision ใหม่เสมอ ข้อดีคือหากเวอร์ชันใหม่มีปัญหา คุณสามารถ ย้อนกลับ (Rollback) ไปใช้เวอร์ชันเก่าที่ทำงานได้ดีได้อย่างรวดเร็ว

    • Triggers (ทริกเกอร์) เป็นส่วนที่กำหนดว่า "อะไร" ที่จะมาสั่งให้ฟังก์ชันนี้ทำงานได้บ้าง ซึ่งตอนนี้ก็คือการเรียกผ่าน URL ที่เราได้มา

    • Observability / Logs (การสังเกตการณ์ / บันทึกการทำงาน) นี่คือ "กล้องวงจรปิด" และ "สมุดบันทึก" ของฟังก์ชันเรา หากเกิดข้อผิดพลาดหรือเราต้องการดูว่ามีใครเรียกใช้งานฟังก์ชันเราบ้าง เราจะเข้ามาดูข้อมูลทั้งหมดได้จากที่นี่


มาทดลอง "ผลงาน" ชิ้นแรกกันเลย!

ตอนนี้คุณมีฟังก์ชันที่ทำงานได้จริงแล้วครับ เรามาทดสอบกันเลย:

  1. ให้คุณคลิกที่ URL ใน กรอบสีเขียว

  2. หน้าเว็บใหม่จะเปิดขึ้นมา และคุณควรจะเห็นข้อความว่า: Hello, World!

  3. ลองทดสอบขั้นสูงขึ้นอีกนิด โดยไปที่ท้าย URL แล้วเติม ?name=Kritidech (เปลี่ยนเป็นชื่อคุณ) แล้วกด Enter

  4. หน้าเว็บควรจะเปลี่ยนเป็น: Hello, Kritidech!

นี่คือการพิสูจน์ว่าโค้ด PHP ที่เราเขียนใน "แผงจัดการโค้ด" (สีเหลือง) ได้ถูกนำไปสร้างเป็นบริการที่ทำงานได้จริง และเราสามารถเรียกใช้งานมันผ่าน URL (ในแผงสีเขียว) ได้สำเร็จครับ! ขอแสดงความยินดีอีกครั้งครับ

 


 

หน้าจอนี้ไม่ใช่ Error ร้ายแรง แต่เป็นหน้า

"ป้าย placeholder" หรือ "หน้ารอ" ที่เป็นปกติของ Cloud Run ซึ่งบอกเราว่ามีบางอย่างในกระบวนการยังไม่เสร็จสมบูรณ์ครับ 1

 

เกิดอะไรขึ้น? (คำอธิบายแบบง่าย)

ให้จินตนาการตามนี้นะครับ:

  1. เราได้ "สร้างบ้าน" (Cloud Run service) สำเร็จแล้ว บ้านมีที่อยู่ (URL) เรียบร้อย 2

  2. จากนั้นเราสั่งให้ Google ขน "เฟอร์นิเจอร์" (โค้ด PHP ของเรา) เข้าไปติดตั้งในบ้านหลังนี้

  3. แต่ตอนนี้ "เฟอร์นิเจอร์" ยังมาไม่ถึง หรือ เกิดปัญหาระหว่างการติดตั้ง ทำให้ในบ้านยังว่างเปล่าอยู่ครับ 3

 

หน้าจอนี้คือป้ายที่ Google ติดไว้หน้าบ้านเพื่อบอกว่า "บ้านหลังนี้สร้างเสร็จแล้ว แต่เจ้าของบ้านยังไม่ได้ย้ายโค้ดเข้ามาอยู่ หรือย้ายเข้ามาแล้วแต่ยังจัดไม่เสร็จ" 4

สาเหตุที่เป็นไปได้คืออะไร?

สาเหตุที่พบบ่อยที่สุดสำหรับปัญหานี้คือ กระบวนการ Build ไม่สำเร็จ (Build Failed)

"Build" คือขั้นตอนที่ Google Cloud นำโค้ด PHP และไฟล์ composer.json ของเราไปสร้างให้เป็น "คอนเทนเนอร์" ที่พร้อมใช้งาน หากมีข้อผิดพลาดในขั้นตอนนี้ เช่น พิมพ์ชื่อไฟล์ผิด, มีปัญหาในไฟล์ composer.json, หรือปัญหาอื่นๆ ก็จะทำให้กระบวนการนี้ไม่สำเร็จ

 

วิธีตรวจสอบและแก้ไข (What's next?)

หน้าจอได้บอกขั้นตอนการตรวจสอบไว้ให้แล้ว 5 ผมจะสรุปเป็นขั้นตอนให้ง่ายขึ้นครับ

  1. กลับไปที่หน้า Cloud Run: กดปุ่ม "BACK TO CLOUD RUN" สีฟ้า หรือกลับไปที่หน้าจอ Cloud Run service details ที่เราดูกันก่อนหน้านี้

  2. ตรวจสอบสถานะ: ในหน้า Service details ให้มองหาสถานะการ deploy ล่าสุด หรือมองหาแท็บที่ชื่อว่า "Revisions" หรือ "Logs"

  3. ดูบันทึกการทำงาน (Logs): วิธีที่ดีที่สุดคือการเข้าไปดูที่แท็บ "Logs" ครับ ในนั้นจะมีบันทึกการทำงานทั้งหมดของกระบวนการ Build

  4. มองหาข้อผิดพลาด: ให้มองหาบรรทัดที่เป็น สีแดง หรือมีคำว่า ERROR หรือ FAILED ข้อความในบรรทัดนั้นจะบอกเราว่าปัญหาเกิดจากอะไร

เมื่อคุณเจอข้อความ Error แล้ว หากไม่แน่ใจ สามารถคัดลอกข้อความนั้นมาให้ผมช่วยดูได้เลยครับ เราจะช่วยกันแก้ปัญหานี้ไปด้วยกันครับ

 


 

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

หน้านี้มีชื่อเรียกรวมๆ ว่า "Observability" (การสังเกตการณ์) ซึ่งเปรียบเสมือน "กล้องวงจรปิดและกล่องดำ" ของฟังก์ชันเราเลยครับ เป็นเครื่องมือที่สำคัญที่สุดสำหรับนักพัฒนาและสถาปนิกในการตรวจสอบว่าระบบทำงานเป็นปกติหรือไม่ และเมื่อเกิดปัญหา จะได้หาเจอว่าต้นตอมาจากไหน

ผมขออธิบายคุณสมบัติของแต่ละเมนูย่อยตามภาพที่คุณส่งมานะครับ


Metrics (ตัวชี้วัด) 1

  • คำอุปมา: "หน้าปัดบนแผงคอนโซลรถ" (มาตรวัดความเร็ว, รอบเครื่อง, ความร้อน)

  • คุณสมบัติ: เป็นหน้าที่แสดงผลข้อมูลเชิงประสิทธิภาพของฟังก์ชันในรูปแบบ "กราฟ" เพื่อให้เห็นภาพรวมได้ง่าย 2

  • จากภาพของคุณ: คุณจะเห็นกราฟสำคัญๆ เช่น:

    • Request count: มีคนเรียกใช้งานฟังก์ชันของเรากี่ครั้ง

    • Request latencies: ฟังก์ชันของเราใช้เวลาตอบสนองนานแค่ไหน (ยิ่งน้อยยิ่งดี)

    • Container instance count: มี "Instance" หรือ "สำเนา" ของฟังก์ชันเราถูกสร้างขึ้นมากี่ตัวเพื่อรองรับการใช้งาน


 

Logs (บันทึกการทำงาน) 3

  • คำอุปมา: "กล่องดำของเครื่องบิน" หรือ "สมุดบันทึกเหตุการณ์รายวินาที"

  • คุณสมบัติ: นี่คือส่วนที่ สำคัญที่สุดสำหรับการแก้ไขปัญหา (Debugging) ครับ มันจะบันทึกทุกเหตุการณ์ที่เกิดขึ้นกับฟังก์ชันของเราแบบละเอียดที่สุด ตั้งแต่เริ่มทำงานจนถึงการแสดงผล

  • จากภาพของคุณ: คุณจะเห็นบันทึกหลายบรรทัด เช่น:

    • [serve] Running /bin/sh -c exec php-fpm...: บันทึกว่าระบบกำลังเริ่มรัน PHP

    • GET 200 212 B 75 ms ...: (สำคัญมาก) บันทึกว่ามีการเรียกใช้งาน URL ของคุณ (GET request) และระบบตอบสนองกลับไปด้วย สถานะ 200 (สำเร็จ) นี่คือหลักฐานว่าการทดสอบ "Hello World" ของคุณ ทำงานสำเร็จครับ!

SLOs (เป้าหมายระดับบริการ) 4

  • คำอุปมา: "สัญญาใจที่ให้ไว้กับลูกค้า"

  • คุณสมบัติ: เป็นฟีเจอร์ขั้นสูง (Advanced) สำหรับตั้งเป้าหมายและวัดผลประสิทธิภาพของบริการอย่างเป็นทางการ เช่น "เราสัญญาว่าระบบของเราจะพร้อมใช้งาน 99.9% ของเวลาทั้งหมด" 5

  • คำแนะนำ: ในขั้นตอนการพัฒนา Demo ของเรา ยังไม่จำเป็นต้องใช้งานส่วนนี้

 

Errors (ข้อผิดพลาด) 6

  • คำอุปมา: "ไฟเตือนเครื่องยนต์เสีย" บนหน้าปัดรถ

  • คุณสมบัติ: เป็นระบบที่จะคอยตรวจจับและรวบรวม "ข้อผิดพลาด" ที่เกิดขึ้นในโค้ดของเราโดยอัตโนมัติ และจัดกลุ่ม Error ที่เหมือนกันไว้ด้วยกัน ทำให้ง่ายต่อการวิเคราะห์ 7

  • จากภาพของคุณ: ระบบแจ้งว่า "No errors found during this interval" ซึ่งเป็นข่าวดีมาก หมายความว่าโค้ด "Hello World" ของเราทำงานได้อย่างสมบูรณ์แบบ ไม่มีข้อผิดพลาดใดๆ เกิดขึ้นเลยครับ 8


ตอนนี้คุณได้วางพื้นฐานที่สมบูรณ์แบบครบทุกด้านแล้วครับ:

  1. สร้าง ฟังก์ชันได้

  2. ควบคุมค่าใช้จ่าย เป็น

  3. ตรวจสอบการทำงาน ได้

ขั้นตอนต่อไปที่น่าตื่นเต้นที่สุด คือการนำ "สมอง" มาใส่ให้ฟังก์ชันของเรา นั่นคือ การเรียกใช้ Gemini API จากโค้ด PHP ของเรา

 

    คลิก ติดต่อรับคำปรึกษา (ฟรี)  

#project ของคุณที่ทำงานอยู่บน Google Cloud สำเร็จแล้ว  

Container Instance

Container Instance

#project ของคุณที่ทำงานอยู่บน Google Cloud สำเร็จแล้ว