Google Cloud Account Sale: ใช้ GCP Cloud Run เป็นเวลา5นาทีเพื่อปรับใช้เว็บแอปพลิเคชันโดยไม่ต้องใช้เซิร์ฟเวอร์ (Serverless)

2026-05-30 阅读 16
cloud

ในฐานะนักพัฒนาหรือสถาปนิกฉันมักจะเขียนเว็บแอปพลิเคชันที่ยอดเยี่ยม (ไม่ว่าจะเป็น Node.js, Python Flask, Go หรือ Java Spring Boot) สิ่งที่ต่อต้านมากที่สุดมักจะไม่ใช่การเปลี่ยนข้อบกพร่องแต่

การ部署

ขั้นตอนการปรับใช้แบบเดิมเป็นเพียงตัวฆ่าเวลา: ก่อนอื่นคุณต้องซื้อเครื่องเสมือน VM ติดตั้งระบบปฏิบัติการติดตั้งสภาพแวดล้อม Docker และกำหนดกฎการเข้าถึงกลุ่มความปลอดภัยต่างๆเมื่อการเข้าชมมีมากคุณต้องพิจารณาว่าจะมีส่วนร่วมในการทำโหลดบาลานซ์และการจัดสรรคลัสเตอร์อย่างไรหากการเข้าชมไม่มีคุณต้องดูเซิร์ฟเวอร์ไม่ทำงานและการหักเงินในการ์ดก็ไร้ผลคลัสเตอร์ K8s ที่สร้างขึ้นเองนั้นสูงแต่เกณฑ์การดำเนินงานและการบำรุงรักษาที่สูงและงบประมาณฮาร์ดแวร์สามารถทำให้ทีมเล็กๆเสียชีวิตได้โดยตรง

ในระบบนิเวศของ Google Cloud(GCP, Google Cloud) มีการต่อต้านการลดขนาดที่ออกแบบมาเพื่อปลดปล่อยและพัฒนาผลผลิตที่เรียกว่า

Cloud Run

ตรรกะหลักของมันบริสุทธิ์มาก:

คอนเทนเนอร์ Serverless (ไม่มีเซิร์ฟเวอร์)

。คุณจะต้องบรรจุแอปพลิเคชันของคุณลงในมิเรอร์ Docker มาตรฐานและโยนไปที่นั่นจากนั้นจะคาย URL เครือข่ายสาธารณะที่มีใบรับรอง HTTPS ของตัวเองการจัดสรรภาระงานทั่วโลกและการปรับขนาดแบบยืดหยุ่นอัตโนมัติภายใน5นาที

อยู่ยงคงกระพันที่สุดคือรูปแบบการเรียกเก็บเงิน:

การเรียกเก็บเงินตามความต้องการเต็มรูปแบบรองรับการลดขนาดลงเหลือ0(Scale to Zero)

。ซึ่งหมายความว่าหากไม่มีใครเข้าชมเว็บไซต์ของคุณจะไม่ใช้ CPU และหน่วยความจำใดๆและ Google จะไม่หักเงินสักบาท

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

ขั้นตอนที่1: การถอดชิ้นส่วนลึก, Cloud Run's "Minimalist World Model"

ก่อนการปรับใช้คุณต้องเข้าใจตรรกะการทำงานทางกายภาพของ Cloud Run ในใจของคุณมิฉะนั้นคุณจะตาบอดเมื่อคุณเข้าสู่คอนโซลและเผชิญกับพารามิเตอร์การทำงานพร้อมกันและหน่วยความจำต่างๆ

สตรีมข้อมูลพื้นฐานของระบบทั้งหมดถูกเชื่อมอย่างไร้รอยต่อโดยส่วนประกอบหลักสามส่วน:

ตู้คอนเทนเนอร์มิเรอร์ (Artifact Registry): เทอร์มินัลตู้คอนเทนเนอร์รหัสของคุณนี่คือคลังสินค้ามิเรอร์รุ่นใหม่ของ GCP แทนที่ GCR เก่าแอปของคุณจะถูกบรรจุลงในกระจก Docker และเก็บไว้ที่นี่

Cloud Run Service (Service): สมองตั้งเวลา Serverless ของคุณมีหน้าที่ในการจ้องมองกระจกเมื่อมีคำขอ HTTP บนเครือข่ายสาธารณะมันจะดึงมิเรอร์ขึ้นและกลายเป็นอินสแตนซ์คอนเทนเนอร์เพื่อรับลูกค้า

เครื่องยนต์อัตโนมัติ (Auto-scaling): ตำรวจจราจรจราจรของคุณหากมีคน10,000คนเริ่มคำขอในเวลาเดียวกันมันจะดึงตู้คอนเทนเนอร์หลายสิบตู้ในพื้นหลังทันทีเพื่อแบ่งปันแรงกดดันหากไม่มีใครเข้าถึงเป็นเวลาหลายนาทีมันจะทำลายตู้คอนเทนเนอร์ทั้งหมด

เข้าสู่สถานะการนอนหลับที่มีค่าใช้จ่าย0

ขั้นตอนที่สอง: การฝึกซ้อมการต่อสู้จริง-5นาทีในสายการประกอบออนไลน์

สมมติว่าคุณได้เขียนเว็บแอปพลิเคชัน Node.js หรือ Python พื้นฐานที่สุดแล้วและมีการติดตั้ง Docker และ GCP Command Line Tools (gcloud CLI) ในเครื่อง

ขั้นตอนที่1: รหัสท้องถิ่น "Container" (Dockerfile)

ในไดเร็กทอรีรากโครงการของคุณสร้างมาตรฐานใหม่

Dockerfile

เอกสาร. นี่คือหนึ่งในแอปพลิเคชัน Node.js ที่ง่ายที่สุดเป็นตัวอย่าง:

# ใช้กระจก Node ที่มีน้ำหนักเบาอย่างเป็นทางการ

FROM node:18-slim

# การตั้งค่าไดเรกทอรีการทำงาน

WORKDIR/usr/src/app

# คัดลอกการกำหนดค่าการพึ่งพาและติดตั้ง

COPY package *.json./

RUN npm install -- only = production

# คัดลอกรหัสแพคเกจทั้งหมด

COPY ..

# พอร์ตสัมผัส (หมายเหตุ: Cloud Run จะฉีดตัวแปรสภาพแวดล้อมที่เรียกว่า PORT ลงในคอนเทนเนอร์โดยค่าเริ่มต้นโดยปกติคือ8080)

EXPOSE 8080

#คำสั่งเริ่มต้นต้องฟัง0.0.0.0

CMD [ "node", "server.js"]

Core Pit Guide: ในรหัสแอปพลิเคชันของคุณอย่าเขียน IP การตรวจสอบเป็น127.0.0.1คุณต้องตรวจสอบ0.0.0.0และพอร์ตจะอ่านตัวแปรสภาพแวดล้อม Process.env.PORT โดยตรงถ้าเป็น Python คำสั่งเริ่มต้นจะเขียนเป็น CMD ["gunicorn", "-bind", "0.0.0.0:8080", "main:app"] หากการตรวจสอบไม่ถูกต้อง Cloud Run จะรายงานการหยุดทำงานโดยตรงเนื่องจากไม่สามารถรับการตอบสนองการเต้นของหัวใจของคอนเทนเนอร์ได้เมื่อเริ่มทำงาน

ขั้นตอนที่2: สร้างท่าเรือมิเรอร์ใน GCP (Artifact Registry)

เปิดเทอร์มินัลของคุณและใช้

Gcloud

คำสั่งในการสร้างคลังสินค้า Docker ในพื้นที่ที่ใกล้ที่สุดของคุณสมมติว่าเราเลือกภูมิภาคไต้หวันของจีน (

Asia-east1

) เรียกว่า ID โครงการ

My-serverless-project

:

Gcloud artifacts repositories create my-docker-repo\

-- Repository-format = docker \

-- Location = asia-east1 \

-- Description = "My

Serverless App Repo"

ขั้นตอนที่3: แพ็คท้องถิ่นและสตรีมมิ่งบนคลาวด์

ใช้ Docker ในเครื่องเพื่อรวบรวมมิเรอร์และนำเส้นทางคลังสินค้า GCP ที่สมบูรณ์ในชื่อ

รหัสการจัดตำแหน่ง (กำหนดค่าการรับรอง Docker):Bashgcloud auth configure-docker asia-east1-docker.pkg.dev

แพคเกจการรวบรวม: Bashdocker build -t asia-east1-docker.pkg.dev/my-serverless-project/my-docker-repo/web-app: v1.0.

ผลักดันเต็มรูปแบบ: Bashdocker push asia-east1-docker.pkg.dev/my-serverless-project/my-docker-repo/ web-app:v1.0

เมื่อเห็นแถบความคืบหน้าที่คุ้นเคยบนเทอร์มินัลเสร็จสมบูรณ์ตู้คอนเทนเนอร์ของคุณก็อยู่ในระบบคลาวด์ที่ปลอดภัยแบบกระจายของ Google

ขั้นตอนที่4: ช่วงเวลาที่เจ๋งที่สุด-เปิดใช้งาน Cloud Run ในคลิกเดียว

กลับไป

คอนโซล GCP

,ค้นหาแล้วเข้าไป

คลาวด์รัน

หน้า

คลิกที่ด้านบน

"สร้างบริการ (Create Service)"

เข้าสู่สนามรบการกำหนดค่าหลัก:

ปรับใช้เวอร์ชันแก้ไข: คลิกเพื่อเลือกและเลือกภาพเว็บ-แอป: v1.0ที่คุณเพิ่งดันขึ้น

ชื่อบริการ: ชื่อ my-web-service 。

ภูมิภาค (ภูมิภาค): ขอแนะนำให้สอดคล้องกับคลังสินค้ามิเรอร์เลือก asia-east1 (ไต้หวัน) เครือข่ายการเข้าถึงภายในประเทศมีความล่าช้าต่ำมาก

การขยายตัวอัตโนมัติ (Autoscaling): จำนวนตัวอย่างขั้นต่ำ: อินพุต0 (เปิดเทคโนโลยีสีดำที่ไม่สามารถเข้าถึงได้โดยไม่ต้องหักเงิน) จำนวนอินสแตนซ์สูงสุด: เพียงแค่ป้อน10ในช่วงเริ่มต้นของการทดสอบเพื่อป้องกันไม่ให้เกิดการใช้จ่ายเกินตัวเนื่องจากการรับส่งข้อมูลที่เป็นอันตราย

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

คลิกที่ด้านล่าง

“สร้าง (Create)”

ขั้นตอนที่สาม: การตรวจสอบออนไลน์และไซต์จริง "เริ่มต้นเย็น"

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

โดยปกติเพียง

30วินาทีถึง1นาที

, ขอเกี่ยวสีเขียวขนาดใหญ่จะสว่างขึ้นที่ด้านบนของคอนโซลและจะคายรูปร่างของ htt ออกมาให้คุณ

Ps: //

My-web-service-xxxx-de.a.run.app

เว็บไซต์ถาวร HTTPS อย่างเป็นทางการ

คลิกที่ URL นี้หน้าเว็บจะเปิดในไม่กี่วินาที! ขอแสดงความยินดีแอปพลิเคชันเว็บ Serverless ของคุณมีชื่อเสียงอย่างสมบูรณ์บนเว็บสาธารณะ

การทดลองวงในฮาร์ดคอร์: "สตาร์ทเย็น" คืออะไร?

เพื่อตรวจสอบพลังของ "หดเป็น0" โปรดปิดหน้าเว็บออกจากแป้นพิมพ์ด้วยมือทั้งสองข้างและรออย่างเงียบๆเป็นเวลา15นาที

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

เนื่องจากไม่มีการดำเนินการใดๆการเรียกเก็บเงินของคุณจึงเป็นแบบคงที่อย่างสมบูรณ์

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

1ถึง2วินาที

ปัดออกในภายหลัง

วงในเทคโนโลยี: นี่คือ "Cold Start" ที่มีชื่อเสียงในสื่อสตรีมมิ่งและเซิร์ฟเวอร์เนื่องจากไม่มีใครเข้าชมในช่วง15นาทีแรก Google จึงล้างคอนเทนเนอร์ของคุณจนหมดเมื่อคุณคลิกอีกครั้งระบบจะต้องส่งทรัพยากรฟิสิคัลแมชชีนชั่วคราวในพื้นหลังดาวน์โหลดมิเรอร์ Docker ของคุณอีกครั้งคลายซิปและเริ่มโปรแกรมหลักความล่าช้า1ถึง2วินาทีนี้เป็นราคาเล็กน้อยที่ต้องจ่ายเพื่อประหยัดเงิน

ขั้นตอนที่สี่: ประวัติการหลีกเลี่ยงเลือดและน้ำตาของโครงสร้างระดับการค้าและการปรับดัชนีโรงงานขนาดใหญ่

สถาปัตยกรรม Serverless นี้ใช้งานได้ง่ายมากแต่ในสภาพแวดล้อมการผลิตที่มีการทำงานพร้อมกันสูงระดับองค์กรอย่างแท้จริงสถาปนิกการดำเนินงานและการบำรุงรักษาจะต้องดำเนินการ "การผ่าตัดที่ละเอียดอ่อน" กับพารามิเตอร์เริ่มต้นทันทีมิฉะนั้นคุณจะเหยียบสองอันต่อไปนี้โดยไม่ได้ตั้งใจหลุมใหญ่:

1.ระเบิด "กำแพงพร้อมกันของซอมบี้" ของฐานข้อมูลส่วนหลัง

นักพัฒนามือใหม่หลายคนรู้สึกว่าเนื่องจาก Cloud Run สามารถขยายได้โดยอัตโนมัติไม่จำกัดฉันจะตั้งค่าอินสแตนซ์สูงสุดเป็น1,000เป็นผลให้ทันทีที่โปรโมชั่น Black Friday มาถึงการเข้าชมก็พุ่งสูงขึ้นและ Cloud Run ก็ทุ่มเทอย่างมากในการดึงตู้คอนเทนเนอร์500ตู้เพื่อรับลูกค้าในทันที

เกิดภัยพิบัติ: ในช่วงเวลาที่มีการเปิดตัวคอนเทนเนอร์500คอนเทนเนอร์คำขอการเชื่อมต่อจะถูกเปิดตัวไปยังฐานข้อมูลเชิงสัมพันธ์ของ Cloud SQL แบบย้อนหลังจำนวนการเชื่อมต่อสูงสุดของฐานข้อมูล MySQL แบบดั้งเดิมอาจอยู่ที่200เท่านั้นด้วยเหตุนี้ฐานข้อมูลจึงถูกทำลายลงทันทีโดยการรับส่งข้อมูลอย่างกะทันหันทำให้ธุรกิจทั้งหมดเป็นอัมพาต

โซลูชันมาตรฐานของผู้ผลิตรายใหญ่: ป้อนการตั้งค่าขั้นสูงของ "คอนเทนเนอร์การเชื่อมต่อความปลอดภัย" ของ Cloud Run: เพิ่ม "จำนวนพร้อมกันสูงสุด" จากค่าเริ่มต้น (เช่นตั้งค่าเป็น80หรือ100) ซึ่งหมายความว่าอินสแตนซ์คอนเทนเนอร์อนุญาตให้ประมวลผลคำขอ HTTP พร้อมกัน80รายการในเวลาเดียวกันเมื่อ80หลุมเต็ม Google จะดึงคอนเทนเนอร์ใหม่ร่วมมือกับการตั้งค่าพูลการเชื่อมต่อ (Connection

Pool) ล็อคขีดจำกัดสูงสุดของการขยายตัวสูงสุดและปกป้องสินทรัพย์หลักส่วนหลังที่เปราะบาง

2.ไม่สามารถทนต่อทักษะเวทย์มนตร์ "สตาร์ทเย็น" ได้

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

เคล็ดลับการปรับแต่งสถาปนิก: ไม่มีอาหารกลางวันฟรีในโลกหากคุณต้องการกำจัดการสตาร์ทเย็นให้ไปที่การตั้งค่าการลดขนาดและเปลี่ยน "อินสแตนซ์ขั้นต่ำ (อินสแตนซ์ขั้นต่ำ)" จาก0เป็น1

ค่าใช้จ่ายและผลประโยชน์: หลังจากเปลี่ยนเป็น1แม้ว่าจะไม่มีใครมาเยี่ยมในช่วงกลางดึก Google จะเก็บภาชนะบรรจุระดับต่ำไว้ให้คุณในห้องคอมพิวเตอร์แม้ว่าสิ่งนี้จะมีค่าเบี้ยยังชีพคงที่จำนวนเล็กน้อย (ประมาณไม่กี่ดอลลาร์ต่อเดือน) แต่ก็แลกกับการเข้าถึงตลอด24ชั่วโมงของผู้ใช้ทั่วโลกในระดับมิลลิวินาทีซึ่งจะช่วยขจัดข้อบกพร่องของประสบการณ์ที่เกิดจากการสตาร์ทเย็นได้อย่างสมบูรณ์.

สรุป

การใช้ GCP Cloud Run เพื่อเล่นกับการปรับใช้ Serverless สาระสำคัญระดับอุตสาหกรรมหลักอยู่ที่สิบหกคำ:

แพ็คเกจมิเรอร์ขยายตามต้องการควบคุมการขยายตัวติดขัดและพร้อมกัน

คุณไม่จำเป็นต้องเสียเวลาอันมีค่าไปกับการทำงานและการบำรุงรักษาระบบเล็กน้อยอีกต่อไปเช่นการติดตั้งระบบปฏิบัติการและการซ่อมแซมไฟร์วอลล์ตราบใดที่โค้ดของคุณสามารถวิ่งเข้าไปในคอนเทนเนอร์ Docker ในเครื่องได้ Cloud Run สามารถให้แนวป้องกันส่วนหน้าระดับองค์กรที่มีความยืดหยุ่นไม่จำกัดการกู้คืนระบบอัตโนมัติและงบประมาณที่จำกัดอย่างมากการคืนอำนาจที่โดดเด่นให้กับโค้ดนั้นเป็นท่าทางการพัฒนาที่แท้จริงและสง่างามที่สุดในยุคคลาวด์สมัยใหม่

1
← 返回新闻中心