Apa perbedaan antara SOA dan layanan mikro?
Arsitektur berorientasi layanan (SOA) adalah sebuah metode pengembangan perangkat lunak yang menggunakan komponen perangkat lunak yang disebut layanan untuk membuat aplikasi bisnis. Setiap layanan menyediakan kemampuan bisnis. Layanan-layanan tersebut juga dapat saling berkomunikasi di seluruh platform dan bahasa. Developer menggunakan SOA untuk menggunakan kembali layanan dalam sistem yang berbeda atau menggabungkan beberapa layanan independen untuk melakukan tugas yang kompleks. Arsitektur layanan mikro adalah evolusi dari gaya arsitektur SOA. Setiap layanan SOA adalah kemampuan bisnis penuh sedangkan setiap layanan mikro adalah komponen perangkat lunak yang jauh lebih kecil yang khusus untuk satu tugas saja. Layanan mikro mengatasi kekurangan SOA untuk membuat perangkat lunak menjadi lebih kompatibel dengan lingkungan korporasi berbasis cloud modern.
Apa saja keterbatasan arsitektur monolitik yang dapat diatasi oleh arsitektur SOA?
Dalam arsitektur monolitik, developer menulis kode untuk semua fungsi layanan dalam basis kode tunggal. Dengan arsitektur berorientasi layanan (SOA), developer dapat mengatasi tantangan arsitektur monolitik, seperti berikut:
- Tantangan penskalaan yang mengharuskan seluruh aplikasi untuk menskalakan, bahkan jika hanya komponen tertentu yang membutuhkan sumber daya tambahan.
- Ketidakmampuan untuk menambah atau memodifikasi fitur secara fleksibel karena fungsionalitas didistribusikan di seluruh basis kode.
- Ketidakmampuan untuk menggunakan kembali komponen di aplikasi yang berbeda.
- Keterbatasan toleransi terhadap kesalahan. Kegagalan dalam satu komponen berpotensi melumpuhkan seluruh sistem.
- Tantangan terkait adopsi teknologi baru atau integrasi dengan sistem eksternal yang menggunakan teknologi berbeda.
Arsitektur monolitik juga memusatkan kepemilikan dan tim pengembangan yang bertanggung jawab atas seluruh aplikasi. Tim mengalami kesulitan terkait pengiriman berkelanjutan dan praktik DevOps karena ukuran dan kompleksitas arsitektur.
Dengan SOA, developer memecah fungsi perangkat lunak menjadi lapisan-lapisan penyedia layanan dan konsumen layanan. Lapisan-lapisan ini berkomunikasi dan bertukar data melalui bus layanan korporasi (ESB). Developer menggunakan SOA untuk menyederhanakan aplikasi yang kompleks menjadi beberapa layanan yang dapat digunakan kembali.
Apa saja keterbatasan arsitektur SOA yang dapat diatasi oleh arsitektur layanan mikro?
Arsitektur berorientasi layanan (SOA) mungkin bekerja dengan baik untuk membangun aplikasi korporasi besar, tetapi layanan ini membutuhkan lebih banyak fleksibilitas untuk menskalakan aplikasi khusus bisnis yang lebih kecil. Berikut adalah beberapa keterbatasan SOA:
- Bus layanan korporasi (ESB) menghubungkan beberapa layanan sehingga membuatnya menjadi titik kegagalan tunggal.
- Semua layanan berbagi repositori data umum. Hal ini menjadikan layanan sulit dikelola secara individu.
- Setiap layanan memiliki cakupan yang luas. Jadi, jika salah satu layanan gagal, seluruh alur kerja bisnis akan terpengaruh.
Oleh karena itu, developer beralih ke arsitektur layanan mikro untuk pendekatan yang lebih terperinci pada pembangunan aplikasi.
Model layanan mikro membagi layanan SOA menjadi beberapa layanan yang lebih kecil. Setiap layanan mikro beroperasi dalam konteks yang dibatasi dan berjalan secara independen dari layanan lain. Singkatnya, arsitektur layanan mikro hanya memiliki sedikit atau bahkan tidak memiliki dependensi antara setiap layanan sehingga mengurangi risiko kegagalan seluruh sistem.
Perbedaan arsitektur: SOA vs. layanan mikro
Arsitektur berorientasi layanan (SOA) memiliki cakupan korporasi yang lebih luas. Berbagai unit bisnis yang berbeda berkolaborasi secara efisien pada platform berbagi data umum. Sebaliknya, layanan mikro memiliki cakupan yang lebih sempit.
Misalnya, manajemen inventaris merupakan layanan SOA di sebuah sistem e-commerce. Namun, pendekatan layanan mikro akan memecah manajemen inventaris menjadi layanan-layanan yang lebih kecil, seperti pemeriksa ketersediaan, pemenuhan, dan akuntansi.
Implementasi
Implementasi SOA melibatkan integrasi berbagai jenis layanan ke dalam aplikasi. Implementasi ini menggunakan bus layanan korporasi untuk menghubungkan berbagai jenis layanan, seperti berikut ini:
- Layanan fungsional untuk mendukung operasi bisnis tertentu
- Layanan korporasi untuk mengekspos fungsi bisnis tertentu ke layanan lain
- Layanan aplikasi yang digunakan oleh developer untuk membangun dan melakukan deployment aplikasi
- Layanan infrastruktur untuk mengelola fitur nonfungsional, seperti autentikasi dan keamanan
Sebaliknya, arsitektur layanan mikro adalah implementasi SOA yang lebih terperinci dan independen. Layanan mikro tidak berbagi sumber daya seperti layanan SOA. Setiap layanan mikro beroperasi secara independen untuk menyediakan fungsionalitas yang sangat spesifik.
Komunikasi
Untuk mengakses layanan jarak jauh, arsitektur SOA akan menggunakan bus layanan korporasi (ESB) terpusat untuk menghubungkan beragam layanan dengan beberapa protokol perpesanan. Beberapa protokol ini meliputi SOAP, Advanced Messaging Queuing Protocol (AMQP), dan Microsoft Message Queuing (MSMQ). Jika ESB gagal, semua layanan SOA akan terpengaruh.
Sementara itu, arsitektur layanan mikro menggunakan sistem perpesanan yang lebih sederhana, seperti API RESTful, Layanan Pesan Java (JMS), atau streaming peristiwa publikasi-berlangganan (pub/sub). Metode ini tidak memerlukan layanan mikro untuk mempertahankan agar koneksi tetap aktif saat bertukar data.
API adalah alat umum untuk arsitektur layanan mikro. API memungkinkan dua layanan mikro atau lebih untuk bertukar data secara langsung tanpa harus melalui saluran terpusat. Namun, hal ini dapat menciptakan jalur data yang kompleks di antara lusinan layanan mikro, yang dipantau dan dikelola developer.
Penyimpanan data
Lingkungan SOA terdiri dari lapisan penyimpanan data tunggal yang dibagikan oleh berbagai layanan yang terhubung lainnya. Berbagai aplikasi korporasi mengakses dan menggunakan kembali data yang sama dalam implementasi SOA sehingga mengoptimalkan nilai repositori data.
Sebaliknya, setiap layanan mikro memiliki penyimpanan datanya sendiri. Dalam arsitektur layanan mikro, independensi data lebih penting daripada kemudahan penggunaan kembali.
Penerapan
Deployment layanan SOA mungkin sulit dilakukan karena layanan-layanan tersebut digabungkan ke tingkat tertentu. Misalnya, developer harus membangun kembali seluruh aplikasi jika mereka memodifikasi atau menambahkan layanan baru. Selain itu, aplikasi SOA tidak dapat secara maksimal memanfaatkan kontainerisasi, yang mengabstraksi aplikasi dari sistem operasi dan perangkat keras.
Sementara itu, deployment layanan mikro lebih mudah dilakukan karena layanan tersebut didesain untuk menskalakan di lingkungan cloud. Setiap layanan mikro adalah aplikasi independen yang dapat dikontainerisasi dan dilakukan deployment oleh developer di cloud.
Manfaat utama: layanan mikro vs. SOA
Arsitektur berorientasi layanan (SOA) dan layanan mikro memungkinkan tim pengembangan untuk membangun, melakukan deployment, dan mengelola aplikasi modern secara efisien untuk lingkungan cloud. Meskipun demikian, layanan mikro menawarkan keunggulan tertentu dibandingkan deployment SOA.
Kemudahan penggunaan kembali
Salah satu prinsip dalam desain SOA adalah penekanan pada penggunaan kembali dan berbagi komponen. Dalam arsitektur ini, beberapa aplikasi yang berhadapan langsung dengan pengguna menggunakan layanan SOA yang sama. Misalnya, dasbor faktur dan pelacakan pesanan dapat mengakses layanan yang sama untuk mengambil detail pelanggan.
Sementara itu, layanan mikro mengambil pendekatan yang berbeda. Layanan mikro menerapkan duplikasi data, bukan berbagi sumber daya umum. Dengan cara ini, aplikasi berbasis layanan mikro akan bekerja secara lebih efisien dan tidak terbatas pada operasi data layanan lain.
Kecepatan
SOA mungkin menawarkan kecepatan yang baik dalam implementasi sederhana. Namun, latensi data akan meningkat karena developer menambahkan lebih banyak layanan ke sistem. Semua layanan bersaing untuk sumber daya komunikasi dan kemampuan data yang sama.
Sebaliknya, arsitektur layanan mikro tetap tangkas dan responsif saat sistem menskalakan karena tidak perlu berbagi sumber daya yang tumpang tindih. Developer dapat menetapkan dan meningkatkan sumber daya komputasi ke layanan mikro tertentu jika permintaan lalu lintas meningkat. Hal ini memungkinkan aplikasi berbasis layanan mikro berjalan pada kecepatan yang dapat diterima setiap saat.
Fleksibilitas tata kelola
Aplikasi berbasis SOA menyediakan tata kelola data yang konsisten di seluruh repositori umum yang digunakan oleh berbagai layanan.
Namun, developer yang bekerja dengan layanan mikro dapat memutuskan kebijakan tata kelola yang berbeda untuk unit penyimpanan data independen. Tim pengembangan dapat berkolaborasi secara lebih efisien dan memiliki kebebasan untuk menentukan mekanisme tata kelola data.
Waktu yang tepat untuk menggunakan: SOA vs. layanan mikro
Arsitektur berorientasi layanan (SOA) dan layanan mikro menyediakan berbagai cara bagi organisasi untuk bermigrasi dari arsitektur monolitik ke lingkungan cloud. Dalam beberapa kasus penggunaan praktis, SOA mungkin lebih cocok untuk digunakan dibandingkan layanan mikro sedangkan di kasus penggunaan lain, mungkin layanan mikro lebih cocok digunakan, bergantung faktor-faktor tertentu.
SOA
Organisasi dengan aplikasi korporasi warisan atau berdiri sendiri mendapatkan manfaat dari arsitektur SOA. SOA menyederhanakan program perangkat lunak konvensional menjadi bagian-bagian modular yang lebih kecil. SOA juga mengumpulkan sumber daya bersama untuk merampingkan fungsionalitas bisnis. Alih-alih membangun layanan yang tumpang tindih dan berlebih, developer dapat menggunakan kembali layanan SOA yang sudah ada untuk menerapkan lebih banyak solusi bisnis.
Layanan mikro
Arsitektur layanan mikro adalah pilihan yang lebih baik untuk mendukung tim pengembangan Agile. Developer dapat membuat perubahan kode yang cepat dan inkremental tanpa memengaruhi stabilitas aplikasi menggunakan alat-alat integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD). Layanan mikro menjadi pilihan yang lebih baik jika developer memiliki tujuan berikut:
- Menggunakan bahasa, pustaka, atau kerangka kerja pemrograman yang berbeda untuk membangun aplikasi tunggal
- Menggabungkan berbagai layanan individu yang dibangun dengan kerangka kerja perangkat lunak yang berbeda
- Menyediakan sumber daya komputasi dan menskalakan layanan individu secara waktu nyata
Dengan layanan mikro, perusahaan bisa mendapatkan manfaat dari kemampuan cloud modern dan melakukan deployment ratusan layanan mikro dengan mudah.
Ringkasan perbedaan: SOA vs. layanan mikro
SOA |
Layanan mikro |
|
Implementasi |
Berbagai layanan yang berbeda dengan sumber daya bersama. |
Berbagai layanan kecil yang bersifat independen dan spesifik tujuan. |
Komunikasi |
ESB menggunakan beberapa protokol perpesanan seperti SOAP, AMQP, dan MSMQ. |
API, Layanan Pesan Java, Pub/Sub |
Penyimpanan data |
Penyimpanan data bersama. |
Penyimpanan data independen. |
Penyebaran |
Tidak mudah dilakukan. Pembangunan kembali secara penuh diperlukan untuk membuat perubahan kecil. |
Deployment mudah dilakukan. Setiap layanan mikro dapat dikontainer. |
Kemudahan penggunaan kembali |
Layanan yang dapat digunakan kembali melalui sumber daya umum bersama. |
Setiap layanan memiliki sumber daya independennya sendiri. Anda dapat menggunakan kembali layanan mikro melalui API. |
Kecepatan |
Makin lambat seiring penambahan layanan. |
Kecepatan yang konsisten seiring pertumbuhan lalu lintas. |
Fleksibilitas tata kelola |
Tata kelola data yang konsisten di semua layanan. |
Kebijakan tata kelola data yang berbeda untuk setiap penyimpanan. |
Bagaimana AWS dapat membantu kebutuhan layanan mikro Anda?
Bangun aplikasi modern di Amazon Web Services (AWS) dengan pola arsitektur modular, model operasional nirserver, dan proses pengembangan yang tangkas. Kami menawarkan platform terlengkap untuk membangun layanan mikro dengan ketersediaan tinggi untuk mendukung aplikasi modern dalam berbagai cakupan dan ukuran.
Berikut adalah hal yang dapat Anda lakukan dengan layanan mikro di AWS:
- Membangun, mengisolasi, dan menjalankan layanan mikro yang aman dalam kontainer terkelola untuk menyederhanakan operasi serta mengurangi overhead manajemen. Baca selengkapnya di Kontainer di AWS.
- Menggunakan AWS Lambda untuk menjalankan layanan mikro tanpa perlu menyediakan dan mengelola server.
- Memilih dari 15 basis data AWS Cloud relasional dan non-relasional yang dibangun khusus untuk mendukung arsitektur layanan mikro.
- Memantau dan mengontrol layanan mikro yang berjalan di AWS secara mudah dengan AWS App Mesh.
- Memantau dan mengatasi masalah interaksi layanan mikro yang kompleks dengan AWS X-Ray.
Layanan mikro AWS membantu Anda berinovasi secara lebih cepat, mengurangi risiko, mempercepat waktu masuk ke pasar, dan mengurangi total biaya kepemilikan. Mulai menggunakan layanan mikro di AWS dengan membuat akun sekarang juga.