Apa itu Layanan Mikro?
Layanan mikro adalah modul ringan dan berpasangan longgar yang dapat berfungsi sebagai blok bangunan aplikasi berbasis cloud yang kompleks. Sementara layanan mikro individu dapat beroperasi secara independen, mereka berpasangan longgar di bawah antarmuka yang terpadu.
Arsitektur layanan mikro dianggap sebagai pengganti yang modern dan fleksibel untuk model pengembangan arsitektur monolitik yang lebih tradisional.
Dalam arsitektur monolitik, biasanya ada satu server fisik atau tervirtualisasi yang dialokasikan untuk setiap aplikasi, dan server tersebut selalu berjalan. Penskalaan dan ketersediaan aplikasi sepenuhnya tergantung pada perangkat keras yang mendasarinya, yang merupakan entitas tetap.
Sebaliknya, layanan mikro dapat mengoperasikan beberapa instans pada satu server tunggal atau di banyak server karena sumber daya berskala secara dinamis untuk mendukung tuntutan beban kerja. Layanan mikro individu biasanya terkontainerisasi untuk meningkatkan portabilitas dan skalabilitas.
Karakteristik yang Berbeda dari Layanan Mikro
Sebagai proses pengembangan, kerangka kerja layanan mikro memiliki karakteristik tertentu yang umum tetapi tidak universal.
Karakteristik tersebut meliputi:
- Komponen. Layanan mikro biasanya terdiri dari komponen perangkat lunak diskrit yang dapat diganti dan diupgrade secara individu. Arsitektur ini memiliki implikasi untuk teknologi pengelolaan cloud karena setiap layanan mikro harus disediakan, dipantau, dan ditingkatkan secara terpisah.
- Layanan. Komponennya terdiri dari layanan yang tersedia untuk berkomunikasi sesuai permintaan tetapi mungkin tidak aktif secara terus-menerus antara permintaan atau panggilan.
- Penerapan independen. Untuk sebagian besar, komponen layanan individu beroperasi secara independen satu sama lain dalam kerangka kerja layanan mikro. Jika satu komponen diubah atau diperbarui, hanya ada sedikit dampak pada layanan dan komponen lainnya, terutama ketika dibandingkan dengan arsitektur monolitik yang lebih tradisional.
- Keamanan. Komunikasi antara layanan mikro sering dienkripsi dengan keamanan lapisan transportasi mutual (mTLS) untuk melindungi data dari malware dan gangguan ketika berada dalam transit.
- Kontainerisasi. Layanan mikro biasanya diterapkan dalam kontainer untuk portabilitas dan skalabilitas tambahan.
Arsitektur layanan mikro membuat aplikasi lebih mudah untuk diskalakan dan lebih cepat untuk dikembangkan, yang memungkinkan inovasi dan mempercepat waktu pemasaran untuk fitur baru.
Manfaat Layanan Mikro dan Aplikasi Cloud
Layanan mikro terus mendapatkan popularitas karena fleksibilitas arsitektur yang alami di dalam cloud. Bahkan, studi terbaru yang dilakukan oleh Intel mengungkapkan bahwa 83% dari semua aplikasi native cloud dan solusi SaaS menggunakan layanan mikro.1
Salah satu manfaat terpenting dari layanan mikro adalah kecepatan dan fleksibilitas penyebaran. Seiring aplikasi dan beban kerja cloud bertumbuh dalam skala dan cakupan, menjadi semakin sulit dan memerlukan waktu lama untuk mengadaptasi arsitektur monolitik untuk mengakomodasi permintaan baru. Layanan mikro bersifat terpilah, sehingga pengembangan, penerapan, dan pemeliharaannya dapat dikelola dalam model terdistribusi.
Misalnya, berbagai tim pengembangan independen dapat diberikan tanggung jawab untuk satu atau lebih layanan mikro. Distribusi tanggung jawab memfasilitasi reorganisasi fungsi DevOps sesuai kemampuan bisnis setiap unit. Itu dapat mendorong modernisasi di seluruh proses pengembangan dan menghapus isolasi.
Layanan mikro juga memiliki beberapa tantangan penerapan. Modul individu dapat berjalan di sistem yang berbeda untuk memenuhi permintaan, yang dapat menyebabkan performa tidak konsisten dari satu modul ke yang berikutnya.
Demikian juga, latensi dapat menjadi masalah untuk beberapa layanan mikro, seperti misalnya ketika ada kenaikan permintaan secara tiba-tiba. Isu ini sering dapat diselesaikan dengan menyediakan sumber daya berlebih untuk mengakomodasi tingkat permintaan puncak.
Karena layanan mikro terpilah, kegagalan layanan yang memengaruhi satu modul dapat menyebabkan gangguan kecil atau tidak ada gangguan sama sekali terhadap modul lainnya. Itu adalah manfaat, tetapi kegagalan layanan juga dapat menimbulkan tantangan.
Misalnya, sulit untuk melakukan debug layanan yang gagal setelah layanan berhenti berjalan. Satu solusi adalah dengan mengoordinasikan infrastruktur dan memantau semua proses serta aliran data di awal. Protokol pemantau tersebut dapat memanfaatkan kolektor telemetri yang diaktifkan perangkat keras dan unit pemantauan performa (PMU) yang dibenamkan ke dalam platform cloud berbasis teknologi Intel®.
Bagaimana Cara Kerja Arsitektur Layanan Mikro
Dalam arsitektur layanan mikro, aplikasi kompleks terpilah menjadi kemampuan diskrit yang dapat dikembangkan dan dioperasikan secara independen. Layanan mikro individu berkomunikasi satu sama lain, biasanya melalui API, dan mereka terhubung secara longgar, tetapi setiap layanan mikro dapat dikembangkan, diterapkan, dan diperbarui secara terpisah.
Penerapan layanan mikro sering mengikuti salah satu dari tiga pola ini:
- Native cloud. Beberapa aplikasi dan layanan mapan bervolume tinggi dimulai sebagai layanan mikro dan tetap berada di cloud. Menurut International Data Corporation (IDC), sekitar 56% layanan mikro bersifat native cloud, sementara 44% lainnya berasal dari aplikasi lama.2
- Faktorkan Ulang dan Pindahkan. Penerapan ini dimulai di lokasi atau di pusat data di edge dan difaktorkan ulang untuk beradaptasi dengan arsitektur layanan mikro berbasis cloud. Pemfaktoran ulang mungkin mencakup pemetaan kembali basis data dan sumber daya lainnya yang terkait dengan arsitektur monolitik, sehingga mereka dipasangkan dengan layanan mikro yang sesuai.
- Angkat dan Pindahkan. Beberapa organisasi memindahkan aplikasi mereka ke arsitektur layanan miko, tanpa pemfaktoran ulang, dalam transisi “angkat dan pindahkan“ yang sederhana.
Layanan Mikro dan DevOps
Sifat terpilah-pilah dari arsitektur layanan mikro sering menyebabkan tim DevOps mengadopsi pendekatan lintas fungsi terhadap pengembangan aplikasi.
Alih-alih mengembangkan aplikasi perangkat lunak dalam tumpukan, dengan satu tim ditugaskan untuk mengerjakan firmware, yang lainnya di middleware, dan sisanya di antarmuka pengguna, upaya pengembangan layanan mikro lebih cenderung diatur berdasarkan kemampuan bisnis.
Dengan cara itu, proses pengembangan dan organisasi tim DevOps dapat meniru struktur layanan mikro itu sendiri, dengan unit yang kuasi-independen dan mandiri yang berinteraksi secara longgar, melampaui hambatan dan isolasi.
Sangat penting bagi semua pemangku kepentingan untuk memahami bahwa memodernisasikan aplikasi monolitik ke dalam arsitektur layanan mikro adalah perjalanan panjang dan mungkin memerlukan banyak iterasi. Arsitek dan developer perlu mengevaluasi berbagai aspek monolit dari dekat dan mengusulkan pendekatan migrasi untuk masing-masing aspek.
Mengamankan Layanan Mikro
Karena layanan mikro sering dirancang untuk berinteraksi satu sama lain, penting untuk melindungi data ketika sedang digunakan di setiap akhir interaksi atau dalam transit di antara kedua titik tersebut.
Enkripsi dengan keamanan lapisan transportasi mutual (mTLS) adalah solusi umum yang membantu mengurangi risiko intrusi dan malware untuk data di setiap endpoint dan dalam transit. Tujuan mTLS adalah untuk mengenkripsi setiap permintaan yang dibuat oleh setiap layanan mikro. Pendekatan holistik terhadap keamanan seperti itu membentuk dasar lingkungan nol kepercayaan, di mana setiap layanan mikro, pengguna, dan koneksi harus diverifikasi dan diotorisasi secara independen.
Namun demikian, menyertakan autentikasi dan enkripsi di setiap layanan mikro individu tidak selalu diperlukan. Untuk menghindari redundansi, banyak developer menyebarkan mesh layanan. Mesh bertindak sebagai lapisan infrastruktur atau instans proksi dalam arsitektur layanan mikro untuk membantu mengamankan, mengendalikan, dan memantau komunikasi.
Protokol keamanan mungkin memerlukan daya komputasi yang signifikan, yang dapat menggunakan banyak sumber daya dan memperlambat pengiriman layanan mikro. Untuk mengakselerasi algoritme enkripsi dan membantu mengurangi latensi, developer layanan mikro dapat menerapkan Intel® Data Protection Technology (Intel® DPT).
Intel® DPT mencakup Intel® Advanced Encryption Standard – New Instructions (Intel® AES-NI) dan Intel® Secure Key Instructions, serta Intel® Digital Random Number Generator (Intel® DRNG) untuk pembuatan kunci enkripsi yang cepat.
Perlindungan algoritmik tingkat lanjut ini dioptimalkan untuk fitur keamanan bawaan dari prosesor Intel® Xeon® yang Dapat Diskalakan. Misalnya, Intel® Advanced Vector Extensions 512 (Intel® AVX-512) dan inovasi algoritmik seperti enkripsi simetris, hashing aman, dan stitching fungsi menawarkan peningkatan performa yang signifikan untuk kriptografi.
Hal tersebut dan fitur keamanan yang didukung perangkat keras tersedia dari penyedia layanan cloud utama dalam instans yang didukung oleh prosesor Intel® Xeon® yang Dapat Diskalakan.
Contoh Arsitektur Layanan Mikro dan Kerangka Kerjanya Yang Berevolusi
Seiring berkembangnya aplikasi cloud dalam skala dan cakupan, para developer makin mengandalkan layanan mikro untuk membangun aplikasi multifungsi yang kompleks serta menskalakannya dengan cepat untuk mengakomodasi model pemakaian yang berubah.
Untuk setiap penerapan berbasis layanan mikro, biasanya ada banyak layanan komponen yang berpasangan longgar yang beroperasi secara terpisah. Komponen modular ini bekerja sama untuk menciptakan aplikasi atau pengalaman pengguna yang terintegrasi.
Dalam beberapa aplikasi berbasis layanan mikro, di mana pengalaman pengguna dapat dibedakan menurut karakteristik grup, manfaat penggunaan layanan mikro adalah bahwa kode dapat dibagikan dan digunakan kembali. Pendekatan ini menghilangkan kebutuhan untuk membangun dan mempertahankan beberapa instans dari layanan yang sama. Jika salah satu pengalaman yang berbeda memerlukan kustomisasi, layanan mikro tambahan dapat dimasukkan.
Misalnya, aplikasi ojek online populer berbasis layanan mikro, tetapi pengemudi dan penumpang memiliki pengalaman pengguna yang berbeda. Pengelolaan pengemudi, pelacakan lokasi, profil penumpang, dan pemrosesan pembayaran adalah sebagian layanan mikro yang berbeda yang bersama-sama mendukung antarmuka pengguna dan pengemudi pada perangkat mobile mereka masing-masing. Semua antarmuka berbagi merek yang sama, tetapi beberapa fungsi mungkin berbeda untuk setiap grup.
Arsitektur layanan mikro juga merupakan lingkungan yang umum untuk toko e-commerce. Rekomendasi produk dan proses checkout mungkin dikembangkan dan diterapkan sebagai layanan mikro individu, tetapi pembeli akan mengalami kedua proses di dalam lingkungan dan antarmuka yang bermerek toko online.
Kapan Sebaiknya Menggunakan Layanan Mikro
Pendekatan layanan mikro dapat membantu untuk bermigrasi dan menskalakan aplikasi dengan memecah solusi yang paling kompleks ke masing-masing komponennya. Setiap layanan mikro dikembangkan dan diterapkan secara independen, dan berbagai layanan mikro beroperasi bersama sebagai entitas yang terintegrasi dengan longgar.
Organisasi cenderung menggunakan layanan mikro ketika mengembangkan solusi native cloud yang baru. Mereka juga mungkin menerapkan layanan mikro ketika arsitektur monolitik yang ada menjadi terlalu berat untuk melayani kebutuhan mereka yang berubah.
Transisi ke arsitektur layanan mikro dapat mengakibatkan perubahan dalam organisasi dan struktur tim DevOps itu sendiri. Seiring waktu, tim mungkin menyesuaikan dengan fokus lintas fungsi mereka yang baru terhadap kemampuan bisnis, alih-alih sistem isolasi yang menirukan lapisan fungsi dalam tumpukan teknologi.