Tidak Ada Pertanyaan Bodoh: Apa itu komputasi awan dan mengapa semua orang menggunakannya?
Dalam segmen No Dumb Questions kali ini, Phoebe ditemani oleh pemimpin tim infrastruktur Stack Overflow, Josh Zhang, untuk mempelajari tentang cloud, komputasi, dan pusat data.
Phoebe Sajor: Josh, bisakah kamu menjelaskan kepadaku dengan istilah yang paling sederhana…apa itu komputasi awan?
Josh Zhang: Sederhananya: komputer orang lain. Jadi, secara historis orang-orang menjalankan pusat data mereka sendiri. Itu berarti Anda harus menyewa ruang dari sebuah perusahaan, mengelola internet Anda sendiri, dan kemudian mengelola rak Anda sendiri, membeli perangkat keras Anda, semua siklus pembaruan itu. Jadi, itu membutuhkan banyak spesialisasi. Anda membutuhkan seorang insinyur perangkat keras. Kemudian Anda membutuhkan seseorang untuk memasang perangkat lunak ke perangkat keras. Anda membutuhkan kontrak pembelian. Semua itu sangat merepotkan bagi seseorang yang mencoba memulai bisnis atau seseorang yang tidak ingin mengelola itu dan terikat pada satu lokasi. Jadi, janji komputasi awan adalah Anda tidak perlu berurusan dengan semua itu. Ini digerakkan oleh perangkat lunak. Jadi, alih-alih harus meminta manusia untuk membuat pesanan, menerima pesanan, memasangnya di rak, dan kemudian melakukan banyak hal fisik sebelum dapat diakses oleh insinyur melalui perangkat lunak, Anda cukup mendeklarasikannya dan mengkonfigurasinya melalui antarmuka awan. Dan itu membuat perusahaan kecil jauh lebih cepat untuk memulai dan mendapatkan akses ke infrastruktur yang biasanya memiliki biaya awal yang cukup tinggi.
PS: Saya tahu kontainer dan node adalah dasar dari komputasi awan, tetapi sebenarnya apa itu? Bagaimana data Anda masuk ke dalamnya? Bagaimana semua itu bekerja di balik layar?
JS: Jadi, kontainer adalah unit pengemasan baru untuk perangkat lunak. Dahulu kala, Anda akan memiliki server dan memasang sistem operasi di atasnya, baik itu Linux atau Windows, lalu menginstal perangkat lunak Anda langsung ke sistem operasi tersebut. Perangkat lunak tersebut memiliki persyaratan paket. Misalnya, kami menggunakan .NET, jadi kami harus menginstal .NET ke server itu sendiri dan kemudian menjalankan perangkat lunak di atasnya. Masalahnya adalah, ini sangat mahal. Anda memiliki seluruh server yang dikonfigurasi dengan cara yang sangat spesifik untuk satu aplikasi. Kemudian, muncul konsep mesin virtual. Jadi, Anda membagi satu server menjadi beberapa server yang lebih kecil dengan membagi sumber daya. Dengan cara itu, Anda dapat membagi server fisik menjadi bagian-bagian yang lebih kecil karena aplikasi umumnya tidak membutuhkan seluruh sumber daya server. Ini memberikan penghematan biaya tetapi juga penghematan ruang.
Itu adalah langkah logis selanjutnya. Tetapi setelah itu orang menyadari bahwa VM sangat besar. Anda harus menginstal sistem operasi di setiap mesin virtual. Itu berulang dan Anda tidak membutuhkan semuanya. Jadi konsep Docker pada dasarnya muncul untuk mengemas perangkat lunak. Anda mengambil instalasi OS yang sangat minimal, biasanya beberapa distro Linux yang sangat, sangat kecil. Kemudian Anda dapat menambahkan paket ke dalamnya dan itu berjalan di dalam kontainernya sendiri dan tidak mengganggu perangkat lunak lain yang perlu Anda jalankan. Anda dapat menjalankan beberapa aplikasi Docker di komputer yang sama dan aplikasi tersebut tidak akan saling mengganggu. Alih-alih membagi server menjadi beberapa server kecil, Anda membagi server menjadi beberapa ruang kerja aplikasi mandiri yang sangat kecil. Itulah yang dilakukan Docker.
Namun Anda memerlukan sesuatu untuk mengaturnya karena Docker hanyalah aplikasi individual dan cara Anda mengemasnya. Jadi pengaturannya disebut Kubernetes. Kubernetes pada dasarnya adalah cara Anda memanfaatkan server untuk memungkinkan berbagai aplikasi Docker berjalan. Kemudian ada konsep pod. Pada server fisik, jika saya ingin menjalankan satu aplikasi, jika server tersebut mati, maka aplikasi Anda juga akan mati. Dalam hal keandalan, Anda akan mengatakan, “Oke, saya ingin menjalankan dua server.” Itu sangat mahal, tetapi dengan cara itu jika satu mati, yang lain masih ada. Itu disebut redundansi. Tetapi ketika Anda beralih ke tingkat Docker, itu disebut pod. Anda memiliki aplikasi yang sama yang berjalan berdampingan—sebuah pod berisi dua aplikasi—sehingga jika satu aplikasi mati, hanya satu dari dua aplikasi dalam pod yang akan mati. Aplikasi yang lain tetap berjalan. Dan itulah jenis hal yang diatur oleh Kubernetes.
PS: Itu sebenarnya sangat masuk akal. Sebelumnya Anda mengatakan bahwa cloud pada dasarnya "menggunakan komputer orang lain." Apa artinya itu? Apakah kita hanya menjalankan semuanya di komputer AWS? JS: Jadi ketika Amazon sedang membangun pusat data mereka, mereka menyadari bahwa mereka memiliki banyak kapasitas dan server tambahan. Jadi mereka berkata, "Hei, kami memiliki semua ruang ekstra ini yang tidak kami gunakan. Itu hanya server yang menganggur. Bagaimana jika kita memberi orang akses ke ruang ekstra yang kita miliki karena kita tetap harus berinvestasi dalam biaya infrastruktur?" Begitulah AWS dipisahkan. Idenya adalah Anda meminjam sebagian kecil server mereka untuk menjalankan aplikasi Anda sendiri. Anda memanfaatkan skala Amazon karena mereka membeli server dari semua produsen utama sehingga mereka bisa mendapatkan harga yang lebih baik. Mereka menawarkan sedikit diskon berdasarkan itu, dan mereka dapat menghasilkan uang dari server menganggur yang akan mereka miliki.
PS: Inilah mengapa penting bagi saya untuk mengajukan pertanyaan-pertanyaan ini karena saya selalu berpikir bahwa cloud adalah hal yang sama sekali berbeda dari pusat data. Tetapi semuanya masih berjalan di atas perangkat keras. Apakah itu sebabnya perusahaan AI membeli kota-kota di Michigan dan Texas untuk membuat pusat data? Apakah perusahaan AI menggunakan begitu banyak daya komputasi sehingga mereka melampaui apa yang dapat ditawarkan AWS di cloud mereka sendiri?
JS: Ya. Semua penyedia layanan cloud sedang berjuang untuk mendapatkan kapasitas karena ada juga pergeseran. Sebelumnya, semua orang menggunakan komputasi standar pada CPU Intel atau AMD. CPU tersebut kini menjadi sangat terspesialisasi, terutama jumlah CPU per unitnya. Jadi di ruang pusat data, itu adalah rak besar dan setiap rak memiliki tinggi tertentu. Semuanya distandarisasi menjadi apa yang disebut unit. Server standar bisa terdiri dari dua hingga tiga unit, tetapi ukurannya menjadi cukup kecil sehingga satu unit dapat memiliki 128 CPU, 256 CPU. Itu banyak sekali. Dan mereka dapat memasukkan banyak RAM di dalamnya, yang berarti bahwa dalam ruang yang kecil, banyak orang dapat berbagi daya komputasi tersebut. Begitulah keadaannya untuk waktu yang sangat lama.
Kemudian muncul ledakan AI dan semua orang harus beralih ke GPU, pada dasarnya prosesor dari NVIDIA. GPU sangat boros daya, tetapi juga besar karena jenis daya komputasinya berbeda. Chip tersebut sebenarnya sangat besar dan saya rasa bahkan yang terkecil pun tingginya seperti server tiga hingga empat unit. Kapasitas penyimpanannya tidak sebesar CPU tradisional karena daya komputasi yang dibutuhkan untuk AI tidak memiliki kepadatan yang sama.
Jadi, Anda berbicara tentang pusat data yang sebelumnya baik-baik saja dan mampu menangani semuanya. Sekarang mereka harus memperhitungkan semua server yang lebih besar dengan kebutuhan ruang yang lebih besar, kebutuhan daya yang lebih besar, dan kebutuhan pendinginan yang lebih besar, semuanya dalam jumlah ruang yang sama yang sudah mereka miliki. Itulah mengapa terjadi ledakan pusat data. Semua orang harus membangun lebih banyak ruang, mendapatkan lebih banyak daya, dan sebagainya agar dapat mengakomodasi kelas komputasi baru yang digunakan semua orang.
PS: Saya ingat sebelum berada di Stack, saya mendengar bahwa jika mereka tidak menemukan cara untuk membuat chip memiliki kapasitas yang lebih tinggi, kita semua akan celaka karena kita tidak akan mampu menangani semua data yang ada di internet. Jadi, sepertinya AI mendorong hal itu lebih jauh lagi karena menggunakan begitu banyak daya komputasi. Sebelum kita kembali ke komputasi awan, bolehkah saya bertanya…apa perbedaan antara CPU dan GPU? Sepertinya GPU lebih kuat daripada CPU.
JS: CPU sangat generalis. Jadi setiap komputer memiliki CPU karena merupakan unit pemrosesan generalis. CPU adalah singkatan dari central processing unit (unit pemrosesan pusat). Sederhananya, itu adalah angka satu dan nol serta ya dan tidak—biner. Ia dapat melakukan apa saja, tetapi tidak selalu satu hal tertentu dengan sangat baik. Awalnya, GPU digunakan untuk merender grafis seperti dalam video game, NVIDIA adalah salah satu pelopor asli di bidang itu dan mengembangkan GPU yang mampu melakukan perhitungan matematika dengan sangat baik—khususnya matematika matriks. NVIDIA menyadari, “Hei, kita dapat menerapkan kekuatan matematika matriks ini untuk memproses beban kerja AI juga.” Beban kerja AI melibatkan banyak matematika matriks. Jadi GPU mengkhususkan diri dalam hal itu. Jika Anda meminta GPU untuk melakukan apa yang dilakukan CPU dengan baik, ia akan melakukannya dengan sangat lambat. Tetapi karena ia mengkhususkan diri dalam bentuk matematika tertentu ini dan di situlah ruang komputasi saat ini berada, semua orang beralih ke GPU. Tren saat ini sangat bergantung pada matematika matriks. Masih ada kebutuhan akan komputasi CPU standar untuk aplikasi normal kita, hanya saja saat ini industri teknologi banyak menggunakan GPU untuk mengolah data dan menghasilkan model. Itulah yang paling banyak menyita ruang.
PS: Saya sangat menyukainya. Saya baru saja belajar banyak. Kembali ke komputasi awan. Sepertinya salah satu hal besar tentang komputasi awan adalah harganya yang lebih murah. Benarkah begitu?
JS: Tidak. Saat kami beralih ke cloud, kami memiliki seorang direktur senior yang mengatakan, “Satu hal di cloud yang pasti dapat diskalakan adalah tagihan Anda.” Saya masih mengatakan itu sampai hari ini. Jadi, janji cloud adalah fleksibilitas yang lebih besar. Anda dapat meningkatkan dan mengurangi kapasitas dengan sangat cepat. Jika kami berada di pusat data dan membutuhkan lebih banyak kapasitas, saya harus menghubungi Dell dan membeli server baru. Pengirimannya akan memakan waktu lama, dan kemudian saya harus memasangnya. Kemudian saya harus mengkonfigurasi perangkat lunaknya. Waktu tunggunya sangat lama. Di cloud, jika saya menginginkan lebih banyak daya komputasi, saya hanya perlu mengetikkan perintah dan dalam waktu sekitar satu menit saya akan mendapatkan lebih banyak daya komputasi. Begitulah cara kerjanya.
Secara teori, jika Anda sangat cerdas dalam mengatur jumlah sumber daya yang dibutuhkan, biayanya mungkin mendekati biaya operasional pusat data. Namun secara keseluruhan, Anda dapat memilih untuk tidak membeli perangkat keras baru jika perangkat keras lama masih berfungsi dengan baik. Anda dapat melakukan hal lain untuk mengoptimalkan biaya. Tetapi berdasarkan pengalaman kami, ini tidak lebih murah daripada menjalankan pusat data. Anda hanya mengalokasikan sumber daya secara berbeda. Untuk menjalankan pusat data, Anda membutuhkan seseorang yang memahami perangkat keras dan instalasi perangkat keras. Orang-orang tersebut sangat terspesialisasi hanya untuk melakukan hal itu. Jika Anda menggunakan komputasi awan, seorang insinyur standar dapat menangani sebagian besar beban kerja tersebut. Jadi, Anda tidak perlu memiliki orang-orang yang terspesialisasi yang hanya menangani hal tertentu.
PS: Oke, paham. Jadi, hal terpentingnya adalah fleksibilitas, kemampuan untuk berkembang. Itulah mengapa semua orang beralih ke cloud. Sekarang kita bisa membangun sesuatu dengan lebih mudah tanpa harus ada orang di lokasi. Dulu itu tugasmu, kan? Kamu akan masuk dan memeriksa serta memastikan semua perangkat kita berfungsi, dan jika ada yang rusak, kamu akan memeriksanya. Apakah kamu benar-benar akan pergi dan melihat semua rak perangkat keras untuk melihat apa yang berfungsi dan apa yang tidak?
JS: Jadi, hal-hal itu menjadi sangat khusus, tetapi kami memiliki perangkat lunak pemantauan dan hal-hal lain yang kami gunakan. Dulu, saat tinggal di pusat kota, saya hanya berjarak 20 menit dari pusat data. Cukup nyaman. Tetapi saya tetap tidak ingin membuang waktu perjalanan tanpa alasan. Produsen perangkat keras memberi Anda perangkat lunak untuk pemantauan, dan mereka bahkan memiliki perangkat lunak prediktif yang mengatakan, “Hard drive ini, berdasarkan perilakunya, kemungkinan akan rusak dalam jangka waktu ini.” Semua itu sudah sangat matang.
PS: Bagaimana proses migrasi dari pusat data fisik ke cloud? Berapa lama waktu yang dibutuhkan? Bagaimana persiapan yang dilakukan? Seperti apa prosesnya? Kami baru saja menyelesaikan migrasi ini di Stack, jadi saya tahu Anda sudah familiar dengan prosesnya.
JS: Nah, penemuan adalah bagian terbesar dalam pengelolaan pusat data. Di perusahaan mana pun, mungkin ada hal-hal yang berjalan yang tidak Anda ketahui. Anda harus mencari tahu semua hal yang penting dan yang tidak. Kemudian Anda mulai memigrasikannya dan Anda harus menemukan padanan cloud-nya. Misalnya, di pusat data kami, kami memiliki load balancer dan itu dikonfigurasi dengan cara yang sangat berpusat pada pusat data. Kami harus mencari analog cloud untuk itu. Ada analog cloud satu banding satu, tetapi itu tidak efisien dan mahal. Beberapa orang menggunakan cara paksa dengan hanya menyediakan server di cloud 1:1 dengan pusat data mereka, tetapi Anda akan menanggung biaya tambahan dengan melakukan itu. Jadi kami mengambil kategori dari setiap aplikasi yang kami miliki, memutuskan apa yang akan dipindahkan dan apa yang tidak, dan mencoba mencari jalur yang tepat untuk memigrasikannya.
Kubernetes adalah salah satunya. Kami mengambil aplikasi kami dan harus memperbaruinya agar dapat dikontainerisasi. Itu berarti semuanya, mulai dari pengembang hingga penyebaran, harus menjadi "cloud native". Itulah proses konversinya. Kemudian ada migrasi. Cara kami melakukannya adalah dengan memperlakukan cloud seperti pusat data ketiga. Kami memiliki load balancer di bagian paling depan yang pada dasarnya bertanya, "Ke mana lalu lintas akan pergi?" Stack Overflow sebenarnya berjalan di dua pusat data—satu di New York dan satu di Denver. Dan kami berkata, "Sekarang, ada satu di cloud," dan perlahan-lahan menyebarkan berbagai hal ke sana dan mengujinya. Pada dasarnya kami hanya mengarahkan lalu lintas secara perlahan ke cloud dan kami memantau lalu lintas dan telemetri lainnya. Itulah migrasi. Saya menyederhanakan banyak hal karena ini sangat kompleks. Jika saya bisa melakukannya dengan sangat baik, saya mungkin bisa memulai perusahaan konsultan dan menghasilkan jutaan karena ini sulit. Begitu banyak orang yang terlibat. Tapi itu adalah ide tingkat tinggi. Dan begitu Anda dipindahkan, jujur saja, sisanya cukup mudah. Ada banyak vendor yang datang dan mengambil perangkat keras Anda begitu saja. Kurang lebih itulah yang kami lakukan. Kami membongkar peralatan dan membayar mereka untuk mengurusnya. Semuanya harus dibuang dengan aman, jadi semuanya dihancurkan. Jadi kami bahkan tidak perlu berhati-hati. Pada akhirnya kami hanya memotong kabel dan melempar barang-barang ke sana kemari. Itu cukup menyenangkan.
PS: Adakah hal lain yang perlu diketahui oleh pemula seperti saya tentang komputasi awan?
JS: Banyak pusat data yang letaknya lebih dekat dari yang Anda bayangkan. Banyak di antaranya hanya berada di gudang—gudang tua besar yang Anda kira hanya gudang biasa. Pusat data kami sebenarnya berada di gedung pencakar langit di lantai 17 di Jersey City yang memiliki pemandangan indah Patung Liberty, yang sangat aneh.
PS: Semua data Stack Overflow itu sedang melihat ke luar jendela dan menatap Patung Liberty. Suatu saat nanti aku harus mencari lantai-lantai kosong di gedung-gedung, meskipun aku yakin mereka tidak akan mengizinkanku masuk.
JS: Ya, memasuki pusat data sebenarnya sangat menarik. Mereka sangat aman. Mereka menggunakan pemindai sidik jari dan mata serta jebakan manusia.
PS: Itu seperti hal-hal rahasia mata-mata.
JS: Memang benar.
