Pendahuluan

Lagi-lagi, mengenai serverless ..

Apa itu serverless, bisa dilihat di sini

Mendesain aplikasi serverless, bisa dilihat di sini

Dari artikel diatas kita bisa melihat bahwa Serverless menjadi pilihan bagus dan favorit mestinya di pengembang aplikasi.

Sifatnya yang mestinya :

  • stateless
  • hostless
  • event driven
  • distributed
  • low barrier to entry
  • elastic
  • dll

membuatnya menjadi komponen yang lincah untuk digunakan dalam membuat aplikasi.

Di dalam pikiran Software Engineer sebenarnya lebih fokus kepada mengembangkan aplikasi dibandingkan menentukan jenis server apa yang dibutuhkan, berapa jumlah konkurensi yang dibutuhkan, ukuran disk yang sesuai, atau bandwidth yang cocok.

Atau lebih memusingkan lagi kalau diminta untuk memilih konfigurasi jaringan, security dan juga alamat ip address atau hostname yang dipilih.

Hal-hal lain tersebut lebih kepada fitur non fungsional dari aplikasi itu sendiri.

Yaitu mengenai :

  • Reliability
  • High Availibility
  • Elasticity
  • Fault Tolerance
  • Security
  • dll

Yang dalam dunia IT sendiri, ada profesi khusus untuk menganalisa dan membuat hal-hal non fungsional diatas menjadi cocok dengan sebuah aplikasi.

Katakanlah profesinya :

  • Site Reliability Engineer
  • Cloud Engineer
  • Infrastructure Engineer
  • Network Engineer
  • Security Engineer
  • Solution Architect
  • dll

Fokus seorang Software Engineer sebenarnya lebih kepada bagaimana membuat sebuah Solusi dengan sebuah aplikasi Software bisa menyelesaikan permasalahan di dunia nyata.

Tentunya dengan menggunakan konsep dan teori Software Engineering.

Yaa..ya..ya, Software Engineering memang bukan terbatas kepada persoalan menyelesaikan permasalahan di sisi bisnis saja.

Akan tetapi bisa saja menyelesaikan hal terkait dengan System, seperti Operating System Engineer, Network Control Engineering, DBA, Artifical Intelligence dll.

Tetapi yang akan sering kita temui adalah Software Engineering terkait pembuatan aplikasi bisnis.

Membuat fitur pemesanan, pembayaran, login, notifikasi, dan lain sebagainya yang terkait dengan e-commerce misalnya.

Yang mungkin pertama kali akan dikomplen kalau ternyata aplikasinya tidak sesuai dengan keinginan dan kebutuhan customer.

Yang mungkin pertama kali juga akan dikomplen kalau aplikasinya lambat, tidak bisa menghandle banyak request, dll.


Lalu..

Komponen Serverless sebenarnya berusaha membuat hidup Software Engineer menjadi lebih mudah.

Kita tidak perlu masuk terlalu dalam mengenai :

  • Server nya dimana
  • Bagaimana menghandle konkurensi di waktu banyak request
  • Scaling server ketika terjadi lonjakan aktifitas/request yang cukup tajam di satu waktu.
  • Bagaimana menghemat sumberdaya instance/server yang ada.
  • dll.

Urusan yang terkait dengan infrastruktur, jaringan, dsb , kalau dalam konsep Serverless sudah tersedia dari awal tanpa perlu kita definisikan lagi.

Mungkin ada, tetapi biasanya hanya pendefinisian ukuran dan tipenya saja.

Tidak sampai masuk ke detail konfigurasinya.

Misalnya saja di AWS Lambda yang kita melakukan konfigurasi untuk ukuran memori yang dipakai oleh instance lambda nya.

Atau mendefinisikan jumlah konkurensi yang kita inginkan untuk sebuah service Lambda.

Secara natural, penggunaan komponen Serverless sangat membantu bagi Software Engineer yang tidak mau terlibat terlalu jauh dengan teknologi infrastruktur ataupun jaringan.

Sehingga Software Engineer bisa tetap fokus ke tujuan awalnya dalam melakukan desain dan pengembangan software.