Skip to main content

Pengantar Microservices, Netflix OSS dan Spring Cloud

Sejarah Singkat Microservices

Konsep microservices sebenarnya bukanlah sesuatu yang baru dalam dunia pengembangan perangkat lunak. Namun, istilah "microservices" sendiri mulai populer dan menjadi tren pada awal tahun 2010-an. Meskipun tidak ada titik awal yang pasti, beberapa perusahaan teknologi besar seperti Netflix dan Amazon sering disebut sebagai pelopor dalam menerapkan arsitektur ini dalam skala besar.

Mengapa perusahaan-perusahaan besar ini tertarik dengan microservices?

  1. Netflix: Perusahaan streaming video ini menghadapi tantangan dalam mengelola lalu lintas yang sangat tinggi dan beragam perangkat. Mereka membutuhkan arsitektur yang fleksibel dan skalabel untuk mengatasi masalah ini.
  2. Amazon: Sebagai perusahaan e-commerce terbesar di dunia, Amazon juga perlu mengelola sistem yang sangat kompleks dan terus berkembang. Microservices memungkinkan mereka untuk mengembangkan dan memperbarui layanan secara independen, sehingga dapat lebih cepat beradaptasi dengan perubahan bisnis.

Alasan Awal Penggunaan Microservices

Ada beberapa alasan mendasar mengapa arsitektur microservices mulai populer dan digunakan secara luas:

  1. Kompleksitas Aplikasi yang Meningkat

    1. Seiring dengan perkembangan teknologi, aplikasi modern menjadi semakin kompleks dan memiliki fitur yang semakin banyak.
    2. Monolit (aplikasi yang dibangun sebagai satu kesatuan) menjadi sulit dikelola dan diubah karena ketergantungan yang kuat antar komponen.
  2. Teknologi yang Mendukung

    1. Munculnya teknologi-teknologi baru seperti containerization (Docker), orchestration (Kubernetes), dan cloud computing memberikan fondasi yang kuat untuk membangun dan mengelola microservices.
    2. Teknologi ini memungkinkan deployment, scaling, dan manajemen microservices secara otomatis dan efisien.
  3. Agile dan DevOps:

    1. Metodologi pengembangan perangkat lunak Agile dan praktik DevOps semakin populer.
    2. Microservices sangat cocok dengan prinsip-prinsip Agile dan DevOps karena memungkinkan tim pengembangan untuk bekerja secara mandiri dan melakukan deployment secara lebih sering.
  4. Fleksibilitas dan Skalabilitas

    1. Setiap microservice dapat dikembangkan dan di-deploy secara independen, sehingga tim pengembangan dapat memilih teknologi yang paling sesuai untuk setiap layanan.
    2. Microservices juga memungkinkan skalabilitas yang lebih baik karena hanya layanan yang membutuhkan sumber daya tambahan yang perlu ditingkatkan.
  5. Ketahanan terhadap Perubahan

    1. Dengan memisahkan fungsionalitas menjadi layanan-layanan kecil, perubahan pada satu bagian dari aplikasi tidak akan berdampak besar pada bagian lainnya.
    2. Hal ini membuat aplikasi menjadi lebih tahan terhadap perubahan dan lebih mudah untuk ditingkatkan.

Microservices muncul sebagai respons terhadap kebutuhan akan arsitektur perangkat lunak yang lebih fleksibel, skalabel, dan mudah dikelola untuk menghadapi kompleksitas aplikasi modern. Dengan memisahkan aplikasi menjadi layanan-layanan kecil, microservices memungkinkan tim pengembangan untuk bekerja secara lebih efisien, meningkatkan kecepatan pengembangan, dan mengurangi risiko kegagalan.

Microservices adalah arsitektur perangkat lunak yang membagi aplikasi menjadi beberapa layanan kecil yang saling terpisah dan dapat dikembangkan, dikelola, dan diperbarui secara independen. Setiap layanan memiliki fungsi tertentu dan berkomunikasi satu sama lain melalui API (Application Programming Interface).

Berikut adalah beberapa karakteristik utama dari microservices:

  1. Independensi: Setiap layanan dapat dibangun dan diperbarui tanpa mempengaruhi layanan lainnya, memungkinkan pengembangan yang lebih cepat dan efisien.

  2. Fokus pada Fungsi Tertentu: Setiap microservice dirancang untuk melakukan tugas tertentu, sehingga lebih mudah untuk mengelola dan mengoptimalkan kinerja.

  3. Penggunaan Teknologi Beragam: Microservices memungkinkan penggunaan berbagai teknologi dan bahasa pemrograman dalam satu aplikasi, sehingga tim dapat memilih alat terbaik untuk setiap layanan.

  4. Skalabilitas: Layanan dapat diskalakan secara independen, memungkinkan penyesuaian sumber daya berdasarkan kebutuhan masing-masing layanan.

  5. Peningkatan Ketersediaan: Jika satu layanan mengalami masalah, layanan lain masih dapat berfungsi, meningkatkan ketahanan aplikasi secara keseluruhan.

Microservices banyak digunakan dalam pengembangan aplikasi modern, terutama dalam lingkungan cloud dan sistem terdistribusi, untuk meningkatkan kecepatan, fleksibilitas, dan efisiensi dalam pengembangan perangkat lunak.


Netflix OSS: Kumpulan Alat dan Pustaka untuk Microservices

Netflix OSS adalah sebuah kumpulan alat dan pustaka open-source yang dikembangkan oleh Netflix untuk mendukung arsitektur microservices mereka. Netflix, sebagai salah satu perusahaan streaming terbesar di dunia, telah membangun sistem yang sangat skalabel dan tahan banting untuk melayani jutaan pengguna secara global. Untuk mencapai hal ini, Netflix mengadopsi arsitektur microservices, yang memecah aplikasi menjadi layanan-layanan kecil yang independen. Netflix OSS menyediakan berbagai macam alat dan pustaka yang membantu dalam membangun, mengelola, dan menskalakan microservices ini.

Mengapa Netflix OSS?

  • Skalabilitas: Netflix OSS dirancang untuk mengatasi tantangan dalam menskalakan aplikasi secara horizontal.
  • Kehandalan: Alat-alat ini membantu memastikan ketersediaan layanan dan meminimalkan downtime.
  • Efisiensi: Netflix OSS membantu mengoptimalkan penggunaan sumber daya.
  • Kemandirian: Microservices yang dibangun dengan Netflix OSS lebih mandiri dan mudah dikelola.

Komponen Utama Netflix OSS Beberapa komponen utama Netflix OSS antara lain:

  • Eureka: Layanan penemuan layanan (service discovery) yang membantu microservices menemukan satu sama lain dalam lingkungan yang dinamis.
  • Hystrix: Framework untuk mengisolasi kegagalan dalam aplikasi dan meningkatkan ketahanan terhadap kesalahan.
  • Ribbon: Client-side load balancer yang membantu mendistribusikan traffic ke berbagai instance dari sebuah layanan.
  • Zuul: Server API gateway yang berfungsi sebagai titik masuk tunggal untuk semua permintaan ke microservices.
  • Archaius: Framework untuk manajemen konfigurasi yang memungkinkan aplikasi untuk merespons perubahan konfigurasi secara dinamis.
  • Aegisthus: Alat untuk melakukan bulk abstraction of data dari Cassandra untuk proses analisis data downstream.
  • Spinnaker: Platform Continuous Delivery yang memfasilitasi rilis perubahan software dengan kecepatan tinggi dan kepercayaan diri.

Manfaat Menggunakan Netflix OSS

  • Pengembangan yang Lebih Cepat: Dengan menggunakan Netflix OSS, pengembang dapat fokus pada logika bisnis tanpa perlu membangun infrastruktur yang kompleks dari awal.
  • Kualitas yang Teruji: Alat-alat ini telah diuji dalam skala besar oleh Netflix dan terbukti handal.
  • Komunitas yang Besar: Netflix OSS memiliki komunitas yang aktif, sehingga pengembang dapat dengan mudah menemukan bantuan dan solusi untuk masalah yang mereka hadapi.

Netflix OSS adalah sebuah aset berharga bagi para pengembang yang ingin membangun aplikasi microservices yang skalabel, tahan banting, dan efisien. Dengan menggunakan alat-alat yang disediakan oleh Netflix OSS, pengembang dapat lebih fokus pada pengembangan fitur-fitur baru dan memberikan pengalaman pengguna yang lebih baik.

Spring Cloud dan Netflix OSS

Spring Cloud adalah proyek yang dibangun di atas Spring Framework. Ia menyediakan berbagai fitur dan integrasi yang memudahkan pengembangan aplikasi microservices dengan menggunakan teknologi-teknologi yang sudah ada, seperti Netflix OSS. Spring Cloud bertindak sebagai lapisan abstraksi di atas Netflix OSS, sehingga pengembang dapat menggunakan komponen Netflix OSS dengan lebih mudah dan konsisten.

Jadi, apa hubungan keduanya?

  • Spring Cloud menggunakan Netflix OSS: Banyak komponen dalam Spring Cloud yang merupakan integrasi dari Netflix OSS. Misalnya, Spring Cloud Eureka menggunakan Netflix Eureka untuk service discovery, Spring Cloud Hystrix menggunakan Netflix Hystrix untuk circuit breaker, dan sebagainya.
  • Spring Cloud menyederhanakan penggunaan Netflix OSS: Spring Cloud menyediakan konfigurasi yang lebih sederhana dan konsisten untuk menggunakan komponen Netflix OSS. Ini membuat pengembangan aplikasi microservices dengan Netflix OSS menjadi lebih mudah dan cepat.
  • Spring Cloud menawarkan fitur tambahan: Selain integrasi dengan Netflix OSS, Spring Cloud juga menyediakan fitur-fitur tambahan seperti konfigurasi terdistribusi, bus pesan, dan keamanan.

Mengapa menggunakan Spring Cloud?

  • Kemudahan Penggunaan: Spring Cloud menyederhanakan proses pengembangan microservices dengan menyediakan abstraksi yang lebih tinggi.
  • Ekosistem yang Besar: Spring Cloud memiliki ekosistem yang sangat besar, dengan banyak dokumentasi, tutorial, dan komunitas yang aktif.
  • Integrasi dengan Teknologi Lain: Spring Cloud dapat dengan mudah diintegrasikan dengan teknologi-teknologi populer lainnya seperti Docker dan Kubernetes.

Kapan harus menggunakan Netflix OSS secara langsung?

  • Kustomisasi yang Tinggi: Jika Anda membutuhkan fleksibilitas dan kontrol yang lebih tinggi, Anda dapat menggunakan Netflix OSS secara langsung.
  • Proyek yang Sudah Ada: Jika Anda sudah memiliki proyek yang menggunakan Netflix OSS, Anda mungkin ingin terus menggunakannya.

Baik Netflix OSS maupun Spring Cloud adalah alat yang sangat berguna untuk membangun aplikasi microservices. Spring Cloud merupakan pilihan yang baik bagi pengembang yang ingin memulai dengan cepat dan mudah, sedangkan Netflix OSS memberikan fleksibilitas yang lebih tinggi bagi pengembang yang berpengalaman.

Tentu, mari kita bandingkan Spring Cloud dan Netflix OSS dalam bentuk tabel agar lebih mudah dipahami:

FiturNetflix OSSSpring Cloud
DefinisiKumpulan alat dan pustaka open-source yang dikembangkan oleh Netflix untuk mendukung arsitektur microservices.Proyek yang dibangun di atas Spring Framework, menyediakan fitur dan integrasi untuk memudahkan pengembangan aplikasi microservices.
TujuanMembantu membangun dan mengelola sistem microservices yang skalabel dan tahan banting.Sama, namun dengan penekanan pada kemudahan penggunaan dan integrasi dengan ekosistem Spring.
Komponen UtamaEureka, Hystrix, Ribbon, Zuul, ArchaiusEureka, Hystrix, Ribbon, Zuul, ditambah fitur-fitur tambahan seperti konfigurasi terdistribusi, bus pesan, dan keamanan.
PendekatanLebih granular, memberikan fleksibilitas dan kontrol yang tinggi.Lebih abstrak, menyederhanakan penggunaan komponen Netflix OSS.
EkosistemKomunitas yang besar dan aktif, namun lebih spesifik pada Netflix.Komunitas yang sangat besar dan aktif, bagian dari ekosistem Spring yang lebih luas.
IntegrasiTerintegrasi dengan baik dalam lingkungan Netflix.Dapat diintegrasikan dengan berbagai teknologi lain seperti Docker dan Kubernetes.
Kemudahan PenggunaanMembutuhkan konfigurasi yang lebih manual.Lebih mudah digunakan, terutama bagi pengembang yang sudah familiar dengan Spring.
KustomisasiTinggiSedang
Contoh PenggunaanPerusahaan yang ingin memiliki kontrol penuh atas arsitektur microservices mereka.Perusahaan yang ingin mengembangkan aplikasi microservices dengan cepat dan efisien.


Ringkasan

  • Netflix OSS cocok untuk tim yang ingin memiliki kontrol penuh atas setiap aspek dari arsitektur microservices mereka. Mereka yang memiliki pengalaman yang kuat dalam pengembangan Java dan ingin mengoptimalkan kinerja aplikasi akan merasa nyaman dengan Netflix OSS.
  • Spring Cloud lebih cocok untuk tim yang ingin mengembangkan aplikasi microservices dengan cepat dan efisien. Pengembang yang sudah familiar dengan Spring Framework akan merasa lebih mudah beradaptasi dengan Spring Cloud.

Kapan Menggunakan Apa?

  • Gunakan Netflix OSS jika:
    • Anda membutuhkan fleksibilitas dan kontrol yang tinggi.
    • Anda ingin mengoptimalkan kinerja aplikasi.
    • Tim Anda memiliki pengalaman yang kuat dalam pengembangan Java.
  • Gunakan Spring Cloud jika:
    • Anda ingin mengembangkan aplikasi microservices dengan cepat dan efisien.
    • Anda ingin memanfaatkan ekosistem Spring yang luas.
    • Anda ingin integrasi yang lebih mudah dengan teknologi lain.

Baik Netflix OSS maupun Spring Cloud adalah alat yang sangat berguna untuk membangun aplikasi microservices. Pilihan antara keduanya tergantung pada kebutuhan spesifik proyek Anda dan preferensi tim Anda.

Comments

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Semalam kemarin (09 Januari 2019) tidak sengaja kami sekeluarga lewat Bandung Digital Hub saat pulang dari Fish Wow Cheeseee  yang di Jl. Lombok. Bandung Digital Hub ini sendiri berlokasi tidak jauh dari dari tempat kami makan tersebut, yaitu berlokasi di Jl. Laswi No.7, Kacapiring, Batununggal, Kota Bandung, Jawa Barat 40271. Berhubung untuk bulan Januari 2019 ini sedang tidak masuk ke kantor maka saya putuskan untuk besoknya (hari ini 09 Januari 2019) nyoba untuk bekerja remote dari Bandung Digital Hub , apalagi istri yang kebetulan follower pak Ridwan Kamil di Instagram juga Facebook dan tampaknya pernah lihat ulasan mengenai tempat ini sehingga tampak antusias supaya saya datang ketempat ini ini dan mencoba bekerja dari gedung creative hub dan coworking yang keren ini.  Tempat Parkir Masalah utama saat kita datang ke coworking space terutama yang berlokasi di Bandung (atau mungkin kota-kota lainnya) adalah lahan parkir, kadang lahan parkir ...

Numpang Kerja Remote dari Bandung Digital Valley

Satu lagi co-working place  gratisan dan keren yang cukup populer dikota Bandung, co-working place yang juga memberikan fasilitas tempat kerja (co-working place) dan fitur-fitur menarik lainnya,  co-working place keren  ini adalah Bandung Digital Valley atau yang sering disingkat BDV . C o-working place  Bandung Digital Valley ini  merupakan bagian dari Telkom , mulai aktif digunakan dari sekitar tahun 2012 lalu .  Tempat ini biasanya menjadi tempat favorit bagi para pengiat startup, freelancer, dan mahasiswa . Gedung BDV Gedung BDV Gedung BDV Co-working space Bandung Digital Valley ini sendiri berlokasi di Menara Bandung Digital Valley, Jl. Gegerkalong Hilir No.47, Sukarasa, Sukasari, Kota Bandung, Jawa Barat, detailnya bisa dilihat di Google map berikut. Pemandangan jalan setelah pintu satpam. Free Co-working Space Membership Untuk mulai menggunakan fasilitas co-working space ini secara gratis maka yang pe...

Membuat Authentikasi Berbasis Token pada Spring Boot dengan Spring Security dan JWT

Setelah beberapa kali mencari tutorial tentang otentikasi aplikasi web Spring Boot dengan menggunakan JWT yang mudah dipahami akhirnya saya menemukan artikel berbahasa Inggris tapi sangat mudah dipahami  dan diikuti, artikel tersbut berada disini , dengan judul " Spring Boot Token based Authentication with Spring Security & JWT ". Untuk memudahkan orang-orang yang terbiasa membaca artikel dalam bahasa indonesia (termasuk saya sendiri), artikel ini saya buat dan susun ulang (artikel aslinya tidak tertulis dengan runtut dan dapat membuat pemula bingung dengan berbagai error yang muncul) supaya lebih mudah untuk diikuti dan dapat di gunakan bersama. Applikasi yang akan kita buat adalah aplikasi web yang setiap endpoint-nya hanya bisa di akses oleh role tertentu. 1. Tools Yang Diperlukan IntelliJ Idea text editor. Spring Assistant Plugin. Postman. PostgreSQL + DBeaver. Min Java 8 Spring Boot 2.1.8 (dengan Spring Security, Spring Web, Spring Data JPA). jjwt 0.9.1. Maven 3.6.1....