Pendahuluan

Pengenalan mengenai Spring Boot - Spring Cloud bisa dilihat di sini

Bisa kita lihat bahwa Spring Boot dan Spring Cloud merupakan kumpulan library Spring yang sering dipakai dalam pembuatan aplikasi.

Spring-Boot berfokus kepada aplikasi Standalone, sementara Spring-Cloud berfokus kepada aplikasi berbasis sistem terdistribusi.

Spring-Cloud akan membutuhkan Spring-Boot sebagai dasar dari library-library standalone yang dibutuhkan ketika aplikasi-aplikasi standalone tadi berkomunikasi di dalam sistem terdistribusi.

Sayangnya 2 paket ini yaitu Spring-Boot dan Spring-Cloud tidak dibungkus lagi dalam sebuah wrapper agar kedua versi nya itu kompatible.

Yaa, mungkin terlalu banyak membungkus akan membuat bingung dan membutuhkan maintenance aplikasi yang lebih rumit.

Akibatnya dari Software Engineer / IT Developer harus memastikan bahwa versi dari Spring-Boot dan versi Spring-Cloud yang diimport melalui dependency management sesuai.

Hal ini mungkin mengambil waktu kita dalam engecek kompatibilitas antara 2 paketan library Spring tersebut.

Tapi tenaaang, dari Spring sendiri sudah menyediakan panduan mengenai kompatibilitas dari 2 paketan library Spring tersebut.


Contoh import library Spring Boot - Spring Cloud

Kita coba mulai dengan menginisiasi sebuah proyek aplikasi untuk sistem terdistribusi yang membutuhkan Spring Boot dan juga Spring Cloud.

Misalkan dengan menggunakan Maven sebagai dependency management

<properties>
  <java.version>1.8</java.version>
  <spring.cloud-version>2020.0.5</spring.cloud-version>
  <spring.boot-version>2.5.9</spring.boot-version>
</properties>

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>${spring.cloud-version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>${spring.boot-version}</version>
  <relativePath /> <!-- lookup parent from repository -->
</parent>

Di konfigurasi diatas, kita menggunakan versi :
  • Spring-Boot 2.5.9
  • Spring-Cloud 2020.0.5

Kedua versi tersebut kompatible, sehingga tidak masalah ketika kita melakukan konfigurasi .pom file seperti diatas.

Tetapi kalau misalnya kita mengubah versi dari Spring-Boot 2.6.2 menjadi 2.3.9.RELEASE misalnya, maka dependency management seperti Maven tidak akan bisa me-resolve dependency nya project aplikasi kita.


Bagaimana compatibility untuk Spring Cloud dan Spring Boot ini ?

Di situs resminya Spring Cloud, disebutkan mengenai kompatabilitas ini, sbb :

Versi Spring Boot Versi Spring Cloud yang cocok
2.6.x 2021.0.x , nama lainnya : Jubilee
2.4.x, 2.5.x 2020.0.x , nama lainnya : Ilford , mulai versi 2020.0.3
2.2.x, 2.3.x Hoxton , mulai versi Hoxton.SR5
2.1.x Greenwich
2.0.x Finchley
1.5.x Edgware
1.5.x Dalston

Penamaan Versi antara Spring-Boot dan Spring-Cloud memang berbeda.

Versi Spring-Boot menggunakan penomoran semantik dengan 3 angka dipisahkan dengan titik.

Contohnya : versi 2.5.9 , bisa dianggap sebagai versi MAJOR.MINOR.PATCH


Sementara penamaan versi Spring-Cloud menggunakan urutan sbb :

  1. Alfabet, dari A-H., secara berurutan dengan kata yang dimulai dengan huruf alfabet tersebut , yaitu Angel, Brixton, Dalston, Edgware, Finchley, Greenwicth, Hoxton, sampai pada tahun 2020.

  2. Semenjak tahun 2020, penamaan versinya memakai Versi Calendar, dengan format YYYY.MINOR.MICRO, dimana YYYY adalah tahun, MINOR adalah nomor sekuensial dimulai dari 0. MICRO adalah kelanjutan dari penomoran sebelumnya. .0 sama dengan -RELEASE, .2 sama dengan SR2, dst.