Apa Perbedaan Server Serverless Hosting IaaS Paas Saas Cloud Container VM Bare Metal Colocation dan Lain Lain

Sumber : https://onlineidealab.com/trending-buzzwords-by-2020-on-cloud-computing-trajectory/

Ada teman tanya mengenai hal ini. Saya jawabanya pusing karena terlalu banyak buzzword saat ini. Akhirnya saya coba tulis disini karena jawabnya harus panjang supaya gak salah paham πŸ˜€ . Saya akan mulai dari masalah, contoh solusi, serta contoh edge case nya. Dan di akhir baru saya paparkan ringkasan/resume istilah dari solusi solusi tersebut. Jadinya agak panjang. Karena umumnya kalau hanya menjelaskan pengertian/istilah, masih belum terlalu paham.

Inti

Intinya sebenernya di usaha/effort untuk jagain”/maintain nya. Biar lebih mudah saya kasih contoh kasus ekstrim : BIkin server sendiri di kantor vs Nyewa server di Data center. Ada kejadian dimana harddisk/penyimpanan rusak dan harus diganti. Kalau di data center, akan di urus oleh orang data center nya. Kalau kita kelola sendiri, maka kita yang ganti sendiri. Belum lagi masalah network, keamanan fisik, dan lain lain. Jadi untuk ngelola sendiri akan butuh banyak resource/sumber daya untuk jagain nya.

Dan makna hakiki dari semua ini adalah UUD, ujung ujungnya duit πŸ˜€ . Banyak effort untuk jagain/maintain -> butuh banyak orang -> butuh uang untuk bayar banyak orang. Umumnya nyewa di data center akan lebih murah, Kenapa? Karena customer mereka banyak, jadinya bisa lebih efektif untuk kelola sumber daya nya. Walaupun ada saat nya juga titik dimana ngelola sendiri bisa jadi lebih murah.

Sumber : https://knowyourmeme.com/memes/spider-man-pointing-at-spider-man

Dan hal yang saya bandingkan dibawah ini kadang mirip mirip nyaru hampir sama padahal berbeda, jadi jangan kaget kalo ternyata bedanya cuma dikit πŸ˜€ . Dan juga setiap kata yang sama bisa memiliki arti yang beda, tergantung konteksnya.

Apa Itu Server

Sumber : https://www.robicomp.com/server-adalah-otak-utama-bagi-komputer-dan-manfaatnya.html
Sumber : https://www.fujitsu.com/id/products/computing/servers/primergy/

Server sebenernya sama seperti laptop atau komputer kita di rumah. Isinya juga sama = ada cpu, ram, harddisk, dan komponen lain nya. Jika sesuatu bisa dilakukan di server, berarti di laptop atau komputer kita di rumah juga bisa, begitu juga sebalik nya. Yang membedakan adalah durabilitas. Server di rancang untuk bisa hidup 24 jam selama 7 hari per minggunya, alias setiap saat. Sehingga komponen yang digunakan berbeda dengan komputer laptop kita dirumah. Kalau laptop kita dinyalan setiap saat 24/7 pasti akan cepat rusak.

Umumnya untuk mengukur performa suatu server, diukur memakai jumlah core dan RAM(Memory, bukan harddisk/ssd). Walaupun ada juga parameter lain yang sangat berpengaruh juga. Misal 24 core intel xeon keluaran tahun 2010 akan berbeda dengan keluaran tahun 2021.

Kelola Sendiri, Nyewa Server, dan Colocation

Sumber : https://www.pinterest.com/pin/313140980320445641/

Melanjutkan yang tadi, berikut ini adalah hal yang akan di maintain oleh data center. Mungkin tidak terlalu lengkap tapi secara umum gambarannya seperti ini. Dan di chapter selanjutnya daftar akan semakin mendetail.

  1. Tempat
    1. Infrastruktur yang sesuai standar
    2. Keamanan fisik
    3. Listrik
  2. Network
    1. Network data center <-> internet exchange dan direct peering
    2. Network data center <-> server kita
    3. Netework server kita <-> server kita yang lain
  3. Server – Hardware
    1. Harddisk, processor, ram, dll

Sedangkan ini yang kita harus maintain sendiri:

  1. Server – Software
    1. Sistem operasi
    2. Software pendukung : Webserver, dll
    3. Aplikasi yang kita develop/koding

Dari sisi software, Yang perlu kita maintan adalah program yang kita develop/coding. Seperti ada penambahan fitur baru, perbaikan bug, dan update framework. Namun selain software adalah sistem operasi dan software lain yang mendukung aplikasi kita. Umumnya hanya melakukan update pada sistem operasi agar lebih aman dan stabil. Dan troubleshoot sistem operasinya jika ada masalah yang terkait. Seperti zaman sekarang, sudah tidak ada yang pakai windows XP di laptop/komputer nya. Dan program terbaru sekarang tidak bisa jalan di windows XP karena sudah tidak di support. Kalau ada masalah di aplikasi kita, kadang kita harus mengubah konfigurasi di windows (OS) nya, bukan di aplikasi nya.

On Premise adalah istilah dimana kita ngelola semua nya sendiri seperti sever yang kita taro di kantor kita.

Colocation adalah kita membeli server sendiri, beli dari luar data center dan server tersebut kita letakan di data center. Berarti kita mengularkan biaya di depan untuk beli server. Dan biaya bulanan untuk sewa tempat nya. Untuk colocation, yang menjaga/maintain hardwarenya adalah kita sendiri. Misal harddisknya rusak, berarti kita ke data center benerin harddisk. Tapi jika network atau listrik nya bermasalah, bukan kita yang maintain melainkan orang data center nya.

Bare Metal, Virtualisasi/VM, Hosting, VPS dan Container

Sumber : https://networkencyclopedia.com/virtualization/

Dalam satu server kita hanya bisa install satu sistem operasi, dan di sistem operasi itu kita bisa install banyak aplikasi. Misal ada 4 aplikasi yang setiap aplikasinya dikelola oleh tim tersendiri. Dalam OS, kita bisa atur permission nya agar aplikasi satu ataupun tim satu tidak bisa mengacak ngacak aplikasi dua yang dikelola tim dua.

Virtualisasi adalah memalsukan hardware dengan software. Contoh mudahnya membagi satu server menjadi seolah olah banyak server. Misal kita punya satu server 32 core 128 gb ram, 1 TB hard disk. Server fisik ini disebut Host. Dengan virtualisasi kita bisa pecah satu server menjadi 4 server yang terisolasi. Jadi seolah olah ada 4 server fisik padahal cuma ada 1. Misal

  • Tim A, 16 Core 64 gb ram 500 gb harddisk. Sistem operasi Windows Server
  • Tim B, 8 Core, 32 gb ram 250 gb hardisk, sistem operasi Ubuntu 20.04
  • Tim C, 4 Core, 16 gb ram 125 gb harddisk, sistem operasi Ubuntu 18.04
  • Tim D, 4 Core, 16 gb ram 125 gb harddisk, sistem operasi Centos 7

Ada banyak alasan orang lebih memilih virtualisasi, berikut alasan yang sebenernya bisa tanpa virtualisasi tapi lebih mudah/aman menggunakan virtualisasi

  • Isolasi agar tidak saling lihat/ubah data orang lain
    • Tanpa virtualiasi bisa pakai permission. Tapi tetap ada satu akun yang bisa melihat semua ata user : root (*nix) atau adminsitrator (windows) yang dipegang pemilik server nya.
    • Software virtualiasi seperti VMware memiliki fitur untuk encrypt disk. Jadinya hanya pemilik VM yang bisa melihat data nya. Yang ngelola server/VM/host tidak bisa melihat datanya secara mudah.
  • Menginstall aplikasi yang sama tapi berbeda versi
  • Aplikasi 1 error dan nge hang. Kalau tanpa virtualisasi ini aplikasi lainnya bakal ikut ngehang karena OS nya nge hang. Tapi kalau pake virtualiasi nggak. karena vm 1 hang, gak bakal memperngaruhi vm 2 (isoloasi)
  • Limit resource cpu/ram per VM. Misal VM berisi aplikasi 1 karena aplikasi penting dia dikasih cpu/ram paling banyak.
    • Tanpa virtualiasi bisa pake cgroup, tapi ribet. lebih mudah dan aman pake virtualisasi
  • dan lain lain

Sedangkan ini adalah fitur utama yang akan hanya bisa dilakukan dengan virtualisasi

  • Backup, Restore, Pindah Host VM dari server(host) satu ke server(host) 2
    • Tanpa virtualiasi, kita harus remote servernya (menggunakan vnc), menginstall sistem oeprasi, lalu aplikasinya
      • Dengan virtualiasi, kita bisa install VMware/virtualbox di laptop kita. Di vmware laptop kita tersebut, kita install sistem operasi, dan aplikasinya. Setelah selesai kita bisa export/simpan vmware tersebut dalam bentuk file .ovf yang berisi sistem operasi dan aplikasi yang siap dipakai.
      • file .ovf ini kita kirim ke server vmware, dan bisa langsung di pakai tanpa install dari awal. Kondisi VM di laptop kita sama persis dengan kondisi VM di server.
  • Dashboard untuk memudahkan manajemen banyak server(host) dan VM nya
  • dan lain lain

Jadinya wajar jika ada orang yang pake virtualisasi di server nya padahal dalam satu server tidak di bagi menjadi banyak server (Pake virtualiasi tapi hanya satu os di dalam servernya, tidak empat seperti contoh tadi). Dengan virtualisasi ini memudahkan kita untuk maintain server nya.

Untuk menggunakan virtualisasi perlu digunakan software seperti Vmware, proxmox, Microsoft Hyper-V, Oracle OVM. Bare Metal adalah istilah server yang tidak memakai virtualisasi. Sedangkan untuk server yang di virtualisasi biasa disebut VM (virtual machine) atau VPS. VM atau vps ini bukan server utama yang belum di bagi-bagi, melainkan server yang sudah di bagi.

Sumber : https://www.vernalweb.com/blog/upgrading-shared-to-vps/

VPS pada gambar diatas bisa mengacu pada bare metal, atau VM

Bagaimana dengan Hosting seperti cpnael? hosting sebenernya sama seperti yang saya tulis tadi, 1 server tanpa virtualisasi tapi dibikin banyak user, setiap user di atur permissionnya sehingga tidak bisa mengakses file orang lain. Umumnya untuk database nya juga sama, satu database dalam tapi menggunakan banyak user. Kalau kita liat paket hosting, umumnya mereka hanya menyebut storage dan bandwith, tidak menyebut secara pasti berapa cpu atau ram yang kita dapat. Sehingga banyak orang mengeluh kadang kadang hosting nya kok lemot. Kenapa lemot? karena di kadang di satu waktu tertentu ada aplikasi atau semua aplikasi user yang ada di server hosting tersebut yang sedang diakses banyak orang, dan ini mempengaruhi ke user lain nya. Sedangkan kalau pake virtualisasi, bisa di jatah per user berapa cpu/ram, tidak akan lebih dari yang di jatah. Oleh karena itu hosting tidak cocok untuk aplikasi yang butuh resource tinggi atau akan digunakan banyak user.

Kenapa hosting tidak pakai virtualisasi saja? biar bisa neken harga jadi lebih murah. Karena virtualisasi banyak overhead nya. Ada 2 vm untuk 2 aplikasi. Aplikasi hanya butuh ram 1 gb. Tanpa virtualisasi kita butuh ram 3 gb (2 aplikasi x 2 gb + OS 1 gb). Tapi dengan virtualisasi kita butuh 4 gb (2 vm x (1 gb os + 1 gb apliaksi). Umumnya untuk aplikasi yang sensitif/penting, kita takut menggunakan hosting. Karena peluang data kita diakses user lain itu lebih besar dibandingkan pakai virtualisasi yang lebih aman terisolasi. Ya hosting mirip mirip sama satu rumah besar kita dan orang lain sewa kamar nya, sedangkan virutliasasi mirip seprti sewa rumah kecil/besar tapi tiap orang beda rumah πŸ˜€

Sumber : https://akfpartners.com/growth-blog/vms-vs-containers

Sedangkan container, anggap saja sama saja seperti VM walaupun sebenarnya berbeda karena arsitektur nya berbeda. Container lebih (sangat) ringan. Selain ringan, container mudah di program/otomtasi daripada VM (sehingga lebih mudah di maintain, tapi ini relatif tergantung kasus). Kombinasi hal ini membuat container lebih di sukai, karena waktu yang dibutuhkan untuk melakukan update/deploy/perubahan lebih cepat. Contoh dari container adalah Docker,Podman, Containerd. Melanjutkan contoh diatas, jika VM yang tadi butuh ram 4 gb untuk 2 aplikasi, container butuh ram dibawah VM (lebih ringan). Karena hanya satu OS, jadinya (os 0.5 gb + 2 aplikasi x 1 gb) = 2.5 gb. (agak panjang ini cerita lebih nya…). Kalau lebih aman, lebih aman VM, ini referensinya :

https://nvd.nist.gov/vuln/detail/CVE-2019-5736

https://www.cyberark.com/resources/threat-research-blog/the-strange-case-of-how-we-escaped-the-docker-default-container

Sumber : https://medium.com/skale-5/19-memes-about-kubernetes-86d4ee87ba1b

Kalau Kubernetes itu binatang apa lagi? Kubernetes adalah container orchestration. Jika ada banyak container, lebih mudah jika di kelola oleh kubernetes (Lebih mudah kita maintain nya). Jadi anggap saja kubernetes sama seperti virtualisasi/vmware. Kubernetes mengelola banyak container, Vmware mengelola banyak VM. (walaupun pada umumnya jika kita menggunakan kubernetes, virtualisasi juga tetap digunakan. Karena kita tidak bisa langsung install kubernetes di server, harus ada sistem operasinya. Sedangkan vmware bisa kita install tanpa sistem operasi. Jadi vmware untuk manage servernya, kubernetes untuk manage aplikasinya. Jadinya kubernetes beda dengan virtualiasi/vmware walaupun ada fitur yang beririsan. Tapi agak panjang ini ceritanya…, nanti saya buat post khusus)

Serverless Pt. 1 : Server dan Serverless

Dalam hal ini arti server berbeda konteksnya dengan yang kita bahas sebelumnya.

Kedua hal ini intinya adalah dengan ukuran apa yang akan kita bayar?. Serverless artinya kita hanya bayar sesuai fungsi yang kita pakai “pay as you use”. Sedangan server kita bayar sesuai resource yang kita pakai. Agak mirip tapi sebenernya beda :D.

Contohnya adalah jika kita ingin menyimpan file, ada layanan namanya object storage contohnya aws s3. Di aws s3 kita hanya membayar apa yang kita gunakan. Jika kita menyimpan file sebesar 100 gb, maka yang harus kita bayar adalah 100 gb x $ 0.02 per gb = 2 dollar per bulan. Sedangakan untuk server, untuk menyimpan file 100gb kita tidak hanya butuh harddisk melain kan kita butuh servernya juga. Misal kita pakai 2 core 8 gb = $20 per bulan jadi kira kira biaya bulanan yang kita batar adalah : server, harddisk, dan network . Untuk harddisk misal per gb 0.1 gb, berarti 100 x $0.1 = $10. Untuk network misal di file 100 gb tadi ada 6 orang yang download, berarti 6 *100 gb = ada 600 gb transfer data dari s3 ke orang. Biaya transfer data network nya 600 gb x 0.1 $ per gb = 60 dollar per bulan. Jadinya total biaya yang kita gunakan adalah $20 + $10 + $60 = 90 dollar per bulan.

Inti dari serverless adalah pay as you use. Untuk server mau kita nyimpen file 20 gb, 10 gb yang kita bayar tetep $20 vm + $10 harddisk = $30 (diluar biaya network). sedangkan kalaupake serverless s3, ya kita bayar yang kita pake aja. kalo pake cuma 20 gb, ya berarti 20 x $0.02 = 0.4 dollar. Dan inti yang kedua, kalau kita paker server itu banyak resource yang gabut/nganggur. kita pakai cuma 30 gb? ya sisa 70 gb harddisknya nganggur. Orang banyak download di siang hari, cpu utilisasinya sampai 90%, tapi di malam hari utilisasinya 1%. berarti di malam hari cpu nya nganggur 99%. nah ini kan sayang yang ngangur nganggur, makanya serverless umumnya lebih murah karena si yang buat dengan customer yang banyak bisa ngatur pemanfaatan resource dengan baik (sama seperti kasus data center di awal yang saya ceritakan).

Pokoknya kalau kita bayar berdasarkan cpu/ram, itu kemungkinan besar pasiti bukan serverless, tapi server. Sebutan lain dari server adalah Instances, VM-Based/Backed.

Ya anda bener terlalu banyak oversimplikasi di tulisan ini. Misalnya s3 sebenernya yang kita bayar bukan hanya besaran gb yang kita simpan, melainkan ada network juga. Berarti total nya $2 penyimpanan +$60 network = $62. Selain network juga ada berapa kali orang download file kita (REST API Call), dan lain lain. Kadang kadang serverless cara hitungnya mirip mirip sama non serverless, jadi keliatan mirip/sama πŸ˜€ .

Kalau S3 adalah serverless untuk menyimpan file, ada juga serverless untuk menjalankan kode aplikasi kita. Jadi kita tidak usah jalankan kode nya di VM/VPS. Salah satu contohnya adalah Aws Lambda. Kita tidak bayar cpu/ram, tapi bayar berapa request yang dipanggil dari orang yang mengakses website kita. Namun selain jumlah request, ada hal lain yang dihitung : berapa lama waktu setiap request, berapa memory yang dihabiskan setiap request, dan lain lain. Pokoknya ruwet dah ngitungnya πŸ˜€

Oke jadi kalau kita ngelola sendiri pake VM, biaya nya $90, pake s3 $60?. Ooh tidak ternyata. Dengan $60 s3 bisa menjamin bahwa file kita akan selalu bisa di download, dia mempunya sla 99.999999999%. Artinya aws menjamin maximal file kita tidak bisa di akses maximal 53 menit dalam setahun. 53 menit ini bisa dalam satu kejadian atau gabungan dari berbulan bulan (misal bulan 1 30, bulan 2 23). Dalam setahun jika ada downtime lebih dari 53 menit, maka aws harus bayar ke kita kompensasinya. Namun umumnya mereka cukup handal sehingga tidak ada downtime karena untuk menjaga nama baik mereka juga.

Sedangkan kalau kita ngelola sendiri pake VM apakah kita bisa menjamin seperti itu? Bisa tapi sangat ribet sekali. Misal kalo $90 kita cuma pake satu vm, itu sebenernya kurang. Bagaimana kalau vm nya mati/kebakaran/rusak? kita butuh vm lain sebagai backup di data center yang lokasi nya berbeda. Berarti itu 2 vm. 90 * 2 = 180. Itu baru satu aspek aja belum aspek yang lain, pokoknya ruwet dah πŸ˜€ . Jika anda dibayar $50000 untuk membuat aplikasi, dan aplikasinya ini harus nyala terus karena tiap saat diapakai oleh banyak orang, kalau dia down sebentar aja perusahaan akan rugi berjuta juta dollar, misal seperti bank, anda pilih mana pakai s3 $62 per bulan dengan kelola sendiri $90++++ (belum tentu tanpa downtime, atau bisa tanpa downtime tapi waktu anda berkurang untuk maintain nya). Lebih baik anda gabut/nganggur bayar $62 daripada anda sibuk tapi bayar $90++++ lebih, ujung ujungnya duit dah pokoknya πŸ˜€

IaaS, PaaS, dan SaaS

Sumber : https://www.alibabacloud.com/knowledge/difference-between-iaas-paas-saas

Seperti gambar diatas, Ini untuk memudahkan pengkategorian. Kalau kita bayar/sewa/beli/pakai softare tinggal pakai saja seperti aplikasi accounting online, itu termasuk Software As a Service (SaaS). Tapi kalau kita develop sendiri aplikasi nya, dan kita jalankan di hosting, itu termasuk Platform as A Service (PaaS). Karena kita hanya mengurus kode aplikasi kita, tidak mengurus sistem operasi, dan bagian dibawah sistem operasi. Kalau aplikasi kita itu dijalankan di VM/Bare Metal berarti itu termasuk Infrastructure as a Service (IaaS). Karena kita juga install, urus, dan maintan sistem operasi nya. Dan kalau server tersebut kita kelola sendiri di kantor (bukan di datacenter), berarti On Premise.

Males maintain OS dan hanya ingin maintain kode aja (PaaS) tapi gak mau pake hosting karena terbatas/lemot/kurang aman? Anda bisa mencoba provider lain seperti Heroku, Google App Engine (GAE), Amazone Elastic Beanstalk (EBS). Jadi ini sebenernya VM juga (berarti bukan serverless). Cuman Heroku dan kawan kawan bisa ngelola Autoscaling secara otomatis tanpa kita atur, misal kita pakai 1 vm (1 core 4 gb ram). Kalau tiba tiba siang hari banyak yang akses aplikasi kita, Heroku bisa otomatis tambah vm nya jadi 2 vm atau 3 vm. Jadinya aplikasi kita tidak hang/lemot. Dan ini jadinya mirip seperti serverless, kita pake yang kita gunakan saja, meminimalisir resource nganggur. Tapi ini bukan serverless πŸ˜€ .

Function as A Service (FaaS)

Ini sama seperti aws lambda yang sudah dibahas tadi. Aws Lambda merupakaan contoh FaaS. Umumnya kita bikin aplikasi web, terdiri dari banyak fungsi dan biasanya kita bangun diatas framework. Tapi kalau FaaS, dia bisa kita kasih fungsi saja lalu di akses lewat internet. Misal kita bikin satu fungsi di aws lambda (kode di simplifikasi biar gampang)

def tambah(a, b) :
	hasil = a + b
	return hasil

Dengan seperti itu saja kita langsung bisa akses, di 1234.awslambda.com/tambah?a=1&b=2 dan akan muncul angka 3 di browser kita. Ada banyak fungsi lambda dan ingin dibikin workflow biar lebih mudah dikelola, bisa pakai Aws Step Function.

Mau jalanin kode full dengan framework di lambda? bisa juga, misalkan ini:

https://bref.sh/

Jika tidak ada yang mengakses aws lambda kita (idle), dan ada yang mengakses maka kita akan menunggu beberapa detik untuk program nya jalan, istilahnya Cold Start. Jika setelah request tadi selesai dan ada request baru lagi, lambda tidak perlu menyalakan dari awal karena bisa memakai program yang sudah jalan tadi sehingga bisa lebih cepat, istilahnya Warm Start.

Saya belum terlalu paham untuk ini, baru pernah nyoba Aws lambda untuk jalanin satu function saja (bukan kode lengkap) untuk “gluing things together”. Misalkan di google cloud (gcp) ada beberapa jenis serverless FaaS = App Engine Standard/Serverless (bukan yang flex), Cloud Run, Cloun Funciton . Anda bisa lihat penjelasan detailnya disini biar lebih paham :

https://stackoverflow.com/questions/47057770/when-to-choose-app-engine-over-cloud-functions

Serverless Pt. 2 : Bills from a Memory

Tadi saya bilang kalau servless kemungkinan besar nggak dihitung pake cpu/memory. Tapi ada serverless yang pake cpu/memory. Contohnya AWS Glue. Aws Glue sebenernya hanya Apache spark (aplikasi/library untuk melakukan ETL) yang dibungkus. Walaupun bukan cpu/ram, disitu disebut harga diihitung dari penggunaaan DPU. DPU adalah data processing unit. Satu DPU berisi 4 cpu dan 16 gb ram. Tapi apa bedanya dengan yang server kalau ujung ujungnya CPU/Ram juga?. Bedanya adalah jika kita menjalankan Aws Glue ini, itu tidak langsung jalan hasilnya keluar. Melainkan Cold Start terlebih dahulu, seperti di aws lambda yang tadi saya bilang. Berapa lama cold start nya? berbeda dengan lambda yang cepat karena umumnya proses yang dilakukan di lambda proses yang enteng. Di aws Glue kadang 2 menit, kadang 5 menit, gak tentu. Saya pernah sampai 20 menit nunggu start nya. Kenapa lama? karena ngantri dengan pengguna lain di seluruh dunia untuk pake servernya aws, makanya bisa lebih murah karena pakai nya ganti gantian. Meminimalisir server nganggur.

Scale Out Scale Up, Horizontal Scaling Vertical Scaling

Sumber : https://www.webairy.com/horizontal-and-vertical-scaling/

Ada dua teknik ketika kita melakukan scaling aplikasi, baik itu manual atau autoscaling untuk menambah resource agar bisa lebih banyak diakses banyak orang misalkan. Pertama adalah Vertical Scaling atau Scale Up. Yaitu dengan cara mengupgrade spesifikasi dari server tersebut. Misal upgrade ram yang tadinya 16 gb menjadi 32 gb, atau upgrade cpu yang tadinya 8 core menjadi 16 core. Sedangkan Horizontal Scaling atau Scale Out dilakukan dnegan cara menambah jumlah server/instances. Misal satu server 8 core 16 gb ram kita tambah menjadi dua server, dan setiap server nya punya 8 core 16 gb ram. Atau spek tiap servernya berbeda juga bisa,tidak masalah.

Lebih cepat mana antara vertical dan horizontal scaling? Jawabannya adalah lebih cepat vertical scaling. Orang pada pakai horizontal scaling saat ini karena batasan pada vertical scaling. Semakin tinggi spek nya, semakin mahal harga nya. Misalkan Dengan uang 100 juta, kita dapat membeli satu server 64 core 256 gb ram kalau kita hanya membeli satu server. Tapi ada alternatif lain, dengan uang yang sama kita bisa beli 10 server dengan spesifikasi 8 core 32 gb ram di setiap servernya. Dan setelah di benchmark/uji, ternyata 10 server @8core 32 gb ram bisa menampung lebih banyak pengguna secara bersamaan, alias lebih cepat dengan harga yang sama/murah.

Horizonal memang lebih lemot jika total core nya dibandingkan dengan vertikal spesifikasi yang sama, misal horizontal banyak server dengan total dijumlahkan 64 core 256 gb ram akan kalah performanya dibandingkan dengan satu server 64 core 256 gb ram (karena overhead dan beberapa alasan lain). Makanya di contoh tadi total core dan ram untuk horizontal scaling adalah 10 * 8 core 32 gb = 80 core 320 gb ram, lebih besar dari satu server 64 core 256 gb ram. Tapi harga totalnya sama atau lebih murah

Namun tidak semua aplikasi cocok/lebih cepat menggunakan horizontal scaling. Contohnya relasional database(RDBMS/SQL) : mysql, postgresql, oracle. Umumnya kita pakai hybrid, Ada banyak server untuk aplikasi (horizontal scaling). Tapi cuma ada 1-2 server untuk database (vertical scaling). Bagaimana dengan clustering, sharding database? agak panjang ini ceritanya, nanti saya buat post khusus.

https://stackoverflow.com/questions/25761103/upgrade-to-a-faster-server-but-mysql-server-is-getting-slower

Sumber : https://www.f5.com/services/resources/glossary/load-balancer

Load Balancer dibutuhkan agar client (orang yang ngakses dari laptop) bisa membuka/mengakses website/server kita yang jumlahnya lebih dari satu. Misal anda membuka situs ini (abdillah.my.id), anda akan mengakses load balancer. Jika saya punya 5 server, load balancer akan memforward request (data dari anda) ke salah satu dari 5 server tersebut. Jika ada server yang tewas, maka load balancer akan mem blacklist server tersebut dan hanya memforward ke 4 server yang sehat. Load balancer bisa berwujud hardware khusus, salah satu mereknya adalah F5. Atau berwujud VM biasa namun di install software khsus seperti Apache, dan Nginx. Bagaimana jika load balancer nya yang tewas? ini agak panjang ceritanya …. πŸ˜€ nanti saya buatkan post khusus.

Cloud

Sumber : https://dev.to/nirbhayvashisht/fundamentals-of-cloud-computing-5g4g

Gambar diatas sudah menjelaskan arti harfiah dari Cloud πŸ˜€
Jadi mau provider yang fiturnya standar seperti digitalocean, hosting cpanel, sampai yang fitur nya banyak seperti aws, gcp itu sebenernya cloud juga.

Namun menurut NIST, provider bisa disebut cloud jika memenuhi syarat berikut :

  • On demand self service
    • mau pesen vm? bisa tinggal klak klik dan langsung dibuatkan saat itu juga
    • setting topologi network? bisa tinggal klak klik
    • gak usah telfon orang cloud nya
  • broad network access
  • resource pooling
    • Serverless
    • Meminimalisir nganggur
  • rapid elasticity
    • mau upgrade jumlah vm dari 3 ke 10 saat ini, lalu 30 menit kemudian di downgrade jadi 2 vm? bisa
  • measured service
    • harga nya jelas, bisa dihitung di awal
    • walaupun bisa juga kalau mau pesen harga khusus, nego kalau kita banyak borong nya

Namun secara de facto umumnya orang menyebut cloud, yaitu cloud besar seperti AWS, GCP, Azure, dll karena fiturnya yang banyak selain kriteria NIST tadi. Misalkan kita punya banyak VM, dan VM tersebut kita bagi hak aksesnya berdasarkan User/Group. Fitur granular permission ini umumnya hanya ada di cloud besar.

Managed Database

Salah dua dari banyak cara untuk menjalankan database di aws adalah Menggunakan VM (EC2 nama nya di aws), dan Menggunakan Mananged service database yang namanya RDS (Relational Database Service). Jika menggunakan VM, kita perlu maintain OS nya. Kalau ternyata ukuran database membesar, kita harus tambah ukuran storage nya dan atur ulang tablespace di database nya(misal database oracle). Belum lagi ngurusin backup, dan recovery kalau terjadi disaster. Dan juga tuning khusus supaya performanya prima. Sedangkan kalau kita mengguakan RDS yang managed, kita gak perlu ngurus gituan. Semua nya udah di urus AWS. Pokoknya kita tinggal desain tabel yang bener, sama query yang bener. Lebih mudah kan?

Managed sama serverless mirip mirip. Serverless sudah pasti managed. Dan ini masuk kategori PaaS. Tapi Managed belum tentu serverless. Aws RDS managed tapi bukan serverless, karena bayar nya masih tergantung cpu/ram. Dan sebenernya aws rds ini pakai ec2 di belakang nya. Cuman kita gak bisa akses ssh ec2 nya. Ciri ciri managed seperti ini, aksesnya dibatasi karena yang manage bukan kita.

Ada juga database di aws yang serverless, namanya Aurora Serverless. Atau kalo anak android biasanya pakai Firebase Firestore (untuk nyimpan personal data user, bukan shared). Ini juga serverless.

On Premise Cpanel

Beberapa orang ada juga yang punya server sendiri di kantor (On Premise). Tapi di server tesrsebut di install(beli) cpanel suapya gampang ngelola nya seperti di hosting. Kalau seperti ini apakah masuk PaaS atau managed? Jawabannya adalah tidak, karena kita tetap harus maintain hardware server dan lain lain nya. Jadi tetap masuk dalam kategori On Premise.

Ribet Amet Pake Dijagain/Maintain Segala

“Saya pakai VPS di cloud, sistem operasinya sudah tidak di support 5 tahun lalu, nggak pernah update, aplikasi juga gak pernah update. Aman aman aja kok gak ada masalah. Ribet upgrade-maintain, di diemin aja juga gapapa gak ada masalah selama ini”

Contoh perkataan orang

Perkataan diatas sebenernya mirip mirip covid. Yang pake masker, taat prokes, dirumah terus kena covid juga kok. Yang gak pake masker, sering berpergian gak kena covid, sehat sehat aja πŸ˜› . Ya ini sebenernya masalah hoki/apes saja, kita gak tahu kesialan dapat terjadi kapanpun. Lebih baik mencegah daripada mengobati. Seperti ransomware wannacry yang sempat ramai, orang orang yang OS nya nggak di update selama ini aman aman aja kok. Misal dia pake os dari tahun 2009. Tapi ternyata apes juga tahun 2017, setelah 8 tahun aman, ternyata kena wannacry. Padahal kalau OS nya di update terus, pasti gak bakal kena. Karena update nya sudah diberi dari microsoft 1 bulan sebelum ransom wannacry menyebar.

https://en.wikipedia.org/wiki/WannaCry_ransomware_attack

https://heartbleed.com/

Pakai Cloud/Managed/Serverless Lebih Aman?

Sumber : https://twitter.com/nonapeptide/status/608471679103148032

Tidak

Eh Iya juga deh, misal anda nggak ngerti cara ngatur VPS/VM dengan benar. Jadinya untuk masuk ke VPS nya hanya memaki user dan password saja. Tidak memakai public-private key. Hacker bisa dengan mudah membruteforce passowrd tersebut, dapat akses penuh VPS anda dan mencuri data atau menghack aplikasi anda. Sedangkan kalau anda pakai Managed PaaS seperti heroku, atau Serverless seperti Aws Lambda, anda tidak akan menemui masalah tadi. Jadinya cenderung lebih aman. Kecuali hacker bisa masuk ke akun heroku/aws anda πŸ˜› .

Tapi saya akan tetap katatkan tidak.

Ini agak panjang ceritanya menganai kemanan. Karena lapisan nya banyak. Bisa di serang karena lewat network nya. Bisa di serang lewat aplikasi nya (Misal SQL Injection, mau pake on premise atau PaaS/serverless, pasti akan tetap kena). Ataupun musuh dalam selimut, yaitu teman sendiri πŸ˜› .

Pakai Cloud/Managed/Serverless Lebih Murah?

Iya, ada yang udah punya server on premise terus pindah ke cloud dan bilang lebih murah

Eh tidak deh, ada yang udah di cloud semua, eh pindah ke on premise biar lebih murah

Jadi apa jawabannya? Relatif πŸ˜€

Tapi intinya, untuk skala kecil. Ataupun masih baru mulai. Cloud/Managed/Serverless pasti lebih murah dibanding on premise. Namun didalam Cloud/Managed/Serverless juga beragam. Misal kita pakai VM/VPS dengan 2 core lebih murah daripada kita pakai PaaS seperti heroku 1 core untuk aplikasi nya dan 1 core untuk database nya. Tapi maintainnya lebih ribet VM/VPS dong? ya ini relatif juga, kalau VM ada disaster tewas 3 jam, dan kita males benerin nya, jadinya di diemin aja. Tapi dengan 3 jam tewas itu yang pake aplikasi (entah itu customer, atau pegawai) tidak ada masalah, ya fine fine aja πŸ˜€ . Lumayan selisihnya buat beli kopi. Tapi kalau bos marah karena kerjaanya jadi lama selesai? ya bisa dibikin script/aplikasi untuk mendeteksi kalau down, bikin vm baru lagi. Atau bikin 2 vm pakai load balancer. Ah ribet males bikinnya? ya pakai PaaS seperti heroku dkk berarti πŸ˜€

https://www.duckbillgroup.com/

Dan ada lagi satu binatang baru 🀣, namanya Hybrid Cloud pakai beberapa service yang kita kelola sendiri di on premise, dan beberapa service di cloud. Atau bisa juga Hybrid cloud, Pakai beberapa service di AWS, dan disambungkan di beberapa service di GCP.

Selain itu berbeda dengan hybrid cloud ada juga entah istilah nya apa saya gak tau 🀣, tapi contoh nama produknya adalah Oralce Cloud@Customer, dan AWS Outpost. Jadi rak server punya cloud nya ditaro di kantor kita. Kita hanya kelola tempat, listrik dan internet nya saja (berbeda dengan hybrid cloud).

Support

Dalam contoh ini kita menggunakan on premise dan kita menginstall database Oracle di server. Total harganya terdiri dari dua : lisensi dan support. Dan ini produknya kita beli, bukan kita sewa. Jadi kita bayar sekali bisa pakai untuk selamanya. Misalkan harga lisensinya untuk versi 11g adalah 50 juta. Namun umumnya mereka menawarkan Support, harganya diluar lisensi. Misal 5 juta per tahun. Berarti kalau kita pakai 5 tahun, total uang yang dikeluarkan 50 juta + 5 juta x 5 tahun = 75 Juta.

Support berarti jika kita ada keluhan/pertanyaan, kita bisa tanya dan akan mendapatkan jawaban dengan SLA yang ditentukan, misal maximal 1 x 24 jam kerja akan dijawab pertanyaannya. Pokoknya kalau kita ada masalah, mereka akan bantu dan bertanggung jawab. Kalau kita yang salah, mereka akan memberi tahu cara penyelesaiannya. Kalau emang software mereka yang salah/cacat, mereka akan memberikan kita patch untuk update software nya.

Dalam kasus ini (bukan PaaS), kita tetap butuh orang untuk maintain database nya walaupun kita sudah beli support.

Walaupun support tidak wajib dan database nya di maintain oleh DBA dan Sysadmin, umumnya perusahaan tetap akan membeli support nya. Karena yang bikin software pasti tau lebih banyak mengenai softwarenya daripada DBA, Sysadmin di perusahaan tersebut.

Selain itu juga kalau perusahaan banyak uang cenderung gak percaya sama yang gratisan. Kalau kita sudah bayar, kita bisa “salahin” si pembuat software nya kalau ada masalah. Makanaya jangan heran kalau ada perusahaan pakai OS Redhat yang bayar, padahal itu OS linux open source(bukan freemium), ada versi gratisnya yang bernama Centos (udah pecah jadi Rocky Linux/Alma Linux sekarang) yang isinya 98% sama dengan Redhat. Bedanya, kalau ada masalah, Redhat akan hadir didepan anda siap membantu dan bertanggung jawab. Kalau centos? cari solusi di internet, do with your own risk, gak ada garansi, resiko tanggung sendiri.

Untuk IaaS/PaaS/SaaS/FaaS/serverless/managed juga ada support nya, jika kita mau bayar. Contohnya aws:

https://aws.amazon.com/premiumsupport/pricing/?nc=sn&loc=3

Open Source, Open Core

Redhat adalah contoh 100% opensource karena semua source code nya mereka buka untuk umum. Sedangkan elasticsearch, database NoSql untuk searching, mereka bilang open source. Padahal yang mereka juga jual versi berbayar yang closed source yang berisi fitur yang ada di open source ditambah beberapa fitur khusus yang tidak ada di open source. Istilah ini adalah Open Core. Contoh open core lain :

https://en.wikipedia.org/wiki/Open-core_model

Dulu saat masih bernama Red Hat Linux, kita bisa download gratis dan install sendiri di komputer kita, baik itu komersial maupun non-komersial. Redhat nyari duit darimana kalau gitu? Redhat nyari duit dari orang/perusahaan yang beli support nya yang sudah saya sebut tadi. Namun saat ini namanya sudah ganti menjadi Red Hat Enterprise Linux (RHEL). Sekarang kita tidak bisa download dan install jika kita tidak membeli Redhat. Tapi kode nya masih open source. Bagiamana jika kita mau install? kita harus download source code nya, compile lalu install. Agak ribet. Makanya ada Centos/Rocky/Alma linux yang compile-in source code nya redhat, sehingga kita bisa langsung install. Apakah redhat masih open source? masih karena yang penting adalah source code nya yang dibuka.

Freeware(gratis) berbeda dengan open source. Kalau free tapi source code nya tidak dibuka, bukan open source. Dan dalam open source sendiri ada banyak jenis lisensinya. Kernel linux menggunakan GPL. Contoh syarat dari GPL, kalau kita memodifikasi source code kernel linux, maka kita wajib membuka source code kita. Contoh lain adalah MIT license, intinya pokoknya terserah lu mau ngapain gw gak peduli.

https://choosealicense.com/

Anda juga bisa bikin license sendiri misal seperti ini :

https://github.com/mas-elkhanza/SIMRS-Khanza/blob/18.09.2019/README.TXT

https://www.json.org/license.html

Kesimpulan

Setelah pusing baca tulisan saya, mari mendengar lagu dibawah ini biar lebih rileks.

Kesimpulannya semua ini ujung ujung nya duit. Zaman dahulu kita hanya mengenal VM. Zaman sekarang ini karena makin banyak binatang nya apalagi terlihat mirip mirip, membuat orang cenderung bingung. Jangankan anda, saya juga kadang pusing ini maksudnya apa, bedanya apa sama yang ono. Pokoknya yang murah dan bikin saya nganggur saya bakalan pilih deh πŸ˜› .

Resume

IstilahArti
On Premise
ServiceCara Bayar(S/P/I)aaS?ManagedServerless
Amazon EC2CPU/Ram per detikIaaS

Sumber : http://www.quickmeme.com/meme/1kme

Sepertinya lebih baik anda yang resume(rangkuman/mind map/dll) istilah diatas tadi. Karena ilmu seperti binatang, kalau gak di iket suka kabur dia. Tidak usah panjang panjang seperti di table kedua nanti cape. Kecuali anda (ingin menajdi/adalah) sysadmin/devops/dsb, maka anda harus kotori tangan dengan hajar langsung prakteknya, dan memahami cara kerja di belakang layar nya.

guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Muhammad Farhan Abdul Rahman

Mntp