Jika Anda bekerja di bidang TI atau komputasi cloud, Anda mungkin tahu tentang perdebatan arsitektur berorientasi layanan (SOA) versus layanan mikro. Lagi pula, semua orang berbicara tentang layanan mikro dan aplikasi tangkas akhir-akhir ini.
Sekilas, kedua pendekatan itu terdengar mirip, dan dalam beberapa hal, memang demikian. Keduanya melibatkan lingkungan cloud atau hybrid cloud untuk pengembangan dan penerapan aplikasi tangkas, dan keduanya dapat ditingkatkan untuk memenuhi kecepatan dan tuntutan operasional big data. Keduanya memecah aplikasi besar dan kompleks menjadi komponen kecil dan fleksibel yang lebih mudah dikerjakan. Dan keduanya berbeda dari arsitektur monolitik tradisional karena setiap layanan memiliki tanggung jawabnya sendiri.
Namun, bahkan dengan kesamaan utama ini, pemeriksaan lebih dekat dari kedua pendekatan tersebut mengungkapkan perbedaan penting.
Buletin industri
Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.
Langganan Anda akan disediakan dalam bahasa Inggris. Anda akan menemukan tautan berhenti berlangganan di setiap buletin. Anda dapat mengelola langganan atau berhenti berlangganan di sini. Lihat Pernyataan Privasi IBM® kami untuk informasi lebih lanjut.
Arsitektur berorientasi layanan (SOA) adalah pendekatan di seluruh perusahaan untuk pengembangan perangkat lunak komponen aplikasi yang manfaatkan komponen perangkat lunak yang dapat digunakan kembali, atau layanan. Dalam arsitektur perangkat lunak SOA, setiap layanan terdiri dari kode dan integrasi data yang diperlukan untuk menjalankan fungsi bisnis tertentu - misalnya, memeriksa kredit pelanggan, masuk ke situs web, atau memproses aplikasi hipotek.
Antarmuka layanan menyediakan ketergantungan minimal, yang berarti bahwa mereka dapat dipanggil dengan sedikit atau tanpa pengetahuan tentang bagaimana integrasi diimplementasikan di bawahnya. Karena ketergantungan minimal ini dan cara layanan dipublikasikan, tim pengembangan dapat menghemat waktu dengan menggunakan kembali komponen dalam aplikasi lain di seluruh perusahaan. Ini adalah manfaat dan risiko. Sebagai hasil dari akses bersama ke bus layanan perusahaan (ESB), jika muncul masalah, hal ini juga dapat memengaruhi layanan lain yang terhubung.
Data XML adalah bahan utama untuk solusi yang didasarkan pada arsitektur SOA. Aplikasi SOA berbasis XML dapat digunakan untuk membangun layanan web, misalnya.
SOA muncul pada akhir 1990-an dan merupakan tahap penting dalam perkembangan pengembangan aplikasi dan integrasi. Sebelum SOA menjadi pilihan, menghubungkan aplikasi monolitik ke data atau fungsi dalam sistem lain memerlukan integrasi antara titik yang kompleks yang harus dibuat ulang oleh pengembang untuk setiap proyek pengembangan baru. Mengekspos fungsi-fungsi tersebut melalui SOA menghilangkan kebutuhan untuk menciptakan kembali integrasi mendalam setiap saat.
SOA menyediakan empat jenis layanan yang berbeda:
Setiap layanan terdiri dari tiga komponen:
Layanan SOA dapat digabungkan untuk membuat layanan dan aplikasi tingkat yang lebih tinggi.
Seperti SOA, arsitektur layanan mikro terdiri dari komponen dengan ketergantungan minimal, dapat digunakan kembali, dan khusus yang sering kali bekerja secara independen satu sama lain. Layanan mikro juga menggunakan tingkat kohesi yang tinggi atau dikenal sebagai konteks terbatas. Konteks terbatas mengacu pada hubungan antara komponen dan datanya sebagai entitas atau unit yang berdiri sendiri dengan sedikit dependensi. Alih-alih diadopsi di seluruh perusahaan, layanan mikro biasanya berkomunikasi melalui antarmuka pemrograman aplikasi (API) untuk membangun aplikasi yang melakukan fungsionalitas bisnis tertentu. Pendekatan ini membuat mereka lebih tangkas, dapat diskalakan, dan tangguh, terutama untuk bidang bisnis tertentu. Biasanya, Java adalah bahasa pemrograman pilihan untuk mengembangkan Layanan Mikro. Bahasa pemrograman lain juga dapat digunakan, seperti Golang dan Python.
Layanan mikro adalah pendekatan arsitektur cloud native sejati, sering beroperasi dalam kontainer, yang membuatnya lebih dapat diskalakan dan portabel untuk pembuatan layanan independen. Tim dapat menggunakan layanan mikro untuk memperbarui kode dengan lebih mudah, menggunakan tumpukan yang berbeda untuk komponen yang berbeda, dan menskalakan komponen secara independen satu sama lain. Pendekatan ini mengurangi pemborosan dan biaya yang terkait dengan keharusan untuk menskalakan aplikasi karena satu fitur mungkin menghadapi terlalu banyak beban. Karena independensi mereka, layanan mikro menghasilkan layanan yang lebih toleran terhadap kesalahan daripada alternatifnya.
Lihat video berikut untuk informasi lebih lanjut tentang arsitektur layanan mikro:
Perbedaan utama antara kedua pendekatan ini bermuara pada ruang lingkup. Sederhananya, arsitektur berorientasi layanan (SOA) memiliki ruang lingkup perusahaan, sedangkan arsitektur layanan mikro memiliki ruang lingkup aplikasi.
Banyak prinsip inti dari setiap pendekatan menjadi tidak sesuai ketika Anda mengabaikan perbedaan ini. Jika Anda menerima perbedaan dalam ruang lingkup, Anda mungkin dengan cepat menyadari bahwa keduanya berpotensi saling melengkapi, tidak bersaing.
Berikut adalah beberapa contoh penggunaan di mana perbedaan ini berperan:
Dalam SOA, penggunaan kembali integrasi adalah tujuan utama dan pada tingkat perusahaan mengupayakan penggunaan kembali hingga tingkatan tertentu sangatlah penting. Penggunaan kembali dan berbagi komponen dalam arsitektur SOA meningkatkan skalabilitas dan efisiensi.
Dalam arsitektur mikro, membuat komponen mikro yang digunakan kembali saat waktu proses di seluruh aplikasi menghasilkan dependensi yang mengurangi ketangkasan dan ketahanan. Komponen layanan mikro umumnya lebih suka menggunakan kembali kode dengan menyalin dan menerima duplikasi data untuk membantu meningkatkan ketidakterikatan.
Layanan yang dapat digunakan kembali dalam SOA tersedia di seluruh perusahaan dengan menggunakan protokol yang sebagian besar bersifat sinkron seperti RESTful API.
Namun, dalam aplikasi layanan mikro, panggilan sinkron memperkenalkan dependensi real-time, yang mengakibatkan hilangnya ketahanan. Ketergantungan ini juga dapat menyebabkan latensi yang berdampak pada kinerja. Dalam aplikasi layanan mikro, pola interaksi berdasarkan komunikasi asinkron lebih disukai, seperti sumber peristiwa, di mana model publikasi/berlangganan digunakan agar komponen layanan mikro tetap mengetahui perubahan yang terjadi pada data di komponen lain.
Tujuan yang jelas dari penyediaan layanan dalam SOA adalah agar semua aplikasi dapat memperoleh dan mengubah data secara sinkron langsung pada sumber utamanya, sehingga mengurangi kebutuhan untuk mempertahankan pola sinkronisasi data yang kompleks.
Dalam aplikasi layanan mikro, idealnya, setiap layanan mikro memiliki akses lokal ke semua data yang dibutuhkan untuk memastikan ketidaktergantungannya dari layanan mikro lainnya — dan memang dari aplikasi lain — bahkan jika ini berarti ada beberapa duplikasi data di sistem lain. Tentu saja, duplikasi ini menambah kompleksitas, sehingga harus diimbangi dengan keuntungan dalam ketangkasan dan kinerja, tetapi ini diterima sebagai realitas desain layanan mikro.
Untuk beberapa organisasi, arsitektur SOA adalah batu loncatan untuk menggantikan monolit, menyediakan lingkungan yang lebih fleksibel dan tangkas. Layanan SOA dapat dikembangkan dan digunakan dalam lingkungan yang luas, tetapi mereka tidak memenuhi kebutuhan spesifik bisnis individu yang ingin menangani proses bisnis dalam lingkup mereka. DevOps dapat digunakan untuk membantu transisi organisasi dari arsitektur SOA ke layanan mikro untuk memenuhi kebutuhan spesifik.
Gaya arsitektur memiliki kelebihan, jadi bagaimana Anda bisa menentukan mana yang paling cocok untuk tujuan Anda? Secara umum, itu tergantung pada seberapa besar dan beragam lingkungan aplikasi Anda.
Baik SOA maupun layanan mikro dapat menggunakan otomatisasi untuk mempercepat proses bisnis. Lingkungan yang lebih besar dan lebih beragam cenderung condong ke arah arsitektur berorientasi layanan (SOA) yang mendukung integrasi antara aplikasi heterogen dan protokol pesan melalui bus layanan perusahaan (ESB). Lingkungan yang lebih kecil, termasuk aplikasi web dan aplikasi mobile, tidak memerlukan lapisan komunikasi yang kuat dan lebih mudah dikembangkan dengan menggunakan arsitektur mikro layanan.
Beberapa akan menunjukkan bahwa perdebatan SOA vs layanan mikro jauh lebih rumit, dan itu benar. Ada banyak hal lagi tentang perdebatan ini. Untuk penjelasan teknis yang lebih terperinci tentang perbedaan tipis ini, kami mendorong Anda untuk menyelami artikel Learn Hub tentang SOA dan layanan mikro yang memberikan banyak informasi mendalam. Namun, dari perspektif bisnis, ruang lingkup adalah perbedaan yang sangat penting.
Untuk mempelajari lebih lanjut tentang cara membangun aplikasi yang tangkas, unduh salinan gratis buku elektronik Arsitektur Aplikasi yang Tangkas.
Layanan penyewa tunggal yang dikelola sepenuhnya untuk mengembangkan dan menyediakan aplikasi Java.
Gunakan perangkat lunak dan alat bantu DevOps untuk membangun, menerapkan, dan mengelola aplikasi cloud native di berbagai perangkat dan lingkungan.
Pengembangan aplikasi cloud berarti membangun sekali, mengulangi dengan cepat, dan menerapkan di mana saja.