Apa itu cloud-native? Cara modern untuk mengembangkan perangkat lunak

Istilah "cloud-native" sering digunakan, terutama oleh penyedia cloud. Tidak hanya itu, bahkan ia memiliki fondasinya sendiri: Cloud Native Computing Foundation (CNCF), diluncurkan pada tahun 2015 oleh Linux Foundation.

'Cloud-native' ditentukan

Dalam penggunaan umum, "cloud-native" adalah pendekatan untuk membangun dan menjalankan aplikasi yang memanfaatkan keunggulan model pengiriman cloud computing. "Cloud-native" adalah tentang bagaimana aplikasi dibuat dan diterapkan, bukan di mana. Ini menyiratkan bahwa aplikasi hidup di cloud publik, bukan di pusat data lokal.

CNCF mendefinisikan "cloud-native" sedikit lebih sempit, yang berarti menggunakan tumpukan software open source untuk dimasukkan ke dalam container, di mana setiap bagian dari aplikasi dikemas dalam containernya sendiri, diatur secara dinamis sehingga setiap bagian secara aktif dijadwalkan dan dikelola untuk mengoptimalkan resource pemanfaatan, dan berorientasi layanan mikro untuk meningkatkan kelincahan dan pemeliharaan aplikasi secara keseluruhan.

“Aplikasi cloud native dirancang khusus untuk berjalan dalam sifat elastis dan terdistribusi yang dibutuhkan oleh platform komputasi cloud modern,” kata Mike Kavis, direktur pengelola di perusahaan konsultan Deloitte. “Aplikasi ini digabungkan secara longgar, artinya kodenya tidak terprogram ke salah satu komponen infrastruktur, sehingga aplikasi dapat naik dan turun sesuai permintaan dan merangkul konsep infrastruktur yang tidak dapat diubah. Biasanya, arsitektur ini dibuat menggunakan layanan mikro, tetapi itu bukan persyaratan wajib. ”

Untuk aplikasi cloud-native, perbedaan besar sebenarnya adalah bagaimana aplikasi dibuat, dikirimkan, dan dioperasikan, kata Andi Mann, kepala advokat teknologi di Splunk, penyedia layanan cloud. “Memanfaatkan layanan cloud berarti menggunakan komponen yang gesit dan dapat diskalakan seperti container untuk memberikan fitur terpisah dan dapat digunakan kembali yang terintegrasi dengan cara yang dijelaskan dengan baik, bahkan melintasi batasan teknologi seperti multicloud, yang memungkinkan tim pengiriman untuk melakukan iterasi dengan cepat menggunakan otomatisasi dan orkestrasi berulang.”

Pengembangan aplikasi cloud-native biasanya mencakup devop, metodologi agile, layanan mikro, platform cloud, container seperti Kubernetes dan Docker, dan pengiriman berkelanjutan — singkatnya, setiap metode penerapan aplikasi yang baru dan modern.

Karena itu, Anda benar-benar ingin memiliki model platform-as-a-service (PaaS). A PaaS tidak diperlukan, tapi itu membuat segalanya lebih mudah. Sebagian besar pelanggan cloud memulai dengan infrastruktur-sebagai-layanan (IaaS), yang membantu mengabstraksi aplikasi mereka dari perangkat keras yang mendasarinya. Namun PaaS menambahkan lapisan tambahan untuk mengabstraksi OS yang mendasarinya, sehingga Anda dapat sepenuhnya fokus pada logika bisnis aplikasi Anda dan tidak khawatir tentang melakukan panggilan OS.

Video terkait: Apa itu pendekatan cloud-native?

Dalam video berdurasi 60 detik ini, pelajari bagaimana pendekatan cloud-native mengubah cara perusahaan menyusun teknologinya, dari Craig McLuckie, pendiri dan CEO Heptio, dan salah satu penemu Kubernetes open source.

Perbedaan antara aplikasi cloud-native dan lokal

Pengembangan aplikasi cloud-native memerlukan arsitektur yang sangat berbeda dari aplikasi perusahaan tradisional.

Bahasa

Aplikasi lokal yang ditulis untuk dijalankan di server perusahaan cenderung dibuat dalam bahasa tradisional, seperti C / C ++, C # atau bahasa Visual Studio lainnya jika digunakan pada platform Windows Server, dan enterprise Java. Dan jika itu di mainframe, kemungkinan besar di Cobol.

Aplikasi cloud-native lebih cenderung dibuat dalam bahasa yang berpusat pada web, yang berarti HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python, dan Ruby.

Updatability

Aplikasi cloud-native selalu terkini dan terbaru. Aplikasi cloud-native selalu tersedia.

Aplikasi lokal memerlukan pembaruan dan biasanya dikirimkan secara langganan oleh vendor, dan memerlukan waktu henti saat pembaruan diinstal.

Elastisitas

Aplikasi cloud-native memanfaatkan elastisitas cloud dengan menggunakan sumber daya yang ditingkatkan selama lonjakan penggunaan. Jika aplikasi e-commerce berbasis cloud Anda mengalami lonjakan penggunaan, Anda dapat mengaturnya untuk menggunakan resource komputasi tambahan hingga lonjakan tersebut mereda dan kemudian mematikan resource tersebut. Aplikasi cloud-native dapat menyesuaikan dengan peningkatan sumber daya dan skala sesuai kebutuhan.

Aplikasi lokal tidak dapat menskalakan secara dinamis.

Multitenancy

Aplikasi cloud-native tidak memiliki masalah bekerja di ruang virtual dan berbagi sumber daya dengan aplikasi lain.

Banyak aplikasi lokal yang tidak berfungsi dengan baik di lingkungan virtual atau tidak berfungsi sama sekali dan memerlukan ruang non-virtual.

Sumber daya yang terhubung

Aplikasi lokal cukup kaku dalam hubungannya ke sumber daya jaringan, seperti jaringan, keamanan, izin, dan penyimpanan. Banyak dari sumber daya ini perlu di-hardcode, dan mereka rusak jika ada yang dipindahkan atau diubah.

“Jaringan dan penyimpanan sangat berbeda di cloud. Saat Anda mendengar istilah 'platform ulang', itu biasanya pekerjaan untuk mengakomodasi perubahan dalam jaringan, penyimpanan, dan bahkan teknologi database untuk memungkinkan aplikasi berjalan di awan, ”kata Kavis Deloitte.

Waktu istirahat

Ada redundansi yang lebih besar di cloud daripada di infrastruktur lokal, jadi jika penyedia cloud mengalami gangguan, region lain dapat mengatasinya.

Aplikasi lokal mungkin telah siap untuk failover, tetapi ada kemungkinan besar jika server mati, aplikasi juga ikut mati.

Otomatisasi

Begitu banyak cloud yang otomatis, dan itu termasuk manajemen aplikasi. “Manfaat pengiriman cloud-native, terutama kecepatan dan kelincahan, secara signifikan bergantung pada substrat dari proses terkenal yang andal, terbukti, dan diaudit yang dijalankan berulang kali sesuai kebutuhan oleh alat otomatisasi dan orkestrasi, bukan melalui intervensi manual,” kata Splunk's Mann. Insinyur harus mencari untuk mengotomatiskan hampir semua hal yang mereka lakukan lebih dari sekali untuk memungkinkan pengulangan, swalayan, kelincahan, skalabilitas, serta audit dan kontrol.

Aplikasi lokal harus dikelola secara manual.

Desain modular

Aplikasi lokal cenderung monolitik dalam desain. Mereka memindahkan beberapa pekerjaan ke perpustakaan, untuk memastikan, tetapi pada akhirnya itu adalah satu aplikasi besar dengan banyak subrutin. Aplikasi cloud-native jauh lebih modular, dengan banyak fungsi yang dipecah menjadi layanan mikro. Hal ini memungkinkan mereka untuk dimatikan ketika tidak diperlukan dan untuk pembaruan yang akan diluncurkan ke satu modul itu, daripada keseluruhan aplikasi.

Tanpa kewarganegaraan

Sifat cloud yang digabungkan secara longgar berarti aplikasi tidak terikat dengan infrastruktur, yang berarti mereka tidak memiliki kewarganegaraan. Aplikasi cloud native menyimpan statusnya dalam database atau beberapa entitas eksternal lainnya sehingga instance dapat datang dan pergi dan aplikasi masih dapat melacak di mana dalam unit kerja aplikasi tersebut. “Ini adalah inti dari pasangan yang longgar. Tidak terikat pada infrastruktur memungkinkan dan aplikasi untuk berjalan dengan cara yang sangat terdistribusi dan masih mempertahankan statusnya independen dari sifat elastis infrastruktur yang mendasarinya, ”kata Kavis.

Sebagian besar aplikasi lokal berstatus, artinya aplikasi tersebut menyimpan status aplikasi pada infrastruktur tempat kode dijalankan. Aplikasi dapat rusak saat menambahkan sumber daya server karena ini.

Tantangan komputasi cloud-native

Salah satu kesalahan besar yang dilakukan pelanggan adalah mencoba mengangkat dan mengalihkan aplikasi lokal lama mereka ke cloud, kata Mann. “Mencoba mengambil aplikasi yang sudah ada — terutama aplikasi lama monolitik — dan memindahkannya ke infrastruktur cloud tidak akan memanfaatkan fitur penting cloud-native.”

Sebaliknya, Anda harus melakukan hal-hal baru dengan cara baru, baik dengan menempatkan aplikasi cloud-native baru ke dalam infrastruktur cloud baru atau dengan memecah monolit yang ada untuk melakukan refaktorisasi menggunakan prinsip cloud-native dari awal.

Anda juga perlu membuang metode pengembang lama Anda. Model air terjun pasti tidak akan berhasil, dan bahkan pengembangan yang gesit mungkin tidak cukup. Jadi, Anda harus mengadopsi pendekatan cloud-native baru seperti pengembangan produk yang layak minimum (MVP), pengujian multivariasi, iterasi cepat, dan bekerja sama melintasi batas-batas organisasi dalam model devops.

Ada banyak aspek untuk menjadi cloud-native, termasuk layanan infrastruktur, otomatisasi / orkestrasi, virtualisasi dan containerization, arsitektur layanan mikro, dan observabilitas. Semua ini berarti cara baru dalam melakukan sesuatu, yang berarti menghentikan kebiasaan lama saat Anda mempelajari cara baru. Jadi lakukan dengan kecepatan yang terukur.

Pelajari lebih lanjut tentang teknologi cloud-native terkait

  • Platform-as-a-service (PaaS) menjelaskan
  • Multicloud menjelaskan
  • Metodologi tangkas menjelaskan
  • Praktik terbaik pengembangan tangkas
  • Devops menjelaskan
  • Praktik terbaik pengembang
  • Microservices menjelaskan
  • Tutorial layanan mikro
  • Container Docker dan Linux menjelaskan
  • Tutorial Kubernetes
  • CI / CD (integrasi berkelanjutan dan pengiriman berkelanjutan) menjelaskan
  • Praktik terbaik CI / CD