Google App Engine และ Google Compute Engine ต่างกันอย่างไร


428

ฉันสงสัยว่า App Engine & Compute Engine แตกต่างกันอย่างไร มีใครอธิบายความแตกต่างให้ฉันได้บ้าง


35
มันไม่ชัดเจนสำหรับฉันในหน้าแรกของพวกเขา มันดีที่จะมีมันเรียบๆเหมือนที่นี่ หน้า StackOverflow นี้เป็นหน้าที่ของฉัน ให้กับเขา / เธอแต่ละคน :)
Mikeumus

10
ตกลง บางคนต้องพูดว่า "พอแล้ว!" สำหรับประเภทการตลาดเหล่านี้
Randy L

คำตอบ:


468

App Engineเป็น Platform-as-a-Service หมายความว่าคุณเพียงแค่ปรับใช้โค้ดของคุณและแพลตฟอร์มก็ทำทุกอย่างให้คุณ ตัวอย่างเช่นหากแอปของคุณประสบความสำเร็จมาก App Engine จะสร้างอินสแตนซ์เพิ่มเติมโดยอัตโนมัติเพื่อรองรับปริมาณที่เพิ่มขึ้น

อ่านเพิ่มเติมเกี่ยวกับ App Engine

Compute Engineเป็นโครงสร้างพื้นฐาน -as-a-Service คุณต้องสร้างและกำหนดค่าอินสแตนซ์ของเครื่องเสมือนของคุณเอง มันให้ความยืดหยุ่นมากขึ้นและโดยทั่วไปจะมีค่าใช้จ่ายน้อยกว่า App Engine ข้อเสียคือคุณต้องจัดการแอพและเครื่องเสมือนของคุณเอง

อ่านเพิ่มเติมเกี่ยวกับ Compute Engine

คุณสามารถผสมทั้ง App Engine และ Compute Engine ได้หากจำเป็น พวกเขาทั้งสองทำงานได้ดีกับส่วนอื่น ๆ ของแพลตฟอร์ม Google Cloud

แก้ไข (พฤษภาคม 2559):

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

แก้ไข (เมษายน 2017):

ฟังก์ชั่นคลาวด์ (ขณะนี้อยู่ในรุ่นเบต้า) เป็นระดับต่อไปจาก App Engine ในแง่ของความเป็นนามธรรม - ไม่มีกรณี! อนุญาตให้นักพัฒนาปรับใช้ชิ้นส่วนขนาดคำสั่งกัดที่ดำเนินการเพื่อตอบสนองต่อเหตุการณ์ต่าง ๆ ซึ่งอาจรวมถึงคำขอ HTTP การเปลี่ยนแปลงใน Cloud Storage ฯลฯ

ความแตกต่างที่ใหญ่ที่สุดกับ App Engine คือฟังก์ชั่นมีราคาต่อ 100 มิลลิวินาทีในขณะที่อินสแตนซ์ของ App Engine ปิดตัวลงหลังจากไม่มีการใช้งาน 15 นาที ข้อดีอีกประการคือฟังก์ชั่นคลาวด์จะดำเนินการทันทีในขณะที่การเรียกใช้ App Engine อาจต้องการอินสแตนซ์ใหม่และการเริ่มต้นอินสแตนซ์ใหม่อาจใช้เวลาไม่กี่วินาทีหรือนานกว่านั้น (ขึ้นอยู่กับรันไทม์และรหัสของคุณ)

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

อ่านเพิ่มเติมเกี่ยวกับฟังก์ชั่นคลาวด์


7
หากฉันต้องการปรับใช้ผ่าน Docker ความแตกต่าง (นอกเหนือจากการกำหนดราคา) ระหว่างการใช้ GAE และ GCE คืออะไร
FullStack

2
สวัสดีโวลกินคุณช่วยอธิบายสาเหตุที่ทำให้ "Compute Engine" มีค่าใช้จ่ายน้อยกว่า App Engine ไหม ขอบคุณ
fangzhzh

21
App Engine นำเสนอระดับอัตโนมัติ (เช่นความสะดวก) ที่คุณไม่ได้รับจาก GCE ใน 5 ปีของการใช้ GAE ฉันไม่เคยติดตั้งแก้ไขหรือกำหนดค่าซอฟต์แวร์คัดลอกดิสก์ ฯลฯ นอกจากนี้ยังมีการจัดการโหลดและความจุที่ค่อนข้างแข็งแกร่ง - หมุนและปิดอินสแตนซ์ตามต้องการโดยอัตโนมัติ โดยรวมแล้วฟีเจอร์เหล่านี้ทำให้ Google สามารถเรียกเก็บเงินได้มากขึ้นเช่นเวลาและหลาย บริษัท และนักพัฒนาแต่ละคนยินดีที่จะจ่ายเบี้ยประกันภัยนี้เพราะ GAE ช่วยประหยัดเวลาได้มากที่จะสามารถพัฒนาแอพของคุณเองได้ดีขึ้น
Andrei Volgin

7
Google ยังมีบริการอื่นที่เรียกว่า: Container Engine ซึ่งมุ่งเน้นไปที่นักจัดการท่าเรือและการจัดการตู้คอนเทนเนอร์ (kubernetes)
Bram

8
ความคิดเห็นด่วนเกี่ยวกับ "ข้อดีอีกประการคือฟังก์ชั่นคลาวด์ทำงานได้ทันที" จากประสบการณ์ในชีวิตจริงพวกเขามีข้อ จำกัด ในเรื่องการเริ่มเย็นซึ่งอาจทำให้สรุปง่าย (a, b) {return a + b} ใช้เวลานาทีกับการเริ่มเย็น
Adam

89

แตกต่างขั้นพื้นฐานคือการที่Google App Engine ( GAE )เป็นแพลตฟอร์มเป็น Service ( PaaS )ในขณะที่Google Compute Engine ( GCE )เป็นโครงสร้างพื้นฐานเป็น Service ( IaaS )

ในการใช้งานแอปพลิเคชันของคุณใน GAE คุณเพียงแค่ต้องเขียนรหัสและนำไปใช้กับ GAE โดยไม่ต้องปวดหัว เนื่องจาก GAE สามารถปรับขนาดได้อย่างสมบูรณ์มันจะรับอินสแตนซ์เพิ่มเติมโดยอัตโนมัติในกรณีที่ปริมาณการใช้งานสูงขึ้นและลดอินสแตนซ์เมื่อปริมาณการใช้ลดลง คุณจะได้รับค่าใช้จ่ายสำหรับทรัพยากรที่คุณใช้จริงๆผมหมายถึงคุณจะถูกเรียกเก็บเงินสำหรับอินสแตนซ์ชั่วโมง , โอนข้อมูล , การเก็บรักษาฯลฯ แอปของคุณใช้จริงๆ แต่ข้อ จำกัด คือคุณสามารถสร้างแอปพลิเคชันของคุณในPython, PHP, Java, NodeJS, .NET, Ruby และ ** Goเท่านั้น

บนมืออื่น ๆ , GCE ให้คุณเต็มโครงสร้างพื้นฐานในรูปแบบของเครื่องเสมือน คุณสามารถควบคุมสภาพแวดล้อมและรันไทม์ของ VM เหล่านั้นได้อย่างสมบูรณ์เนื่องจากคุณสามารถเขียนหรือติดตั้งโปรแกรมใด ๆ จริงๆแล้ว GCE เป็นวิธีการใช้งาน Google Data Centers อย่างแท้จริง ใน GCE คุณมีการกำหนดค่าโครงสร้างพื้นฐานการจัดการด้วยตนเองความยืดหยุ่นโดยใช้Balancer การโหลด

ทั้งสอง GAE และ GCE เป็นส่วนหนึ่งของแพลตฟอร์ม Google Cloud

ปรับปรุง:ในเดือนมีนาคม 2014 Google ประกาศบริการใหม่ภายใต้ชื่อ App Engine ที่มีการจัดการเครื่องเสมือน Managed VMs ให้แอพพลิเคชั่นเอ็นจิ้นแอปมีความยืดหยุ่นมากกว่าแพลตฟอร์มแอพตัวเลือกซีพียูและหน่วยความจำ เช่นเดียวกับ GCE คุณสามารถสร้างสภาพแวดล้อมรันไทม์แบบกำหนดเองใน VM เหล่านี้สำหรับแอปพลิเคชันแอปพลิเคชันเครื่องยนต์ VM ที่จัดการจริงของ App Engine ทำให้ขอบเขตระหว่าง IAAS และ PAAS พร่ามัวไปบ้าง


1
จากเอกสารของพวกเขาคุณสามารถปรับใช้ VM กับ GAE ผ่าน Docker cloud.google.com/appengine/docs/managed-vms
FullStack

ดูเหมือนว่าคุณสามารถใช้ Node.js และ Ruby ได้ใน GAE
Blaszard

3
VMs ที่มีการจัดการตอนนี้เรียกว่า App Engine Flexible Environment
killjoy

1
ฉันปรับใช้รหัสของฉันเป็นเอ็นจิ้นแอพเมื่อฉันตรวจสอบคอนโซลฉันเห็นอินสแตนซ์ Compute Engine VM เช่นกันเมื่อตรวจสอบคอนโซลเอ็นจิ้นแอปฉันเห็นร่องรอยของคำขอ HTTP เซิร์ฟเล็ต ดังนั้นฉันจึงใช้แอพเอ็นจิ้นหรือเอ็นจิ้นการคำนวณ?
EhsanR

ฉันคิดว่าส่วนเกี่ยวกับพื้นที่เก็บข้อมูลใน " ... คุณจะถูกเรียกเก็บเงินสำหรับอินสแตนซ์ - ชั่วโมง, ข้อมูลที่โอนย้าย, พื้นที่เก็บข้อมูล ฯลฯ ที่แอปของคุณใช้จริงๆ ... " เกี่ยวกับ GAE ผิด อินสแตนซ์ GAE นั้นมีความผันผวน (ส่วนใหญ่) ดังนั้นเมื่ออินสแตนซ์หยุดทำงาน (เช่นถ้าอินสแตนซ์ถูกสร้างขึ้นเพื่อตอบสนองต่อปริมาณการใช้ข้อมูลและตอนนี้จะถูกลบออกเมื่อการจราจรลดลง) คุณสูญเสียข้อมูลที่เก็บไว้ทั้งหมด ดังนั้นฉันคิดว่าไม่ถูกต้องที่จะระบุว่าคุณได้รับ "ที่เรียกเก็บเงิน" สำหรับ "ที่เก็บข้อมูล" ใน GAE แม้ว่าคุณจะสามารถเชื่อมต่อแอปของคุณใน GAE กับผลิตภัณฑ์ GCP อื่นที่ให้บริการที่เก็บและเรียกเก็บเงินในภายหลังไม่ใช่ GAE
Damilola Olowookere

56

เพื่อให้เข้าใจง่าย: โปรแกรมคำนวณช่วยให้คุณมีเซิร์ฟเวอร์ที่คุณมีการควบคุม / ความรับผิดชอบเต็ม คุณสามารถเข้าถึงระบบปฏิบัติการโดยตรงและติดตั้งซอฟต์แวร์ทั้งหมดที่คุณต้องการซึ่งโดยปกติจะเป็นเว็บเซิร์ฟเวอร์ฐานข้อมูล ฯลฯ

ในเอ็นจิ้นแอพคุณไม่ได้จัดการระบบปฏิบัติการของซอฟต์แวร์พื้นฐานใด ๆ คุณอัปโหลดรหัส (Java, PHP, Python หรือ Go) และ voila - มันทำงาน ...

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


2
คุณสามารถปรับใช้ VM เป็น GAE ผ่าน Docker เพื่อให้คุณสามารถจัดการระบบปฏิบัติการ ฯลฯcloud.google.com/appengine/docs/managed-vms
FullStack

3
"มันแค่วิ่ง" คุณจริงจังไหม? ฉันคิดว่าฉันไม่ใช่คนเดียวที่มีปัญหาในการปรับรหัสเป็น GAE เมื่อพูดถึงการอัปโหลดไฟล์หรือกระบวนการหลัง
emfi

36

หรือเพื่อให้ง่ายขึ้น (ตั้งแต่บางครั้งเราไม่สามารถแยกความแตกต่างระหว่าง GAE Standard และ GAE Flex):

Compute Engineนั้นคล้ายคลึงกับพีซีเสมือนที่คุณต้องการปรับใช้เว็บไซต์ + ฐานข้อมูลขนาดเล็กเป็นต้น คุณจัดการทุกอย่างรวมถึงการควบคุมดิสก์ไดรฟ์ที่ติดตั้ง หากคุณปรับใช้เว็บไซต์คุณจะต้องรับผิดชอบค่าติดตั้ง DNS และอื่น ๆ

Google App Engine (มาตรฐาน)เปรียบเสมือนโฟลเดอร์แซนด์บ็อกซ์แบบอ่านอย่างเดียวซึ่งคุณอัปโหลดรหัสเพื่อเรียกใช้งานและไม่ต้องกังวลเกี่ยวกับส่วนที่เหลือ (ใช่: อ่านอย่างเดียว) มีการติดตั้งไลบรารีคงที่สำหรับคุณ ห้องสมุดบุคคลที่สามที่จะ) DNS / Sub-domains ฯลฯ ง่ายกว่าในการแม็พ

Google App Engine (ยืดหยุ่น) ที่จริงแล้วเป็นเหมือนระบบไฟล์ทั้งหมด (ไม่ใช่แค่โฟลเดอร์ที่ถูกล็อค) ซึ่งคุณมีพลังมากกว่าเอ็นจิ้นมาตรฐานเช่นคุณมีสิทธิ์ในการอ่าน / เขียน (แต่น้อยกว่าเมื่อเทียบกับ Compute Engine ) ในมาตรฐาน GAE คุณจะต้องติดตั้งไลบรารีคงที่ไว้สำหรับคุณและคุณไม่สามารถปรับใช้ไลบรารีบุคคลที่สามได้ตามต้องการ ในสภาพแวดล้อมที่ยืดหยุ่นคุณสามารถติดตั้งไลบรารีใดก็ได้ที่แอพของคุณขึ้นอยู่กับรวมถึงสภาพแวดล้อมการสร้างแบบกำหนดเอง (เช่น Python 3)

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


คุณหมายถึงโดย "อ่านอย่างเดียว" ความจริงที่ว่าเราไม่สามารถเขียนลงดิสก์ไฟล์ได้หรือไม่
จอห์

@JohnBalvinArias ใช่แล้วเป็นคอนเทนเนอร์แบบ Sandbox แบบอ่านอย่างเดียว คุณไม่สามารถเข้าถึงโลกภายนอกได้และไม่สามารถเขียนลงในคอนเทนเนอร์ / ดิสก์นี้ได้ มีไว้ให้คุณรันโค้ดจาก
strangetimes

ดังนั้นถ้าฉันสามารถใช้นักเทียบท่าเพื่อติดตั้ง s / w ใน GAE หมายความว่า google จะดูแลการสร้าง / จัดสรรอินสแตนซ์ linux ที่มีการกำหนดค่าพื้นฐานแล้วเรียกใช้นักเทียบท่าบนยอดของมัน ในสาระสำคัญเครื่องยนต์คำนวณเพิ่มความรับผิดชอบเพิ่มเติมของการกำหนดค่า VM ฉันถูกไหม?
พระ

32

นอกเหนือจากบันทึกย่อของ App Engine vs Compute Engine ด้านบนรายการที่นี่ยังมีการเปรียบเทียบกับ Google Kubernete Engine และบันทึกย่อบางรายการตามประสบการณ์กับแอพที่หลากหลายตั้งแต่ขนาดเล็กไปจนถึงขนาดใหญ่มาก สำหรับจุดมากขึ้นดูเอกสารประกอบคำอธิบายระดับสูงของ Google Cloud Platform ของคุณสมบัติใน App Engine มาตรฐานและ Flex บนหน้าเลือกสิ่งแวดล้อม App Engine สำหรับการเปรียบเทียบการใช้งานของ App Engine และ Kubernetes อื่นเห็นโพสต์โดย Daz Wilkin App Engine Flex หรือ Kubernetes เครื่องยนต์

App Engine Standard

ข้อดี

  • ประหยัดมากสำหรับแอพที่มีปริมาณการใช้งานต่ำในแง่ของต้นทุนโดยตรงและค่าใช้จ่ายในการดูแลแอพ
  • การปรับสเกลอัตโนมัตินั้นรวดเร็ว AutoScaling ใน App Engine จะขึ้นอยู่กับน้ำหนักเบาเรียนเช่น F1-F4
  • การจัดการเวอร์ชันและการแยกทราฟฟิกทำได้อย่างรวดเร็วและสะดวกสบาย คุณสมบัติเหล่านี้มีอยู่ใน App Engine (ทั้งแบบมาตรฐานและแบบยืดหยุ่น)
  • การจัดการขั้นต่ำนักพัฒนาจำเป็นต้องมุ่งเน้นเฉพาะแอพของพวกเขา นักพัฒนาไม่จำเป็นต้องกังวลเกี่ยวกับการจัดการ VM ในความน่าเชื่อถือเช่นเดียวกับใน GCE หรือเรียนรู้เกี่ยวกับกลุ่มเช่นเดียวกับ GKE
  • การเข้าถึง Datastore นั้นรวดเร็ว เมื่อ App Engine เปิดตัวครั้งแรกรันไทม์อยู่ร่วมกับ Datastore ภายหลัง Datastore ถูกแยกเป็นผลิตภัณฑ์Cloud Datastoreแบบสแตนด์อโลนแต่ co-location ของ App Engine Standard ที่ให้บริการกับ Datastore ยังคงอยู่
  • รองรับการเข้าถึง Memcache
  • Sandbox ของ App Engine นั้นปลอดภัยมาก เมื่อเทียบกับการพัฒนาบน GCE หรือเครื่องเสมือนอื่น ๆ ที่คุณต้องใช้ความขยันของคุณเองเพื่อป้องกันไม่ให้เครื่องเสมือนถูกครอบงำในระดับระบบปฏิบัติการกล่องเครื่องมือมาตรฐาน App Engine จะค่อนข้างปลอดภัยโดยค่าเริ่มต้น

จุดด้อย

  • โดยทั่วไปมีข้อ จำกัด มากกว่าสภาพแวดล้อมอื่นอินสแตนซ์นั้นเล็กกว่า แม้ว่าสิ่งนี้จะดีสำหรับการปรับอัตโนมัติอย่างรวดเร็ว แต่แอปจำนวนมากสามารถได้รับประโยชน์จากอินสแตนซ์ที่ใหญ่กว่าเช่นขนาดอินสแตนซ์ของ GCE สูงถึง 96 คอร์
  • ระบบเครือข่ายไม่ได้รวมเข้ากับ GCE
  • ไม่สามารถวาง App Engine ไว้ด้านหลัง Google Cloud Load Balancer จำกัด ให้รันไทม์ที่รองรับ: Python 2.7, Java 7 และ 8, Go 1.6-1.9 และ PHP 5.5 ใน Java มีการรองรับ Servlets แต่ไม่ใช่มาตรฐาน J2EE ที่สมบูรณ์

แอพ Engine Flex

ข้อดี

  • สามารถใช้รันไทม์ที่กำหนดเองได้
  • การรวมกันของเนทีฟกับเครือข่าย GCE
  • เวอร์ชันและการจัดการทราฟฟิกสะดวกเช่นเดียวกับ Standard
  • ขนาดอินสแตนซ์ที่ใหญ่กว่าอาจเหมาะกว่าสำหรับแอปพลิเคชันที่ซับซ้อนขนาดใหญ่โดยเฉพาะแอปพลิเคชัน Java ที่สามารถใช้หน่วยความจำได้จำนวนมาก

จุดด้อย

  • การรวมเครือข่ายไม่สมบูรณ์ - ไม่มีการรวมเข้ากับ load balancer ภายในหรือ Shared Virtual Private Clouds
  • การเข้าถึง Memcache ที่มีการจัดการโดยทั่วไปจะไม่สามารถใช้งานได้

Google Kubernetes Engine

ข้อดี

  • การรวมดั้งเดิมกับคอนเทนเนอร์อนุญาตให้รันไทม์แบบกำหนดเองและควบคุมการกำหนดค่าคลัสเตอร์ได้มากขึ้น
  • รวบรวมแนวทางปฏิบัติที่ดีที่สุดมากมายที่ทำงานกับเครื่องเสมือนเช่นสภาพแวดล้อมรันไทม์ที่ไม่เปลี่ยนรูปแบบและความสามารถในการย้อนกลับไปเป็นเวอร์ชันก่อนหน้าได้ง่าย
  • จัดเตรียมเฟรมเวิร์กการปรับใช้ที่สอดคล้องและทำซ้ำได้
  • ตามมาตรฐานเปิดโดยเฉพาะอย่างยิ่ง Kubernetes สำหรับการพกพาระหว่างคลาวด์และในสถานที่
  • การจัดการเวอร์ชันสามารถทำได้ด้วยคอนเทนเนอร์ Docker และ Google Container Registry

จุดด้อย

  • การแยกและการจัดการการจราจรเป็นสิ่งที่ต้องทำด้วยตัวเอง
  • ค่าใช้จ่ายในการจัดการบางอย่าง
  • บางครั้งต้องเพิ่มแนวคิดของ Kubernetes เช่นพ็อดการปรับใช้บริการการเข้าใช้และเนมสเปซ
  • จำเป็นต้องเปิดเผย IP สาธารณะบางส่วนเว้นแต่ใช้Private Clustersซึ่งตอนนี้อยู่ในรุ่นเบต้ากำจัดความต้องการนั้น แต่คุณยังจำเป็นต้องให้การเข้าถึงตำแหน่งที่คำสั่ง kubectl จะถูกเรียกใช้
  • การตรวจสอบการรวมระบบไม่สมบูรณ์แบบ
  • ในขณะที่ L3 โหลดบาลานซ์ภายในได้รับการสนับสนุนอย่างเป็นธรรมชาติบน Kubernetes Engine แต่การโหลดบาลานซ์ภายใน L7 นั้นทำได้ด้วยตัวเอง

คำนวณเครื่องยนต์

ข้อดี

  • ง่ายต่อการเพิ่มขึ้น - ไม่จำเป็นต้องเพิ่มความเร็วใน Kubernetes หรือ App Engine เพียงนำสิ่งที่คุณรู้จากประสบการณ์ก่อนหน้ามาใช้ซ้ำ นี่อาจเป็นสาเหตุหลักของการใช้ Compute Engine โดยตรง
  • การควบคุมที่สมบูรณ์ - คุณสามารถใช้ประโยชน์จากคุณสมบัติ Compute Engine จำนวนมากได้โดยตรงและติดตั้งสิ่งล่าสุดที่คุณโปรดปรานทั้งหมดเพื่อให้อยู่บนขอบเลือดออก
  • ไม่จำเป็นต้องมี IP สาธารณะ ซอฟต์แวร์ดั้งเดิมบางรุ่นอาจยากเกินกว่าที่จะล็อคหากมีสิ่งใดปรากฏบน IP สาธารณะ
  • คุณสามารถใช้ประโยชน์จาก Container-Optimized OS สำหรับการใช้งาน Docker container

จุดด้อย

  • ส่วนใหญ่ทำด้วยตัวเองซึ่งอาจเป็นเรื่องยากที่จะทำอย่างเพียงพอเพื่อความน่าเชื่อถือและความปลอดภัยแม้ว่าคุณจะสามารถนำโซลูชันกลับมาใช้ใหม่จากสถานที่ต่าง ๆ รวมถึง Cloud Launcher
  • ค่าใช้จ่ายในการจัดการมากขึ้น มีเครื่องมือการจัดการมากมายสำหรับ Compute Engine แต่ไม่จำเป็นต้องเข้าใจว่าคุณได้ปรับใช้แอปพลิเคชันของคุณอย่างไรเช่นเครื่องมือตรวจสอบ App Engine และ Kubernetes Engine
  • การปรับอัตโนมัตินั้นขึ้นอยู่กับอินสแตนซ์ของ GCE ซึ่งอาจช้ากว่า App Engine
  • แนวโน้มคือการติดตั้งซอฟต์แวร์บนอินสแตนซ์เกล็ดหิมะ GCE ซึ่งสามารถรักษาได้

19

ตามที่อธิบายไว้แล้ว Google Compute Engine (GCE) เป็นโครงสร้างพื้นฐานเป็นบริการ (IaaS) ในขณะที่ Google App Engine (GAE) เป็นแพลตฟอร์มเป็นบริการ (PaaS) คุณสามารถตรวจสอบแผนภาพต่อไปนี้เพื่อทำความเข้าใจความแตกต่างในวิธีที่ดีกว่า (นำมาจากและอธิบายที่ดีกว่าที่นี่ ) -

ประเภทของ Cloud Computing

Google Compute Engine
GCE เป็นบริการสำคัญจาก Google Cloud Platform (GCP) เนื่องจากบริการ GCP ส่วนใหญ่ใช้ GCE อินสแตนซ์ (VMs) ใต้ชั้นการจัดการ (ไม่แน่ใจว่าอันไหนไม่) ซึ่งรวมถึง App Engine, ฟังก์ชั่นคลาวด์, เครื่องมือ Kubernetes (Engine Container ก่อนหน้านี้), Cloud SQL เป็นต้นอินสแตนซ์ GCE เป็นหน่วยที่ปรับแต่งได้มากที่สุดและควรใช้เฉพาะเมื่อแอปพลิเคชันของคุณไม่สามารถทำงานกับบริการ GCP อื่น ๆ คนส่วนใหญ่ใช้ GCE เพื่อถ่ายโอนแอปพลิเคชันในพื้นที่ของพวกเขาไปยัง GCP เนื่องจากต้องการการเปลี่ยนแปลงเล็กน้อย หลังจากนั้นพวกเขาสามารถเลือกใช้บริการ GCP อื่น ๆ เพื่อแยกส่วนประกอบของแอพ

Google App Engine
GAE เป็นบริการแรกที่นำเสนอโดย GCP (ก่อนที่ Google จะมาถึงธุรกิจคลาวด์) ปรับขนาดอัตโนมัติจาก 0 เป็นอินสแตนซ์ไม่ จำกัด (ใช้ GCE ด้านล่าง) มันมาพร้อมกับ 2 รสชาติมาตรฐานสภาพแวดล้อมและสภาพแวดล้อมที่ยืดหยุ่น

สภาพแวดล้อมมาตรฐานนั้นเร็วจริง ๆ ลดขนาดลงเป็น 0 เมื่อไม่มีใครใช้แอพของคุณปรับขนาดขึ้นและลงในไม่กี่วินาทีและมีบริการและห้องสมุดเฉพาะของ Google สำหรับการแคชการรับรองความถูกต้อง ฯลฯ ข้อแม้ที่มีสภาพแวดล้อมมาตรฐานนั้นเข้มงวดมาก ตั้งแต่มันทำงานในกล่องทราย คุณต้องใช้ runtimes ที่มีการจัดการสำหรับภาษาการเขียนโปรแกรมเฉพาะเท่านั้น ข้อมูลเพิ่มเติมล่าสุดคือ Node.js (8.x) และ Python 3.x รันไทม์รุ่นเก่าสามารถใช้งานได้กับ Go, PHP, Python 2.7, Java และอื่น ๆ

สภาพแวดล้อมที่ยืดหยุ่นเปิดกว้างมากขึ้นเนื่องจากช่วยให้คุณใช้เวลารันไทม์แบบกำหนดเองเนื่องจากใช้คอนเทนเนอร์ของนักเทียบท่า ดังนั้นหากรันไทม์ของคุณไม่พร้อมใช้งานใน runtimes ที่จัดให้คุณสามารถสร้าง dockerfile ของคุณเองสำหรับสภาพแวดล้อมการทำงาน ข้อแม้ของมันคือมันต้องมีอินสแตนซ์อย่างน้อย 1 ตัวที่ทำงานแม้ว่าจะไม่มีใครใช้แอพของคุณรวมถึงการขยายขึ้นและลงต้องใช้เวลาไม่กี่นาที

อย่าสับสน GAE แบบยืดหยุ่นกับ Kubernetes Engine เนื่องจากรุ่นหลังใช้ Kubernetes จริงและให้การปรับแต่งและคุณสมบัติเพิ่มเติมมากมาย GAE Flex มีประโยชน์เมื่อคุณต้องการคอนเทนเนอร์ไร้รัฐและแอปพลิเคชันของคุณใช้โปรโตคอล HTTP หรือ HTTPS เท่านั้น สำหรับโปรโตคอลอื่น ๆ Kubernetes Engine (GKE) หรือ GCE เป็นทางเลือกเดียวของคุณ ตรวจสอบคำตอบอื่น ๆ ของฉันสำหรับคำอธิบายที่ดีกว่า


10

App Engine ช่วยให้นักพัฒนาซอฟต์แวร์สามารถควบคุมแกนประมวลผลของ Google Compute Engine รวมถึงมอบส่วนหน้าเว็บสำหรับแอปพลิเคชันการประมวลผลข้อมูล Google Compute Engine

ในทางกลับกัน Compute Engine เสนอการจัดการระบบปฏิบัติการโดยตรงและสมบูรณ์ของเครื่องเสมือนของคุณ ในการนำเสนอแอพของคุณคุณจะต้องใช้ทรัพยากรและ Google Cloud Storage เหมาะสำหรับการจัดเก็บเนื้อหาและข้อมูลของคุณไม่ว่าจะใช้งานที่ไหนก็ตาม คุณได้รับการเข้าถึงข้อมูลที่รวดเร็วด้วยการโฮสต์ทั่วโลก ความน่าเชื่อถือรับประกันได้ในช่วงเวลา 99.95% และ Google ยังมีความสามารถในการสำรองและกู้คืนข้อมูลของคุณและเชื่อหรือไม่ว่าพื้นที่เก็บข้อมูลไม่ จำกัด

คุณสามารถจัดการสินทรัพย์ของคุณด้วย Google Cloud Storage จัดเก็บเรียกคืนแสดงผลและลบออก คุณยังสามารถอ่านและเขียนเอกสารข้อมูลแบบแบนที่เก็บไว้ใน Cloud Storage ได้อย่างรวดเร็ว ถัดไปในรายการ Google Cloud คือ BigQuery ด้วย BigQuery คุณสามารถวิเคราะห์ข้อมูลจำนวนมหาศาลได้เรากำลังพูดถึงบันทึกนับล้านภายในไม่กี่วินาที การเข้าถึงนั้นได้รับการจัดการผ่าน UI ที่ตรงไปตรงมาหรือ Representative State Transfer หรืออินเตอร์เฟส REST

การจัดเก็บข้อมูลนั้นเป็นไปอย่างที่คุณสงสัยว่าไม่ใช่ปัญหาและปรับขนาดเป็นร้อย TB BigQuery สามารถเข้าถึงได้ผ่านโฮสต์ของไคลเอ็นต์ไลบรารีรวมถึง Java, .NET, Python, Go, Ruby, PHP และ Javascript ไวยากรณ์คล้าย SQL ที่เรียกว่า NoSQL มีให้บริการซึ่งสามารถเข้าถึงได้ผ่านไลบรารีไคลเอ็นต์เหล่านี้หรือผ่านส่วนต่อประสานผู้ใช้บนเว็บ สุดท้ายเรามาพูดถึงตัวเลือกฐานข้อมูลแพลตฟอร์ม Google Cloud, Cloud SQL และ Cloud Datastore

มีความแตกต่างที่สำคัญคือ Cloud SQL ใช้สำหรับฐานข้อมูลเชิงสัมพันธ์ส่วนใหญ่เป็น MySQL ในขณะที่ Cloud Datastore ใช้สำหรับฐานข้อมูลที่ไม่เกี่ยวข้องโดยใช้ noSQL ด้วย Cloud SQL คุณมีทางเลือกของการโฮสต์ในสหรัฐอเมริกายุโรปหรือเอเชียที่มีพื้นที่เก็บข้อมูล 100 GB และ RAM ขนาด 16 GB ต่ออินสแตนซ์ฐานข้อมูล

Cloud Datastore มีให้บริการฟรีสำหรับคำแนะนำในการอ่าน / เขียนสูงสุด 50 K ต่อเดือนและจัดเก็บข้อมูล 1 GB ต่อเดือน อย่างไรก็ตามมีค่าธรรมเนียมหากคุณเกินโควต้าเหล่านี้ App Engine ยังสามารถทำงานร่วมกับสมาชิกเป้าหมายของ Google Cloud ที่เป็นที่รู้จักน้อยกว่ารวมถึง Cloud Endpoints สำหรับการสร้างแบ็กเอนด์ API, Google Prediction API สำหรับการวิเคราะห์ข้อมูลและการพยากรณ์แนวโน้มหรือ Google Translate API สำหรับเอาต์พุตหลายภาษา

ในขณะที่คุณสามารถทำเงินได้พอสมควรกับ App Engine ด้วยตัวมันเองมันเป็น skyrockets ที่เป็นไปได้เมื่อคุณคำนึงถึงความสามารถในการทำงานได้อย่างง่ายดายและมีประสิทธิภาพด้วยบริการแพลตฟอร์มของ Google Cloud


10

หากคุณคุ้นเคยกับบริการยอดนิยมอื่น ๆ :

Google Compute Engine -> AWS EC2

Google App Engine -> Heroku หรือ AWS Elastic Beanstalk

ฟังก์ชั่น Google Cloud -> ฟังก์ชั่น AWS Lambda


7

ฉันจะอธิบายในลักษณะที่เหมาะสมกับฉัน:

  • Compute Engine : ถ้าคุณเป็นคนทำเองหรือมีทีมไอทีและคุณต้องการเช่าคอมพิวเตอร์บนคลาวด์ที่มีระบบปฏิบัติการเฉพาะ (เช่น linux) คุณจะไปที่ Compute Engine คุณต้องทำทุกอย่างด้วยตัวเอง

  • App Engine : หากคุณเป็นโปรแกรมเมอร์งูใหญ่และต้องการเช่าคอมพิวเตอร์ที่ตั้งค่าไว้ล่วงหน้าบนระบบคลาวด์ที่มี Linux พร้อมด้วยเว็บเซิร์ฟเวอร์ที่ใช้งานและงูหลาม 3 รุ่นล่าสุดพร้อมโมดูลที่จำเป็นและปลั๊กอินบางตัวที่จะรวมเข้ากับ บริการภายนอกอื่น ๆ คุณไปที่ App Engine

  • คอนเทนเนอร์ที่ไม่มีเซิร์ฟเวอร์ (เรียกใช้บนคลาวด์) : หากคุณต้องการปรับใช้อิมเมจที่แน่นอนของสภาพแวดล้อมการตั้งค่าในเครื่องของคุณ (ตัวอย่างเช่น python 3.7 + flask + sklearn) แต่คุณไม่ต้องการจัดการกับเซิร์ฟเวอร์สเกล ฯลฯ คุณสร้างคอนเทนเนอร์ บนเครื่องท้องถิ่น (ผ่านตัวเทียบท่า) จากนั้นปรับใช้กับ Google Run

  • Microservice แบบไม่ใช้เซิร์ฟเวอร์ (ฟังก์ชั่นคลาวด์) : หากคุณต้องการเขียน API (ฟังก์ชั่น) ที่ทำงานเฉพาะคุณต้องไปที่ฟังก์ชั่น Google Cloud คุณเพียงแค่มุ่งเน้นไปที่ฟังก์ชั่นที่เฉพาะเจาะจงส่วนที่เหลือของงาน (เซิร์ฟเวอร์การบำรุงรักษาการปรับขนาด ฯลฯ ) จะทำเพื่อคุณเพื่อแสดงฟังก์ชั่นของคุณในรูปแบบไมโครแวร์

เมื่อคุณไปลึกกว่านี้คุณจะสูญเสียความยืดหยุ่น แต่คุณไม่ต้องกังวลกับประเด็นทางเทคนิคที่ไม่จำเป็น คุณจ่ายเพิ่มอีกนิด แต่คุณประหยัดเวลาและค่าใช้จ่าย (ส่วนไอที): มีคนอื่น (google) กำลังทำเพื่อคุณ

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

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

ฉันได้ลองตัวเลือกอื่น ๆ แล้วและแต่ละตัวก็ดีสำหรับวัตถุประสงค์ที่แตกต่างกัน แต่ Google Run นั้นยอดเยี่ยมมาก สำหรับฉันมันเป็นเซิร์ฟเวอร์ที่แท้จริงโดยไม่สูญเสียความยืดหยุ่นในการพัฒนา


3

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


1

Google Compute Engine (GCE)

Virtual Machines (VMs) โฮสต์ในคลาวด์ ก่อนที่คลาวด์สิ่งเหล่านี้มักถูกเรียกว่า Virtual Private Servers (VPS) คุณจะใช้วิธีเดียวกันกับที่คุณใช้ฟิสิคัลเซิร์ฟเวอร์ที่คุณติดตั้งและกำหนดค่าระบบปฏิบัติการติดตั้งแอปพลิเคชันติดตั้งฐานข้อมูลรักษาระบบปฏิบัติการให้ทันสมัย ​​ฯลฯ เป็นที่รู้จักกันในชื่อ Infrastructure - as-a-Service (IaaS)

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

Google App Engine

App Engine โฮสต์และเรียกใช้รหัสของคุณโดยไม่ต้องให้คุณจัดการกับระบบปฏิบัติการเครือข่ายและสิ่งอื่น ๆ อีกมากมายที่คุณต้องจัดการกับเซิร์ฟเวอร์จริงหรือ VM คิดว่าเป็นรันไทม์ซึ่งสามารถปรับใช้รุ่นและปรับขนาดแอปพลิเคชันของคุณโดยอัตโนมัติ สิ่งนี้เรียกว่า Platform-as-a-Service (PaaS)

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


ฉันไม่เข้าใจว่าทำไมคำตอบนี้ไม่ได้รับ upvotes ที่สมควรได้รับ! :)
Damilola Olowookere
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.