Bagikan melalui


Praktik DevOps untuk beban kerja SaaS di Azure

Praktik DevOps adalah integral untuk mengelola beban kerja di Azure, terutama untuk aplikasi SaaS. Aspek utama termasuk onboarding, offboarding, dan memodifikasi instans pelanggan. Praktik ini tidak hanya menyederhanakan operasi tetapi juga meningkatkan skalabilitas dan keandalan, meminimalkan kemungkinan pemadaman.

Artikel ini menjelaskan pertimbangan desain untuk manajemen siklus hidup pelanggan yang efisien dan praktik penyebaran yang aman.

Mengelola siklus hidup pelanggan

Mengelola peristiwa siklus hidup pelanggan sangat penting untuk aplikasi SaaS apa pun. Biasanya, peristiwa ini meliputi:

  • Onboarding: Saat pelanggan mendaftar.
  • Mengubah: Memodifikasi instans pelanggan, seperti mengubah tingkat harga mereka.
  • Offboarding: Saat pelanggan membatalkan akun mereka.

Anda mungkin mengalami peristiwa siklus hidup tambahan. Misalnya, Anda mungkin mengizinkan pelanggan untuk menjeda langganan mereka sambil menyimpan data mereka untuk periode yang ditetapkan, dan melanjutkan langganan mereka nanti. Setiap peristiwa dapat memiliki implikasi unik untuk aplikasi Anda.

Dalam beberapa solusi, manajemen siklus hidup pelanggan mungkin hanya memerlukan pembuatan atau pengelolaan data dalam tabel database. Untuk solusi lain, mungkin melibatkan pengaturan penyebaran infrastruktur Azure, kode aplikasi, dan konfigurasi yang lebih kompleks.

Manajemen siklus hidup adalah tanggung jawab utama dari sarana kontrol solusi SaaS. Awalnya, tim Anda mungkin menangani aktivitas ini secara manual, tetapi seiring waktu, coba transisikan lebih banyak fungsi ke solusi atau aplikasi sarana kontrol yang diformalkan.

Pertimbangan Desain

  • Konsistensi. Saat merencanakan strategi manajemen siklus hidup Anda, pertimbangkan kompleksitas tindakan yang diperlukan untuk setiap peristiwa siklus hidup pelanggan. Ini termasuk ukuran solusi Anda, basis pelanggan, dan overhead organisasi. Pastikan Anda memiliki pemahaman yang jelas tentang langkah-langkah yang diperlukan untuk setiap peristiwa dan berinvestasi dalam kontrol untuk menjaga konsistensi. Tinjau dan perbarui proses Anda secara teratur untuk membantu memastikan proses tetap valid seiring berkembangnya solusi Anda.

  • Model penyewaan. Pendekatan Anda untuk menangani peristiwa siklus hidup pelanggan tergantung pada model penyewaan Anda.

    • Solusi multipenyewa sepenuhnya dengan sumber daya infrastruktur. Onboarding atau offboarding pelanggan biasanya melibatkan pembaruan daftar pelanggan dan data terkait di penyimpanan data aplikasi Anda.
    • Sumber daya khusus per pelanggan. Tugas biasanya akan melibatkan memulai penyebaran ke Azure, memantau kemajuan, dan menangani kegagalan penyebaran, mungkin dengan intervensi manusia.
    • Sumber daya yang disebarkan pelanggan. Anda mungkin perlu berinteraksi langsung dengan tim teknik pelanggan untuk onboarding atau offboarding.
  • Tingkatan. Pertimbangkan model harga Anda dan berbagai kebutuhan infrastruktur dari setiap tingkatan, terutama jika Anda mengizinkan pelanggan untuk secara bebas mengubah SKU mereka kapan saja.

    • Misalnya, jika solusi SaaS Anda menyertakan aplikasi inti dan beberapa modul add-on berbayar, pastikan sumber daya aplikasi inti disebarkan selama onboarding. Selain itu, izinkan penambahan dinamis dan penghapusan modul add-on. Saat modul dihapus, putuskan apakah akan menghapus data terkait atau menyimpannya untuk potensi aktivasi ulang.

Rekomendasi desain

Rekomendasi Keuntungan
Dokumentasikan setiap jenis peristiwa siklus hidup pelanggan.

Pastikan Anda mengambil detail langkah demi langkah proses untuk setiap peristiwa.
Dengan memahami peristiwa, Anda dapat merencanakan cara merespons setiap peristiwa dalam desain solusi Anda.
Instruksi yang jelas membantu operator manusia menjaga konsistensi dan berfungsi sebagai fondasi untuk otomatisasi di masa mendatang.
Komunikasikan tanggung jawab bersama antara Anda dan pelanggan Anda untuk setiap peristiwa siklus hidup. Berkomunikasi dengan jelas dan dini tentang tindakan apa yang Anda harapkan pelanggan lakukan untuk menyelesaikan tahap siklus hidup. Anda dapat mengurangi potensi kesalahan dan frustrasi pelanggan yang disebabkan oleh miskomunikasi.
Lakukan perencanaan kapasitas untuk setiap peristiwa siklus hidup.

Misalnya, saat onboarding pelanggan baru, rencanakan untuk menyebarkan instans baru aplikasi Anda jika instans yang ada tidak memiliki kapasitas yang memadai untuk menangani beban tambahan.

Untuk informasi selengkapnya, lihat Manajemen penagihan dan biaya untuk beban kerja SaaS di Azure.
Anda dapat mendukung kemampuan Anda untuk menskalakan dengan lebih mudah dan menghindari kegagalan penyebaran.
Otomatiskan peristiwa siklus hidup Anda, saat praktis.

Untuk solusi volume rendah atau tahap awal, penyebaran dan konfigurasi manual mungkin cukup, tetapi harus tetap menggunakan skrip, bahkan jika teknisi menjalankannya setiap kali peristiwa siklus hidup terjadi.

Saat solusi Anda matang, integrasikan tanggung jawab ini ke dalam sarana kontrol penuh untuk mengurangi kesalahan manusia dan mendukung skala yang lebih tinggi.
Anda dapat mengurangi risiko kesalahan manusia yang signifikan dan mendukung skala yang lebih tinggi.

Merencanakan strategi manajemen infrastruktur Anda

Kembangkan strategi untuk menyebarkan, memelihara, dan mengelola infrastruktur Azure sejak dini. Saat Anda menskalakan SaaS Anda, jumlah sumber daya bertambah. Lebih mudah untuk mengikuti strategi manajemen dari awal daripada mendamaikan infrastruktur nanti ketika menjadi terlalu kompleks untuk ditangani secara manual.

Pertimbangan Desain

  • Manajemen sumber daya pelanggan. Model penyewaan Anda memengaruhi penyebaran sumber daya dalam solusi SaaS. Anda dapat menyebarkan sumber daya Azure khusus untuk setiap pelanggan atau berbagi sumber daya di antara sejumlah pelanggan yang ditetapkan. Atau, Anda dapat menggunakan satu set sumber daya bersama, mengonfigurasi ulang sumber daya tersebut saat Anda onboarding pelanggan baru. Pendekatan umum untuk mengelola siklus hidup sumber daya:

    • Perlakukan daftar pelanggan Anda sebagai konfigurasi sumber daya untuk disebarkan. Gunakan alur penyebaran terpusat untuk menyebarkan dan mengonfigurasi sumber daya tersebut.
    • Perlakukan daftar pelanggan Anda sebagai data. Gunakan aplikasi sarana kontrol untuk menyediakan dan mengonfigurasi infrastruktur.
  • Otomatisasi infrastruktur. Banyak organisasi mulai dengan menyebarkan infrastruktur cloud secara manual melalui portal Azure, yang awalnya mudah tetapi tidak diskalakan dengan baik. Rencanakan untuk mengotomatiskan penyiapan infrastruktur Anda menggunakan alat Infrastruktur sebagai Kode (IaC) seperti Bicep atau Terraform. Untuk persyaratan yang lebih kompleks, buat sarana kontrol yang menggunakan API Azure Resource Manager secara langsung.

  • Atribusi infrastruktur. Lacak pelanggan mana yang disebarkan di infrastruktur mana. Pelacakan penting untuk perencanaan kapasitas yang akurat dan atribusi biaya. Anda dapat melacak infrastruktur pelanggan secara terpusat dalam database pelanggan atau, untuk infrastruktur khusus, menggunakan metadata sumber daya Azure dengan grup sumber daya khusus pelanggan dan tag sumber daya. Untuk informasi selengkapnya, lihat Organisasi sumber daya untuk beban kerja SaaS.

Rekomendasi desain

Rekomendasi Keuntungan
Bangun otomatisasi infrastruktur menggunakan alur penyebaran, skrip, atau templat dengan alat yang sudah terbiasa dengan tim Anda. Menggunakan alat yang diketahui mengurangi risiko kesalahan, karena otomatisasi infrastruktur dapat mengganggu jika alat tidak dipahami.
Sebarkan infrastruktur Anda menggunakan IaC jika memungkinkan. Mempertahankan infrastruktur secara manual menjadi lebih berisiko dan lebih membebani seiring dengan bertambahnya jumlah infrastruktur.
Pisahkan infrastruktur inti dari infrastruktur tingkat pelanggan. Berbagai jenis infrastruktur memiliki siklus hidup dan aktivitas manajemen yang berbeda. Dengan memisahkannya, Anda dapat mengelola setiap set secara independen pada jadwalnya sendiri.
Gunakan Azure Managed Applications untuk menyebarkan dan mengelola sumber daya yang disebarkan pelanggan. Azure Managed Applications menyediakan berbagai kemampuan yang memungkinkan Anda menyebarkan dan mengelola sumber daya dalam langganan Azure pelanggan.

Merencanakan penyebaran aplikasi

Perbarui kode dan konfigurasi aplikasi secara teratur untuk meningkatkan fungsionalitas. Pelanggan mengharapkan waktu aktif yang konsisten selama pembaruan dan peluncuran yang aman untuk meminimalkan risiko pemadaman.

Pertimbangan Desain

  • Menstandarkan alat dan proses. Alat DevOps yang terbukti di industri memastikan konsistensi di seluruh fungsi dan kematangan dalam proses untuk mengelola penyebaran aplikasi Anda. Mengembangkan alat Anda sendiri dianggap sebagai antipattern dalam sebagian besar situasi.

    Lihat praktik pengembangan perangkat lunak OE:03.

    Tradeoff: Kompleksitas dan biaya. Menggunakan alat DevOps yang dikenal dapat hemat biaya dalam hal uang dan keterampilan. Namun, ini menambah beban operasional mengelola setiap alat secara terpisah. Penting untuk tetap terbuka untuk inovasi teknologi baru yang dapat menguntungkan beban kerja Anda.

  • Menyebarkan pembaruan secara progresif. Luncurkan pembaruan untuk subkumpulan pelanggan pada satu waktu, membabungkan pengguna menjadi pengelompokan logis. Terapkan kekakuan yang sama untuk perubahan konfigurasi, karena dapat mengubah perilaku kode dan menyebabkan pemadaman. Ikuti proses penyebaran untuk perubahan ini.

  • Mengadopsi strategi penerapan versi. Memungkinkan pelanggan memilih versi aplikasi mereka menambahkan fleksibilitas tetapi mempersulit operasi Anda. Tetapkan ekspektasi yang jelas untuk menghentikan versi lama dan menguraikan apa yang terjadi ketika tidak lagi didukung.

  • Otomatisasi Penyebaran manual rentan terhadap risiko karena kesalahan manusia dan kurangnya konsistensi. Bahkan jika penyebaran Anda dipicu secara manual, proses penyebaran Anda harus diotomatisasi sebanyak mungkin dan harus memerlukan intervensi manusia minimal. Pertimbangkan langkah-langkah proses penyebaran Anda dan cara terbaik mengotomatiskannya.

  • Tes. Integrasikan pengujian ke dalam proses penyebaran Anda dengan menjalankan:

    • Pengujian unit selama build kode
    • Pengujian integrasi pasca-penyebaran
    • Pengujian performa reguler
    • Tes keamanan dan penetrasi reguler

Tentukan tindakan yang harus diambil jika ada pengujian yang gagal pada tahap apa pun.

  • Penyebaran yang gagal. Rencanakan kegagalan penyebaran dengan mempertimbangkan tindakan yang diperlukan dan menyiapkan strategi putar kembali.

  • Akses ke lingkungan pelanggan. Jika Anda menyebarkan sumber daya ke lingkungan pelanggan, pahami bagaimana Anda dapat menerapkan pembaruan dalam lingkungan tersebut. Pertimbangkan kemampuan yang disediakan oleh Azure Managed Applications, seperti penyebaran pembaruan untuk aplikasi.

Rekomendasi desain

Rekomendasi Keuntungan
Gunakan alat dan proses DevOps yang mapan dan terbukti di industri untuk mengelola penyebaran aplikasi Anda. Mengembangkan alat Anda sendiri dianggap sebagai antipattern dalam sebagian besar situasi.

Untuk informasi selengkapnya, lihat Praktik pengembangan perangkat lunak OE:03
Anda dapat memastikan bahwa tim teknik Anda menyebarkan secara efektif dengan tidak harus mempelajari alat kustom yang dibuat.
Secara proaktif memberi tahu pelanggan tentang penyebaran yang akan datang atau selesai. Anda dapat memastikan bahwa ekspektasi yang tepat ditetapkan dengan pelanggan Anda tentang perubahan yang masuk ke aplikasi Anda.
Mengadopsi praktik penyebaran aman yang menyebarkan pembaruan ke grup pelanggan menggunakan strategi seperti paparan progresif, model kesehatan, dan lainnya. Mulailah dengan pelanggan pengadopsi yang kurang sensitif atau awal sebelum pindah ke yang lebih penting.
Untuk informasi selengkapnya, lihat Rekomendasi untuk praktik penyebaran yang aman.
Pendekatan ini membantu mengidentifikasi masalah sebelum memengaruhi semua pelanggan.
Memperlakukan konfigurasi sebagai kode. Anda dapat mengurangi kemungkinan waktu henti dan mengadopsi proses yang konsisten untuk perubahan produksi. Ini memungkinkan tanggung jawab operasional terpusat, seperti menguji perubahan dan secara progresif meluncurkan pembaruan untuk konfigurasi dan kode.
Tentukan proses manajemen perubahan dan komunikasikan kebijakan pembaruan versi untuk memastikan bahwa pelanggan tahu siapa yang memicu pembaruan, frekuensi, dan kondisi mereka.

Jika pelanggan diizinkan untuk memilih versi aplikasi mereka, tetapkan panduan yang jelas untuk menghentikan versi lama. Minimalkan jumlah versi aplikasi yang berjalan dalam produksi.
Mempertahankan versi lama menyebabkan inefisiensi operasional. Berikan kontrol yang diperlukan untuk pelanggan Anda sambil menghindari kelebihan beban tim Anda dengan menetapkan ekspektasi dan kebijakan yang jelas.
Hindari menyesuaikan aplikasi untuk satu pelanggan.

Untuk mendukung kebutuhan pelanggan yang berbeda, Anda dapat membuat berbagai tingkatan solusi Anda atau menggunakan bendera fitur untuk mengaktifkan fungsionalitas tertentu untuk pengguna tertentu.
Hindari ambiguitas tentang fitur mana yang disebarkan ke versi mana, dan kurangi beban pemeliharaan Anda.
Memiliki rencana putar kembali untuk penyebaran yang gagal, termasuk kriteria untuk pemicu dan persetujuan yang diperlukan. Rencana pembatalan membantu memastikan bahwa Anda dapat pulih dari kesalahan penyebaran bahkan dalam keadaan yang tidak terduga.
Uji aplikasi Anda secara teratur dan pada beberapa tahap dalam proses pengembangan perangkat lunak. Mengadopsi pola pikir "shift-left" dan menangkap bug dan penyimpangan di awal siklus hidup. Membantu mencegah kesalahan penting memengaruhi pelanggan Anda.

Sumber Daya Tambahan:

Multitenancy adalah metodologi bisnis inti untuk merancang beban kerja SaaS. Artikel ini memberikan informasi selengkapnya tentang mengadopsi praktik DevOps:

Langkah selanjutnya

Pelajari tentang pertimbangan manajemen insiden untuk menerapkan proses dan alat yang mendukung solusi SaaS di Azure.