Arsitektur Serverless dengan Azure Functions

 Author : Nugroho R. Hadi .W, 14 April, 2018, Komentar



Dari alat-alat ke mesin-mesin hingga komputer, para pengembang mencari cara untuk optimalisasikan pekerjaan yang berulang dan men-standarisasikan konteks yang dikerjakan, sehingga para pengembang bisa fokus pada kontribusi khusus dengan nilai yang tinggi untuk menyelesaikan tugas dan menyelesaikan masalah. Secara paralel, sangat jelas bahwa industri IT telah berkembang. Pengembang telah berusaha untuk mencapai tujuan yang tinggi di setiap level sistem. dari CPU ke server farm, dengan harapan mencapai keluaran dengan efiesiensi tinggi dari sistem. Serverless arsitektur adalah titik dimana kedua aliran bertemu. Titik ini mendorong individu untuk fokus pada tugas yang spesifik dengan minimum sampah.



Di dunia Serverless, pengembang membuat solusi dibandingkan membangun infrastruktur, monitoring proses dan kesehatan enviroment. Bagian finansial membayar untuk tiap potongan pekerjaan, tidak seperti kebanyakan virtual mesin yang tidak terpakai di server farm. di Microsoft Azure, ada banyak service yang bisa di konsumsi yang terkait secara bersamaan dalam sebuah solusi secara keseluruhan. Sebuah komponen kunci yang baru di Azure Function, yang menyediakan kemampuan perhitungan serverless dalam sebuah ekosistem solusi yang komplit.

  

Arsitektur Serverless dengan Azure Functions

Ada banyak definisi tentang arsitektur serverles. Berdasarkan nomanklatur, arsitektur serverless bukanlah code yang berjalan tanpa server. Faktanya server masih sangat dibutuhkan, haya saja kita tidak perlu berfikir untuk itu. Anda mungkin berfikir ini seperti Platform as a Service (PaaS), padahal bukan. Jadi apasih sebenar nya sererless? Secara fundamental, arsitektur serverless adalah next evolusi dari layanan cloud. 


  • Dibangun diatas (PaaS), 
  • Abstaksi VMs
  • Aplikasi Framework
  • dan External Depedensi 


Sehingga pegembang bisa fokus menyederhanakan code untuk mengimplementasikan bisnis logik.


Gambar berikut, menggambarkan tentang komponen dari arsitektur serverless azure function. Azure function dibangun diatas Azure App Service dan WebJob SDK dan sedikit tambahan dari extra magic host.



Azure Funtions adalah poligot platform yang mendukung berbagai macam bahasa, seperti Nodejs, C#, PHP, Python bahkan Windows Powershell. Runtime dan depedensi dihandle oleh platform. Ini merupakan sebuah keuntungan saat bekerja dengan enviroment campur, dan membiarkan tim dengan preferensi dan skill yang berbeda. Berikut benefit yang kita dapatkan. Keuntugan yang bisa kita dapat dengan menggunakan Azure Functions sebagai komponen komputasi serverless:


  • Reduce Time to Market, dengan kata lain infrastruktur di atur oleh platform. Pengembang bisa fokus pada code aplikasi. Azure functions dapat dianggap sebagai dekomposisi  lebih lanjut dari microservices ke nanoservices. Kedua paradigma tersebut memberikan  keuntungan bagi proses pengembangan karena aktivitas pengembangan, pengujian, dan penerapan difokuskan secara sederhana. Hanya sedikit fungsi yang dikelola dan itupun dilakukan secara terpisah dari layanan terkait lainnya.
  • Lower Total Cost of Ownership,  Karena infrastruktur atau OS yang harus dipelihara oleh platform, pengembang dapat berfokus untuk memberikan nilai bagi bisnis. Selain itu, investasi yang dibutuhkan untuk DevOps dan pemeliharaan secara signifikan disederhanakan dan dikurangi.
  • Pay per Execution, Bayar sesuai dengan penggunaan dan eksekusi.  


Berikut properti arsitektur serverless:

  • Unit of work, dalam arsitektur serverless mengambil bentuk fungsi staateless.
  • Scalling, Capacity dan manajemen infrastruktur disediakan sebagai layanan.
  • Model penagihan berbasis eksekusi di mana Anda hanya membayar untuk kode yang berjalan.

Beberapa tantangan arsitektur serverless termasuk yang berikut:

  • Kompleksitas: Meskipun arsitektur serverless menyederhanakan banyak hal untuk pengembang, abstraksi platform mengharuskan Anda untuk memikirkan kembali cara Anda membuat aplikasi. 
  • Mengelola aplikasi secara monolitik sebagai satu kesatuan lebih mudah dari pada mengelola  framework yang dibangun khusus. Di sinilah kemampuan  Manajemen API Azure ikut bermain, memberi Anda cara untuk  menciptakan ruang yang konsisten yang mengikat semua fungsi yang ditetapkan dan  dikelola secara diskret.
  • Tooling: Alat untuk menulis, men-debug, dan menguji fungsi masih dalam pengembangan, tersedia di Visual Studio 2017
  • Dukungan Organisasi: Ini merupakan pertimbangan yang tidak mudah bagi sebagian orang untuk beralih ke paradigma serverless. Banyak organisasi ditantang untuk pindah ke integrasi otomatis (CI) / (CD) dan arsitektur microservices. Peralihan ke desain serverless dapat menambah kesulitan tersebut karena sering menantang standar saat ini dan memerlukan sumber daya edukasi untuk mempelajari tentang apa yang tersedia, cara menyatukannya, dan cara mengelolanya.
  • No Optimazisation Runtime: Dalam desain tradisional, Anda dapat mengoptimalkan enviroment ke beban kerja, mengubah  RAM, swap, disk dan konektivitas jaringan. Dengan Azure function, hanya sedikit perubahan yang dapat dilakukan. 


Arsitektur Tradisional VS Arsitektur Serverless

Dalam arsitektur aplikasi web tradisional kita harus mengelola infrastruktur dan memastikannya skalabilitas dan keamanan. Misalnya, saat Anda memulai, Anda memiliki klien di satu sisi dan server di sisi lain. Klien mengirim "permintaan" dan server membalas dengan "respons".Tetapi jika response terasa lambat, Anda harus segera scalling dari sisi server.



Jika pemintaan yang bertambah banyak, maka anda harus men-scaling Infrastructure, misalnya dengan menyediakan server yang lebih besar



Kita juga dapat meningkatkan server, dengan menambahkan server tambahan untuk  menangani beban. Dalam hal ini kita juga harus menerapkan load balancer yang akan "memutuskan" cara menyeimbangkan beban antara dua atau lebih server ini.  Ini berarti kita harus mengelola pengaturan ini, mengambil tindakan pencegahan untuk suatu peristiwa di mana salah satu server gagal atau load balancer gagal; memastikan semuanya aman, bahwa semua patch keamanan sudah terpasang dengan benar, dan banyak lagi.



Dalam hal biaya, kita harus membayar alokasi semua komponen ini, termasuk mesin virtual penyeimbang beban (load balancer), penyimpanan, dll, bahkan jika mereka tidak sepenuhnya dimanfaatkan. Ini membutuhkan investasi dalam perencanaan dan pengelolaan sumber daya yang tepat. Meskipun beberapa penyedia cloud menawarkan model bayar ketika Anda tumbuh dan  harga elastis, Kita masih harus memutuskan bagaimana menerapkan arsitektur ini dengan benar.


Pada Arsitektur Serverless, Kita bisa membangun aplikasi lebih cepat dan mempercepat pengembangan dengan pengalaman komputasi berbasis-kejadian serverless. Scalling permintaan dan bayar hanya untuk sumber daya yang anda konsumsi.


Apa yang bisa kita lakukan dengan Azure Functions

Timer-base processing

Azure Function mendukung event yang dijalankan berdasarkan pengatur waktu dengan menggunakan sintaks Cron Jobs. Misalnya, jalankan kode yang berjalan setiap 15 menit dan bersihkan tabel basis data berdasarkan logika bisnis khusus.




Event processing layanan Azure

Azure Function mendukung event trigger berdasarkan aktivitas dalam layanan Azure. Sebagai contoh, jalankan kode serverless yang membaca file uji log yang baru ditemukan dalam wadah penyimpanan Blob, dan ubah ini menjadi baris dalam tabel SQL Database.




Event processing SaaS

Azure Function mendukung pemicu berdasarkan aktivitas dalam Perangkat Lunak sebagai aplikasi berbasis layanan (SaaS). Misalnya, simpan file di OneDrive, yang memicu fungsi yang menggunakan Microsoft Graph API untuk mengubah spreadsheet, dan membuat grafik tambahan dan data yang dihitung.




Arsitektur aplikasi web serverless

Azure Function dapat digunakan untuk  WebHook, menyimpan data pengguna, dan memutuskan data apa yang akan ditampilkan. Atau, lakukan kustomisasi sederhana, seperti mengubah penargetan iklan dengan memanggil fungsi dan memberikannya informasi profil pengguna.




Mobile Backend API

Backend aplikasi mobile dapat berupa serangkaian API HTTP yang dipanggil dari klien seluler menggunakan URL WebHook. Misalnya, aplikasi seluler dapat menangkap gambar, dan kemudian memanggil fungsi untuk mendapatkan token akses untuk mengunggah ke penyimpanan blob.




Real-time stream processing

Misalnya, perangkat Internet of Things mengirim pesan ke Stream Analytics, yang kemudian memanggil fungsi untuk mengubah pesan. Fungsi ini memproses data dan membuat catatan baru dalam database SQL.




Pesan bot real-time

Gunakan Azure Function untuk menyesuaikan perilaku bot menggunakan WebHook. Misalnya, membuat fungsi yang memproses pesan menggunakan Cortana Analytics dan memanggil fungsi ini menggunakan Microsoft Bot Framework.




Sumber

 
Bagikan halaman ke sosial media
 
Tags :   Azure    Server Less    Azure Function       

Tentang Penulis

writer Nugroho R. Hadi .W
Lead Sofware Developer di PT. Yafii Solusi Internasional

Link: http://www.hadinug.net/

   Komentar Anda