GNU/Linux >> Belajar Linux >  >> Cent OS

Apa itu Layanan Mikro? Pengantar Arsitektur Layanan Mikro

Pendahuluan

Dalam dekade terakhir, pengembangan aplikasi telah berkembang pesat untuk mengikuti kemajuan teknologi dan kebutuhan konsumen.

Sementara pengembangan tradisional mengandalkan satu potongan besar kode, sebagian besar aplikasi saat ini dibangun dari beberapa aplikasi mini atau layanan mikro , masing-masing bertanggung jawab atas satu fungsi aplikasi.

Bersama-sama mereka membentuk sistem yang disebut sebagai arsitektur layanan mikro.

Apa itu Layanan Mikro?

Layanan mikro , atau lebih tepatnya arsitektur layanan mikro , adalah sistem yang digunakan untuk mengembangkan aplikasi, dibangun di atas pilihan layanan individual yang bekerja bersama untuk memastikan kinerja yang mulus dan sangat responsif.

Jika Anda membuat aplikasi web menggunakan arsitektur layanan mikro, Anda membaginya menjadi fungsionalitas individual, mengembangkan, dan men-deploy masing-masing sebagai aplikasi terpisah.

Berbeda dengan pengembangan monolitik, di mana semuanya digabungkan dan, oleh karena itu, bergantung satu sama lain, arsitektur layanan mikro terdiri dari beberapa modul komponen otonom. Ini adalah jenis arsitektur yang mengandalkan sistem kopling longgar .

Catatan :Kopling longgar adalah penataan sistem di mana elemen-elemennya tidak menyadari satu sama lain, tetapi dapat berkomunikasi.

Misalnya, situs web e-niaga memerlukan banyak layanan berbeda, termasuk pembayaran online, pengembalian, profil pengguna, dan sebagainya. Untuk membuat situs web, para pengembang akan dipecah menjadi beberapa tim, masing-masing bertanggung jawab untuk membangun salah satu layanan mikro yang digunakan.

Bagaimana Layanan Mikro Berbicara Satu Sama Lain?

Setelah Anda memahami strukturnya, Anda mungkin bertanya-tanya bagaimana entitas yang terpisah ini bersatu untuk menciptakan satu layanan atau aplikasi yang harmonis. Jawabannya adalah membangun komunikasi yang langsung, cepat, dan tanpa cacat antara semua layanan. Oleh karena itu, layanan mikro berkomunikasi satu sama lain melalui API .

Antarmuka Pemrograman Aplikasi (API ) adalah titik akses dari setiap fungsionalitas modular yang memungkinkan modul untuk berinteraksi. Layanan mikro menggunakan antarmuka ini untuk mengirim dan menanggapi permintaan dari modul lain.

Setiap layanan mikro harus memiliki titik akhir API yang didefinisikan dengan jelas (salah satu ujung saluran komunikasi) untuk memastikan selalu dapat diakses untuk pertanyaan. Dalam kebanyakan kasus, ini adalah REST API tanpa kewarganegaraan . Tanpa titik akhir yang jelas, sistem tidak tahu ke mana harus mencari informasi yang dibutuhkan.

Oleh karena itu, tim DEV akan menggunakan standar dan pola resmi untuk berbagi titik akhir di antara mereka sendiri. Merupakan tanggung jawab mereka untuk membangun REST API melalui kolaborasi dan komunikasi yang jelas.

Perbedaan Antara Arsitektur Tradisional dan Arsitektur Layanan Mikro

Untuk mendapatkan pemahaman yang lebih baik tentang layanan mikro, mari bandingkan dengan sistem yang digunakan sebelum pengembangannya – arsitektur monolitik .

Arsitektur monolitik bekerja dengan baik untuk sistem sisi server tradisional. Ini adalah sistem yang didasarkan pada satu aplikasi. Semua fungsi berada dalam satu struktur, menggunakan sistem file yang sama, berkomunikasi dengan server yang sama, dan akhirnya disebarkan pada mesin yang sama.

Jenis arsitektur ini memungkinkan pengembang untuk membuat aplikasi lebih cepat, karena mereka hanya perlu membangun fitur penting yang nantinya akan mereka tambahkan fungsionalitas lainnya. Selain itu, kinerjanya lebih cepat karena prosesnya tidak melibatkan API.

Dengan perluasan aplikasi web, muncul kebutuhan akan kelincahan dan waktu kerja yang konsisten. Arsitektur monolitik memiliki terlalu banyak hambatan untuk memenuhi tuntutan ini.

Kontra Arsitektur Monolitik

Karena sistem ini memiliki proses penggabungan yang ketat, setiap perubahan yang dilakukan pada kode berpotensi membahayakan kinerja seluruh aplikasi. Fungsionalitasnya terlalu saling bergantung untuk era teknologi baru yang menuntut inovasi dan adaptasi terus-menerus.

Masalah lain dengan arsitektur monolitik adalah ketidakmampuannya untuk mengukur fungsionalitas individu. Salah satu aspek penting dari bisnis yang sukses adalah kemampuan mereka untuk memenuhi permintaan konsumen. Secara alami, tuntutan ini bergantung pada berbagai faktor dan berfluktuasi dari waktu ke waktu.

Pada titik tertentu, bisnis Anda hanya perlu menskalakan fungsi tertentu dari layanannya untuk menanggapi permintaan yang semakin banyak. Dengan aplikasi monolitik, Anda tidak dapat menskalakan elemen individual, melainkan harus menskalakan aplikasi secara keseluruhan.

Manfaat Layanan Mikro

Pengenalan layanan mikro memecahkan banyak masalah yang tidak dapat dilakukan oleh pengembangan monolitik.

1. Sangat Fleksibel

Pertama, arsitektur layanan mikro sangat fleksibel . Karena setiap layanan mikro bersifat independen, pemrogram dapat membuat modul menggunakan bahasa atau platform yang berbeda. Modul-modul ini akan dapat berkomunikasi satu sama lain berkat API.

Selain itu, dengan layanan mikro, tidak ada organisasi yang harus berkomitmen jangka panjang pada tumpukan teknologi. Dengan demikian, pengembang selalu dapat bekerja dengan teknologi terbaru.

2. Modul Fungsi yang Dapat Digunakan Kembali

Selain itu, fitur ini memungkinkan pengembang untuk menggunakan kembali modul fungsionalitas dan menerapkannya ke aplikasi lain. Memanfaatkan layanan mikro yang sudah disempurnakan menghemat sumber daya perusahaan, dan memungkinkan pengembang fokus pada proyek lain.

3. Tangguh terhadap Perubahan

Fitur penting lainnya adalah sistemnya cukup tahan terhadap perubahan. Dipasangkan secara longgar, fungsi dalam aplikasi tidak terlalu bergantung pada kode. Pengembang dapat secara efisien menambahkan fitur baru atau memodifikasi yang sudah ada. Mereka mengubah kode satu modul alih-alih seluruh aplikasi.

4. Dapat diskalakan

Tidak seperti aplikasi monolitik, layanan mikro sangat baik untuk penskalaan . Mereka memastikan aplikasi Anda aktif dan berjalan setiap saat, tanpa membuang uang untuk modul yang tidak digunakan. Karena Anda menerapkan fungsionalitas pada server yang berbeda, sistem memungkinkan Anda untuk menskalakan hanya sumber daya yang diperlukan.

5. Siklus Pengembangan Lebih Cepat

Dalam model terdistribusi, aplikasi dipecah menjadi layanan yang lebih kecil. Jika organisasi Anda telah mengadopsi pengembangan tangkas, tim Anda dapat memperbaruinya dengan lebih mudah dan mempercepat siklus pengembangan.

Dari perspektif bisnis, siklus pengembangan yang lebih cepat adalah salah satu peningkatan terbesar yang diperkenalkan oleh layanan mikro.

6. Model Transparan

Karyawan baru, misalnya, akan lebih mudah memahami dan memodifikasi kode tersebut. Ini didasarkan pada fakta bahwa aplikasi didistribusikan di antara banyak layanan. Menangani satu layanan mikro pada satu waktu lebih mudah daripada menangani seluruh sistem terintegrasi.

Kelemahan Layanan Mikro

1. Kompleksitas

Kelemahan nomor satu arsitektur layanan mikro adalah kompleksitasnya . Dibandingkan dengan aplikasi monolitik, sistem yang baru dikembangkan memiliki lebih banyak komponen. Komponen-komponen ini (layanan mikro) harus bekerja dengan sempurna sendiri dan di dalam sistem.

2. Pengeluaran

Sistem ini juga lebih mahal . Karena layanan dikerahkan di beberapa server, aplikasi akhirnya membutuhkan jumlah CPU yang lebih signifikan dan lingkungan runtime yang lebih banyak. Selain itu, karena kebutuhan mereka akan komunikasi yang konstan, layanan mikro melakukan banyak panggilan jarak jauh. Faktor-faktor ini dan faktor lainnya bertambah, sehingga membutuhkan anggaran yang lebih besar untuk pembangunan.

3. Keamanan

Layanan mikro juga memerlukan keamanan yang lebih tinggi Pengukuran. Seperti disebutkan di atas, layanan berbicara satu sama lain melalui API. Ini berarti mereka bertukar informasi melalui jaringan, yang selalu merupakan ancaman potensial. Untuk alasan ini, pemeliharaan dan peningkatan harus sempurna.

4. Kinerja

Kompleksitas arsitektur juga memengaruhi kinerja . Karena layanan mikro menyertakan beberapa instans JVM (Java Virtual Machine) dan komunikasi antar-proses, efisiensinya bisa lebih lambat dibandingkan dengan aplikasi monolitik.

PRO KONTRA
Independensi layanan. Setiap wadah layanan memiliki logika bisnisnya sendiri dan berfokus pada kemampuan bisnis tunggal. Arsitekturnya mendukung unit-unit yang dapat di-deploy secara terpisah satu sama lain. Penyiapan Rumit. Karena individualismenya, menyiapkan sistem memerlukan lebih banyak konfigurasi dan sumber daya, yang mengakibatkan overhead operasional.
Penerapan yang fleksibel/gesit. Setiap layanan mikro dapat diskalakan secara independen dengan peluang untuk menggunakan teknologi yang berbeda dan berjalan pada tumpukan dan produk yang berbeda. Kompleksitas operasional. Lebih sulit untuk memecahkan masalah, men-debug, dan melacak transaksi melalui ekosistem layanan mikro. Mengatasi masalah dalam sistem menuntut otomatisasi tingkat tinggi.
Toleran terhadap kesalahan. Layanan mikro adalah unit yang digabungkan secara longgar yang dapat dipulihkan secara otomatis. Unit-unit ini tidak saling bergantung, memungkinkan pengembang untuk meningkatkan ketersediaan setiap unit, bila diperlukan. Risiko keamanan. Meskipun layanan terisolasi lebih toleran terhadap kesalahan, fitur yang sama dapat menimbulkan masalah keamanan selama transaksi antar unit.
Mendukung CI/CD. Karena layanan mikro di-deploy secara independen, beberapa instance dapat dikembangkan dan di-deploy secara bersamaan. Oleh karena itu, ini mengarah pada rilis perangkat lunak yang lebih cepat dan lebih sering. Antarmuka yang bergantung pada kode. Layanan berkomunikasi melalui antarmuka yang saling bergantung. Tidak mungkin memodifikasi satu antarmuka tanpa menyesuaikan yang lain.
Merampingkan penambahan fitur baru. Menambahkan fitur baru lebih mudah dengan mengubah layanan yang ada atau menambahkan yang baru tanpa mengganggu kinerja layanan lain. Kinerja Lebih Lambat. Dibandingkan dengan aplikasi monolitik, layanan mikro membutuhkan lebih banyak waktu untuk melakukan tugas karena arsitekturnya yang kompleks dan komunikasi antar-proses.

Tantangan untuk Mengadopsi Layanan Mikro

1. Merancang Model Terdistribusi

Tantangan awal untuk mengadopsi layanan mikro adalah mendesain model yang andal dan berkelanjutan . Layanan mikro menggunakan sistem yang terdistribusi secara longgar, jadi kemungkinan besar Anda akan berakhir dengan desain yang kompleks. Semua dependensi sistem harus dipertimbangkan dan dipertimbangkan dengan cermat.

2. Pengujian Integrasi

Tantangan lainnya adalah integrasi dan pengujian ujung ke ujung. Pengujian menjadi lebih sulit dan lebih penting dari sebelumnya. Layanan mikro harus berkomunikasi dan mendukung satu sama lain, sehingga semua layanan harus bebas bug. Bug di satu layanan dapat menyebabkan kesalahan fatal di layanan lain. Inilah sebabnya mengapa pengujian berkelanjutan dengan layanan mikro sangat penting.

3. Penerapan

Jika Anda masih menerapkan secara manual, tim Anda pada awalnya harus menginvestasikan waktu untuk mengotomatisasi proses. Karena kerumitan model terdistribusi, penerapan secara manual menjadi terlalu rumit.

4. Pemantauan dan Logging

Organisasi yang mengadopsi layanan mikro harus membuat sistem pemantauan dan pencatatan terpusat . Jika tidak dikonfigurasi, mengidentifikasi dan men-debug masalah menjadi tidak mungkin.

5. Men-debug

Karena semua faktor yang disebutkan di atas dan kerumitan lainnya, seperti penyeimbangan muatan dan latensi, masalah debug , dalam sistem terdistribusi, adalah kompleks. Tidak ada jawaban sederhana untuk pendekatan apa yang paling berhasil, dan itu pasti akan memakan waktu lama sebelum Anda menemukan apa yang paling cocok untuk proyek Anda.

6. Pertimbangan Lain

Terakhir, organisasi Anda perlu beradaptasi untuk mengadopsi model layanan mikro. Cara tim Anda bekerja dan bekerja sama perlu diubah. Dorong perubahan dalam budaya perusahaan Anda untuk mempersiapkan tim Anda untuk layanan mikro.

Contoh Layanan Mikro

Layanan mikro di Java

Anda dapat mengembangkan layanan mikro menggunakan bahasa yang berbeda. Namun, Jawa masih dianggap sebagai salah satu pilihan teratas untuk membangun aplikasi dengan arsitektur seperti itu.

Ada beberapa kerangka kerja layanan mikro yang digunakan untuk pengembangan dengan Java, termasuk:

  • Sepatu Musim Semi
  • Sombong
  • Jersey
  • Dropwizard
  • JHipster
  • Vert.x
  • Mainkan

Selain itu, penyiapan layanan mikro sering digunakan untuk mendukung lingkungan pembelajaran mesin (ML) karena memungkinkan beberapa kerangka kerja pembelajaran mesin dalam alur kerja. TensorFlow, Apache Mahout, dan Apache Singa adalah contoh framework ML yang digunakan dengan Java.

Dengan mengumpulkan, menggabungkan, dan menganalisis aliran data, kerangka kerja dapat memprediksi hasil dan memberikan perbandingan antar model.

Layanan mikro di Docker

Docker adalah perangkat lunak hebat lainnya untuk membangun layanan mikro. Karena menggunakan wadah untuk menjalankan lingkungan virtual, platform ini memungkinkan beberapa cara untuk mengatur layanan mikro:

  • Setiap kontainer dapat didedikasikan untuk layanan individual.
  • Satu layanan dapat dipisahkan menjadi beberapa wadah untuk proses terpisah dalam layanan.

Wadah adalah cara praktis untuk mengisolasi layanan mikro. Mereka ringan, dapat diterapkan, dan dapat diskalakan ke berbagai sistem operasi dan infrastruktur.

Jika Anda menjalankan aplikasi Docker multi-kontainer, Docker Compose adalah alat yang dapat membantu Anda mengelola dan mengonfigurasi semua layanan mikro Anda. Ini semua dilakukan dengan satu yaml dan melakukan tugas meluncurkan, mengeksekusi, berkomunikasi, dan menutup kontainer dengan satu perintah terkoordinasi.

Aplikasi multi-kontainer dengan banyak host Docker paling baik dikelola dengan platform orkestrasi kontainer, seperti Swarm atau Kubernet. Kedua platform memungkinkan Anda untuk mengelola cluster server masing-masing dengan beberapa layanan di dalamnya. Untuk mempelajari lebih lanjut tentang perbedaan mereka, silakan lihat artikel kami Kubernetes vs Docker Swarm.

Berikut adalah ilustrasi cara mengelola cluster container dengan kolaborasi Swarm dan Compose dalam satu sistem.


Cent OS
  1. Debian vs Ubuntu:Apa perbedaannya?

  2. Apa itu File .run?

  3. Apa Perbedaan Antara Berbagai Versi Emacs yang Tersedia?

  1. Apa Server Nama Anda?

  2. Apa itu Pengguna SELinux dan bagaimana Memetakan Pengguna Linux ke Pengguna SELinux

  3. Apa itu build-essential &build-dep?

  1. Font Default Apa yang Digunakan?

  2. Apa itu kontak?

  3. Apa manfaat CloudLinux?