Lewati ke konten utama

Cloud Run: Panduan untuk Mendeploy Aplikasi Terkontainer di GCP

Pelajari tentang Cloud Run dan kasus penggunaannya, lalu ikuti panduan langkah demi langkah kami dan luncurkan instance pertama Anda.
· 9 mnt Baca

Jelajahi bersama AI

Cloud Run adalah platform serverless terkelola penuh milik Google Cloud yang memungkinkan Anda mendeploy aplikasi tanpa harus memikirkan pengelolaan infrastruktur. Platform ini sangat fleksibel, dan pilihan tepat untuk berbagai proyek, mulai dari hobi hingga tingkat enterprise.

Dalam artikel ini, saya akan mengulas apa itu Cloud Run, cara kerjanya, kasus penggunaan yang dapat dipecahkan, dan bagaimana perbandingannya dengan solusi serverless lainnya. Saya juga akan menunjukkan langkah demi langkah cara mendeploy aplikasi Cloud Run pertama Anda!

Dan sebelum Anda mulai: Jika Anda benar-benar baru di komputasi awan, saya sarankan mengikuti kursus Introduction to Cloud Computing kami. Kursus ini menguraikan dasar-dasar cloud, menjelaskan istilah kunci seperti skalabilitas dan latensi, serta membahas keunggulan alat cloud dari penyedia seperti GCP.

Apa itu Cloud Run? 

Cloud Run adalah platform eksekusi kontainer serverless yang memungkinkan Anda mendeploy aplikasi tanpa perlu khawatir tentang pengelolaan infrastruktur. 

Dengan deployment berbasis server tradisional, Anda biasanya harus menyediakan dan memelihara mesin virtual. Cloud Run bekerja sedikit berbeda, dengan mengabstraksi semua itu untuk menawarkan lingkungan yang sepenuhnya terkelola. 

Ini dibangun di atas Knative (platform open-source berbasis Kubernetes yang mengaktifkan beban kerja serverless), artinya aplikasi Anda melakukan penskalaan otomatis berdasarkan permintaan. Ketika trafik meningkat, Cloud Run menyalakan lebih banyak instance untuk menanganinya. Saat trafik turun, ia menskalakan turun. Bahkan bisa hingga nol, sehingga Anda tidak membayar apa pun saat aplikasi Anda tidak aktif berjalan.

Cloud Run hemat biaya, tetapi juga sangat fleksibel. Anda dapat mendeploy aplikasi yang ditulis dalam bahasa apa pun dan menggunakan framework atau biner apa pun, selama berjalan di dalam kontainer. Anda bisa bekerja dengan teknologi umum seperti Node.js, Python, Go, Java, atau yang lebih jarang. Secara praktis, itu berarti Cloud Run dapat menjalankan layanan backend, API, beban kerja AI, aplikasi web, dan bahkan pekerjaan batch terjadwal. 

Itu tadi sekilas gambaran. Mari kita selami lebih dalam fitur-fitur utama Cloud Run.

Fitur Utama Cloud Run

Kita baru menyebutkan beberapa, namun berikut rangkuman lengkap fitur utama Cloud Run.

Agnostik bahasa dan framework

Salah satu keunggulan terbesar Cloud Run adalah tidak mengunci Anda pada bahasa atau framework tertentu. Selama aplikasi Anda berjalan di dalam kontainer, Anda bisa mendeploy-nya. Jika Anda adalah tim dengan tumpukan teknologi beragam, Anda bisa menggunakan Cloud Run di semua layanan Anda. Satu alat untuk semuanya!

Penskalaan otomatis

Cloud Run melakukan penskalaan horizontal dan dinamis berdasarkan trafik. Jika aplikasi Anda menerima lebih banyak permintaan, Cloud Run otomatis menyalakan lebih banyak instance. Ketika permintaan turun, ia menskalakan turun, bahkan hingga nol jika diperlukan.

Keamanan dan kepatuhan bawaan

Cloud Run hadir dengan HTTPS otomatis untuk semua layanan yang dideploy, identitas layanan yang dikelola Google untuk autentikasi aman, konektivitas VPC untuk jaringan privat, serta sertifikasi kepatuhan bawaan seperti SOC 2, ISO 27001, dan HIPAA (untuk aplikasi kesehatan). Intinya, Anda berada di tangan yang tepat.

Integrasi dengan layanan Google Cloud

Karena Cloud Run adalah bagian dari ekosistem Google Cloud, ia bekerja mulus dengan layanan GCP lainnya. Anda dapat dengan mudah menghubungkannya ke Cloud SQL untuk basis data, melakukan streaming data dengan Pub/Sub, menyimpan file di Cloud Storage, atau menggunakannya bersama BigQuery, Firebase, dan layanan AI/ML.

Dukungan GPU on-demand

Untuk beban kerja AI, Cloud Run kini menawarkan dukungan GPU on-demand. Ini peningkatan besar untuk inferensi machine learning, pemrosesan video, dan komputasi ilmiah, karena memungkinkan Anda menjalankan beban kerja yang dipercepat GPU tanpa mengelola perangkat keras di belakangnya.

Cloud Run Functions: Model Function-as-a-Service (FaaS)

Jika Anda tidak ingin mengelola kontainer penuh, Cloud Run Functions menyediakan cara yang disederhanakan dan berbasis event untuk menjalankan fungsi kecil dengan satu tujuan. Ini mirip dengan AWS Lambda atau Google Cloud Functions tetapi berjalan di infrastruktur Cloud Run.

Cara Kerja Cloud Run: Langkah demi Langkah

Di bagian ini, saya akan memandu Anda mendeploy aplikasi sederhana ke Cloud Run. Saya akan membimbing proses mengontainerisasi aplikasi Anda, mendeploy-nya ke Cloud Run, dan melakukan penskalaan otomatis berdasarkan permintaan.

Kita akan menggunakan Docker untuk mengontainerisasi aplikasi, tetapi itu tidak wajib. Lebih lanjut tentang ini di akhir.

Langkah 1: Siapkan lingkungan Anda

Sebelum mendeploy apa pun, Anda perlu memasang alat-alat berikut:

  1. Google Cloud SDK: Ini adalah antarmuka baris perintah (CLI) yang memungkinkan Anda berinteraksi dengan layanan Google Cloud, termasuk Cloud Run. Anda dapat memasangnya dari sini.
  2. Docker: Jika aplikasi Anda belum dikontainerisasi, Anda memerlukan Docker untuk mengemas aplikasi Anda. Pasang Docker dari sini.
  3. Proyek Google Cloud: Pastikan Anda memiliki proyek Google Cloud. Anda dapat membuatnya dari Google Cloud Console.

Langkah 2: Tulis kode aplikasi Anda

Sekarang, mari kita tulis aplikasi Node.js sederhana “Hello World”.

Buat direktori untuk aplikasi Anda:

mkdir hello-world-app
cd hello-world-app

Buat file index.js di dalam direktori dengan konten berikut:

const http = require('http');

const requestListener = (req, res) => {
    res.writeHead(200);
    res.end('Hello, Cloud Run!');
};

const server = http.createServer(requestListener);
server.listen(8080, () => {
    console.log('Server is running on port 8080');
});

Buat package.json untuk mendefinisikan dependensi aplikasi Anda:

{
    "name": "hello-world-app",
    "version": "1.0.0",
    "main": "index.js",
    "dependencies": {}
}

Sekarang aplikasi siap, kita lanjut ke proses mengontainerisasinya.

Langkah 3: Mengontainerisasi aplikasi

Buat Dockerfile untuk mendefinisikan image kontainer

Di direktori proyek Anda, buat file bernama “Dockerfile” dengan konten berikut:

# Use the official Node.js image as a base
FROM node:16-alpine

# Set the working directory inside the container
WORKDIR /usr/src/app

# Copy package.json and install dependencies (if any)
COPY package*.json ./

# Copy the rest of the application code
COPY . .

# Expose port 8080 for Cloud Run
EXPOSE 8080

# Start the app
CMD ["node", "index.js"]

Build image Docker

Jalankan perintah berikut untuk membangun image Docker Anda:

docker build -t gcr.io/your-project-id/hello-world-app .

Catatan: Ganti your-project-id dengan ID proyek Google Cloud Anda.

Uji image secara lokal

Anda dapat menguji kontainer Docker secara lokal dengan menjalankan:

docker run -p 8080:8080 gcr.io/your-project-id/hello-world-app

Kunjungi http://localhost:8080 di browser Anda untuk memastikan aplikasi berjalan.

Langkah 4: Push image ke Google Artifact Registry

Aktifkan Artifact Registry untuk proyek Anda

Jika Anda belum mengaktifkan Artifact Registry, jalankan perintah berikut

gcloud services enable artifactregistry.googleapis.com

Catatan: Anda perlu mengaktifkan penagihan untuk menyelesaikan langkah ini!

Buat repositori di Artifact Registry

Buat repositori Docker baru di Artifact Registry:

gcloud artifacts repositories create hello-world-repo \
--repository-format=docker \
--location=us-central1

Autentikasi Docker ke Artifact Registry

Konfigurasikan Docker untuk melakukan autentikasi dengan Artifact Registry:

gcloud auth configure-docker us-central1-docker.pkg.dev

Tag image Docker untuk Artifact Registry

Tag image Docker Anda dengan URL repositori Artifact Registry:

docker tag gcr.io/your-project-id/hello-world-app us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app

Push image ke Artifact Registry

Push image Docker yang sudah ditag ke repositori Artifact Registry Anda:

docker push us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app

Langkah 5: Deploy ke Cloud Run

Setelah image Anda dipush ke Artifact Registry, Anda dapat mendeploy-nya ke Cloud Run langsung dari Artifact Registry.

Deploy image Anda ke Cloud Run menggunakan perintah berikut:

gcloud run deploy hello-world-app \
--image us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app \
--platform managed \
--region us-central1 \
--allow-unauthenticated
  • hello-world-app: Ini adalah nama layanan Cloud Run Anda.
  • us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app: URL untuk image Anda yang disimpan di Artifact Registry.
  • --platform managed: Memastikan deployment menggunakan platform terkelola penuh Cloud Run (bukan klaster GKE).
  • --region us-central1: Tentukan region tempat Cloud Run harus mendeploy layanan.
  • --allow-unauthenticated: Mengizinkan akses publik ke layanan. Jika Anda memerlukan akses terbatas, Anda dapat menyesuaikan flag ini.

Setelah menjalankan perintah ini, Cloud Run akan mendeploy aplikasi terkontainer Anda dan memberikan URL untuk mengaksesnya.

Dan kita selesai! Lihat di konsol GCP, Anda seharusnya melihat instance baru Anda.

Langkah 6: Pembersihan

Untuk menghindari biaya berkelanjutan, pastikan menghapus layanan Anda setelah selesai melakukan pengujian.

1. Hapus layanan Cloud Run

Jalankan perintah berikut untuk menghapus layanan Cloud Run yang telah dideploy:

gcloud run services delete hello-world-app --region us-central1

Ini akan menghapus instance Cloud Run tetapi tidak menghapus image kontainer.

2. Hapus image di Artifact Registry

Untuk menghapus image dari Artifact Registry, pertama-tama daftar image:

gcloud artifacts docker images list us-central1-docker.pkg.dev/your-project-id/hello-world-repo

Lalu, hapus image dengan:

gcloud artifacts docker images delete us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app --delete-tags

Sekarang Artifact Registry Anda juga sudah bersih.

3. Hapus repositori Artifact Registry (jika sudah tidak diperlukan)

Jika Anda ingin benar-benar menghapus repositori Artifact Registry, jalankan:

gcloud artifacts repositories delete hello-world-repo --location=us-central1

Langkah ini hanya diperlukan jika Anda benar-benar sudah selesai dengan repositori tersebut, jika tidak, Anda dapat menggunakannya kembali untuk deployment di masa depan.

4. (Opsional) Hapus proyek Google Cloud

Jika ini adalah proyek uji dan Anda tidak lagi membutuhkannya, Anda dapat menghapus seluruh proyek untuk menghapus semua resource terkait:

gcloud projects delete your-project-id

Deployment dari source

Ingat saat saya mengatakan Anda tidak selalu harus mengontainerisasi aplikasi secara manual?

Cloud Run kini mendukung deployment dari source, yang berarti dapat membangun kontainer untuk Anda dari kode sumber menggunakan Cloud Build.

Anda dapat menggunakan perintah:

gcloud run deploy hello-world-app \
--source . \
--region us-central1 \
--allow-unauthenticated

Cloud Build secara otomatis mendeteksi bahasa aplikasi Anda (Node.js, Python, Go, Java, dll.), membangun image kontainer untuk Anda dan menyimpannya di Artifact Registry. Cloud Run kemudian mendeploy image yang dibangun seolah-olah Anda membuat kontainer secara manual. Saya sangat merekomendasikan menggunakan ini untuk aplikasi sederhana dengan bahasa yang didukung (Node.js, Python, Go, Java, dll.), tetapi tidak jika Anda memerlukan kontrol penuh atas kontainer (misalnya, dependensi kustom, penyesuaian level OS, build multi-langkah).

Tips Menggunakan Cloud Run secara Efisien

Baik, mendeploy aplikasi ke Cloud Run cukup mudah, tetapi membuatnya berjalan efisien membutuhkan sedikit penyetelan. Saya melalui fase coba-coba saat pertama kali menggunakannya, dan berikut yang saya pelajari:

1. Cold start itu nyata

Terutama jika Anda bekerja dengan image kontainer yang besar. Semakin kecil image Anda, semakin cepat layanan Anda menyala. Menggunakan base image minimal seperti distroless dapat membuat perbedaan besar. Jika Anda membangun aplikasi Python, coba gunakan versi slim dari image resmi. Atau jika Anda tidak terlalu mempermasalahkan biaya, setel jumlah instance minimum ke 1.

2. Variabel terbaik untuk diutak-atik adalah jumlah concurrency permintaan

Cloud Run memungkinkan setiap instance menangani beberapa permintaan secara bersamaan, tetapi default (80 permintaan per kontainer) sering kali bukan jumlah yang optimal. Untuk tugas intensif CPU, saya menemukan bahwa menurunkan concurrency ke 1 atau 2 membuat semuanya jauh lebih mulus. Sebaliknya, API biasanya dapat menangani angka yang lebih tinggi. Semakin tinggi angkanya, semakin sedikit jumlah instance yang Anda butuhkan, dan karenanya semakin kecil biaya yang Anda bayar, jadi sangat layak bereksperimen dengan berbagai nilai untuk menemukan titik manis bagi aplikasi Anda.

3. Tetapkan batas instance Anda!

Sangat membantu ketika seseorang (saya) memutuskan untuk melakukan uji beban dan memulai jumlah permintaan yang konyol. Saya sudah belajar dari kejadian itu agar Anda tidak perlu mengalaminya. Tolong setel jumlah maksimum instance Anda.

4. Pastikan orang yang tepat dapat mengakses instance Anda

Secara default, layanan Cloud Run dapat diakses oleh siapa pun yang memiliki URL, yang bagus untuk demo cepat tetapi tidak untuk produksi. Jika aplikasi Anda tidak ditujukan untuk publik, kunci aksesnya dengan izin IAM. 

5. Cloud Logging dan Cloud Trace akan menjadi sahabat Anda

Jika, seperti saya, Anda cenderung men-debug masalah dengan SSH ke mesin virtual, Anda akan kecewa. Log Cloud Run dialirkan langsung ke dasbor Google Cloud, sehingga Anda dapat melihat semuanya di sana. Pastikan Anda menambahkan logging terstruktur ke aplikasi Anda, itu akan membuat pemecahan masalah jauh lebih mudah.

Kasus Penggunaan Cloud Run

Kita telah membahas beberapa kasus penggunaan Cloud Run, seperti menjalankan aplikasi web, API, atau cron job, tetapi jelas masih banyak lagi.

Analisis video dan gambar

Anda dapat mendeploy model pengenalan gambar untuk memproses gambar yang diunggah secara real-time untuk platform media sosial, atau menjalankan tugas transkoding video saat video diunggah. Cloud Run dapat menangani lonjakan permintaan (seperti konten viral) dengan penskalaan otomatis, sekaligus memastikan efisiensi biaya saat permintaan rendah.

Analisis video dan gambar

Sumber: Google Cloud

Pemrosesan stream real-time

Bayangkan Anda membangun sistem yang memantau perilaku pengguna di marketplace online. Dengan memproses event stream dari Pub/Sub atau BigQuery, Anda dapat langsung memicu tindakan berdasarkan aktivitas pengguna, seperti mengirim notifikasi push atau menganalisis tren secara real time. Cloud Run secara otomatis menskalakan naik untuk menangani event masuk saat periode puncak dan menskalakan turun ketika volume stream menurun.

Pemrosesan stream real-time

Sumber: Google Cloud

Pemrosesan file real-time

Salah satu kasus penggunaan adalah analisis file log real-time untuk perusahaan besar. Setiap kali file log diunggah ke Cloud Storage, Cloud Run dapat memicu kontainer untuk mengurai file, menjalankan analisis, dan menyimpan hasilnya, sambil menskalakan secara dinamis berdasarkan ukuran file dan kompleksitas tugas pemrosesan.

Pemrosesan file real-time

Sumber: Google Cloud

Backend IoT tanpa server

Cloud Run ideal untuk menangani layanan backend untuk aplikasi IoT. Misalnya, dalam solusi IoT yang melacak data lingkungan dari ribuan sensor, Cloud Run dapat memproses data masuk dari setiap perangkat secara real-time.

Backend IoT tanpa server

Sumber: Google Cloud

Harga Google Cloud Run 

Cloud Run mengikuti model pay-as-you-go, artinya Anda hanya membayar resource komputasi yang digunakan saat aplikasi Anda aktif berjalan. Ketika aplikasi Anda tidak menangani permintaan, ia dapat menskalakan turun hingga nol, yang berarti Anda tidak membayar biaya yang tidak perlu.

Rincian Harga

Per Maret 2025, Cloud Run menagih berdasarkan dua faktor utama:

ResourceBiayaGratis
CPU$0.000018 per vCPU-detik240.000 vCPU-detik/bulan
Memori$0.000002 per GiB-detik450.000 GiB-detik/bulan

Harga ini untuk penagihan berbasis instance, tetapi berbeda untuk penagihan berbasis permintaan. Harga di atas dan kuota gratis juga sedikit berbeda tergantung region Anda, jadi periksa halaman resmi Google Cloud untuk angka pasti. Mereka memiliki kalkulator harga untuk membantu Anda memperkirakan biaya, dan juga menawarkan diskon untuk komitmen penggunaan.

Sedikit tips: Trafik dengan layanan Google Cloud lain di region yang sama gratis, jadi cobalah menggunakan Cloud Storage, Cloud SQL, atau Pub/Sub alih-alih layanan eksternal untuk pertukaran data.

Cloud Run vs. Cloud Run Functions 

Google menawarkan dua opsi komputasi serverless: Cloud Run dan Cloud Run Functions (sebelumnya Cloud Functions). Keduanya memungkinkan Anda menjalankan kode tanpa mengelola infrastruktur, tetapi ada sedikit perbedaan.

FiturCloud RunCloud Functions
Model EksekusiMenjalankan aplikasi terkontainer penuhMenjalankan fungsi individual (model FaaS)
Kontrol RuntimeBahasa apa pun, framework apa pun, biner kustomRuntime yang telah ditentukan (Node.js, Python, Go, dll.)
StateStateless, tetapi dapat mempertahankan koneksi dalam satu permintaanStateless, dirancang untuk beban kerja berbasis event
PenskalaanSkala per instance kontainerSkala per pemanggilan fungsi
PemicuPermintaan HTTP, Pub/Sub, berbasis eventBerbasis event (Pub/Sub, Cloud Storage, HTTP, dll.)
Cold StartMinimal dengan instance yang dipanaskan sebelumnyaDapat memiliki jeda yang terlihat saat penskalaan
Terbaik UntukAPI, microservices, layanan backend, beban kerja AIFungsi ringan berbasis event, automasi

Kapan Menggunakan Cloud Run

  • ✅ Anda memerlukan kontrol penuh atas runtime dan dependensi.
  • ✅ Anda menjalankan layanan web, API, atau microservice yang menangani permintaan persisten.
  • ✅ Anda ingin mendeploy aplikasi terkontainer yang sudah ada dengan modifikasi minimal.
  • ✅ Anda memerlukan pemrosesan latar belakang atau tugas jangka panjang (seperti inferensi AI, pekerjaan batch).

Kapan Menggunakan Cloud Run Functions

  • ✅ Anda menginginkan fungsi sederhana berbasis event yang terpicu oleh event seperti pesan Pub/Sub atau unggahan Cloud Storage.
  • ✅ Anda menangani operasi berumur pendek seperti mengirim notifikasi, memproses pekerjaan kecil, atau mentransformasi data.
  • ✅ Anda tidak ingin mengelola kontainer dan lebih memilih runtime siap pakai untuk JavaScript, Python, Go, dll.

Anda tidak harus memilih salah satu saja, Anda bisa menggunakan keduanya bersama! Misalnya, backend Cloud Run Anda dapat memicu Cloud Run Functions untuk tugas spesifik seperti mengirim email atau memproses gambar secara asinkron.

Perbandingan dengan Layanan Google Cloud Lain

Kita telah membandingkan Cloud Run dan Cloud Run Functions cukup mendalam, tetapi ada beberapa layanan Google Cloud lain yang patut disebutkan di sini: GKE dan App Engine.

FiturCloud RunGoogle Kubernetes Engine (GKE)App Engine
Jenis PengelolaanServerless terkelola penuhKlaster Kubernetes yang dikelola sendiriPlatform-as-a-service terkelola penuh
PenskalaanPenskalaan otomatis, hingga turun ke nolPenskalaan manual atau otomatis via KubernetesPenskalaan otomatis (tetapi tidak hingga nol)
DeploymentMendeploy kontainer (bahasa apa saja)Mendeploy kontainer via KubernetesMendeploy kode (runtime tertentu didukung)
Kasus PenggunaanAPI, microservices, aplikasi web, pekerjaan batch, AIAplikasi kompleks, microservices skala besar, beban kerja MLAplikasi web, backend mobile, API
Bahasa yang DidukungApa saja (berbasis kontainer)Apa saja (berbasis kontainer)Runtime tertentu yang didukung

Tentu ada lebih banyak nuansa di sini, tetapi singkatnya: Jika Anda memerlukan solusi terkontainer yang sepenuhnya terkelola dengan penskalaan otomatis dan fleksibilitas, pilih Cloud Run. Jika Anda membangun aplikasi web dengan konfigurasi minimal, pilih App Engine. Dan jika Anda menginginkan kontrol penuh atas klaster Kubernetes untuk aplikasi berskala besar dan kompleks, pilih GKE.

Kesimpulan

Sekarang setelah Anda mengetahui semuanya tentang Cloud Run, cobalah meluncurkan instance pertama Anda atau lihat layanan Google Cloud lainnya untuk menemukan tingkat kontrol dan automasi yang tepat untuk Anda!

FAQ Cloud Run

Bagaimana cara menangani koneksi database di Cloud Run?

Anda dapat menggunakan Cloud SQL Auth Proxy, mengaktifkan connection pooling (misalnya, PgBouncer untuk PostgreSQL), atau menggunakan database serverless seperti Firestore untuk menghindari batasan koneksi.

Bisakah saya menggunakan domain kustom dengan Cloud Run?

Ya. Atur di konsol Cloud Run pada Kelola Domain Kustom, verifikasi kepemilikan, dan perbarui catatan DNS. SSL disediakan secara otomatis.

Apakah Cloud Run mendukung WebSocket dan koneksi jangka panjang?

Bisa, tetapi instance dapat dimatikan jika idle. Untuk mempertahankan koneksi, setel minimum instance atau gunakan Pub/Sub untuk komunikasi berbasis event.

Bisakah Cloud Run menangani pekerjaan latar belakang?

Tidak secara langsung, karena berbasis permintaan. Gunakan Cloud Tasks, Pub/Sub, atau Workflows untuk memicu dan mengelola pemrosesan latar belakang.

Bisakah saya menjalankan aplikasi stateful di Cloud Run?

Tidak direkomendasikan, karena instance bersifat stateless. Gunakan Cloud Storage, Firestore, atau database eksternal untuk menyimpan state.

Marie Fayard

Penulis

Marie Fayard

Saya adalah tech lead berorientasi produk yang berspesialisasi dalam mengembangkan startup tahap awal dari prototipe pertama hingga mencapai product-market fit dan seterusnya. Saya sangat penasaran dengan cara orang menggunakan teknologi, dan saya senang bekerja erat dengan para founder serta tim lintas fungsi untuk mewujudkan ide-ide berani. Saat tidak membangun produk, saya mencari inspirasi di berbagai penjuru dunia atau melepas penat di studio yoga.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai