Pada suatu percakapan, apakah Anda pernah mendengar tentang beberapa hal berikut: IaaS, PaaS, SaaS, DaaS, FaaS, DBaaS, XaaS? Jika ya, maka Anda ada dalam percakapan yang mencakup pemahaman layanan-layanan yang digunakan pada lingkungan cloud. Mari kita pahami tentang beberapa definisi berikut dimulai dari alasan menggunakan cloud.
Mengapa menggunakan arsitektur berbasis cloud?
Pemulihan bencana – Anda dapat memiliki banyak kumpulan data di seluruh dunia seperti Amerika Serikat, Inggris, Jepang, Australia dan jika ada badai di suatu tempat, banjir, atau kebakaran hutan, Anda dapat mengkloning data Anda dari penyimpanan data yang selamat.
Ketersediaan – misalkan ada badai di Puerto Rico di mana kami memiliki server yang tidak dapat dihancurkan di tempat perlindungan bom, tetapi di sana listrik padam sehingga selama dua hari Puerto Rico benar-benar terputus dari seluruh dunia. Untungnya, kami memiliki server lain di Jerman sehingga aplikasi web masih dapat diakses.
Skalabilitas – bayangkan kita memiliki ruang server yang besar, jadi ketika jumlah pengguna aplikasi, data, dan permintaan kita bertambah, kita dapat menempatkan CPU dan RAM baru di sana tetapi pada akhirnya, tidak akan ada ruang untuk menempatkan lebih banyak. Untungnya, dengan arsitektur cloud, itu tidak lagi menjadi masalah karena Anda dapat menggunakan sumber daya yang terletak di mana saja di dunia.
Tidak ada biaya (setidaknya untuk pelanggan) untuk beberapa fitur dasar – pernahkah Anda menerapkan aplikasi web? Bagaimana Anda melakukannya? Apakah Anda membeli server sendiri atau hanya menggunakan beberapa layanan seperti Heroku secara gratis?
Kesederhanaan – mari lanjutkan topik penerapan. Bagaimana Anda menyebarkan aplikasi? Secara manual setiap kali? Atau apakah Anda membuat sistem penerapan berkelanjutan Anda sendiri? Atau apakah Anda hanya menggunakan layanan out-of-the-box seperti Heroku atau Google App Engine?
Pembaruan perangkat lunak otomatis – misalnya, Anda menggunakan mLab dan secara berkala ada versi MongoDB yang diperbarui dengan waktu henti sekecil mungkin secara gratis dan jika Anda membayarnya, waktu henti dapat praktis tidak ada.
Bekerja dari mana saja – misalnya, Anda dapat mengedit lembar Google dari perangkat apa pun atau Anda dapat memasukkannya ke repositori GitHub dari komputer mana pun.
Peningkatan kolaborasi – misalnya, lembar Google dapat diedit oleh banyak pengguna bahkan ketika memberikan berbagai tingkat izin untuk mereka.
Kontrol versi – Anda dapat menggunakan platform seperti GitHub, BitBucket, GitLab atau hanya memiliki kontrol versi dokumen di Google Docs atau Confluence.
Keamanan – bahkan jika laptop, tablet, atau ponsel cerdas Anda dicuri, Anda dapat memiliki cadangan di DropBox, Google Drive, atau iCloud.
Selanjutnya mari kita bicara tentang cloud dalam konteks aplikasi web
Jenis utama arsitektur backend:
- Monolit. Seluruh backend dikerahkan di satu tempat sehingga sangat berat dan sulit untuk diskalakan untuk aplikasi besar.
- Layanan mikro. Backend dibagi menjadi banyak (sebagian besar tergantung pada ukuran aplikasi tetapi biasanya dari 10 hingga 80) layanan mikro yang dapat digunakan pada server fisik yang berbeda, setiap layanan mikro harus mencerminkan fitur bisnis misalnya, otentikasi, pembayaran, lelang, email, atau inventaris .
- Fungsi. Berbeda dengan monolit dan layanan mikro, mereka bukan daemon (berjalan sepanjang waktu) tetapi hanya dijalankan dalam waktu maksimal beberapa detik saat dibutuhkan; contohnya adalah AWS Lambda yang ditulis dalam es7:
Lalu apa itu XaaS?
XaaS
Ini adalah akronim umum yang berarti setiap solusi apa saja…aaS.
DBaaS
Basis data sebagai layanan – ini adalah platform yang menghosting basis data kami yang menyediakan pencadangan, pengelompokan, dan ketersediaan tinggi. DBaaS paling populer adalah Amazon Aurora, Amazon DynamicDB, mLab, IBM Cloudant, dan MongoDB Atlas.
IaaS
Infrastruktur sebagai Layanan – ini adalah level terendah dari semua XaaS. Ini memberi kita kekuatan besar tetapi membutuhkan banyak konfigurasi. IaaS memberikan mesin virtual yang harus kita pelihara. Perbedaan IaaS dan memiliki ruang server fisik adalah kita tidak perlu membeli komputer fisik apapun dan kita dapat memiliki server di berbagai belahan dunia. Namun dibandingkan dengan XaaS lainnya, IaaS lebih sulit untuk dipelihara dan memerlukan insinyur DevOps yang baik yang mengonfigurasi mesin virtual agar bekerja secara efisien dan aman.
PaaS
Platform as a Service adalah cara sederhana untuk menerapkan aplikasi dalam teknologi tertentu (mis., Node.js, Ruby, PHP, Python, Java, .NET). Platform yang paling populer adalah Heroku dan Google App Engine.
Secara umum, Anda tidak perlu mengonfigurasi CI (integrasi berkelanjutan). Cukup tekan komit, itu akan mengenali aplikasi di Node.js, dan itu akan menjalankan npm install (Anda dapat menambahkan perintah tambahan di skrip postinstall, yang dijalankan oleh NPM setelah menginstal dependensi) dan npm start. Jika aplikasi di Ruby, itu akan menjalankan bundle install dan serupa untuk lingkungan lain.
Kelemahan utama adalah tidak terlalu fleksibel karena tidak mungkin untuk menginstal dependensi sistem kustom (misalnya, dari apt-get) dan Anda hanya dapat menggunakan salah satu teknologi yang tersedia. Jadi jika Anda membuat bahasa pemrograman Anda sendiri yang tidak berjalan pada platform yang tersedia (misalnya, di Node.js Anda dapat menggunakan TypeScript, CoffeeScript, Elm… selain JavaScript atau di Java Virtual Machine Anda dapat menggunakan Scala, JRuby, Jython, Kotlin , Groovy… selain Java) tetapi dikompilasi langsung ke bytecode, Anda tidak dapat menggunakan PaaS.
Kelemahan lainnya adalah datanya tidak aman. Jika, misalnya, Anda menggunakan Heroku sebagai Paas dan mLab sebagai DBaaS, mLab tidak hanya memiliki akses ke data Anda, tetapi Heroku juga bisa karena Anda tidak pernah tahu kode apa yang sebenarnya dijalankan di server. Mungkin selain kode Anda karena mereka menambahkan middlewares mereka sendiri untuk mencatat sesuatu.
SaaS
Software as a Service memberikan perangkat lunak out-of-the-box seperti perpustakaan NPM / GEM tetapi tidak memerlukan penyebaran / pemeliharaan server dari kami.
Contoh sederhana adalah aplikasi surat seperti SparkPost atau SendGrid. Yang harus kita lakukan adalah mengirim permintaan HTTP dengan alamat pengirim email, alamat penerima, subjek email, konten email, dll. Di sisi lain, tanpa alat semacam ini, kita harus menyiapkan server SMTP dan menskalakannya seiring bertambahnya jumlah email.
Contoh lainnya adalah: Google Apps (mis., Google Drive), DropBox, dan Slack – aplikasi ini dapat digunakan oleh pengguna manusia, tetapi juga memiliki kemungkinan integrasi yang hebat. Selain SaaS yang baru saja ada, beberapa perusahaan (mis., SAP) menawarkan untuk menulis SaaS baru sesuai permintaan.
DaaS
Data sebagai Layanan mirip dengan SaaS, bahkan dapat dianggap sebagai bagian dari SaaS. Lebih khusus lagi, ini adalah API (biasanya HTTP), yang mengembalikan beberapa data misalnya, nilai tukar mata uang, hasil olahraga, atau prakiraan cuaca.
Apa DaaS terbesar? Mungkin Facebook, mengumpulkan banyak data dan menyediakannya untuk aplikasi Facebook. DaaS populer lainnya adalah Google Maps, Google Translate API atau AccuWeather.
Daftar DaaS yang berguna tersedia di sini.
FaaS
Fungsi sebagai Layanan bahkan lebih sederhana daripada PaaS. Seperti namanya, ini didasarkan pada fungsi yang dapat dipicu oleh peristiwa tertentu, jadi ini adalah arsitektur berbasis peristiwa. Tingkat kesederhanaannya sangat tinggi sehingga disebut arsitektur tanpa server. Pengembang hanya menulis fungsi dan tidak perlu memikirkan topik seperti penerapan, sumber daya server, skalabilitas… Itu karena FaaS dapat diskalakan secara otomatis. Oleh karena itu, penagihan didasarkan pada konsumsi nyata, bukan pada kebutuhan sumber daya yang dinyatakan.
Contoh yang paling menonjol adalah AWS Lambda, tetapi ada juga contoh lain seperti Google Cloud Functions, Microsoft Azure Functions, Iron.io, dan Webtask.io.
Salah satu kelemahan terbesar FaaS adalah teknologi yang didukung. Bahkan ada lebih sedikit teknologi yang tersedia dibandingkan dengan PaaS. Lebih tepatnya (per 2017) AWS Lambda mendukung .NET, Java, Node.js dan Python, Microsoft Azure Functions mendukung .NET, Java, Node.js, dan PHP, sedangkan Google Functions hanya mendukung Node.js. Jadi seperti yang Anda perhatikan, tidak ada FaaS paling populer yang mendukung Ruby yang bertentangan dengan PaaS (mis., Heroku).
Apa yang dapat dilakukan fungsi FaaS?
Mari kita bagi fungsi sesuai dengan fitur Microsoft Azure Functions:
- Webhook generik – menangani permintaan HTTP seperti pengontrol di dalam monolit atau layanan mikro, dapat dipanggil baik dari sistem kami (fungsi lain atau layanan mikro) atau dari sistem eksternal yang mendukung webhook (artinya sistem eksternal mengirimkan permintaan HTTP ke webhook kami ) seperti Stripe atau Slack
- GitHub webhook – jenis webhook tertentu yang dipanggil pada acara GitHub, dalam arsitektur microservices/monolith dapat dilakukan dengan CI
- TimerTrigger – dipanggil pada waktu tertentu, dalam arsitektur microservices/monolith dapat dilakukan di dalam kode (setTimeout / setInterval) atau dengan alat antrian seperti RabbitMQ
- CosmosDBTrigger – dipanggil ketika dokumen Cosmos DB ditambahkan atau diperbarui sehingga berfungsi seperti pemicu basis data. Di platform selain Fungsi Microsoft Azure, fungsi FaaS dapat dipicu dari DBMS lain
- BlobTrigger – dipanggil saat gumpalan Microsoft Azure Storage ditambahkan ke wadah. Aplikasi yang berguna adalah mengubah ukuran gambar
- QueueTrigger – memungkinkan pemrosesan antrian, dalam arsitektur monolith/microservices dapat dicapai dengan alat antrian seperti RabbitMQ
- EventHubTrigger – digunakan di Internet of Things
- Seperti yang Anda lihat, dengan FaaS, kami dapat menerapkan algoritma apa pun (kelengkapan Turing) karena kami dapat menangani permintaan HTTP, kami dapat mengirim permintaan HTTP lain dan terlebih lagi, kami dapat menangani waktu dan kejadian antrian.
Apa yang tidak dapat dilakukan FaaS (Function as a Service)?
Satu-satunya batasan adalah tentang dukungan teknologi tertentu misalnya, penyedia FaaS yang diberikan tidak mendukung protokol MQTT sehingga memerlukan penggunaan aplikasi yang mengubah MQTT ke HTTP, format lain yang didukung di FaaS, atau kami memerlukan bagian titik akhir dari sistem yang berinteraksi dengan manusia (aplikasi web, aplikasi seluler, atau aplikasi desktop) atau lingkungan fisik (robot yang memeriksa kondisi cuaca, printer, bola lampu…) – yang semuanya dapat dibangun dalam arsitektur FaaS tetapi memerlukan beberapa adaptor di luar dunia FaaS .
Fungsi dapat digabungkan dengan layanan mikro, sehingga kami dapat menghubungkan FaaS dengan PaaS, tetapi juga memungkinkan untuk membangun seluruh backend di FaaS (dengan beberapa batasan pada teknologi yang digunakan di sisi backend).
Namun, mari kita bahas kelemahan lain – kami menulis kode yang berjalan pada FaaS tertentu (misalnya, Microsoft Azure Functions) sehingga pindah ke FaaS lain (misalnya, Google Functions) mungkin memerlukan penulisan ulang bahkan setengah dari kode yang ditulis sebagai fungsi FaaS. Di sisi lain, berpindah dari satu PaaS ke PaaS lainnya seharusnya relatif mudah.
Bahkan ada lebih banyak XaaS daripada yang dapat Anda bayangkan:
- Analitik sebagai Layanan
- Otentikasi sebagai Layanan
- Cadangkan sebagai Layanan
- Bisnis sebagai Layanan
- Komunikasi sebagai Layanan
- Komputasi sebagai Layanan
- Konten sebagai Layanan
- Desktop sebagai Layanan
- Penyimpanan Energi sebagai Layanan
- Penipuan sebagai Layanan
- Game sebagai Layanan
- Perangkat Keras sebagai Layanan
- TI sebagai Layanan
- Pekerjaan sebagai Layanan
- Pengetahuan sebagai Layanan
- Masuk sebagai Layanan
- Mashup sebagai Layanan
- Backend Seluler sebagai Layanan
- MongoDB sebagai Layanan
- Pemantauan sebagai Layanan
- Jaringan sebagai Layanan
- Oracle sebagai Layanan
- Pembayaran sebagai Layanan
- Kualitas sebagai Layanan
- Permintaan sebagai Layanan
- Pemulihan sebagai Layanan
- Replikasi sebagai Layanan
- Robot sebagai Layanan
- Perutean sebagai Layanan
- Cari sebagai Layanan
- Keamanan sebagai Layanan
- Penyimpanan sebagai Layanan
- Pengujian sebagai Layanan
- Utilitas sebagai Layanan
- Virtualisasi sebagai Layanan
- Nirkabel sebagai Layanan / WiFi sebagai Layanan
- Optimasi WAN sebagai Layanan
Ringkasan
Seperti yang Anda lihat, banyak dari XaaS bahkan dapat memiliki akronim yang sama dan satu dapat menjadi bagian dari yang lain. Ini adalah pertanyaan sulit yang XaaS harus digunakan dalam proyek tertentu dan situasi tertentu. Saya kira pada saat yang sama berbagai insinyur DevOps dapat memilih solusi yang sangat berbeda. Pendekatan favorit saya adalah membuat arsitektur berorientasi layanan mikro di PaaS karena hanya menggabungkan fleksibilitas dengan kesederhanaan.
Tentu saja, kita harus membuat hidup kita lebih mudah dengan menggunakan beberapa SaaS eksternal seperti integrasi SparkPost atau Slack dan beberapa DaaS eksternal untuk dengan mudah mendapatkan data seperti nilai tukar mata uang saat ini. Selain itu, kami dapat mendasarkan beberapa (5% ~ 20% tergantung pada kebutuhan kami) bagian dari sistem kami pada FaaS – fungsi stateless sederhana yang menghubungkan beberapa layanan sehingga menggunakan FaaS hanya akan menghemat waktu dalam penerapan dan pemantauan.
Saya harap artikel ini akan membantu Anda memilih XaaS yang tepat (atau banyak dari mereka secara bersamaan) dalam proyek Anda.
Leave a Reply