Arsitektur Layanan Mikro: Ciri untuk Kompetensi
Diterbitkan: 2022-08-02Sistem monolitik tidak lagi layak di masa kontemporer kontainerisasi dan komputasi awan. Telah ada pertumbuhan dalam kompleksitas sistem perangkat lunak dalam beberapa tahun terakhir, dan sistem monolitik tumbuh semakin kompleks untuk dibuat dan dipelihara.
Komponen sistem diproduksi dan dibundel sebagai satu kesatuan dalam sistem monolitik. Seluruh sistem harus digunakan kembali jika satu komponen diubah. Ini membuatnya lebih sulit untuk diukur dan kurang fleksibel. Struktur yang saling berhubungan dan saling terkait dari sistem mandiri dapat menjadi upaya yang sulit bagi pengembang ketika membangun aplikasi yang komprehensif. Sistem yang terpengaruh juga mempersulit untuk melakukan modifikasi utama, mengadopsi tumpukan teknologi baru, atau mengirimkan peningkatan dan pembaruan. Sebuah arsitektur berorientasi layanan, yang terdiri dari berbagai layanan yang dapat berkomunikasi satu sama lain di dalam sistem, mengatur kerangka untuk transisi dari pemrograman monolitik di tempat pertama.
Arsitektur layanan mikro adalah langkah berikutnya dalam domain, dan itu adalah cara yang lebih terpadu, namun terperinci, untuk membangun strategi pengembangan perangkat lunak yang sukses. Ungkapan "Arsitektur Layanan Mikro" telah muncul selama beberapa tahun terakhir untuk menggambarkan teknik tertentu dalam membangun sistem perangkat lunak sebagai rangkaian layanan yang dapat digunakan secara independen. Meskipun tidak ada definisi khusus dari gaya arsitektur ini, ada beberapa ciri serupa di sekitar organisasi seputar kemampuan bisnis, penyebaran otomatis, kecerdasan di titik akhir, dan manajemen bahasa dan data yang terdesentralisasi.
Ini adalah pendekatan pengembangan perangkat lunak yang memecah sistem menjadi bagian-bagian yang lebih kecil dan independen dan kemudian menghubungkannya bersama-sama. Layanan otonom dikumpulkan bersama untuk memenuhi tuntutan khusus dari satu sektor tertentu. Spotify, Amazon, PayPal, Netflix, dan Twitter semuanya telah memperhatikan temuan baru ini dan mengiklankannya secara ekstensif.
Daftar isi
Apa itu Arsitektur Layanan Mikro?
Ungkapan "Arsitektur Layanan Mikro" telah menjadi lebih populer selama beberapa tahun terakhir untuk merujuk pada pendekatan khusus untuk arsitektur program perangkat lunak sebagai rangkaian layanan yang dapat digunakan secara independen satu sama lain. Terlepas dari kenyataan bahwa gaya arsitektur ini tidak dapat didefinisikan secara tepat, ia memiliki karakteristik tertentu yang sama dengan pendekatan arsitektur lainnya. Ini termasuk organisasi berdasarkan kemampuan bisnis, penyebaran otomatis, kecerdasan di titik akhir, dan kontrol bahasa dan data yang terdesentralisasi. Dengan kata lain, kapasitas layanan mikro untuk beroperasi secara independen adalah kekuatan pendorong di balik pendakian mereka ke puncak kancah pengembangan perangkat lunak.
Arsitektur layanan mikro, lebih sering disebut sebagai layanan mikro, adalah paradigma desain yang digunakan saat mengembangkan perangkat lunak aplikasi. Layanan mikro memungkinkan untuk memecah aplikasi besar menjadi beberapa bagian mandiri yang lebih kecil, yang masing-masing bertanggung jawab atas serangkaian tugas uniknya sendiri. Satu permintaan pengguna dapat menyebabkan aplikasi yang dibangun di atas layanan mikro membuat banyak panggilan ke layanan mikro internalnya sendiri untuk membangun responsnya.
Kontainer adalah contoh yang bagus dari arsitektur layanan mikro karena mereka membebaskan Anda dari kekhawatiran tentang ketergantungan layanan, sehingga memungkinkan Anda untuk fokus pada pengembangan layanan itu sendiri. Kontainer sering menjadi alat pilihan untuk mengembangkan aplikasi cloud-native untuk platform kontemporer dalam bentuk layanan mikro. Istilah "arsitektur layanan mikro" mengacu pada jenis arsitektur aplikasi di mana aplikasi itu sendiri dibangun sebagai kumpulan layanan. Ini menawarkan kerangka kerja untuk secara mandiri membangun, menyebarkan, dan mengelola diagram arsitektur dan layanan untuk layanan mikro.
Kebutuhan Pengembangan Arsitektur Microservice & Keterbatasan Arsitektur Monolitik
1. Penskalaan Aplikasi
Karena bisnis skala Web yang sukses mengalami ekspansi eksponensial, perangkat lunak mereka juga harus memungkinkan skalabilitas horizontal yang hebat. Kadang-kadang, hanya sebagian dari perangkat lunak yang berat CPU atau I/O yang harus diskalakan dan ditangani secara individual (diimplementasikan dengan pemrograman polyglot). Perangkat lunak yang bersifat monolitik berfungsi sebagai satu kesatuan dan dibuat dengan menggunakan bahasa pemrograman tunggal dan Tech Stack. Untuk mencapai penskalaan horizontal, perlu untuk menskalakan seluruh aplikasi. Karena perangkat lunak monolitik hanya mendukung satu bahasa pemrograman, tidak mungkin untuk mengembangkan bahkan satu modul dalam bahasa pemrograman yang berbeda atau Tech Stack.
2. Kecepatan Pembangunan
Untuk mengurangi time-to-market, setiap bisnis saat ini menginginkan pengembangan fitur yang cepat. Dalam Aplikasi Monolitik yang besar, rumit, dan terkadang jutaan baris, penambahan fitur baru sangat lamban karena Beban Kognitif yang sangat besar ditempatkan pada Pengembang. Modul program monolitik besar terhubung erat, membuat pengembangan fungsionalitas baru menjadi lebih sulit. Akibatnya, menambahkan fungsionalitas baru ke program monolitik seringkali lamban dan mahal.
3. Penskalaan Pengembangan
Untuk mendapatkan keunggulan kompetitif atau untuk meraih hasil yang rendah, bisnis sering berusaha untuk memparalelkan pengembangan dengan mempekerjakan lebih banyak pengembang. Pengembang tidak dapat bekerja secara independen pada basis kode yang masif, monolitik, terhubung erat dan sering kali memerlukan sinkronisasi dan kewaspadaan tambahan untuk menghindari saling mengganggu pekerjaan satu sama lain. Menambahkan pengembang tambahan tidak menghasilkan peningkatan fitur, dan terkadang dapat menghasilkan lebih sedikit fitur. Demikian pula, karena Beban Kognitif tinggi yang diperlukan untuk memahami seluruh basis kode Monolitik, biasanya dibutuhkan waktu yang cukup lama bagi rekrutan baru atau lulusan baru untuk membuat baris pertama kode produktif mereka. Pada tahun 2008, saya melakukan wawancara dengan bisnis telekomunikasi yang berbasis di Berlin di mana Manajer Teknis memberi tahu saya dengan senyum puas bahwa basis kode C++ perusahaan mencakup jutaan baris dan bahwa insinyur baru hanya dapat menghasilkan kode produktif setelah empat hingga enam bulan.
4. Siklus Rilis
Siklus Rilis program monolitik besar biasanya terlalu lama, mulai dari enam hingga dua setengah tahun, dengan tambahan beberapa bulan hingga beberapa tahun penundaan karena ukurannya. Siklus rilis besar sering menempatkan perusahaan pada kerugian kompetitif di zaman modern, karena pesaing baru dapat memasuki pasar selama jeda rilis.
5. Modularisasi
Dalam Arsitektur Monolitik, penghalang antara Modul biasanya adalah Antarmuka internal. Segera setelah ukuran program meningkat, pemisahan antar modul mulai rusak. Akibatnya, Modul dalam Arsitektur Monolitik sering terikat erat alih-alih digabungkan secara longgar dan sangat kohesif. Jika kita membandingkan pengembangan perangkat lunak dengan masyarakat, maka modularisasi monolitik dianalogikan dengan prinsip moral dan agama, yang tidak dapat menjamin hukum dan ketertiban dalam masyarakat.
6. Modernisasi
Aplikasi sukses yang ada memerlukan modernisasi karena berbagai alasan (misalnya memanfaatkan Perangkat Keras modern, Browser, Bandwidth Jaringan, Tumpukan Teknologi, atau Menarik pengembang yang baik). Memodernisasi program monolitik dapat memakan biaya dan waktu karena memerlukan modernisasi Big Bang dari seluruh aplikasi tanpa mempengaruhi Layanan.
Jenis Layanan Mikro
Layanan mikro diferensial dan integral adalah dua jenis layanan mikro yang berbeda.
sebuah. Diferensial
Dalam bentuk arsitektur ini, arsitektur didekomposisi menjadi layanan independen yang mampu memisahkan menjadi transaksi. Ini menghasilkan distribusi satu transaksi ke banyak layanan.
b. Integral
Aplikasi layanan mikro dirancang untuk menggabungkan banyak layanan mikro ke dalam pengalaman pengguna individual. Program-program ini mencakup beberapa kebutuhan yang berbeda, termasuk manajemen tingkat layanan, penyediaan sesuai permintaan, dan komposisi dinamis.
Karakteristik Layanan Mikro
1. Otonom
Arsitektur layanan mikro memungkinkan setiap komponen layanan dibangun, disebarkan, dikelola, dan diskalakan secara terpisah dari layanan lainnya. Layanan tidak harus membagikan kode mereka atau bagaimana mereka melakukan sesuatu dengan layanan lain. Semua komunikasi antara bagian yang berbeda dilakukan melalui API yang terdefinisi dengan baik.
2. Khusus
Setiap layanan didasarkan pada seperangkat keterampilan yang berbeda dan masalah yang berbeda. Seiring waktu, jika pengembang menambahkan lebih banyak kode ke layanan, layanan mungkin dipecah menjadi layanan yang lebih kecil.
3. Komponenisasi melalui Layanan
Meskipun arsitektur layanan mikro akan menggunakan perpustakaan, metode utama di mana mereka akan mengkomponenasikan perangkat lunak mereka sendiri adalah dengan menguraikannya menjadi layanan. Pustaka adalah komponen yang ditautkan ke dalam program dan dipanggil menggunakan panggilan fungsi dalam memori, sedangkan layanan adalah komponen di luar proses yang berkomunikasi dengan mekanisme seperti permintaan layanan web atau panggilan prosedur jarak jauh. Kami mendefinisikan perpustakaan sebagai komponen yang ditautkan ke dalam program dan dipanggil menggunakan panggilan fungsi dalam memori. (Ini adalah ide yang berbeda dari apa yang disebut sebagai objek layanan di banyak sistem OO. Berbeda dengan perpustakaan, layanan dapat digunakan secara independen, yang merupakan salah satu alasan utama mengapa mereka digunakan sebagai komponen daripada perpustakaan. Satu tambahan manfaat menggunakan layanan sebagai pengganti komponen adalah pembuatan antarmuka komponen yang lebih transparan.Teknik yang baik untuk membangun Antarmuka Terbit yang eksplisit tidak ada di sebagian besar bahasa pemrograman.
Dokumentasi dan disiplin biasanya merupakan satu-satunya hal yang mencegah pelanggan melanggar enkapsulasi komponen, yang akan menghasilkan sambungan yang terlalu ketat antar komponen. Dengan memanfaatkan protokol panggilan jarak jauh yang eksplisit, layanan memudahkan penggunanya untuk menghindari hal ini. Menggunakan layanan semacam ini memang memiliki kelemahan tertentu. Karena panggilan yang dilakukan dari jarak jauh lebih mahal daripada yang dilakukan dalam proses yang sama, API yang digunakan dari jarak jauh harus memiliki perincian yang lebih baik, yang mungkin membuatnya lebih sulit untuk digunakan. Ketika Anda melampaui batas proses, lebih sulit untuk membuat perubahan perilaku, yang membuatnya lebih sulit jika Anda perlu memodifikasi cara tanggung jawab didistribusikan di antara komponen.
4. Produk bukan Proyek
Sebagian besar inisiatif pengembangan aplikasi yang kami temui mengikuti paradigma yang disebut proyek, di mana tujuan utamanya adalah untuk menyerahkan perangkat lunak yang kemudian dianggap selesai. Setelah proyek selesai, perangkat lunak diserahkan ke organisasi pemeliharaan, dan tim yang bertanggung jawab untuk membangunnya dibubarkan.
Pendukung layanan mikro biasanya menghindari arsitektur ini dan mendukung konsep bahwa tim harus memiliki produk secara keseluruhan selama masa pakainya. Konsep Amazon "Anda membangun, Anda mengoperasikannya," di mana tim pengembangan bertanggung jawab penuh atas program saat digunakan dalam produksi, merupakan sumber inspirasi yang menonjol untuk ini. Ini membawa pengembang ke dalam hubungan sehari-hari dengan cara kerja perangkat lunak mereka dalam produksi dan meningkatkan komunikasi dengan pengguna mereka, karena mereka diharuskan untuk mengambil setidaknya sebagian dari beban memberikan dukungan untuk program tersebut.
5. Tata Kelola Terdesentralisasi
Selain itu, tim pengembangan layanan mikro menyukai pendekatan standar yang berbeda. Mereka lebih suka menyediakan alat bermanfaat yang mungkin digunakan pengembang lain untuk mengatasi tantangan yang sebanding dengan yang mereka hadapi, daripada mengandalkan seperangkat standar yang dikodifikasi. Biasanya, alat ini berasal dari implementasi dan dibagikan dengan komunitas yang lebih besar, terkadang, tetapi tidak selalu memanfaatkan paradigma sumber terbuka internal. Sekarang git dan github adalah sistem kontrol versi de facto pilihan, teknik open source menjadi semakin lazim dalam organisasi.
Netflix adalah contoh bagus dari perusahaan yang menganut prinsip ini. Berbagi kode yang berharga dan, yang paling penting, teruji pertempuran sebagai perpustakaan membantu pengembang lain untuk menangani masalah yang sebanding dengan cara yang sama, sementara memungkinkan mereka untuk memilih metode yang berbeda jika perlu. Pustaka bersama cenderung berkonsentrasi pada masalah umum penyimpanan data, komunikasi antar-proses, dan otomatisasi infrastruktur, seperti yang dibahas secara lebih rinci di bawah.
Untuk komunitas layanan mikro, pengeluaran sangat tidak diinginkan.
6. Standar yang Diuji Pertempuran dan Standar yang Ditegaskan
Ini sedikit paradoks karena tim layanan mikro lebih memilih untuk menghindari jenis standar yang diberlakukan secara ketat yang diberlakukan oleh kelompok desain bisnis, namun akan memanfaatkan dan bahkan menganjurkan standar terbuka seperti HTTP, ATOM, dan format mikro lainnya.
Perbedaan utama adalah bagaimana standar diproduksi dan diimplementasikan. Standar yang dikendalikan oleh organisasi seperti IETF tidak menjadi standar sampai ada beberapa implementasi langsung di dunia yang lebih besar, yang sering kali merupakan hasil dari inisiatif sumber terbuka yang sukses.
Standar ini adalah dunia yang berbeda dari sebagian besar standar bisnis, yang sering dibuat oleh orang-orang dengan keahlian pemrograman terkini yang terbatas atau pengaruh vendor yang berlebihan.
7. Otomasi Infrastruktur
Satu efek samping yang telah kita lihat dari lebih banyak otomatisasi sebagai konsekuensi dari pengiriman dan penyebaran yang berkelanjutan adalah pengenalan alat yang berguna untuk membantu pengembang dan orang-orang operasi. Alat untuk memproduksi artefak, memelihara basis kode, memulai layanan dasar atau untuk menambahkan pemantauan standar dan pencatatan relatif tersebar luas saat ini. Contoh terbaik di web tidak diragukan lagi adalah koleksi alat open source Netflix, meskipun ada juga Dropwizard yang telah kami gunakan secara ekstensif.
Ubah Ide Aplikasi Anda Menjadi Kenyataan
Mari Membangun Aplikasi Baru Bersama
Gambaran Umum Mekanisme Komunikasi dalam Arsitektur Layanan Mikro
Layanan yang membentuk arsitektur layanan mikro dijalankan pada sejumlah server yang berbeda. Protokol seperti HTTP, AMQP, dan TCP digunakan untuk memfasilitasi komunikasi antara banyak layanan ini. Dua protokol dengan adopsi luas terbesar adalah HTTP/REST dan pesan asinkron. Protokol HTTP sering digunakan oleh antarmuka pemrograman aplikasi (API) REST untuk layanan online. Klien dapat mengakses dan mengubah sumber daya aplikasi dengan memanfaatkan pencari sumber daya yang seragam dalam hubungannya dengan metode HTTP seperti GET, POST, PUT, dan DELETE (URL). Antarmuka pemrograman aplikasi (API) REST bertindak sebagai titik masuk ke fungsionalitas aplikasi. Klien mengomunikasikan kebutuhan mereka ke layanan dengan mengirimkan permintaan ke API. Klien memiliki opsi untuk berkomunikasi dengan layanan mikro secara langsung atau melalui gateway API.
Satu titik masuk ditentukan untuk setiap dan semua permintaan yang dibuat ke layanan menggunakan pola gateway API. Gateway antarmuka pemrograman aplikasi (API), saat menerima permintaan dari klien, mengarahkan permintaan ke layanan yang tepat.
Pola gateway API memiliki beberapa varian, salah satunya adalah pola backend untuk frontend. Desain ini membuat gateway API yang berbeda untuk setiap jenis klien (misalnya, satu gateway untuk klien seluler dan satu lagi untuk aplikasi web).
Disarankan untuk berlatih menjaga tingkat komunikasi tetap rendah di antara berbagai layanan. Komunikasi asinkron lebih unggul daripada komunikasi sinkron dalam situasi ketika komunikasi adalah suatu keharusan. Layanan yang mengirim permintaan tidak perlu menunggu tanggapan sebelum melanjutkan operasinya.
Saat dimasukkan ke dalam database, antrian pesan dan sistem streaming adalah cara yang baik untuk mengaktifkan komunikasi asinkron. Selain itu, ketika sistem ini menyediakan semantik transaksional untuk operasi data dan pengiriman pesan, mereka dapat memenuhi kedua persyaratan ini. Karena itu, penyebaran layanan mikro menjadi lebih mudah dan lebih skalabel. Ketika hanya REST API yang digunakan, komunikasi antara layanan mikro dipaksa menjadi sinkron, yang seringkali mencegah pertumbuhan.
Untuk Apa Arsitektur Layanan Mikro Digunakan?
Layanan mikro adalah gaya arsitektur trendi yang bertujuan untuk merancang sistem yang kompleks sebagai kumpulan artefak perangkat lunak yang berbutir halus dan digabungkan secara longgar yang disebut layanan mikro; setiap layanan mikro mengimplementasikan sebagian kecil atau bahkan satu fungsi dari logika bisnis aplikasi. Layanan mikro mendapatkan popularitas karena mereka bertujuan untuk merancang sistem yang kompleks sebagai kumpulan artefak perangkat lunak yang berbutir halus dan digabungkan secara longgar. Layanan mikro sering digunakan untuk mempercepat proses pengembangan aplikasi.
Ide mikro dikembangkan dalam menanggapi infrastruktur monolitik yang mayoritas organisasi awalnya dibangun, terutama jika bisnis tersebut telah beroperasi setidaknya selama sepuluh tahun. Setiap komponen arsitektur layanan mikro mencakup fitur-fitur berikut sebagai pengganti desain monolitik:
- CPU unik untuk itu
- Sistem operasi dan lingkungan runtime-nya sendiri
- Dalam banyak kasus, tim khusus akan mengerjakannya untuk memastikan bahwa setiap layanan dapat dibedakan dari yang lain.
Karena desain ini, setiap layanan dapat:
- Jalankan prosedur uniknya sendiri
- Berkomunikasi secara independen satu sama lain tanpa harus bergantung pada komunikasi layanan mikro lain atau aplikasi secara keseluruhan.
Ada adopsi luas arsitektur layanan mikro berbasis Java, terutama yang dibangun menggunakan Spring Boot. Selain itu, layanan mikro dan arsitektur berorientasi layanan sering dibandingkan satu sama lain. Kedua pendekatan keduanya memiliki tujuan yang sama, yaitu untuk mempartisi program perangkat lunak yang besar menjadi bagian-bagian yang lebih mudah dikelola, tetapi metodologinya berbeda. Selain itu, banyak bisnis berada di bawah tekanan dari pesaing mereka untuk melakukan penyesuaian pada sistem mereka secepat mungkin sambil meminimalkan dampak penyesuaian tersebut terhadap ketersediaan sistem mereka. Ini menuntut desain yang tepat, gaya arsitektur, dan teknik pengembangan. Rekayasa perangkat lunak menawarkan berbagai paradigma yang sebagian dapat memenuhi kebutuhan tersebut. Paradigma ini memecah sistem perangkat lunak menjadi unit perangkat lunak berbutir halus, yang meningkatkan modularitas, pemeliharaan, dan dapat digunakan kembali dan, sebagai hasilnya, mengurangi jumlah waktu yang dibutuhkan untuk membawa produk ke pasar.
Singkatnya, ia menawarkan kelincahan dalam jangka panjang. Layanan mikro memungkinkan pemeliharaan yang lebih baik dalam sistem yang kompleks, besar, dan sangat skalabel dengan memungkinkan pembuatan aplikasi yang didasarkan pada sejumlah besar layanan yang dapat diterapkan secara independen, yang masing-masing memiliki siklus hidup granular dan otonomnya sendiri. Hal ini dicapai dengan memungkinkan pembuatan aplikasi yang didasarkan pada sejumlah besar layanan.
Layanan mikro memiliki keuntungan tambahan karena dapat melakukan penskalaan dengan sendirinya. Anda tidak perlu memiliki satu aplikasi monolitik yang harus Anda skalakan sebagai satu entitas karena Anda malah dapat menskalakan layanan mikro individu. Anda hanya dapat mengembangkan wilayah fungsional program yang memerlukan daya pemrosesan tambahan atau bandwidth jaringan untuk memenuhi permintaan dengan cara ini, daripada menskalakan bagian lain dari aplikasi yang tidak memerlukan penskalaan. Itu menghasilkan penghematan biaya karena berkurangnya jumlah perangkat keras yang dibutuhkan.
Berikut Beberapa Contoh Arsitektur Layanan Mikro
sebuah. Relokasi Situs Web
Relokasi situs web dimungkinkan; misalnya, situs web yang dihosting pada platform monolitik yang kompleks dapat dipindahkan ke platform layanan mikro berbasis cloud dan berbasis wadah.
b. Konten media
Sistem penyimpanan objek yang dapat diskalakan dapat digunakan untuk menyimpan gambar dan aset video, dan arsitektur layanan mikro dapat digunakan untuk menawarkan materi ini langsung ke web atau perangkat seluler.
c. Negosiasi dan Penagihan Keuangan
Dimungkinkan untuk memperlakukan pemrosesan pembayaran dan pesanan sebagai dua bagian layanan yang berbeda. Hal ini memungkinkan untuk menerima pembayaran bahkan jika ada masalah dengan sistem penagihan.
d. Pengolahan data
Layanan pemrosesan data modular dapat ditingkatkan dukungan cloudnya dengan penggunaan platform layanan mikro, yang juga dapat digunakan untuk pemrosesan data.
Pola Desain untuk Layanan Mikro
Bahasa pola adalah panduan Anda!
a) Pola Dekomposisi
- Bulkhead memisahkan sumber daya penting, seperti kumpulan koneksi, memori, dan CPU, untuk setiap beban kerja atau layanan. Dengan menerapkan sekat, satu beban kerja (atau layanan) tidak dapat menggunakan semua sumber daya, membuat orang lain kelaparan. Pendekatan ini meningkatkan ketahanan sistem dengan menghilangkan kegagalan kaskade yang disebabkan oleh satu layanan. Pola ini disebut Bulkhead karena menyerupai partisi lambung kapal. Mempartisi instans layanan ke dalam grup yang berbeda, berdasarkan beban pelanggan dan kebutuhan ketersediaan. Arsitektur ini membantu mengisolasi kesalahan, dan memungkinkan Anda mempertahankan kemampuan layanan untuk beberapa pengguna, bahkan selama gangguan.
- Sidecar memasang komponen aplikasi yang berguna sebagai wadah atau proses yang berbeda untuk memungkinkan isolasi dan enkapsulasi. Pola ini juga dapat memungkinkan aplikasi terdiri dari komponen dan teknologi yang berbeda. Pola ini dijuluki Sidecar karena menyerupai sespan yang dipasang pada sepeda motor. Dalam desainnya, sespan digabungkan ke aplikasi induk dan menawarkan fungsionalitas pendukung untuk aplikasi tersebut. Sespan juga mengikuti masa pakai yang sama dengan aplikasi induk, dibangun dan dihentikan bersama induknya. Pola sespan sering disebut sebagai pola sidekick dan merupakan pola dekomposisi terakhir yang kami tampilkan di postingan.
- Strangler Fig mendukung refactoring inkremental dari aplikasi, dengan secara bertahap mengganti bagian fungsionalitas tertentu dengan layanan baru.
b) Pola Integrasi
1. Pola Layanan Mikro Terrantai
Akan ada beberapa dependensi untuk layanan tunggal atau layanan mikro, misalnya, Penjualan layanan mikro bergantung pada Produk dan Pesanan layanan mikro. Pola desain layanan mikro yang dirantai akan membantu Anda dalam memberikan respons terkonsolidasi atas permintaan Anda. Sebuah microservice-1 menerima permintaan dan kemudian berkomunikasi dengan microservice-2; itu juga dapat berkomunikasi dengan microservice-3. Semua panggilan layanan ini sinkron.
2. Pola Agregator
Saat memisahkan aktivitas bisnis menjadi banyak potongan kode logis yang lebih kecil, penting untuk mempertimbangkan bagaimana data yang diberikan oleh setiap layanan akan digabungkan. Pelanggan tidak dapat dimintai pertanggungjawaban atas hal ini.
Pola Agregator membantu mengatasi masalah ini. Ini menjelaskan bagaimana kami dapat menggabungkan data dari beberapa sumber dan kemudian memberikan hasil akhir kepada pengguna. Ini dimungkinkan dengan dua cara:
- Layanan mikro komposit akan melakukan panggilan ke semua layanan mikro yang diperlukan, menggabungkan dan mengubah data, lalu mengembalikannya.
- Selain mempartisi permintaan ke beberapa layanan mikro, Gateway API juga dapat menggabungkan data sebelum memberikannya kepada konsumen.
3. Pola Proksi
Kami hanya menawarkan Layanan Mikro melalui gateway API. Saya mengizinkan GW untuk memperoleh karakteristik API seperti keamanan dan mengklasifikasikan API. Dalam contoh ini, gateway API terdiri dari tiga modul API:
- API Seluler, yang mengimplementasikan API untuk klien seluler FTGO
- Browser API, yang mengimplementasikan API ke aplikasi JavaScript yang berjalan di browser
- API Publik, yang mengimplementasikan API untuk pengembang pihak ketiga
4. Pola Cabang
Ada kemungkinan bahwa layanan mikro perlu mendapatkan data yang diperlukan dari berbagai sumber yang berbeda, termasuk layanan mikro lainnya. Pola layanan mikro cabang adalah gabungan dari pola desain Agregator dan Rantai. Ini memungkinkan pemrosesan permintaan/tanggapan secara bersamaan dari dua atau lebih layanan mikro dan menggabungkan manfaat keduanya. Layanan mikro yang dipanggil mungkin terdiri dari beberapa layanan mikro lainnya. Pola Brach juga dapat digunakan untuk memanggil satu rantai layanan mikro atau beberapa rantai dari jenis yang sama, tergantung pada persyaratan perusahaan Anda.
Manfaat Arsitektur Layanan Mikro
Di masa mendatang, kebutuhan akan layanan mikro akan berkembang secara dramatis. Menggunakan Microservices, program lama diperbarui. Melalui refactoring, aplikasi monolitik dapat dibagi menjadi layanan mikro. Ini mengarah pada modernisasi progresif perangkat lunak usang dan lebih baik untuk mengembangkan kembali produk dari awal menggunakan layanan mikro. Pengembangan aplikasi mungkin sangat diuntungkan dari desain layanan mikro. Tercantum di bawah ini adalah beberapa manfaat utamanya:
sebuah. Produktivitas Unggul
Lebih mudah untuk membuat dan memelihara aplikasi jika dipartisi menjadi bagian yang lebih kecil dan mandiri. Tergantung pada persyaratannya, setiap layanan dapat dikembangkan, disebarkan, dan dipelihara secara independen menggunakan berbagai bahasa pemrograman, teknologi, dan lingkungan perangkat lunak. Karena setiap komponen modular aplikasi memiliki basis kode yang lebih kecil, lebih mudah untuk merilis, menskalakan, menyebarkan, dan menguji beberapa layanan, dan tugas terkait dapat dibagi ke seluruh tim pengembangan dan dieksekusi secara bersamaan.
b. Ketahanan yang Lebih Baik
Setiap layanan mikro dalam arsitektur layanan mikro adalah layanan tunggal yang dirancang untuk melayani fitur aplikasi dan melakukan tugas-tugas terpisah. Setiap layanan mikro terhubung dengan layanan lain menggunakan antarmuka sederhana untuk menangani masalah bisnis. Setelah membuat desain berbasis layanan mikro, seluruh proses mendeteksi dan menangani masalah terkait kinerja menjadi lebih mudah.
Selain itu, karena bentuk desain ini menyediakan mekanisme isolasi kesalahan yang ditingkatkan dibandingkan dengan modul individual, aplikasi yang lebih besar sering kali tidak terpengaruh oleh kegagalan tunggal. Oleh karena itu, dalam jangka panjang, risiko downtime di masa mendatang sangat berkurang karena pengembang memiliki jendela waktu untuk merilis pembaruan atau mengganti modul tanpa harus meluncurkan kembali seluruh program.
c. Skalabilitas yang Diperluas
Tim DevOps dapat memilih tumpukan teknologi yang optimal untuk setiap modul tanpa mengkhawatirkan ketidakcocokan jika setiap layanan dibuat menggunakan bahasa atau teknologi pemrograman yang berbeda. Layanan individual dapat dikembangkan secara independen, dan komponen baru dapat ditambahkan tanpa downtime atau pemindahan sistem. Selain itu, layanan dapat dibagi di banyak server, mengurangi efek kinerja dari komponen yang sangat menuntut. Dalam hitungan detik, layanan mikro dapat memberikan Penskalaan horizontal.
Kenyataannya, Penskalaan horizontal yang tinggilah yang memaksa organisasi seperti Netflix, Spotify, Uber, dan Google untuk beralih dari Arsitektur Monolitik ke Layanan Mikro. Kedua, jika satu layanan mikro adalah CPU berat, mungkin ditulis dalam bahasa pemrograman yang dioptimalkan CPU (C/C++, Rust), sedangkan layanan mikro lainnya dapat ditulis dalam bahasa yang ditafsirkan (Java, PHP).
d. Integrasi Berkelanjutan / Pengiriman Berkelanjutan (CI/CD)
Pengiriman dan integrasi berkelanjutan adalah elemen mendasar dari metodologi tangkas dan filosofi DevOps. Desain layanan mikro memungkinkan tim lintas fungsi untuk secara mandiri membangun, men-debug, menguji, menyebarkan, dan memperbarui layanan, yang akan menghasilkan pemecahan masalah dan penerapan yang lebih cepat dalam jangka panjang.
e. Modularisasi
Dalam Arsitektur Layanan Mikro, penghalang antara Layanan Mikro terdiri dari antarmuka fisik (jaringan) yang sulit dilintasi. Akibatnya, Microservices yang dirancang dengan baik biasanya menyediakan Modularisasi "terhubung secara longgar, sangat koheren". Jika Pengembangan Perangkat Lunak dibandingkan dengan masyarakat, maka Modulasi Layanan Mikro sebanding dengan hukum nasional dan internasional dengan polisi/hukuman. Seperti yang sudah kita ketahui, aturan nasional dan internasional yang ketat seringkali dapat menjaga ketertiban sosial.
f. Jadwal Rilis
Aspek terbaik tentang Arsitektur Layanan Mikro adalah bahwa setiap Layanan Mikro dapat digunakan secara individual. Akibatnya, Siklus Rilis Perangkat Lunak untuk Aplikasi Layanan Mikro secara substansial lebih pendek, dan dengan CI/CD, banyak rilis dapat dilakukan setiap hari.
Kekurangan Arsitektur Layanan Mikro
sebuah. Increased Complexity of Communication Between the Services
When an application is broken up into smaller parts, it takes more time to send and receive messages. When handling requests between the different modules, developers have to be extra careful. Different systems might talk to each other in different ways, so there might be a need for an interpreter. This can make it harder to set up the whole system all at once. One of the biggest problems with microservices is that it might be hard to switch from a monolith to microservices because it's hard to manage.
This basically means that a lot of services made by a lot of different teams are deployed in a lot of different places, making it very hard to manage them. For example, Monolithic Architecture gives the same answer whether a Web app has a few thousand lines of code or several million lines of code (Enterprise Java or Ruby on Rails or PHP). But in Microservice Architecture, there are many possible solutions depending on the applications and use cases.
So, Microservice Architecture is doomed to fail if the wrong solution is used for the wrong application size or type (like putting a child's clothes on an adult man or the other way around). Also, it's hard to design Microservices because they have a lot more moving parts than Monoliths. Most of the time, a Microservice with bad design is worse than a Monolith.
b. Complex Configuration
Despite being isolated and self-contained, a microservice must be regularly configured, especially when it is moved from development to test to staging to production. This arrangement may be rather intricate. Moreover, if a microservice must utilize other microservices, these bindings must be defined before deployment or even during runtime.
c. Context Boundary Translation
Despite the fact that it would be ideal if all microservices within a MOA used the same data structures and communication protocols to interact with one another, this is typically not the case.
d. More Assets in Return for More Autonomy
MOAs demand a great deal of horsepower. Remember that each MOA microservice has its own runtime environment and data storage. In some instances, even the most streamlined microservice might consume the same amount of resources as a single monolithic program.
e. Unfeasible for Small Applications
Larger applications can benefit from microservices design. However, implementation will likely be more time-consuming and difficult for smaller applications.
f. Relatively Complex Deployment
The deployment might be a difficult and complicated process. During deployment, coordination between numerous services would be required. Deploying a WAR file in a container would not be as straightforward as it sounds.
g. Distributed Debugging
The difficulty of troubleshooting a MOA including hundreds of microservices communicating in concert is one of the downsides of microservices. Tracing the course of a request into and out of a MOA is challenging due to the independence of each container. The MOA is opaque if there is no effective monitoring mechanism in place. Logging the internals of a MOA offers a limited perspective, but MOA monitoring requires a comprehensive view.
h. Contributes to Enhanced Fault Tolerance
Large applications with several services deployed have more fault tolerance in the event that any one module fails. Microservices allow applications to continue functioning even if one service fails. This is because the services are not tightly coupled.
saya. Costly
An improper service partition might be expensive. For instance, if an application is improperly partitioned, the services are connected to a certain degree, and they will create numerous inter-service interactions via the network, which can degrade performance.
j. Greater Security Risks
Lastly, because microservices will reside across several environments, computers, and API requests, they provide a greater number of entry points for an attacker to compromise the system.
k. Communication Complexities
Microservices accomplish rigorous modularity and development independence via process/network barriers, as previously mentioned. The disadvantage is that services may only communicate over the physical network, resulting in increased network latency. Microservices may connect with one another in a variety of methods, including synchronous communication using REST, gRPC, and asynchronous communication using Message Queue and Message Broker, each of which has advantages and disadvantages.
Synchronous communication is simpler to build, but it might result in a Distributed Monolith. Asynchronous Communication via Messaging provides greater flexibility at the expense of increased implementation complexity. In Microservice Architecture, choosing the appropriate Communication channel based on the application is equally tough.
l. Konfigurasi Kompleks
Meskipun terisolasi dan mandiri, layanan mikro harus dikonfigurasi secara teratur, terutama ketika dipindahkan dari pengembangan ke pengujian ke pementasan ke produksi. Pengaturan ini mungkin agak rumit. Selain itu, jika layanan mikro harus menggunakan layanan mikro lain, ikatan ini harus ditentukan sebelum penerapan atau bahkan selama waktu proses.
Alat Layanan Mikro
1. Sistem operasi
Aspek terpenting dalam mengembangkan aplikasi adalah meletakkan dasar yang kokoh, yang merupakan tanggung jawab sistem operasi. Linux adalah contoh sistem operasi jenis ini yang sering digunakan selama proses pengembangan aplikasi. Anda akan memiliki akses ke lingkungan eksekusi mandiri saat Anda menggunakan wadah Linux. Ini memberi Anda kemampuan untuk mengatur berbagai layanan, mulai dari penyimpanan dan jaringan hingga keamanan dan otentikasi.
2. Bahasa pemrograman
Dengan Emizentech, kini Anda dapat dengan mulus memperluas repertoar pemrograman Anda. Instrumen ini praktis dan mutakhir. Secara umum, ini dirancang untuk digunakan dengan semua bahasa pemrograman. Selain itu, ini kompatibel dengan bytecode yang ditampilkan pada BEAM, yang juga disebut sebagai Mesin Virtual Erlang.
3. Alat Manajemen dan Pengujian API (API Gateway)
Tindakan membangun dan merilis API, menegakkan standar penggunaannya, membatasi akses, mengembangkan komunitas pengembang, mengumpulkan dan menganalisis statistik penggunaan, dan melaporkan kinerja adalah semua komponen administrasi API.
Pada kenyataannya, platform manajemen API terdiri dari elemen-elemen berikut:
- Alat pengembang
- Gerbang
- Pelaporan dan analitik
4. Alat Pesan (Messaging dan Event Streaming)
Agar komunikasi dapat berlangsung, sistem layanan mikro harus menggunakan layanan independen. Ini adalah faktor utama yang menentukan apa yang dibutuhkan antrian pesan dari penggunanya. RabbitMQ dan Apache Kafka adalah dua solusi paling populer yang digunakan untuk tujuan pengiriman pesan.
LinkedIn bertanggung jawab atas pembuatan teknologi yang dikenal sebagai Apache Kafka, yang kemudian disumbangkan ke komunitas Apache.
Pola digunakan oleh alat RabbitMQ untuk memfasilitasi komunikasi di banyak layanan Micro. Selain itu, ini membantu dalam proses penskalaan aplikasi secara bersamaan.
5. Toolkit
Sederhananya, toolkit hanyalah kumpulan alat yang digunakan selama pelaksanaan prosedur tertentu. Toolkit adalah komponen arsitektur layanan mikro yang memungkinkan untuk membangun banyak aplikasi. Karena itu, terdapat berbagai macam toolkit, yang masing-masing memiliki tujuan yang berbeda dalam penerapannya. Banyak alat yang tersedia untuk dipilih dalam Fabric8 dan Seneca.
- Fabric8 adalah platform sebagai teknologi layanan yang, dengan bantuan Git, memungkinkan pengembang perangkat lunak untuk membuat sistem manajemen konfigurasi untuk aplikasi mereka.
- Seneca, yang beroperasi sebagai Node, digunakan dalam proses pengembangan layanan mikro berorientasi pesan.
6. Kerangka Arsitektur dan Js Toolkit
Karena layanan mikro adalah gaya arsitektur, penting untuk memperhatikan kerangka arsitektur yang mereka gunakan. Ini adalah kerangka kerja yang digunakan bersama dengan teknologi saat ini untuk membangun aplikasi terbaru. Goa dan Kong sekarang menjadi kerangka arsitektur paling populer.
7. Alat Orkestrasi
Karena cara umum wadah dan layanan mikro berfungsi bersama, orkestrasi wadah adalah topik yang sangat penting untuk dipikirkan. Konduktor, Kubernetes, dan Istio adalah tiga solusi orkestrasi layanan mikro yang paling sering digunakan untuk orkestrasi container. Namun, ada banyak alat lain yang tersedia. Sebagai bagian dari ekosistem perangkat lunak sumber terbuka (OSS) yang dikelola Netflix, konduktor berfungsi sebagai mesin orkestrasi layanan mikro. Konduktor adalah program yang dijalankan di cloud dan menggunakan implementasi yang disebut orkestra aliran untuk melakukan berbagai aktivitas menggunakan layanan mikro. Selain itu, memudahkan untuk mengatur dan melihat semua interaksi yang terjadi di seluruh layanan mikro.
8. Alat Pemantau
Setelah aplikasi microservice dibangun, tugas-tugas yang terkait dengannya harus ditangani. Anda akan memerlukan alat pemantauan untuk layanan mikro Anda untuk mencapai hal yang sama. Prometheus dan Log Stash adalah dua teknologi untuk memantau layanan mikro yang paling sering digunakan. Logstash adalah perangkat lunak yang luar biasa. Ini adalah platform yang memungkinkan Anda untuk mengkonsolidasikan, menyimpan, dan memanipulasi data, dan ini adalah open source.
9. Alat Tanpa Server
Komponen penting SA dari layanan mikro adalah teknologi tanpa server, yang sering dikenal sebagai function-as-a-service. Ini meningkatkan efisiensi proses pembongkaran objek menjadi komponen yang paling mendasar. Baik Claudia maupun AWS Lambda adalah contoh alat tanpa server yang banyak digunakan untuk mengembangkan layanan mikro. Instalasi AWS Lambda dan API Gateway juga merupakan bagian dari tanggung jawab Claudia. Selain itu, Claudia mampu mengotomatiskan penyebaran yang rawan kesalahan dan aktivitas penyiapan sambil mempertahankan fungsionalitas "di luar kotak".
10. Container, Docker, dan Kubernetes
- Kontainer: Kontainer pada dasarnya memvirtualisasikan sistem operasi host (atau kernel), mengisolasi kebutuhan aplikasi dari kontainer lain yang dijalankan pada komputer yang sama.
- Docker: Docker terdiri dari beberapa bagian yang berbeda, termasuk runtime container yang disebut sebagai dockerd, pembuat gambar container yang dikenal sebagai BuildKit, dan antarmuka baris perintah yang digunakan untuk berinteraksi dengan pembuat, wadah, dan mesin (disebut buruh pelabuhan).
- Kubernetes adalah teknologi manajemen kontainer sumber terbuka dan gratis yang menggabungkan sekelompok komputer menjadi satu kumpulan sumber daya komputasi. Kubernetes dikembangkan oleh Google. Kubernetes memungkinkan Anda untuk menyusun aplikasi Anda dalam bentuk kelompok kontainer, yang kemudian dijalankan oleh mesin Docker. Kubernetes memastikan bahwa aplikasi Anda terus berfungsi dengan cara yang Anda tentukan.
Pola Umum dalam Arsitektur Layanan Mikro
sebuah. Pola backend-for-frontend (BFF)
BFF menyediakan antarmuka langsung antara frontend dan layanan mikro. Dalam skenario yang ideal, tim front-end juga akan bertanggung jawab untuk mengelola BFF. BFF tunggal hanya berkaitan dengan satu UI. Akibatnya, kami akan dapat menyederhanakan frontend kami dan memiliki satu tampilan data melalui backend-nya.
b. Entitas dan pola agregat
Entitas adalah sesuatu yang berbeda berdasarkan identitasnya. Di situs web e-niaga, misalnya, objek Produk dapat diidentifikasi dengan nama, jenis, dan harga produk. Agregat adalah sekelompok hal yang harus dianggap sebagai satu kesatuan. Oleh karena itu, untuk situs web e-commerce, Pesanan akan menjadi kumpulan (agregat) barang (entitas) yang telah dibeli pelanggan. Pola-pola ini digunakan untuk mengkategorikan data secara bermakna.
c. Pola penemuan layanan
Mereka memainkan peran penting dalam memfasilitasi penemuan layanan dan aplikasi. Instans layanan mungkin berbeda dalam konteks arsitektur layanan mikro karena penyebab seperti kegagalan layanan, skalabilitas, penghentian layanan, dan peningkatan. Pola-pola ini memberikan alat untuk penemuan untuk menangani kefanaan ini. Menggunakan health check dan kegagalan layanan sebagai pemicu penyeimbangan kembali lalu lintas, penyeimbangan beban dapat menggunakan teknik penemuan layanan.
d. Pola layanan mikro adaptor
Desain Adapter Microservices menyesuaikan, jika diperlukan, antara API berorientasi bisnis yang dibuat menggunakan teknik pengiriman pesan RESTful atau ringan — menggunakan metodologi berbasis domain yang sama seperti layanan mikro biasa — dan API lawas atau layanan SOAP berbasis WS-* klasik. Adaptasi diperlukan, misalnya, ketika tim pengembangan tidak memiliki kontrol terdesentralisasi atas sumber data aplikasi.
e. Pola aplikasi pencekik
The Strangler Pattern adalah pola arsitektur terkenal untuk secara perlahan mengubah aplikasi monolitik menjadi layanan mikro dengan mengganti fungsionalitas tertentu dengan layanan baru.
Anti-pola dalam Arsitektur Layanan Mikro
sebuah. Kekacauan Kohesi
Layanan harus secara jelas selaras dengan kemampuan bisnis dan tidak boleh berusaha mencapai apa pun di luar cakupannya. Pemisahan masalah secara fungsional sangat penting bagi arsitektur untuk dikelola; jika tidak, itu akan merusak kelincahan, kinerja, dan skalabilitas, menghasilkan arsitektur yang terhubung erat dengan entropi pengiriman dan kekacauan kohesi.
b. Arsitektur Layanan Berlapis
Salah satu kesalahan SOA yang paling umum adalah kesalahpahaman bagaimana mencapai penggunaan kembali layanan. Sebagian besar tim lebih mementingkan keterpaduan teknis daripada penggunaan kembali fungsional.
c. Kompleksitas
Faktor penting lainnya untuk mendukung arsitektur layanan mikro adalah kematangan organisasi. Tim pengembangan harus direformasi untuk mengambil tanggung jawab yang lebih besar untuk tumpukan lengkap, DevOps, daripada hanya mengirimkan tiket satu arah ke tim infrastruktur.
d. Strategi Pembuatan Versi yang Buruk
Strategi pembuatan versi yang tidak efektif menghasilkan kode dan dependensi yang tidak dapat dikelola. Akibatnya, pendekatan versi yang efisien untuk arsitektur Microservices harus diterapkan. Salah satu pendekatan paling dasar adalah membuat versi API dan menyertakan versi di URL rute.
e. Desain Pola Akses Data Beban Kerja Microservices yang Tidak Benar
Pola akses data beban kerja Microservices yang tidak tepat: Arsitektur Microservice bergantung pada database organisasi. Pola akses data di seluruh Layanan Mikro harus dipisahkan dengan jelas. Seringkali dapat diterima untuk menggunakan satu database di beberapa contoh layanan, selama data berada dalam tabel/koleksi yang dipartisi dengan benar.
f. Gangguan Ketergantungan
Gangguan ketergantungan adalah anti-pola yang berkembang ketika Anda menyadari bahwa layanan harus digunakan dalam urutan tertentu agar berfungsi dengan baik. Ketika tidak ada kontrol atas pemisahan fungsional dari keprihatinan, kekacauan kohesi mungkin muncul.
Cara yang baik untuk menghindari anti-pola ini adalah dengan memperkenalkan API Gateway.
Perbedaan Antara Arsitektur Monolitik, Layanan Mikro, dan Berorientasi Layanan
Layanan mikro | SOA | Monolitis | |
Rancangan | Layanan dibangun dalam unit kecil dan diekspresikan secara formal dengan API berorientasi bisnis. | Layanan dapat berkisar dalam ukuran di mana saja dari layanan aplikasi kecil hingga layanan perusahaan yang sangat besar termasuk lebih banyak fungsi bisnis. | Aplikasi monolitik berkembang menjadi ukuran besar, situasi di mana memahami keseluruhan aplikasi itu sulit. |
Kegunaan | Layanan diekspos dengan protokol standar, seperti RESTful API, dan dikonsumsi/digunakan kembali oleh layanan dan aplikasi lain. | Layanan yang diekspos dengan protokol standar, seperti SOAP, dan dikonsumsi/digunakan kembali oleh layanan lain – memanfaatkan middleware perpesanan. | Penggunaan kembali yang terbatas diwujudkan di seluruh aplikasi monolitik. Terbatas |
Skalabilitas | Layanan ada sebagai artefak penerapan independen dan dapat diskalakan secara independen dari layanan lain. | Ketergantungan antara layanan dan sub-komponen yang dapat digunakan kembali dapat menimbulkan tantangan penskalaan. | Menskalakan aplikasi monolitik sering kali menjadi tantangan. |
Kelincahan | Unit penyebaran independen yang lebih kecil memudahkan manajemen build/release, sehingga kelincahan operasional yang tinggi. | Meningkatkan berbagi komponen yang meningkatkan ketergantungan dan membatasi kemampuan manajemen. | Sulit untuk mencapai kelincahan operasional dalam penyebaran berulang artefak aplikasi monolitik. |
Perkembangan | Mengembangkan layanan secara terpisah memungkinkan pengembang untuk menggunakan kerangka kerja pengembangan yang sesuai untuk tugas yang ada. | Komponen yang dapat digunakan kembali dan praktik standar membantu pengembang dengan implementasi. | Aplikasi monolitik diimplementasikan menggunakan tumpukan pengembangan tunggal (yaitu, JEE atau .NET), yang dapat membatasi ketersediaan "alat yang tepat untuk pekerjaan itu". |
Pasar Vertikal Utama yang Menuntut Layanan Mikro
Perawatan Kesehatan: Pasar layanan mikro Perawatan Kesehatan diprediksi akan tumbuh dari $130 juta pada tahun 2015 menjadi $519 juta pada tahun 2025. Kebutuhan akan peluncuran layanan yang lebih cepat, penerimaan teknologi baru yang lebih cepat, dan efisiensi yang lebih baik mendorong perkembangan di industri perawatan kesehatan. Industri perawatan kesehatan mencari jawaban untuk keamanan data dan kebutuhan kepatuhan terhadap peraturan, serta bagaimana mengatasi kesulitan implementasi.
Perbankan, Keuangan, dan Asuransi: Aspen Mesh mengidentifikasi tiga manfaat penting layanan mikro untuk layanan keuangan: peningkatan keamanan melalui pembuatan layanan identitas yang berbeda, pengiriman fungsionalitas baru yang lebih cepat, dan lapisan API yang lebih mudah dikelola.
Pemerintah: Selain berbagai manfaat arsitektur layanan mikro, perusahaan pemerintah dapat memanfaatkan kemampuannya untuk merancang fungsionalitas yang sesuai dengan tujuan bisnis, memungkinkan tim TI untuk membangun atau meningkatkan layanan tergantung pada permintaan konstituen.
Ritel: Amazon dan eBay telah membuktikan manfaat layanan mikro untuk industri ritel, termasuk layanan yang sangat mudah diakses dan terukur serta manajemen bug dan kesalahan yang lebih efektif.
Media dan Hiburan: Pada tahun 2009, Netflix bermigrasi ke layanan mikro, dan saat ini layanan tersebut memproses 2 miliar permintaan tepi setiap hari menggunakan lebih dari 500 layanan mikro. Perubahan memberikan kecepatan, skalabilitas, dan aksesibilitas.
Contoh Perusahaan yang Mengadopsi Arsitektur Layanan Mikro
Amazon, Coca-Cola, dan Zalando, antara lain, mengubah infrastruktur TI mereka menjadi arsitektur layanan mikro. Selain itu, mereka mengatur ulang struktur organisasi internal mereka dan mendorong perusahaan mereka ke garis depan pasar. Menerapkan arsitektur layanan mikro menyenangkan ketika Anda mendapatkan pengetahuan dari yang terbaik di industri. Berikut adalah beberapa contoh layanan mikro yang paling efektif.
#1. Uber
Konsep kepemilikan dihancurkan oleh ketergantungan monolitik yang saling terkait. Migrasi menjadi menantang. Pengembang baru tidak dapat berkontribusi pada monolit. Kesalahan kecil menyebabkan hasil bencana. Uber memilih untuk menerapkan layanan berbasis cloud. Uber mengembangkan layanan mikro untuk beberapa operasi, termasuk penagihan dan manajemen penumpang dan perjalanan. Gateway API digunakan untuk berkomunikasi dengan layanan.
Selain itu, Uber menetapkan standar dunia untuk layanan mikronya. Mereka memberikan kriteria kuantitatif untuk dokumentasi, ketergantungan, toleransi kesalahan, dan sebagainya. Karakteristik ini dipantau menggunakan indikator komersial seperti kunjungan halaman. Segera, layanan mereka mencapai puncak keunggulan.
#2. Netflix
Netflix kemudian bermigrasi ke infrastruktur data terdistribusi berbasis cloud. AWS digunakan untuk menghadirkan sistem yang dapat diskalakan secara horizontal dan layanan/fitur tambahan. Pada tahun 2009, Netflix memulai transfernya, yang selesai setelah hampir tiga tahun. Kemudian Netflix mengonversi semua aplikasi yang menghadap pengguna menjadi layanan mikro otonom. Pada 2012, makeover selesai. Pada tahun 2015, Netflix telah menghilangkan semua gangguan layanan dan mampu memproses sekitar 2 miliar kueri API per hari. Saat ini, Netflix memiliki lebih dari 139 juta pengguna di 190 negara. Saat ini, Netflix mengoperasikan sekitar 700 sistem layanan mikro secara terpisah.
#3. Amazon
Amazon memiliki monolit besar pada tahun 2001. Pada tahun 2021, hampir semua orang akrab dengan Amazon Web Services (AWS) — solusi internal yang menjadi layanan komputasi awan komersial karena keunggulannya. Layanan mikro sangat baik untuk e-niaga karena dapat melacak aktivitas pengguna, pembelian, dan saluran penjualan lengkap. Menurut manajer produk senior di Amazon
Kemudian, mereka menghasilkan data yang berguna untuk mengoptimalkan presentasi produk dan proses penjualan itu sendiri. Amazon adalah salah satu perusahaan pertama di mana layanan mikro memainkan peran penting dalam mengubah seluruh organisasi. Raksasa di seluruh dunia mencapai kesuksesan luar biasa pada saat desain monolit adalah "norma" untuk membangun sistem teknologi informasi.
Semua modifikasi kode yang signifikan terhenti dalam proses penerapan selama berminggu-minggu sebelum tersedia bagi pengguna. Amazon menggunakan layanan mikro untuk merampingkan dan mengurangi lamanya proses. Dengan memisahkan struktur ke dalam aplikasi individual, pengembang dapat menentukan di mana hambatan, sifat perlambatan, dan membangun kembali struktur sebagai arsitektur berorientasi layanan, masing-masing dengan tim kecil yang dikhususkan untuk satu layanan.
Apa yang dimulai sebagai pembersihan sistem menghasilkan pertumbuhan salah satu pemain online utama dalam arsitektur kontemporer. Amazon memelopori jalan untuk bisnis lain dengan merilis serangkaian teknologi open-source, seperti AWS (Amazon Web Services), yang sekarang menyebar.
#4. eBay
Sistem eBay mendukung sekitar seribu layanan mikro. Pengalaman front-end, seperti web dan aplikasi iOS dan Android asli, menghubungi layanan perantara yang mengoordinasikan panggilan, yang kemudian berkomunikasi dengan layanan back-end. Setiap layanan memiliki kelompok pengembangan otonomnya sendiri. Sebagian besar layanan mikro eBay berkembang tanpa arsitek, dan sistemnya selalu dirancang dari bawah ke atas. Sebagian besar perusahaan besar, seperti eBay, telah mendarat di kumpulan layanan mikro polyglot yang bekerja sesuai dengan kebutuhan pelanggan dan, tentu saja, selalu berubah.
#5. SoundCloud
Setiap layanan dikembangkan dan disebarkan secara independen, terhubung dengan layanan lain melalui jaringan menggunakan standar pertukaran data ringan seperti JSON atau Thrift. Sepanjang durasi pergeseran, layanan mikro baru tidak dapat mengubah model relasional di MySQL atau, lebih buruk lagi, menggunakan mesin penyimpanan yang berbeda. Untuk keadaan ekstrem, seperti pengiriman pesan antar-pengguna di mana model berbasis utas diganti dengan model seperti obrolan, perusahaan menggunakan cronjobs untuk menyinkronkan basis data terpisah.
#6. Spotify
Untuk mencegah sinkronisasi di dalam perusahaan, Spotify dirancang pada arsitektur layanan mikro dengan tim tumpukan penuh otonom yang bertanggung jawab. Spotify menggunakan arsitektur Microservice di mana setiap pengembang perangkat lunak menulis di "wilayah" tertutup dengan kemampuan unik mereka sendiri. Setiap Microservice memiliki satu tanggung jawab langsung dan, dalam kebanyakan keadaan, database dan logika yang tidak dapat diakses oleh proses lain.
Jenis Tantangan Apa yang Dapat Dibantu Layanan Mikro untuk Anda Atasi?
Ini adalah solusi untuk pertanyaan "kesulitan apa yang dipecahkan oleh layanan mikro?"; mari kita periksa hambatan yang telah diatasi oleh arsitektur layanan mikro.
KASUS 1 Saldo eBay Dikembalikan
eBay menggunakan hampir seribu layanan. Banyak layanan ujung depan mengirim panggilan API, sementara layanan ujung belakang melakukan operasi terkait administrasi dan pengiriman. eBay awalnya menggunakan program monolitik Perl dan C++. Situs web eBay adalah produk utama, seperti halnya bagi banyak raksasa internet lainnya. Kebutuhan untuk menambahkan beberapa fitur tambahan ke situs web eBay terus meningkat. Selain itu, jenis situs web ini harus dapat diakses 24 jam sehari, tujuh hari seminggu, bahkan saat fitur baru ditambahkan.
Karena kebutuhan untuk meminimalkan waktu henti, eBay memilih untuk beralih ke arsitektur layanan mikro. Ini memungkinkan situs menjadi lebih stabil dan mempromosikan integrasi asinkron. Peningkatan signifikan dilakukan pada fleksibilitas penerapan dan durasi siklus rilis. Ketika layanan diisolasi, efisiensi kinerja meningkat dan penskalaan menjadi lebih mudah.
KASUS 2 Uber dan Ekspansi Cepat
Uber, layanan panggilan taksi paling populer, dimulai dengan satu paket untuk melayani penumpang di San Francisco, di mana ia pertama kali diterapkan. Perangkat lunak yang terhubung erat ini mampu mengelola sebagian besar, jika tidak semua, aktivitas bisnis, termasuk penagihan, pembayaran, dan layanan koneksi driver. Namun, ketika perusahaan berkembang, segalanya mulai menurun. Uber telah memperluas area jangkauannya dan menawarkan layanan lainnya.
Sebagai fitur lebih lanjut ditambahkan, paket tumbuh lebih kohesif. Semua logika terkandung dalam satu lokasi, dan kesulitan mulai muncul. Segera, bahkan sedikit modifikasi menuntut agar seluruh program digunakan kembali. Integrasi berkelanjutan segera menjadi kewajiban utama.
Tidak adanya model kepemilikan adalah karena banyaknya ketergantungan monolit yang saling bergantung. Oleh karena itu, migrasi itu sulit. Juga terjadi bahwa pengembang yang baru direkrut tidak dapat berkontribusi pada monolit. Bahkan jika kesalahan kecil terjadi, konsekuensinya parah. Ini adalah saat mereka membuat keputusan untuk mengimplementasikan layanan mikro. Gerakan mereka membutuhkan waktu. Mereka membongkar seluruh layanan dan memigrasikan aplikasi monolitik ke arsitektur berorientasi layanan mikro yang dibangun menggunakan Python, Node.js, dan Apache Thrift.
KASUS 3 Waktu Aktif Twitter yang Ditingkatkan
Itu adalah cerita lama yang sama: Twitter pertama kali menggunakan desain monolitik, yang sangat masuk akal. Namun, ketika lebih banyak orang mendaftar ke Twitter, masalah muncul. SDLC tumbuh lebih besar dan lebih rumit, dengan waktu pembuatan yang lebih lama, dan skalabilitasnya menurun secara signifikan, dengan sesekali muncul peringatan kesalahan kapasitas berlebih.
Twitter terpaksa mengubah arsitektur ke layanan mikro untuk mengatasi masalah ini. Setiap layanan mikro dibuat untuk menjadi modular, terdefinisi dengan baik, dan otonom. Mereka mungkin secara individual menguji dan menyebarkan setiap komponen. Mereka mungkin juga diukur secara independen. Segera, peringatan kesalahan menghilang sepenuhnya.
KASUS 4 Kode KarmaWifi dan Spaghetti
Ada orang, gadget, dan toko di Karma. Pada satu titik, dengan program monolitik yang tersedia, kode yang berhubungan dengan pengguna berakhir di bagian yang berhubungan dengan perangkat. Selain itu, API toko mengikuti API perangkat. Segera, menjadi sulit untuk menentukan apa yang berubah dan siapa yang mengubahnya. Meskipun tujuan awalnya adalah untuk membagi monolit menjadi perpustakaan fungsional, ditemukan bahwa memperluas dan beradaptasi dengan versi perangkat lunak yang lebih baru akan menjadi tantangan. Selain itu, mereka tidak akan dapat bereksperimen dengan inovasi masa depan yang akan diperkenalkan ke pasar.
Pada saat itu, mereka telah memilih untuk menggunakan arsitektur berdasarkan layanan mikro. Ketika mereka menganggapnya penting, mereka memisahkan bagian dari aplikasi back-end ke dalam layanan individu. Bagian awalnya sangat besar, tetapi seiring waktu mereka dibagi menjadi layanan yang lebih kecil. Akhirnya, setiap layanan mikro memiliki satu tugas dan ukuran maksimum yang perlu dikhawatirkan.
KASUS 5 Peningkatan Kinerja Walmart
Petualangan layanan mikro Walmart dimulai dengan akuisisi platform DevOps dari bisnis kecil bernama OneOps. Mereka memilih untuk menjadikannya sebagai inisiatif sumber terbuka sehingga mereka dapat berkontribusi kembali ke komunitas.
Mereka mulai memanfaatkan teknologi seperti database Node.js dan Cassandra untuk membuat berbagai layanan mikro yang dapat dipicu secara dinamis melalui API. Tujuannya adalah untuk mempermudah pengembang yang bekerja di banyak divisi bisnis Walmart untuk memiliki aplikasi mereka dan memberdayakan mereka untuk melakukannya. Mereka menemukan bahwa ini mengurangi ketergantungan pada kelompok TI terpusat.
Pada akhirnya, kemampuan pengembang untuk memperluas kemampuan back-end dari penawaran eCommerce organisasi berkontribusi pada peningkatan kelincahan bisnis.
Bagaimana Menerapkan Arsitektur Layanan Mikro di Android dan iOS?
- Langkah 1: Putuskan apakah itu benar-benar yang dibutuhkan bisnis Anda.
- Langkah 2: Jika ya, lihat infrastruktur yang sudah ada.
- Langkah 3: Siapkan tim Anda untuk menggunakan metode ini.
- Langkah 4: Jika Anda beralih dari sistem monolitik ke sistem layanan mikro, tanyakan kepada administrator data Anda untuk melihat apakah mereka mendapat informasi yang baik dan memahami tugasnya.
- Langkah 5: Pilih bahasa dan kerangka kerja untuk pengkodean.
- Langkah 6: Siapkan arsitektur dasar dengan layanan, wadah, dan template mesin virtual.
- Langkah 7: Pisahkan database menjadi banyak database yang lebih kecil jika arsitektur Anda adalah "monolit".
- Langkah 8: Letakkan gateway API pada tempatnya.
- Langkah 9: Lacak pelacakan dan buat petanya.
- Langkah 10: Uji menggunakan otomatisasi.
Apakah Layanan Mikro Masa Depan?
Tujuan utama artikel ini adalah untuk menjelaskan konsep dan prinsip dasar layanan mikro. Dengan melakukan upaya untuk mencapai hal ini, terbukti bahwa kami menganggap gaya arsitektur layanan mikro sebagai konsep penting – yang harus diperiksa dengan cermat oleh aplikasi perusahaan. Baru-baru ini, kami telah mengembangkan sejumlah sistem yang menggunakan cara ini, dan kami menyadari ada orang lain yang menghargai metode ini. Amazon, Netflix, The Guardian, Layanan Digital Pemerintah Inggris, realestate.com.au, Forward, dan comparethemarket.com adalah di antara mereka yang kami ketahui memelopori gaya arsitektur dalam beberapa bentuk.
Seringkali, konsekuensi aktual dari keputusan arsitektur tidak terlihat sampai beberapa tahun kemudian. Sebuah tim yang baik dengan dorongan yang kuat untuk modularitas kadang-kadang telah membangun desain monolitik yang telah memburuk dari waktu ke waktu. Banyak orang berpendapat bahwa kerusakan seperti itu kurang mungkin terjadi dengan layanan mikro karena batas layanan terlihat jelas dan sulit untuk diperbaiki. Namun, kami tidak dapat secara akurat mengevaluasi kematangan arsitektur layanan mikro sampai kami memiliki jumlah sistem yang cukup dengan usia yang memadai.
Pasti ada alasan untuk mengantisipasi bahwa layanan mikro akan berkembang perlahan. Keberhasilan setiap upaya komponenisasi bergantung pada seberapa baik perangkat lunak cocok dengan komponen. Sulit untuk menentukan di mana batas komponen harus ditempatkan. Desain evolusioner mengakui kesulitan dalam menetapkan batas yang benar dan, dengan demikian, pentingnya membuatnya mudah untuk dikerjakan ulang. Namun, ketika komponen Anda adalah layanan dengan komunikasi eksternal, pemfaktoran ulang jauh lebih sulit daripada saat bekerja dengan pustaka dalam proses.
Memindahkan kode melintasi batas layanan adalah kompleks, setiap modifikasi antarmuka harus diatur di antara peserta, lapisan kompatibilitas tambahan harus dibuat, dan pengujian rumit. Jika komponen tidak tersusun dengan rapi, Anda hanya memindahkan kompleksitas dari dalam komponen ke tautan antar komponen. Ini tidak hanya menggeser kompleksitas, tetapi juga menggesernya ke lokasi yang kurang eksplisit dan lebih sulit diatur. Saat memeriksa bagian dalam komponen kecil dan langsung, mudah untuk mengabaikan hubungan rumit antara layanan dan menyimpulkan bahwa segala sesuatunya lebih baik daripada yang sebenarnya.
Terakhir, ada kompetensi tim untuk dipertimbangkan. Tim yang terampil lebih cenderung menerima praktik baru. Pendekatan yang lebih berhasil untuk tim yang sangat terampil, bagaimanapun, mungkin tidak selalu berhasil untuk tim yang kurang terampil. Kami telah melihat beberapa contoh tim yang tidak kompeten yang membangun struktur monolitik yang ceroboh, tetapi perlu waktu untuk menentukan apa yang terjadi ketika jenis kekacauan ini terjadi dengan layanan mikro. Tim yang buruk akan selalu menghasilkan sistem yang buruk; sulit untuk mengatakan apakah layanan mikro meningkatkan atau memperburuk situasi dalam keadaan ini.
Jadi Kami Menulis Ini dengan Optimisme Hati-hati. Kami Percaya bahwa Layanan Mikro Ada di Sini untuk Tetap!
Mengapa Memilih EmizenTech?
Emizentech dapat membantu Anda dalam memigrasikan aplikasi Anda dari arsitektur monolitik ke arsitektur layanan mikro. Kami dapat membantu Anda membuat aplikasi perusahaan Anda mudah dirawat dan terukur. Jika Anda ingin menumbuhkan dan mengembangkan bisnis Anda dan mencari cara baru untuk melakukannya, emizentech dapat membantu Anda dengan cara yang benar sekaligus memastikan pertumbuhan jangka panjang. Anda juga dapat mengunjungi situs web kami untuk mempelajari lebih lanjut tentang layanan mikro, mencari tahu apakah perusahaan Anda siap untuk itu, dan berbicara tentang bagaimana menerapkan arsitektur ini. Ini adalah cara membuat perangkat lunak yang berfokus pada pemecahan aplikasi menjadi modul yang hanya melakukan satu hal dan memiliki antarmuka yang terdefinisi dengan baik.
Karakteristik yang membedakan dari layanan kami adalah:
- Arsitektur berbasis domain untuk mencegah kegagalan aplikasi
- Pastikan skalabilitas tingkat tinggi
- Desain database terdesentralisasi
- Aktifkan isolasi kegagalan sederhana, dan
- Aktifkan pengiriman berkelanjutan dengan menggunakan budaya DevOps.
Pikiran Penutup
Ambil langkah selanjutnya!
Di blog ini, kami telah berupaya untuk menyelidiki beberapa aspek Arsitektur Layanan Mikro dan kemungkinan yang dihadirkannya. Fungsionalitas sistem aplikasi dapat dipecah menjadi beberapa unit fungsional yang lebih kecil ketika menggunakan pendekatan arsitektur yang dikenal sebagai layanan mikro. Pelaksanaan dan pengelolaan layanan ditangani secara terpisah satu sama lain. Ketika sistem monolitik dipecah menjadi bagian-bagian yang lebih kecil menggunakan arsitektur layanan mikro, jumlah komponen individu meningkat secara dramatis.
Oleh karena itu, diperlukan pengelolaan yang efisien dari ketergantungan yang ada di antara mereka. Jika dibandingkan dengan arsitektur perangkat lunak monolitik, memang benar bahwa membuat dan menjalankan Arsitektur Layanan Mikro menghadirkan sejumlah tantangan dan memerlukan perubahan paradigma. Dalam nada yang sama, Arsitektur Layanan Mikro sama sekali bukan peluru ajaib yang dapat memecahkan masalah kompleksitas yang muncul di setiap dan semua jenis sistem.
Ketika semuanya dipertimbangkan, kami berpikir bahwa arsitektur layanan mikro adalah alat yang sangat membantu dan nyaman untuk pengembangan perangkat lunak kontemporer. Arsitektur Layanan Mikro adalah satu-satunya strategi yang layak untuk perusahaan besar yang biasanya menghasilkan perangkat lunak yang rumit karena ini adalah satu-satunya metode untuk secara efektif menangani kompleksitas dan mempertahankan keunggulan kompetitif di pasar. Arsitektur Microservice harus dimanfaatkan untuk pengembangan perangkat lunak yang berkelanjutan, yang dapat memberikan manfaat jangka panjang, tidak hanya oleh perusahaan besar tetapi juga oleh usaha kecil dan menengah.
Penting untuk dicatat bahwa pengadopsi awal Arsitektur Layanan Mikro, seperti Spotify, Netflix, LinkedIn, Amazon, dan Google, dapat memperoleh keunggulan kompetitif utama atas pesaing mereka sebagai hasil dari adopsi Arsitektur Layanan Mikro. Pengembangan dan pemeriksaan model arsitektur keduanya merupakan pilihan yang layak untuk membantu upaya ini. Metode ini menjanjikan untuk menyederhanakan berbagai hal dan membuat hidup lebih sederhana bagi pengembang tanpa merugikan laba, yang sangat penting sekarang karena perusahaan memasuki periode baru persaingan yang ketat.
Sebagian besar perusahaan tertarik untuk meningkatkan efisiensi biaya mereka, dan dengan latar belakang ini, arsitektur tanpa server diperkirakan akan memperoleh popularitas yang lebih besar selama tahun-tahun mendatang. Potensi jangkauan layanan mikro di masa depan dunia tampaknya cukup menjanjikan.
Bisakah layanan mikro membantu bisnis Anda maju? Jangan ragu untuk menghubungi kami untuk konsultasi yang tidak mengikat!
Terima kasih sudah membaca!
Pertanyaan yang Sering Diajukan tentang Arsitektur Layanan Mikro
- Mengapa Anda memilih Arsitektur Layanan Mikro?
Desain layanan mikro memiliki beberapa keunggulan dibandingkan arsitektur monolitik, termasuk ketahanan, produktivitas, fleksibilitas, skalabilitas, kecepatan, dinamisme, perawatan minimal, dll.
- Apa saja 5 komponen arsitektur layanan mikro?
Lima komponen dasar arsitektur layanan mikro adalah layanan mikro, wadah, mesh layanan, penemuan layanan, dan gateway API.
- Apakah REST API adalah layanan mikro?
Ya, REST API adalah salah satu API paling populer yang digunakan untuk membangun aplikasi layanan mikro.
- Apa perbedaan antara layanan mikro dan API?
Perbedaan utama antara API dan layanan mikro adalah bahwa yang terakhir digunakan untuk membangun satu aplikasi, sedangkan yang pertama terdiri dari kumpulan layanan independen namun saling berhubungan. API adalah komponen aplikasi yang bertanggung jawab untuk memfasilitasi komunikasi dengan program perangkat lunak lain. Therefore, APIs may be utilized to facilitate the creation of microservices.
- Is Kubernetes a microservice?
Yes, Kubernetes is an open-source orchestrator for deploying containerized applications (microservices).
- What language is used in microservices?
C++ is a good language for microservices in domains that require the characteristics of C++, such as runtime speed and direct memory access, and C++, like other languages, has a variety of infrastructures available to help you get started with developing microservices. C++ is a good language for microservices in domains that require the attributes of C++, such as runtime speed and direct memory access.
- Mengapa Anda memilih Arsitektur Layanan Mikro?
>> Peningkatan kelincahan dan waktu cepat ke pasar
>> Skalabilitas yang efektif dan pembaruan aplikasi
>> Biaya pengembangan yang dioptimalkan
>> Keandalan, stabilitas, dan perawatan yang tinggi
>> Fleksibilitas dalam pemilihan teknologi
>> Fokus laser pada fungsi bisnis individu
>> Otonomi tim
>> Penerapan dan pengujian otomatis
>> Manajemen sumber daya yang lebih baik
>> Mengurangi/menghindari hutang teknis
Anda mungkin juga suka membaca
- Pengembangan Aplikasi Stack Penuh: Panduan lengkap
- Perdagangan Tanpa Kepala: Solusi untuk Perdagangan Tradisional
- Komposit Commerce
- Pengembangan Backend Aplikasi Seluler
- Cara Memilih Tumpukan Teknologi Untuk Mengembangkan Aplikasi