[ID] GCP Associate Cloud Engineer - Planning and configuring a cloud solution
![[ID] GCP Associate Cloud Engineer - Planning and configuring a cloud solution](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2F9AqIdzEc9pY%2Fupload%2F023ea0f360d70c86bc0c09ca6db181a3.jpeg&w=3840&q=75)
GCP Cloud Services
Compute
Compute Engine: Ini layanan VM-nya GCP yang masuk kategori IaaS. Cocok digunakan jika kita ingin punya kontrol penuh atas resource ini. Misalnya seberapa besar resourcenya, pakai CPU apa, pilih OS sesuai kebutuhan, mau diinstall apa, kapan harus dibackup, kapan harus diupgrade, dan aktivitas lainnya. Downside-nya adalah karena layanannya masih cukup mentah, kita harus paham dengan hal seputar administrasi server.
Kelebihan lainnya adalah adanya opsi Spot VM yang memberikan diskon 60-91% dari harga VM biasa. Konsekuensinya adalah VM tersebut bisa kapan saja distop atau didelete oleh GCP. Cocok untuk fault-tolerant workload dan batch processing yang mungkin cuma butuh waktu sebentar untuk bekerja.
Kubernetes Engine: Dipakai untuk ngejalanin banyak container diatas Kubernetes cluster yang berjalan diatas banyak VM. GCP akan nge-handle resource provisioning, node autoscaling, health check, dan replace unhealthy server secara otomatis. Intinya, nge-maintain Kubernetes cluster bakal lebih mudah kalau pakai GKE daripada langsung manage lewat Compute Engine. Sebenarnya GKE juga menggunakan Compute Engine di belakang layar sebagai worker nodenya.
App Engine: Ini layanan PaaS dari GCP. App Engine memudahkan developer untuk menjalankan aplikasinya tanpa ribet urusan server. Sebenarnya tetep pakai Compute Engine di balik layar, tapi urusan administrasi server, konfigurasi, dan network hardeningnya sudah dihandle GCP. Jadi pricingnya ngga jauh-jauh dari Compute Engine. AFAIK konsep kasarnya kayak Heroku atau Vercel yang sama-sama PaaS tapi versi lebih powerfull. Atau mirip kayak AWS ElasticBeanstalk. Ada 2 tipe App Engine:
Standard Environment: App yang udah kita buat akan dijalankan di dalam language-specific container yang disupport GCP seperti Java, Go, Node.js, PHP, Python, dan Ruby. Jadi kalo kita butuh selain itu, bisa pilih Flexible environment yang mendukung custom runtime. Standard Environment cocok dipakai jika app kita ngga butuh OS packages atau software tambahan untuk menjalankan appnya.
Flexible Environment: Beda dengan standard environment yang punya language constraint. Flexible environment bisa menjalankan Python, Java, Node.js, Go, Ruby, PHP, .NET, dan any software that can service HTTP requests (custom runtime). Bisa specify custom Dockerfile juga.
Cloud Function: Layanan serverless untuk menjalankan sebuah function yang melakukan satu. Cocok digunakan untuk event-driven processing, lightweight computing, atau execute short-running code. In my opinion, ini mirip kayak AWS Lambda. Salah satu use-case Cloud Function adalah ketika sebuah object diupload ke Cloud Storage, maka sebuah Cloud Function akan dipanggil untuk melakukan sesuatu. Misalnya membuat thumbnail, memproses object tadi, dan lain-lain. Function mensupport Node.js, Python, Go, Java, Ruby, PHP, dan .Net.
Storage
Block Storage itu storage mentah semacam hard drive di komputer yang masih kosong dan belum ada filesystemnya. Masih perlu diolah sebentar agar bisa digunakan. Karena masih mentah, kita bisa bebas pilih filesystem (misal ext4, xfs, dst.), diatur kayak gimana (misal partisi, size, dst.), dan dipakai untuk apa (misal diinstall OS, backup storage, dst.).
Object Storage itu layanan penyimpanan file yang udah siap pakai. Paling sering dipakai untuk menyimpan file yang diupload dari suatu aplikasi baik mobile, desktop, maupun web. Di sini file disebut dengan Object. Setiap Object akan dikumpulkan dalam suatu Bucket dan bisa diakses menggunakan suatu URL yang unik. Layanan ini Serverless, jadi gak perlu manage server dan software storagenya. Object Storage bisa diakses dari banyak VM.
File Storage itu layanan network shared file systems (sorry, agak bingung jelasin gampangnya gimana). Jadi pakai protokol NFS untuk nge-akses filenya. File Storage juga udah siap pakai. Tinggal memastikan sistem kita sudah support NFS. Tipe storage ini bisa diakses oleh banyak VM dalam waktu bersamaan.
Cloud Storage (GCS): Layanan Object Storage di GCP seperti layanan S3 di AWS. Hak akses ke file dan bucket bisa diatur lewat IAM. Cloud Storage cocok digunakan untuk menyimpan semua jenis file seperti gambar, video, dokumen, dan lain-lain. Contoh use-casenya adalah sebuah perusahaan dapat menggunakannya untuk menyimpan foto dan video yang sudah diupload oleh pengguna lewat aplikasi yang dibuat perusahaan itu.
Persistent Disk (PD): Layanan Block Storage di GCP. Ada pilihan SSD dan HDD. Yang menarik adalah PD bisa dipasang ke banyak VM sekaligus. Maksimal kapasitas PD adalah 64TB. Ukurannya bisa di-resize tanpa downtime seperti di artikel ini.
Cloud Storage for Firebase: Object storage khusus untuk aplikasi yang terintegrasi dengan Firebase. Cocok digunakan untuk upload dan download di aplikasi mobile yang jaringannya sering ngadat karena punya mekanisme recovery khusus. Sebenarnya pakai GCS di balik layar. Dia juga udah terintegrasi dengan Firebase Auth.
Cloud Filestore: Layanan File storage yang bisa diakses (read-write) di banyak VM sekaligus pakai protocol NFS. Maksimal kapasitas Filestore adalah 100 TB, throughputnya 25 GB/s, dan IOPS-nya 920K.
Database
Cloud SQL: Layanan RDBMS dari GCP. Support MySQL, PostgreSQL, dan SQL server. Banyak fitur untuk mengelola RDBMS seperti backup, patching, network configuration, monitoring, replication, failover, dan lain-lain. Cocok digunakan untuk mempermudah proses pengelolaan RDBMS dibanding menjalankannya di VM biasa.
Cloud Spanner: Layanan RDBMS tapi globally scalable dan support standar SQL ANSI 2011.
Cloud Bigtable: Layanan NoSQL jenis wide-column database yang didesain untuk mengelola database skala besar. Di soal latihan GCP ACE, biasanya dia dipakai untuk menerima dan menyimpan data dari ratusan sensor IoT dengan aktivitas write yang kecil-kecil tapi banyak banget. Atau bisa juga untuk real-time analytics.
Cloud Datastore: Layanan NoSQL jenis document database. Dia otomatis ngehandle sharding dan replikasi serta support transaction, index, dan query seperti SQL. Beberapa use-casenya adalah katalog produk yang menampilkan detail produk secara real-time dan user profile di suatu aplikasi yang personally customized berdasarkan aktivitas user dan preferensinya. Datastore beda dengan Bigtable dimana Bigtable lebih cocok digunakan untuk aktivitas read/write yang banyak dan bersamaan dengan latensi kecil.
Cloud Firestore: Next generation-nya Datastore dan Google lebih menyarankan menggunakan ini (beda dengan Filestore ya!). Firestore itu lebih modern dan scalable dibanding Datastore serta kompatibel dengan MongoDB.
Cloud Memor**y**store: Layanan serverless dan full-managed in-memory database seperti Redis, Valkey, dan Memcache. Datanya disimpen di memory (kayak RAM) jadi bisa diakses jauh lebih cepat dibanding dari hard drive. Cocok untuk nge-cache data yang sering diakses biar nggak membebani server databasenya. Full-managed itu artinya masalah scalability, high availability, patching, dan failover udah dihandle GCP sendiri.
Networking
Virtual Private Cloud (VPC): Layanan networking yang memungkinkan kita mendesain network data center kita sendiri seperti alokasi IP, subnetting, firewall, dan lain-lain.
Cloud Load Balancing: Mendistribusikan workload di dalam suatu region maupun globally antar region. Dia juga menyediakan fitur autoscaling dan auto-repair ketika ada server yang bermasalah. LB mendukung protokol HTTP, HTTPS, TCP, dan UDP.
Cloud Armor: Layanan network security berupa DDoS protection dan WAF.
Cloud CDN: Layanan Content Delivery Network (CDN) yang mempercepat akses suatu konten dari mana saja.
Cloud Interconnect: Layanan untuk menyambungkan jaringan kita ke data center GCP secara langsung. Jadi dipakai kalau kita punya data center sendiri dan ingin nyambung secara fisik (kabel nyambung) ke data center GCP. Ini sebutannya adalah Direct Interconnect. Nah kalau gak bisa nyambung secara fisik, maka pilih Partner Interconnect dimana akan ada ISP perantara yang menghubungkan kita dengan GCP. Interconnect cocok digunakan kalau kita butuh koneksi yang low latency & high bandwidth ke resource yang ada di GCP.
Cloud DNS: Ya layanan DNS sih, kayak Route53 di AWS. Memungkinkan kita untuk memanage record DNS dari domain yang kita kelola.
![[EN] Set Up Amazon ECR Pull-Through Cache for Docker Hub](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F631dd8693e8d6f3497ad63e7%2F1ca35a5a-6303-4a86-badb-91961cf65694.jpg&w=3840&q=75)
![[EN] Track progress of MySQL Import/Export process using PV](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2Fjf1EomjlQi0%2Fupload%2Fa7ee07f61c1dc2ad71b4cf2bb4523765.jpeg&w=3840&q=75)
![[EN] Lesson learned from using the wrong AWS ElastiCache Redis endpoint](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2FemolMCqnKfg%2Fupload%2Fc7eb8197eb9ef632459ae6612b861cc6.jpeg&w=3840&q=75)
![[EN] My experience taking the KCNA certification](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2FKXwPJtAJLfU%2Fupload%2F3deba4b52e1b8e442179a495944ccb9e.jpeg&w=3840&q=75)
![[EN] How I Stopped Copy-Pasting AWS EC2 IPs and Started SSHing Smarter](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2FDXRP2PKlsFQ%2Fupload%2F8767e91ce57fa7ff90bca9149c142626.jpeg&w=3840&q=75)