Assalamu‘alaikum wr. wb.
Halo gais! Dalam Arsitektur Perangkat Lunak, kita telah membahas tentang Space-Based Architecture pada pembahasan sebelumnya. Sekarang, kita akan membahas tentang apa itu Arsitektur Serverless. Serverless di sini bukan berarti tanpa menggunakan Server, tetap menggunakan Server. Untuk lebih jelasnya, marilah kita bahas pada Artikel ini sampai tuntas.
Ilustrasi Serverless Architecture |
Sumber Materi : Codepolitan.com (Blog) dan Datadoghq.com
Sebelum mempelajari lebih lanjut tentang arsitektur tanpa server, mari kita lihat sekilas pengembangan aplikasi web klasik.
A. Pengertian dan Sejarah Perkembangan Arsitektur Serverless
Arsitektur Tanpa Server atau Serverless Architecture adalah pendekatan desain perangkat lunak yang memungkinkan pengembang membangun dan menjalankan layanan tanpa harus mengelola infrastruktur yang mendasarinya. Pengembang dapat menulis dan menyebarkan kode, sementara penyedia cloud menyediakan server untuk menjalankan aplikasi, database, dan sistem penyimpanan mereka dalam skala apa pun.
Pada awal kemunculan HTML, hosting hanya tersedia untuk lembaga pemerintah dan universitas. Kemudian, muncul bahasa pemrograman yang membuat web lebih dinamis dan hosting yang memungkinkan pemasangan source code serta konfigurasi database dan server yang disewa. Kemudian, muncul konsep Virtual Private Server (VPS), yang memungkinkan infrastruktur server tanpa fisik. Kemudian, layanan baru muncul sebagai platform as a service (PaaS), yang menawarkan infrastruktur yang lebih mudah diatur dengan kemudahan scaling.
Dalam perkembangannya, Serverless mulai populer sebagai teknologi konsep baru yang memungkinkan penyedia hosting untuk menangani masalah server, sehingga pemilik source code tidak perlu berinteraksi dengan server. Arsitektur serverless memungkinkan pengembangan aplikasi web dengan konfigurasi seminimal mungkin dan memungkinkan pengguna untuk mengakses konsol berbasis web. Deploy aplikasi serverless dapat dilakukan tanpa harus berinteraksi dengan konfigurasi web server. Contoh lainnya adalah memilih kode mana yang akan dieksekusi ketika suatu antrean telah diterima oleh queue service.
B. Cara Kerja Serverless Architecture
Server memungkinkan pengguna untuk berkomunikasi dengan aplikasi dan mengakses logika bisnisnya, tetapi mengelola server membutuhkan banyak waktu dan sumber daya. Tim harus memelihara perangkat keras server, mengurus pembaruan perangkat lunak dan keamanan, dan membuat cadangan jika terjadi kegagalan. Dengan mengadopsi arsitektur tanpa server, pengembang dapat mengalihkan tanggung jawab ini ke penyedia pihak ketiga, memungkinkan mereka untuk fokus pada penulisan kode aplikasi.
Salah satu arsitektur tanpa server yang paling populer adalah Function as a Service (FaaS), tempat pengembang menulis kode aplikasi mereka sebagai kumpulan fungsi diskrit. Setiap fungsi akan melakukan tugas tertentu saat dipicu oleh suatu peristiwa, seperti email masuk atau permintaan HTTP. Setelah tahap pengujian biasa, pengembang kemudian menyebarkan fungsinya, bersama dengan pemicunya, ke akun penyedia cloud. Ketika suatu fungsi dipanggil, penyedia cloud mengeksekusi fungsi tersebut pada server yang sedang berjalan, atau, jika tidak ada server yang saat ini berjalan, ia memutar server baru untuk menjalankan fungsi tersebut. Proses eksekusi ini diabstraksi dari pandangan pengembang, yang berfokus pada penulisan dan penerapan kode aplikasi.
Fungsi sebagai Layanan (FaaS), jenis Arsitektur Serverless yang populer, memungkinkan pengembang untuk fokus pada penulisan kode aplikasi. |
Sementara arsitektur tanpa server telah ada selama lebih dari satu dekade, Amazon memperkenalkan platform FaaS arus utama pertama, AWS Lambda, pada tahun 2014. Saat ini, mayoritas pengembang masih menggunakan AWS Lambda untuk membuat aplikasi tanpa server, tetapi Google dan Microsoft memiliki penawaran FaaS sendiri juga, masing-masing disebut Google Cloud Functions (GCF) dan Azure Functions.
C. Konsep Dasar dalam Arsitektur Serverless
Meskipun Arsitektur Tanpa Server (Serverless Architecture) meniadakan kebutuhan untuk manajemen server, masih ada kurva pembelajaran yang curam, terutama jika Anda menggabungkan beberapa fungsi bersama untuk membuat alur kerja yang rumit dalam aplikasi. Oleh karena itu, akan sangat membantu jika Anda membiasakan diri dengan istilah dasar tanpa server ini :
- Doa (Invocation) : Eksekusi fungsi tunggal.
- Durasi (Duration) : Waktu yang diperlukan untuk menjalankan fungsi tanpa server.
- Mulai Dingin (Cold Start) : Latensi yang terjadi saat fungsi dipicu untuk pertama kali atau setelah periode tidak aktif.
- Batas Konkurensi (Concurrency Limit) : Jumlah instance fungsi yang dapat berjalan secara bersamaan di satu wilayah, seperti yang ditentukan oleh penyedia cloud. Suatu fungsi akan dibatasi jika melebihi batas ini.
- Waktu Habis (Timeout) : Jumlah waktu yang diizinkan oleh penyedia cloud untuk menjalankan suatu fungsi sebelum menghentikannya. Sebagian besar penyedia menetapkan batas waktu default dan batas waktu maksimum.
Perlu diingat bahwa setiap penyedia cloud dapat menggunakan terminologi yang berbeda dan menetapkan batasan unik pada fungsi tanpa server, tetapi daftar di atas menentukan konsep dasarnya.
D. Manfaat dan Tantangan Arsitektur Serverless
Ada peningkatan signifikan dalam adopsi tanpa server dalam beberapa tahun terakhir, dengan hampir 40% perusahaan di seluruh dunia menggunakannya dalam beberapa bentuk. Startup kecil dan perusahaan global sama-sama memanfaatkan arsitektur tanpa server karena alasan berikut :
- Ketersediaan (Availability) : Layanan harus tersedia 24/7 tanpa down kecuali terjadi error saat menyebarkan kode
- Skalabilitas (Scalability) : Scaling mudah ketika diperbolehkan pengunjung dan penggunaan resource serta adanya auto scaling
- Integrasi Layanan (Service Integration) : Dapat menggunakan semua layanan yang ada di penyedia layanan arsitektur tanpa server
- Penerapan Minimal (Minimal Deployment) : Konfigurasi minimal tanpa harus masuk pengaturan inti. misal masuk ke konfigurasi web server secara langsung untuk melakukan proxy terhadap aplikasi
- Pengurangan Biaya : Mengurangi biaya untuk mengelola infrastruktur sendiri
- Mudah Diatur (Manageable) : Dapat dikelola dengan mudah dan cepat melalui konsol yang mudah digunakan dan kenyamanan yang diutamakan
- Pemantauan : Monitoring tidak terbatas pada melihat penggunaan sumber daya melalui CLI.
Ada juga beberapa tantangan yang terkait dengan Serverless Architecture :
- Kehilangan Kontrol (Loss of Control) : Dalam Lingkungan Serverless, Anda tidak memiliki kontrol atas tumpukan perangkat lunak tempat kode Anda dijalankan. Jika kesalahan perangkat keras, pemadaman pusat data, atau masalah lain memengaruhi salah satu server Anda, Anda bergantung pada penyedia cloud untuk memperbaikinya.
- Keamanan : Penyedia cloud dapat menjalankan kode dari beberapa pelanggan mereka di server yang sama secara bersamaan. Jika server bersama tidak dikonfigurasi dengan benar, data aplikasi Anda dapat terekspos.
- Dampak Performa (Performance Impact) : Cold start biasa terjadi di lingkungan tanpa server, menambahkan latensi beberapa detik ke eksekusi kode saat fungsi dipanggil setelah beberapa saat tidak aktif.
- Pengujian (Testing) : Pengembang dapat menjalankan pengujian unit pada kode fungsi, tetapi pengujian integrasi, yang mengevaluasi cara komponen frontend dan backend berinteraksi, sulit dilakukan di lingkungan tanpa server.
- Vendor Lock-In : Penyedia cloud besar seperti AWS menawarkan beberapa layanan—seperti database, antrean pengiriman pesan, dan API—yang dapat Anda gunakan secara selaras untuk menjalankan aplikasi tanpa server. Meskipun mungkin untuk mencampur dan mencocokkan elemen dari vendor yang berbeda, layanan dari satu penyedia dirancang untuk diintegrasikan dengan sangat mulus.
Perusahaan yang ingin meminimalkan waktu masuk ke pasar dan membuat aplikasi yang dapat diskalakan dan ringan bisa mendapatkan keuntungan besar dari tanpa server. Tetapi jika aplikasi Anda melibatkan sejumlah besar proses yang berjalan lama dan berkelanjutan, mesin atau wadah virtual mungkin merupakan pilihan yang lebih baik. Dalam infrastruktur hibrid, pengembang dapat menggunakan wadah atau Mesin Virtual (VM) untuk menangani permintaan dalam jumlah besar, tetapi menyerahkan tugas jangka pendek tertentu, seperti Penyimpanan Database, ke fungsi Tanpa Server (Serverless).
E. Penggunaan Arsitektur Serverless
Arsitektur Serverless paling baik digunakan untuk melakukan tugas jangka pendek dan mengelola beban kerja yang mengalami lalu lintas yang jarang atau tidak dapat diprediksi. Kasus penggunaan utama untuk tanpa server meliputi :
1. Tugas berbasis Pemicu (Trigger-based Tasks)
Setiap aktivitas pengguna yang memicu peristiwa atau rangkaian peristiwa adalah kandidat yang baik untuk arsitektur tanpa server. Misalnya, pengguna yang mendaftar di situs web Anda dapat memicu perubahan basis data, yang pada gilirannya dapat memicu email selamat datang. Pekerjaan backend dapat ditangani melalui serangkaian fungsi tanpa server.
2. Membangun RESTful API
Anda dapat memanfaatkan Amazon API Gateway dengan fungsi tanpa server untuk membangun RESTful API yang disesuaikan dengan permintaan.
3. Pemrosesan asinkron
Fungsi tanpa server dapat menangani tugas aplikasi di balik layar, seperti merender informasi produk atau melakukan transcoding video setelah diunggah, tanpa mengganggu aliran aplikasi atau menambahkan latensi yang dihadapi pengguna.
4. Pemeriksaan keamanan
Saat Anda menjalankan container baru, sebuah fungsi dapat dipanggil untuk memindai instance dari kesalahan konfigurasi atau kerentanan. Fungsi juga dapat digunakan sebagai opsi yang lebih aman untuk verifikasi SSH dan Autentikasi Dua Faktor (Two-Factor Authentication).
5. Continuous Integration (CI) dan Continuous Delivery (CD)
Arsitektur tanpa server dapat mengotomatiskan banyak tahapan dalam pipeline CI/CD Anda. Misalnya, komit kode dapat memicu fungsi untuk membuat build, dan permintaan penarikan dapat memicu pengujian otomatis.
Traditional vs Serverless Architecture |
Sebagian besar pengembang bermigrasi ke Tanpa Server (Serverless) secara bertahap, secara perlahan memindahkan beberapa bagian dari aplikasi mereka ke tanpa server dan meninggalkan sisanya di server tradisional. Arsitektur tanpa server dapat diperluas dengan mudah, sehingga Anda selalu dapat memperkenalkan lebih banyak fungsi saat peluang muncul.
Arsitektur Serverless memiliki banyak kasus penggunaan, seperti alur kerja berbasis pemicu ini untuk mengambil dan menampilkan informasi produk. |
F. Platform Tools pada Serverless Architecture
Menggunakan alat yang tepat dapat memudahkan transisi ke arsitektur serverless dan memastikan aplikasi Anda berfungsi dengan baik untuk pengguna.
Kerangka kerja serverless seperti Serverless Framework atau Amazon's Serverless Application Model (SAM) berinteraksi dengan platform cloud provider melalui API, memungkinkan Anda menentukan fungsi, pemicu, dan izin yang dibutuhkan. Beberapa penyedia, seperti AWS, juga menyediakan alat pengujian serverless untuk menguji aplikasi secara lokal sebelum diterapkan. Sementara alat keamanan serverless akan memindai fungsi Anda untuk mencari kerentanan, bahkan mencegah injeksi kode dan file yang tidak diizinkan saat runtime.
Setelah Anda membangun aplikasi serverless, penting untuk memantau kesehatan dan kinerjanya. Fungsi serverless sering berinteraksi melalui layanan mikro web yang kompleks, dan kesalahan konfigurasi atau kesalahan di satu node dapat mempengaruhi kinerja keseluruhan lingkungan Anda. Oleh karena itu, untuk memecahkan masalah, penting untuk memiliki visibilitas real-time tentang kinerja setiap fungsi, baik dalam interaksi dengan fungsi lain atau komponen infrastruktur.
Untuk layanan yang ditawarkan dalam Arsitektur Serverless antara lain :
- Function as a Service : AWS Lambda, Azure Function, Google Cloud Function, IBM Open Whisk
- Database : AWS RDS, Azure SQL Database, IBM Cloudant
- Storage : AWS S3, AWS Glacier, Azure Blob Storage
- Notification : AWS SNS, Azure Notification Hub
- Message queue : AWS SQS, Azure Service Bus Queue
- Stream : AWS Kinesis Stream, Azure Event Hub
- Data Lake : AWS Data Lake, Azure Data Lake
- Machine Learning : AWS Machine Learning, Azure Machine Learning
- dan lain - lain
Beberapa Vendor yang menyediakan layanan Arsitektur Serverless antara lain :
- Amazon Web Service
- Microsoft Azure
- Google Cloud
- IBM
Demikianlah penjelasan tentang Arsitektur Serverless (Serverless Architecture). Semoga bermanfaat bagi Software Developer/Engineer dan juga untuk Mahasiswa IT (Informatika).
Terima Kasih 😄😘👌👍 :)
Wassalamu‘alaikum wr. wb.