Pengantar aplikasi cloud-native

Tip

Konten ini adalah kutipan dari eBook, Merancang Aplikasi .NET Cloud Native untuk Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Suatu hari di kantor, Anda mengerjakan "proyek besar berikutnya".

Ponsel berdering. Ini adalah perekrut ramah Anda - orang yang menelepon setiap hari dan menawarkan peluang baru yang menarik.

Tetapi kali ini berbeda: Start-up, ekuitas, dan berbagai pendanaan.

Penyebutan cloud, layanan mikro, dan teknologi mutakhir membuat Anda kewalahan.

Beberapa minggu setelahnya Anda telah menjadi karyawan baru sebagai arsitektur sesi desain aplikasi eCommerce besar. Anda akan bersaing dengan situs eCommerce terkemuka.

Bagaimana Anda akan membangunnya?

Jika Anda mengikuti panduan dari 15 tahun terakhir, kemungkinan besar Anda akan membangun sistem yang ditunjukkan pada Gambar 1.1.

Traditional monolithic design

Gambar 1-1. Desain monolitik tradisional

Anda membuat aplikasi inti besar yang berisi semua logika domain Anda. Ini mencakup modul seperti Identitas, Katalog, Pemesanan, dan banyak lagi. Semua domain tersebut langsung berkomunikasi satu sama lain dalam satu proses server. Modul berbagi database hubungan besar. Inti mengekspos fungsionalitas melalui antarmuka HTML dan aplikasi seluler.

Selamat! Anda baru saja membuat aplikasi monolitik.

Tidak semuanya buruk. Monolit menawarkan beberapa keuntungan yang berbeda. Misalnya, monolit mudah untuk...

  • build
  • pengujian
  • sebarkan
  • diselesaikan masalahnya
  • diskalakan secara vertikal

Banyak aplikasi sukses yang ada saat ini dibuat sebagai monolit. Aplikasi ini adalah hit dan terus berkembang, iterasi setelah iterasi, menambahkan lebih banyak fungsionalitas.

Namun, pada titik tertentu, Anda mulai merasa tidak nyaman. Anda merasa kehilangan kendali atas aplikasi. Seiring berjalannya waktu, perasaan tersebut menjadi lebih intens, dan pada akhirnya Anda memasuki keadaan yang dikenal sebagai Fear Cycle:

  • Aplikasi menjadi sangat rumit sehingga tak seorang pun dapat memahaminya.
  • Anda takut membuat perubahan - setiap perubahan memiliki efek samping yang tidak diinginkan dan mahal.
  • Fitur/perbaikan baru menjadi rumit, memakan waktu, dan memerlukan biaya mahal untuk menerapkannya.
  • Setiap rilis menjadi berukuran sekecil mungkin dan memerlukan penyebaran penuh dari seluruh aplikasi.
  • Satu komponen yang tidak stabil dapat merusak seluruh sistem.
  • Teknologi dan kerangka kerja baru bukanlah pilihan.
  • Sulit untuk menerapkan metodologi pengiriman yang tangkas.
  • Erosi arsitektur yang diatur sebagai basis kode semakin memburuk dengan "perbaikan cepat" yang tidak pernah berakhir.
  • Akhirnya, konsultan datang dan memberitahu Anda untuk menulis ulang arsitektur tersebut.

Terdengar akrab?

Banyak organisasi telah membahas siklus ketakutan monolitik ini dengan mengadopsi pendekatan cloud-native untuk membangun sistem. Gambar 1-2 menunjukkan sistem yang sama yang dibangun dengan menerapkan teknik dan praktik cloud-native.

Cloud-Native Design

Gambar 1-2. Desain cloud-native

Perhatikan bagaimana aplikasi diurai di sekumpulan layanan mikro kecil yang terisolasi. Setiap layanan bersifat mandiri dan merangkum kode, data, dan dependensinya sendiri. Setiap layanan disebarkan dalam kontainer perangkat lunak dan dikelola oleh orkestrator kontainer. Alih-alih memiliki database hubungan besar, setiap layanan memiliki penyimpanan datanya sendiri, jenisnya bervariasi berdasarkan kebutuhan data. Perhatikan bagaimana beberapa layanan bergantung pada database hubungan, tetapi yang lain pada database NoSQL. Satu layanan menyimpan statusnya dalam cache terdistribusi. Perhatikan bagaimana semua rute lalu lintas melalui layanan API Gateway yang bertanggung jawab untuk merutekan lalu lintas ke layanan ujung belakang inti dan memberlakukan banyak masalah lintas-pemotongan. Yang paling penting, aplikasi ini memanfaatkan sepenuhnya fitur skalabilitas, ketersediaan, dan ketahanan yang ditemukan di platform cloud modern.

Komputasi cloud-native

Kita baru saja menggunakan istilah Cloud Native, bukan? Hal pertama yang terlintas di pikiran Anda mungkin adalah "Apa artinya itu?" Istilah industri lain yang dibuat oleh vendor perangkat lunak untuk memetakan lebih banyak barang?"

Untungnya ini sangat berbeda dari yang Anda bayangkan, dan mudah-mudahan buku ini dapat membantu meyakinkan Anda.

Dalam waktu singkat, cloud native telah menjadi pemicu tren di industri perangkat lunak. Ini adalah cara baru untuk membangun sistem yang besar dan kompleks. Pendekatan ini memanfaatkan sepenuhnya praktik pengembangan perangkat lunak modern, teknologi, dan infrastruktur cloud. Cloud native mengubah cara Anda merancang, mengimplementasikan, menyebarkan, dan mengoperasionalkan sistem.

Tidak seperti hype berkelanjutan yang mendorong industri kami, cloud native bersifat nyata. Pertimbangkan Cloud Native Computing Foundation (CNCF), konsorsium dari 400 lebih perusahaan besar. Piagamnya adalah membuat komputasi cloud-native ada di mana-mana di seluruh teknologi dan tumpukan cloud. Sebagai salah satu grup sumber terbuka yang paling berpengaruh, CNCF menghosting banyak proyek sumber terbuka dengan pertumbuhan tercepat di GitHub. Proyek-proyek ini termasuk Kubernetes, Prometheus, Helm, Envoy, dan gRPC.

CNCF menumbuhkan ekosistem sumber terbuka dan netralitas vendor. Mengikuti prospek tersebut, buku ini menyajikan prinsip, pola, dan praktik terbaik cloud-native yang merupakan agnostik teknologi. Pada saat yang sama, kita membahas layanan dan infrastruktur yang tersedia di cloud Microsoft Azure untuk membangun sistem cloud-native.

Jadi, apa sebenarnya Cloud Native? Duduk, santai, dan biarkan kami membantu Anda menjelajahi dunia baru ini.