Jenis penyebaran aplikasi

Selesai

Ada beberapa cara untuk menyebarkan aplikasi Java ke cloud. Unit ini menjelajahi berbagai opsi sehingga, di unit berikutnya, Anda dapat lebih memahami layanan yang disediakan Azure.

Komputer virtual, kontainer, atau platform sebagai layanan?

Pertanyaan utamanya adalah apakah Anda ingin atau perlu menyebarkan aplikasi Anda pada komputer virtual (VM), di dalam kontainer, atau sebagai solusi platform as a service (PaaS).

  • Dengan komputer virtual, Anda berada di dunia yang mirip dengan lingkungan pusat data lokal atau klasik. Azure menyediakan serangkaian VM yang telah dikonfigurasi sebelumnya yang menjalankan sistem operasi utama (Windows dan Linux), dan Anda harus mengonfigurasi dan memelihara komputer tersebut.

    Kami menyarankan agar Anda mengadopsi solusi ini pada awalnya, karena ini adalah yang paling dekat dengan apa yang sudah digunakan sebagian besar perusahaan sebelum mereka pindah ke cloud. Mereka biasanya menginstal perangkat lunak manajemen konfigurasi mereka sendiri, menginstal versi Java favorit mereka, dan kemudian dapat menjalankan beban kerja Java mereka dengan cara yang mirip dengan cara yang telah mereka lakukan di masa lalu.

    Solusi VM berfungsi dengan baik jika Anda memiliki tim operasi berpengalaman yang akan mengonfigurasi dan memeliharanya, dan jika Anda memiliki kasus penggunaan tertentu. Misalnya, Anda mungkin menggunakan beberapa pustaka asli atau beberapa perangkat lunak kepemilikan, seperti Oracle WebLogic Server atau IBM WebSphere Application Server.

  • Dengan kontainer , Anda masih memiliki sebagian besar kontrol yang Anda miliki dengan VM, tetapi dengan lebih sedikit upaya operasi. Anda dapat menginstal Java Virtual Machine (JVM) Anda sendiri atau beberapa perangkat lunak tertentu, dan kontainer Anda akan berjalan baik secara lokal atau di penyedia cloud apa pun.

    Karena kontainer menawarkan banyak kebebasan, mereka menderita beberapa masalah yang sama dengan VM. Jika Anda menyediakan JVM Anda sendiri, Anda harus memperbarui dan menambalnya seperlunya. Oleh karena itu, gambar Docker memerlukan toolchain integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang baik untuk mengelola kontainer dengan baik. Karena Docker image dapat berjalan secara lokal dan lebih ringan dari VM, mereka juga memberikan pengalaman pengembang yang hebat.

  • Dengan platform sebagai solusi layanan, penyedia cloud menangani sebagian besar beban pemeliharaan dan operasi. Pembaruan sistem operasi (OS), patch Java, keamanan, dan kepatuhan semuanya disediakan. Akibatnya, opsi ini biasanya lebih aman dan lebih murah. Ini juga dilengkapi dengan beberapa fitur skalabilitas, yang seharusnya memungkinkan aplikasi Anda beradaptasi lebih baik dengan kebutuhan pelanggan Anda. Ini juga menghasilkan performa yang lebih baik di bawah beban dan biaya yang lebih rendah ketika ada lebih sedikit lalu lintas.

    Anda dapat mencapai lebih banyak dengan menggunakan solusi PaaS. Anda dapat menyiapkan konfigurasi otomatis, mengelola dan memuat rahasia (misalnya, dengan menggunakan Azure Key Vault), memantau aplikasi Anda, meluncurkan sesi profil langsung, dan mengaktifkan penyebaran tanpa henti.

Opsi penyebaran

Baik Anda menggunakan VM, kontainer, atau solusi PaaS, Anda biasanya dapat menyebarkan aplikasi Java Anda ke cloud dengan salah satu dari dua cara:

  • Penyebaran kode sumber: Anda menerapkan kode sumber Anda ke repositori Git dan penyedia cloud menjalankan proses yang mengkompilasi, membangun, dan mengemas aplikasi.
  • penyebaran file JAR, WAR, atau EAR: Anda mengemas aplikasi Anda, biasanya sebagai file JAR (Java ARchive) yang dapat dieksekusi, tetapi WAR (Web Application ARchive), EAR (Enterprise Application ARchive), dan format file lainnya juga dimungkinkan. Penyedia cloud kemudian menjalankan file yang dapat dieksekusi.

Kedua opsi penyebaran ini adalah cara klasik untuk menjalankan aplikasi Java. Untuk kedua opsi, proses build biasanya serupa, dan perbedaan utamanya adalah tempat proses tersebut dijalankan. Membiarkan penyedia cloud melakukan build lebih sederhana, dan dengan pendekatan ini penyedia cloud menerapkan pemeriksaan dan patch keamanannya sendiri. Dengan membangun aplikasi secara lokal atau dengan menggunakan platform CI/CD seperti GitHub Actions, Anda mendapatkan lebih banyak fleksibilitas dan kontrol.

Fungsi tanpa server

Fungsi tanpa server, atau lebih khusus Azure Functions, adalah campuran dari berbagai solusi yang telah kami lihat dan menawarkan fitur yang sangat spesifik: fungsi tanpa server dimaksudkan untuk berjalan dalam waktu singkat. Biasanya, fungsi dibangunkan oleh suatu peristiwa, seperti permintaan HTTP, dan tetap "panas" selama beberapa menit sampai kembali tidur.

Fungsi berbagi fitur dengan solusi PaaS yang kami jelaskan sebelumnya. Di Azure, solusi PaaS (Azure App Service) dan solusi tanpa server (Azure Functions) kami secara teknis mirip dan berbagi beberapa kode dan layanan umum.

Untuk opsi penyebaran, fungsi biasanya berfungsi dengan file JAR. Opsi lain seperti Docker tersedia, tetapi kurang populer dan biasanya tidak berkinerja juga. Ini karena platform yang mendasar tidak dapat mengoptimalkannya dengan cara yang sama seperti yang dapat dilakukan untuk file JAR.

Secara alami, fungsi tanpa server perlu dikodekan secara khusus. Fitur mereka bergantung pada penyedia cloud tempat mereka berjalan, dan masa pakainya yang singkat membuatnya rumit untuk menggunakan solusi tradisional seperti penembolokan atau replikasi sesi HTTP.

Fungsi tanpa server dapat menskalakan dengan baik, dan menawarkan harga terbaik untuk lingkungan dengan penggunaan rendah. Pada saat yang sama, mereka dapat menangani beban lalu lintas yang paling menuntut.