Bagaimana saya belajar Kubernetes dalam 3 minggu
Bukan tutorial Kubernetes, tetapi tutorial belajar.
Halo, Eka disini. Blog ini adalah media untuk berbagi opini serta insight tentang isu terbaru di seputaran programming dan kehidupan programmer. Kirimkan saya pertanyaan, saya akan coba jawab di postingan berikutnya 🙏
Disclaimer: Ini bukan tutorial Kubernetes, saya hanya ingin sharing bagaimana cara saya belajar hal baru.
1. Sedikit latar belakang
Belakangan ini, perusahaan tempat saya bekerja mulai memanfaatkan Machine Learning untuk memberikan pengalaman yang lebih ter-personalisasi ketika menggunakan produk yang kami buat.
Kita (tim data dan analitik) bekerja keras untuk mewujudkan misi tersebut. Terlebih lagi saat menjadikan model buatan ML engineer menjadi sebuah service atau API yang bisa diakses oleh aplikasi.
Awalnya kita hanya ingin bagaimana men-deliver API tersebut semudah mungkin, tanpa setup server sendiri. Akhirnya pilihan kita jatuh pada Cloud Run, sebuah layanan serverless dari Google Cloud.
2. A little problem
Beberapa bulan pertama, semua berjalan lancar tanpa banyak halangan berarti. Sampai akhirnya kita mulai menemui beberapa kasus ketika API mendadak memiliki response time tinggi, jumlah instance yang tiba-tiba juga melambung tinggi tanpa alasan yang jelas, dan banyak hal kecil lainnya yang membuat kita agak kurang nyaman.
Akhirnya kita memutuskan untuk mencari solusi lain. Kita mempertimbangkan AppEngine, Compute Engine sampai Google Kubernetes Engine. Dan berdasarkan kelebihan dan kekurangannya, kita putuskan akan coba Kubernetes.
Cuma masalahnya, none of us are Kubernetes experts.
Tetapi, bukan Bli Eka namanya kalau tidak berani mengambil tantangan itu 😜. Saya bilang ke tim, kasi saya waktu sebulan. Saya akan coba itu “barang”, kalau bagus kita pakai, kalau tidak maka kita cari alternatif lain.
Akhirnya perjalanan barupun dimulai. Saya sangat excited karena memang ingin mencobanya dari dulu, namun belum pernah dapat kesempatan mencobanya secara nyata.
3. Bagaimana saya belajar Kubernetes?
Seperti biasa, kalau teman-teman sudah baca eBook Zero To Programmer, maka pasti sudah tahu cara belajar yang paling saya suka.
3.1 Always start with a goal
"A goal is not always meant to be reached; it often serves simply as something to aim at." – Bruce Lee
Saya selalu mulai dari goal. Mau bisa apa, mau buat projek apa. Goal saya adalah meniru artitektur API yang kita punya di Cloud Run dengan Kubernetes.
Begini kira-kira hubungan API dan model ML kita yang berjalan di Cloud Run:
Kita menggunakan Cloud Run sebagai microservice. Model ML berjalan sebagai instance terpisah dan ada satu service (API service) yang memanggil mereka untuk melakukan prediksi. Dan aplikasi hanya perlu memanggil satu API utama.
Sekarang saya sudah punya goal dan bagaimana hasil akhir yang diinginkan. Next?
3.2 Langsung nyebur!
“Those who don't jump will never fly.” - Leena Ahmad Almashat
Ini adalah bagian yang paling saya suka, sekaligus paling melelahkan. Karena di sinilah saya belajar paling banyak dan tenaga akan terkuras paling banyak juga.
Trik rahasia saya adalah: saya ekspos diri dengan banyak informasi dalam waktu yang singkat. Saya bombardir diri dengan istilah baru sambil pasrah dan ikhlas. Saya tidak berusaha melawan, saya tidak banyak bertanya, pokoknya apa yang tutorial, video ataupun buku itu bilang saya iyakan dulu.
Karena saya sedang belajar, saya masih bodoh, belum cukup ilmu untuk berkomentar, bukan yang paling pintar. Saya kosongkan gelas di kepala, supaya bisa diisi dengan air yang baru (ilmu baru). Itu kuncinya!
Ketika sudah sampai di level dimana saya agak terbiasa, sudah ada bayangan bagaimana cara kerjanya, langsung nyebur (praktek).
Saya buat sebuah cluster Kubernetes di Google Cloud dan praktekkan semua yang baru saja dipelajari. Praktekkan sampai teori yang saya baca atau tonton itu cocok dengan kenyataanya, yang artinya saya sudah paham.
Waktu itu saya belajar Kubernetes dari 4 sumber sekaligus: 2 kursus online berbayar, 1 buah Channel Youtube dan 1 lagi dari buku.
👉 Kursus online #1: Architecting with Google Kubernetes Engine Specialization
Kursus online ini adalah dari Coursera dan yang paling padat isinya. Di dalamnya terdapat 4 sub-kursus dari basic sampai production. Bisa dibilang seminggu pertama saya hanya mengikuti kursus ini saja, saya tidak kerja, hanya belajar :)
Tentu mustahil menyelesaikan semua kursus mereka dalam 3 minggu, bukan itu yang saya lakukan. Saya hanya ingin menyerap pelajaran dasarnya terlebih dahulu.
👉 Kursus online #2: Kubernetes Course from a DevOps guru
Ini menurut saya lebih baik dari yang sebelumnya, teorinya tidak bertele-tele dan bisa langsung praktek. Tetapi menurut saya mereka agak kaku dalam menjelaskan, jadinya terkesan seperti membaca text saja. Tapi prakteknya bagus dan sederhana.
👉 Channel Youtube: TechWorld with Nana
Jujur saja, dari semua kursus online (berbayar) di atas, ini yang menurut saya paling baik. Mudah dimengerti karena penjelasannya yang ringan serta prakteknya mudah diikuti. Belum lagi videonya yang disertai visual yang mumpuni. Dan pastinya gratis!
Kalau kamu ingin belajar Kubernetes, saya sangat sarankan coba yang ini dulu.
👉 Buku: Kubernetes for Developers
Ini juga bagus, meskipun dia berupa buku dan berbahasa Inggris, penulisnya menjelaskan konsep Kubernetes dengan sangat baik. Menggunakan bahasa yang ringan. Dan penulisnya juga bukan orang sembarangan, dia adalah salah satu pengembang dari Google Kubernetes Engine di Google.
Sekarang kamu pasti berpikir, bagaimana caranya saya mengikuti semua tutorial dan kursus di atas dalam tiga minggu?
Well, saya tidak 😁. Saya tidak mengikuti semuanya dari nol sampai selesai, perlu beberapa bulan kalau harus seperti itu. Saya hanya pelajari pengetahuan apa yang diperlukan supaya projek itu jadi, dan sisanya sebagai referensi alias pegangan. Setelah mendapatkan cukup dasar dari semua sumber diatas, saya langsung praktek.
Kalau di kursus A kurang mengerti, maka saya pindah ke kursus B. Dan kalau belum mengerti juga, maka saya pindah ke buku. Seperti itu metodenya. Dengan punya banyak referensi pasti ada salah satu dari mereka yang bisa membuat kita paham. Dan jangan lupa kita masih ada om Google juga.
Cara orang mengajar itu beda-beda, si A mungkin bagus menjelaskan konsep X namun si B kadang lebih pintar menjelaskan konsep Y. Makanya saya sering bilang, jangan belajar dari satu sumber saja. Jangan pilih-pilih, mau video, mau buku, semuanya harus dimanfaatkan.
3.3 Last but not least, Proof Of Concept (POC)
“To learn something new, you need to try new things and not be afraid to be wrong.” ― Roy T. Bennett
Setelah belajar secukupnya, sekarang ke bagian yang paling menarik. Saatnya kembali ke projek dan mencoba mewujudkannya secara utuh.
Kita sudah tahu apa yang kita inginkan dan juga sudah punya dasar yang cukup dari belajar diatas. Sisanya tinggal oprek, oprek dan oprek sampai tujuan tercapai.
Kalau mentok, balik lagi ke referensi kita diatas. Cari bagian mana yang kita lewatkan, dipelajari dan coba lagi. Prosesnya terus seperti itu sampai projek kita jadi dan goal pun tercapai.
Saya hanya perlu beberapa hari untuk menulis konfigurasi dan mendeploy service-service di atas sampai mirip dengan yang kita punya di Cloud Run.
4. Bagaimana hasilnya?
Setelah belajar intensif dan praktek selama 3 minggu (lebih dikit), hasinya kira-kira seperti ini:
Saya tidak akan menjelaskan secara detail tentang gambar di atas. Tetapi intinya, dengan Kubernetes kita punya kontrol lebih atas semua aplikasi yang kita jalankan dibandingkan dengan Cloud Run. Namun, punya kontrol lebih juga berarti harus punya ilmu lebih 😅
Cloud Run juga sebenarnya adalah platform serverless berbasis Kubernetes, cuma dibalut oleh dashboard yang memudahkan kita mengelola aplikasi tanpa perlu banyak tahu tentang semua yang terjadi di belakangnya. Sedangkan dengan Kubernetes berarti kita menggali sedikit lebih dalam serta memerlukan tenaga lebih untuk mempelajarinya.
Akhirnya, melihat hasil POC saya di atas, saya dan tim memutuskan akan memindahkan semua services yang kita punya ke Kubernetes di tahun 2023 ini.
Sekali lagi, ini bukan tentang Kubernetes. Melainkan bagaimana pola saya belajar. Metode yang saya pakai selalu sama, baik itu belajar hal sederhana maupun yang kompleks seperti Kubernetes, yaitu Project Based Learning.
Dan buat kamu yang penasaran kok bisa sih Bli Eka tahu sebanyak ini? Gimana sih awalnya? Tenang… semua saya ungkap di eBook Zero To Programmer yang baru saja saya luncurkan. Dan jangan lupa, subscribe ke Newsletter UpKoding untuk jadi yang pertama membaca tulisan menarik saya berikutnya.👇👇