Saya bertanya-tanya apa perbedaan antara App Engine & Compute Engine. Adakah yang bisa menjelaskan perbedaannya kepada saya?
Saya bertanya-tanya apa perbedaan antara App Engine & Compute Engine. Adakah yang bisa menjelaskan perbedaannya kepada saya?
Jawaban:
App Engine adalah Platform-as-a-Service. Ini berarti bahwa Anda hanya menggunakan kode Anda, dan platform melakukan segalanya untuk Anda. Misalnya, jika aplikasi Anda menjadi sangat sukses, App Engine akan secara otomatis membuat lebih banyak instance untuk menangani peningkatan volume.
Baca lebih lanjut tentang App Engine
Compute Engine adalah Infrastruktur sebagai Layanan. Anda harus membuat dan mengonfigurasi mesin virtual Anda sendiri. Ini memberi Anda lebih banyak fleksibilitas dan umumnya lebih murah dibandingkan App Engine. Kekurangannya adalah Anda harus mengelola sendiri aplikasi dan mesin virtual Anda.
Baca lebih lanjut tentang Mesin Hitung
Anda dapat mencampur App Engine dan Compute Engine, jika perlu. Keduanya bekerja dengan baik dengan bagian lain dari Google Cloud Platform .
EDIT (Mei 2016):
Satu perbedaan yang lebih penting: proyek yang berjalan di App Engine dapat menurunkan ke nol contoh jika tidak ada permintaan masuk. Ini sangat berguna pada tahap pengembangan karena Anda dapat pergi selama berminggu-minggu tanpa melewati kuota gratis yang murah hati dari instance-jam. Runtime yang fleksibel (yaitu "VM yang dikelola") memerlukan setidaknya satu instance untuk berjalan secara konstan.
EDIT (April 2017):
Cloud Functions (saat ini dalam versi beta) adalah level selanjutnya dari App Engine dalam hal abstraksi - tidak ada instance! Ini memungkinkan pengembang untuk menyebarkan potongan kode ukuran gigitan yang dijalankan sebagai respons terhadap berbagai peristiwa, yang mungkin termasuk permintaan HTTP, perubahan dalam Penyimpanan Cloud, dll.
Perbedaan terbesar dengan App Engine adalah bahwa fungsinya dihargai per 100 milidetik, sementara mesin virtual App Engine mati hanya setelah 15 menit tidak aktif. Keuntungan lain adalah bahwa Fungsi Cloud dijalankan segera, sementara panggilan ke App Engine mungkin memerlukan mesin virtual baru - dan memulai mesin virtual baru mungkin memakan waktu beberapa detik atau lebih lama (tergantung pada runtime dan kode Anda).
Ini membuat Cloud Functions ideal untuk (a) panggilan langka - tidak perlu membuat instance tetap hidup jika-kalau terjadi sesuatu, (b) beban yang berubah dengan cepat di mana mesin virtual sering berputar dan mati, dan mungkin menggunakan case yang lebih banyak.
Perbedaan mendasar adalah bahwa Google App Engine ( GAE ) adalah Platform sebagai Layanan ( PaaS ) sedangkan Google Compute Engine ( GCE ) adalah Infrastruktur sebagai Layanan ( IaaS ) .
Untuk menjalankan aplikasi Anda di GAE Anda hanya perlu menulis kode Anda dan menyebarkannya ke GAE, tidak ada sakit kepala lainnya. Karena GAE sepenuhnya dapat diskalakan, maka GAE akan secara otomatis mendapatkan lebih banyak instance jika traffic semakin tinggi dan menurunkan instance ketika lalu lintas berkurang. Anda akan dikenakan biaya untuk sumber daya yang benar-benar Anda gunakan , maksud saya, Anda akan ditagih untuk Instance-Hours , Data yang Ditransfer , Penyimpanan dll aplikasi Anda benar-benar digunakan. Tetapi batasannya adalah, Anda dapat membuat aplikasi hanya dengan Python, PHP, Java, NodeJS, .NET, Ruby dan ** Go .
Di sisi lain, GCE menyediakan Anda infrastruktur lengkap dalam bentuk Mesin Virtual . Anda memiliki kontrol penuh atas lingkungan dan runtime VMs itu karena Anda dapat menulis atau menginstal program apa pun di sana. Sebenarnya GCE adalah cara untuk menggunakan Pusat Data Google secara virtual. Di GCE Anda harus mengkonfigurasi infrastruktur secara manual untuk menangani skalabilitas dengan menggunakan Load Balancer .
GAE dan GCE merupakan bagian dari Google Cloud Platform .
Pembaruan: Pada bulan Maret 2014 Google mengumumkan layanan baru di bawah App Engine bernama Managed Virtual Machine . VM yang dikelola menawarkan aplikasi engine aplikasi sedikit lebih fleksibel daripada platform aplikasi, CPU, dan opsi memori. Seperti GCE, Anda dapat membuat lingkungan runtime khusus di VM ini untuk aplikasi engine aplikasi. Sebenarnya VM yang dikelola dari App Engine mengaburkan batas antara IAAS dan PAAS sampai batas tertentu.
Sederhananya: compute engine memberi Anda server yang memiliki kendali penuh / tanggung jawab untuk. Anda memiliki akses langsung ke sistem operasi, dan Anda menginstal semua perangkat lunak yang Anda inginkan, yang biasanya merupakan server web, database, dll ...
Di mesin aplikasi Anda tidak mengelola sistem operasi perangkat lunak apa pun yang mendasarinya. Anda hanya mengunggah kode (Java, PHP, Python, atau Go) dan voila - hanya berjalan ...
App engine menghemat banyak sakit kepala, terutama bagi orang yang tidak berpengalaman tetapi ia memiliki 2 kelemahan signifikan: 1. lebih mahal (tetapi memang memiliki kuota gratis yang menghitung engine tidak) 2. Anda memiliki kontrol lebih sedikit, sehingga hal-hal tertentu tidak mungkin, atau hanya mungkin dalam satu cara tertentu (misalnya menyimpan dan menulis file).
Atau untuk membuatnya lebih sederhana (karena terkadang kami gagal membedakan antara GAE Standard dan GAE Flex):
Compute Engine dianalogikan dengan PC virtual, di mana Anda akan menggunakan database + situs web kecil, misalnya. Anda mengelola semuanya, termasuk kontrol drive disk yang diinstal. Jika Anda menggunakan situs web, Anda bertanggung jawab mengatur DNS dll.
Google App Engine (Standard) seperti folder berpasir baca saja tempat Anda mengunggah kode untuk dieksekusi dan jangan khawatir tentang sisanya (ya: hanya baca - ada satu set perpustakaan yang terpasang untuk Anda dan Anda tidak dapat menggunakan Perpustakaan pihak ke-3 sesuka hati). DNS / Sub-domain dll jauh lebih mudah untuk dipetakan.
Google App Engine (Fleksibel) sebenarnya seperti seluruh sistem file (bukan hanya folder terkunci), di mana Anda memiliki kekuatan lebih dari mesin Standar, misalnya Anda memiliki izin baca / tulis, (tetapi lebih sedikit dibandingkan dengan Mesin Hitung) ). Dalam standar GAE Anda memiliki satu set perpustakaan yang diinstal untuk Anda dan Anda tidak dapat menggunakan perpustakaan pihak ketiga sesuka hati. Di lingkungan Fleksibel Anda dapat memasang pustaka apa pun yang bergantung pada aplikasi Anda, termasuk lingkungan build khusus (seperti Python 3).
Meskipun GAE Standard sangat rumit untuk dihadapi (meskipun Google membuatnya terdengar sederhana), GAE berskala sangat baik ketika ditekan. Ini rumit karena Anda perlu menguji dan memastikan kompatibilitas dengan lingkungan yang terkunci dan memastikan perpustakaan pihak ketiga mana pun yang Anda gunakan tidak menggunakan perpustakaan pihak ketiga mana pun yang tidak Anda sadari yang mungkin tidak berfungsi pada standar GAE. Dibutuhkan waktu lebih lama untuk mengaturnya dalam praktik tetapi bisa lebih bermanfaat dalam jangka panjang untuk penerapan sederhana.
Selain catatan Mesin Aplikasi vs Mesin Hitung di atas daftar di sini juga termasuk perbandingan dengan Google Kubernete Engine dan beberapa catatan berdasarkan pengalaman dengan berbagai aplikasi dari kecil hingga sangat besar. Untuk poin lebih lanjut lihat dokumentasi Google Cloud Platform deskripsi tingkat tinggi fitur di App Engine Standard dan Flex di halaman Memilih Lingkungan Mesin App . Untuk perbandingan lain penerapan App Engine dan Kubernetes lihat pos oleh Daz Wilkin App Engine Flex atau Kubernetes Engine .
App Engine Standard
Pro
Cons
App Engine Flex
Pro
Cons
Mesin Google Kubernetes
Pro
Cons
Hitung Mesin
Pro
Cons
Seperti yang dijelaskan sebelumnya, Google Compute Engine (GCE) adalah Infrastruktur sebagai layanan (IaaS) sementara Google App Engine (GAE) adalah Platform as a Service (PaaS). Anda dapat memeriksa diagram berikut untuk memahami perbedaannya dengan cara yang lebih baik (Diambil dari dan dijelaskan lebih baik di sini ) -
Google Compute Engine
GCE adalah layanan penting yang disediakan oleh Google Cloud Platform (GCP) karena sebagian besar layanan GCP menggunakan instance GCE (VM) di bawah lapisan manajemen (tidak yakin mana yang tidak). Ini termasuk App Engine, Cloud Function, Engine Kubernetes (Mesin Container Sebelumnya), Cloud SQL, dll. Mesin virtual GCE adalah unit yang paling dapat disesuaikan di sana dan karenanya hanya boleh digunakan ketika aplikasi Anda tidak dapat berjalan pada layanan GCP lainnya. Sebagian besar waktu orang menggunakan GCE untuk mentransfer aplikasi On-Prem mereka ke GCP, karena itu membutuhkan perubahan minimal. Kemudian, mereka dapat memilih untuk menggunakan layanan GCP lainnya untuk komponen terpisah dari aplikasi mereka.
Google App Engine
GAE adalah layanan pertama yang ditawarkan oleh GCP (Jauh sebelum Google datang ke bisnis cloud). Ini otomatis dari 0 ke contoh tak terbatas (Menggunakan GCE di bawahnya). Itu datang dengan 2 rasa Lingkungan Standar dan Lingkungan Fleksibel.
Standar Lingkungan sangat cepat, turun ke 0 misalnya ketika tidak ada yang menggunakan aplikasi Anda, naik turun dalam hitungan detik dan telah mendedikasikan layanan Google dan perpustakaan untuk caching, otentikasi dll. Peringatan dengan lingkungan Standar adalah bahwa itu sangat ketat karena berjalan di kotak pasir. Anda harus menggunakan runtime yang dikelola hanya untuk bahasa pemrograman tertentu. Tambahan terbaru adalah Node.js (8.x) dan Python 3.x. Runtime lama tersedia untuk Go, PHP, Python 2.7, Java dll.
Lingkungan Fleksibel lebih terbuka karena memungkinkan Anda untuk menggunakan runtimes khusus karena menggunakan wadah buruh pelabuhan. Jadi jika runtime Anda tidak tersedia di runtimes yang disediakan, Anda selalu dapat membuat dockerfile Anda sendiri untuk lingkungan eksekusi. Peringatan dengan itu adalah, itu membutuhkan memiliki setidaknya 1 instance berjalan, bahkan jika tidak ada yang menggunakan aplikasi Anda, ditambah peningkatan atas dan ke bawah memerlukan beberapa menit.
Jangan bingung GAE fleksibel dengan Kubernetes Engine, karena yang terakhir menggunakan Kubernetes aktual dan menyediakan lebih banyak penyesuaian dan fitur. GAE Flex berguna ketika Anda menginginkan wadah stateless dan aplikasi Anda hanya mengandalkan protokol HTTP atau HTTPS. Untuk protokol lain, Kubernetes Engine (GKE) atau GCE adalah satu-satunya pilihan Anda. Periksa jawaban saya yang lain untuk penjelasan yang lebih baik.
App Engine memberi pengembang kemampuan untuk mengontrol inti Google Compute Engine, serta menyediakan ujung depan yang menghadap web untuk aplikasi pemrosesan data Google Compute Engine.
Di sisi lain, Compute Engine menawarkan manajemen sistem operasi langsung dan lengkap dari mesin virtual Anda. Untuk menyajikan Aplikasi Anda, Anda akan membutuhkan sumber daya, dan Google Cloud Storage sangat ideal untuk menyimpan aset dan data Anda, apa pun yang mereka gunakan. Anda mendapatkan akses data cepat dengan hosting di seluruh dunia. Keandalan dijamin pada 99,95% up-time, dan Google juga menyediakan kemampuan untuk membuat cadangan dan memulihkan data Anda, dan percaya atau tidak, penyimpanan tidak terbatas.
Anda dapat mengelola aset Anda dengan Google Cloud Storage, menyimpan, mengambil, menampilkan, dan menghapusnya. Anda juga dapat dengan cepat membaca dan menulis ke lembar data datar yang disimpan di Penyimpanan Cloud. Berikutnya dalam jajaran Google Cloud adalah BigQuery. Dengan BigQuery, Anda dapat menganalisis sejumlah besar data, kami berbicara jutaan catatan, dalam hitungan detik. Akses ditangani melalui antarmuka langsung, atau Representasi State Transfer, atau antarmuka REST.
Penyimpanan data, seperti yang Anda duga, bukan masalah, dan skala ke ratusan TB. BigQuery dapat diakses melalui sejumlah pustaka klien, termasuk yang untuk Java, .NET, Python, Go, Ruby, PHP, dan Javascript. Sintaks mirip SQL yang disebut NoSQL tersedia yang dapat diakses melalui pustaka klien ini, atau melalui antarmuka pengguna web. Terakhir, mari kita bicara tentang opsi basis data platform Google Cloud, Cloud SQL, dan Cloud Datastore.
Ada perbedaan besar. Cloud SQL untuk database relasional, terutama MySQL, sedangkan Cloud Datastore untuk database non-relasional menggunakan noSQL. Dengan Cloud SQL, Anda memiliki pilihan hosting di AS, Eropa, atau Asia, dengan 100 GB penyimpanan, dan 16 GB RAM per instance basis data.
Cloud Datastore tersedia tanpa biaya untuk instruksi baca / tulis hingga 50 K per bulan dan 1 GB data yang disimpan juga per bulan. Namun, ada biaya jika Anda melebihi kuota ini. App Engine juga dapat bekerja dengan anggota lain yang kurang dikenal, lebih bertarget anggota platform Google Cloud, termasuk Cloud Endpoints untuk membuat backend API, Google Prediction API untuk analisis data dan peramalan tren, atau Google Translate API, untuk output multibahasa.
Meskipun Anda dapat melakukan jumlah yang wajar dengan App Engine sendiri, Ini berpotensi meroket ketika Anda mempertimbangkan kemampuannya untuk bekerja dengan mudah dan efisien dengan sesama layanan platform Google Cloud.
Saya akan menjelaskannya dengan cara yang masuk akal bagi saya:
Compute Engine : Jika Anda orang yang melakukannya sendiri atau memiliki tim TI dan Anda hanya ingin menyewa komputer di cloud yang memiliki OS spesifik (misalnya linux), Anda menggunakan Compute Engine. Anda harus melakukan semuanya sendiri.
App Engine : Jika Anda (misalnya) seorang programmer python dan Anda ingin menyewa komputer pra-konfigurasi di cloud yang memiliki Linux dengan server web yang sedang berjalan dan python 3 terbaru dengan modul yang diperlukan dan beberapa plug-in untuk diintegrasikan dengan layanan eksternal lainnya, Anda menggunakan App Engine.
Serverless Container (Cloud Run) : Jika Anda ingin menggunakan gambar yang tepat dari lingkungan pengaturan lokal Anda (misalnya: python 3.7 + flask + sklearn) tetapi Anda tidak ingin berurusan dengan server, penskalaan, dll. Anda membuat wadah pada mesin lokal Anda (melalui buruh pelabuhan) dan kemudian menyebarkannya ke Google Run.
Serverless Microservice (Cloud Functions) : Jika Anda ingin menulis banyak API (fungsi) yang melakukan pekerjaan tertentu, Anda menggunakan Google Cloud Functions. Anda hanya fokus pada fungsi-fungsi spesifik itu, sisa pekerjaan (server, pemeliharaan, penskalaan, dll.) Dilakukan untuk Anda untuk mengekspos fungsi Anda sebagai layanan microser.
Ketika Anda masuk lebih dalam, Anda kehilangan fleksibilitas tetapi Anda tidak khawatir tentang aspek teknis yang tidak perlu. Anda juga membayar sedikit lebih banyak tetapi Anda menghemat waktu dan biaya (bagian TI): orang lain (google) melakukannya untuk Anda.
Jika Anda tidak peduli tentang penyeimbangan beban, penskalaan, dll., Penting untuk membagi aplikasi Anda menjadi sekelompok layanan web "stateless" yang menulis apa saja yang persisten di penyimpanan terpisah (basis data atau penyimpanan gumpalan). Kemudian Anda akan menemukan betapa hebatnya Cloud Run dan Cloud Functions.
Secara pribadi, saya menemukan Google Cloud Run solusi luar biasa, kebebasan mutlak dalam pengembangan (selama tanpa kewarganegaraan), mengeksposnya sebagai layanan web, meringkas solusi Anda, menyebarkannya dengan Cloud Run. Biarkan google menjadi IT dan DevOps Anda, Anda tidak perlu peduli tentang penskalaan dan pemeliharaan.
Saya telah mencoba semua opsi lain dan masing-masing bagus untuk tujuan yang berbeda tetapi Google Run sangat mengagumkan. Bagi saya, ini adalah serverless nyata tanpa kehilangan fleksibilitas dalam pengembangan.
Layanan cloud menyediakan berbagai opsi dari layanan yang dikelola sepenuhnya hingga yang kurang terkelola. Layanan yang kurang terkelola memberi lebih banyak kontrol kepada pengembang. Hal yang sama adalah perbedaan dalam mesin Compute dan App juga. Gambar di bawah ini menjelaskan lebih lanjut tentang hal ini
Mesin Virtual (VMs) yang dihosting di cloud. Sebelum cloud, ini sering disebut Virtual Private Server (VPS). Anda akan menggunakan ini dengan cara yang sama Anda akan menggunakan server fisik, di mana Anda menginstal dan mengkonfigurasi sistem operasi, menginstal aplikasi Anda, menginstal database, menjaga OS tetap up-to-date, dll. Ini dikenal sebagai Infrastruktur- as-a-Service (IaaS).
VM sangat berguna ketika Anda memiliki aplikasi yang sudah berjalan di VM atau server di pusat data Anda, dan ingin memigrasikannya dengan mudah ke GCP.
App Engine meng-host dan menjalankan kode Anda, tanpa mengharuskan Anda berurusan dengan sistem operasi, jaringan, dan banyak hal lain yang harus Anda kelola dengan server fisik atau VM. Anggap saja sebagai runtime, yang secara otomatis dapat menyebarkan, versi, dan skala aplikasi Anda. Ini disebut Platform-as-a-Service (PaaS).
App Engine paling berguna ketika Anda menginginkan penyebaran otomatis dan penskalaan otomatis aplikasi Anda. Kecuali jika aplikasi Anda memerlukan konfigurasi OS kustom, App Engine seringkali lebih menguntungkan daripada mengkonfigurasi dan mengelola VM secara manual.