Cara menyediakan sumber daya Azure untuk aplikasi ASP.NET berbasis data

Selesai

Dengan artefak build berhasil dihasilkan dan dipublikasikan ke Azure Pipelines, Anda siap untuk melanjutkan ke langkah berikutnya. Langkah ini tidak bergantung pada build; sebagai gantinya, ini melibatkan penyediaan sumber daya Azure, di mana Anda akan menyebarkan artefak. Dimulai dengan templat ASP.NET yang telah ditentukan sebelumnya, menyederhanakan pembuatan saluran YAML yang sekarang akan Anda modifikasi sebagai rangkaian langkah penyebaran pertama Anda. Penyebaran ini mengikuti konsep Infrastruktur sebagai Kode.

Apa itu Infrastruktur sebagai Kode?

Infrastructure as Code (IaC) menerapkan prinsip DevOps untuk mengelola dan memelihara layanan yang secara tradisional menjadi tanggung jawab tim infrastruktur dan platform dalam organisasi TI. Layanan ini mencakup komponen komputasi, jaringan, dan penyimpanan yang berfungsi sebagai dasar penyebaran perangkat lunak, yang merupakan fokus utama tim pengembangan dan operasi. IAC mulai menjadi terkenal dengan munculnya teknologi cloud, yang praktis menghilangkan ketergantungan pada infrastruktur fisik di tempat.

IAC memanfaatkan otomatisasi untuk menyiapkan layanan infrastruktur dan mengontrol konfigurasinya. Dengan menggunakan IaC, Anda dapat menyediakan aplikasi web Azure App Service dan database Azure SQL secara otomatis, di mana Anda kemudian dapat menyebarkan aplikasi dan memuat data Anda. Pendekatan ini menawarkan berbagai manfaat, termasuk konsistensi, skalabilitas, kelincahan, dan pengulangan.

Ada dua cara untuk mengimplementasikan IaC:

  • Deklaratif: Kode deklaratif mendefinisikan apa yang harus dicapai oleh kode, tetapi tidak menentukan bagaimana mencapai hasilnya. Saat beroperasi di Azure, Anda dapat menggunakan alat dan teknik seperti template Azure Resource Manager, Terraform, atau Ansible untuk tujuan ini.
  • Imperatif: Kode imperatif mendefinisikan apa yang harus dicapai oleh program dan bagaimana mencapai hasilnya. Saat beroperasi di Azure, Anda dapat menggunakan alat dan teknik seperti Azure PowerShell, Azure CLI, atau Azure SDK untuk tujuan ini.

Catatan

Anda dapat memasukkan salah satu alat dan teknik ini ke dalam Azure Pipelines.

Selain itu, karena IAC mengandalkan kode untuk menggambarkan lingkungan target, Anda dapat menyimpan infrastruktur dan kode konfigurasi Anda dalam kontrol versi, bersama dengan kode aplikasi. Ini, pada gilirannya, juga memungkinkan Anda untuk menggunakan proses yang sama untuk membangun, menyebarkan, dan memelihara infrastruktur dan aplikasi Anda.

Apa itu idempotency?

Idempotency adalah istilah yang digunakan dalam matematika dan ilmu komputer. Operasi idempotent adalah operasi yang memberikan hasil yang sama setiap kali Anda menerapkannya. Dalam konteks IAC, idempotency berarti bahwa menyebarkan kode imperatif atau deklaratif akan selalu menghasilkan serangkaian sumber daya yang sama dengan konfigurasi yang ditentukan oleh kode itu. Sebagai contoh, pertimbangkan untuk menjalankan perintah buat grup az Azure CLI dengan aspdevops-rg dan eastus sebagai nilai parameter -name dan -location-nya:

az group create -name apdevops-rg -location eastus

Ketika Anda pertama kali menjalankan perintah ini, eksekusinya akan membuat grup sumber daya dengan nama dan lokasi yang cocok (jika grup tersebut belum ada) dan menghasilkan output yang menyediakan representasi JSON-nya. Setiap eksekusi berikutnya akan menghasilkan hasil yang sama, tanpa mempengaruhi status grup sumber daya atau menghasilkan pesan kesalahan. Ini secara efektif berarti bahwa perintah Cli Azure ini idempotent.

Idempotency adalah komponen penting dari IAC. Dalam skenario yang lebih kompleks daripada yang melibatkan pembuatan grup sumber daya, Anda dapat menggunakan IaC untuk memulihkan konfigurasi asli sumber daya Azure dan memastikan konsistensi lingkungan Anda.

Tahapan IaC dan Azure Pipeline

Karena tugas IAC menyediakan infrastruktur secara terpisah dari artefak yang digunakan setelahnya, Anda mungkin mempertimbangkan untuk merangkum tugas-tugas ini ke dalam tahap khusus dalam saluran azure. Meskipun secara umum mungkin masuk akal untuk tetap menjalankan semua tahapan secara bersamaan, pendekatan multi-tahap IaC akan menyederhanakan penyebaran pengujian artefak secara terpisah dari penyediaan infrastruktur.

Lingkungan target

Keputusan penting lainnya yang perlu Anda buat saat memigrasikan aplikasi ASP.NET ke Azure adalah pilihan layanan target yang akan menghosting artefak yang diterapkan. Untuk memaksimalkan manfaat kinerja, skalabilitas, dan penghematan biaya, Anda memilih Azure App Service dan Azure SQL Database sebagai platform web dan database.

Azure App Service adalah penawaran Azure platform-as-a-service (PaaS) yang dapat Anda gunakan untuk meng-host aplikasi web dan API. Layanan ini memberikan manfaat seperti:

  • Penghitungan otomatis yang secara dinamis menyesuaikan jumlah sumber daya komputasi yang tersedia untuk aplikasi Anda berdasarkan kriteria yang Anda tentukan.
  • Ketersediaan tinggi yang melindungi aplikasi Anda dari kegagalan perangkat keras dan perangkat lunak yang dialirkan.
  • Integrasi dengan Azure Pipelines dan repositori GitHub.

Azure App Service menyederhanakan penyebaran dan konfigurasi aplikasi web dan API, termasuk aplikasi ASP.NET, menyediakan antarmuka berbasis portal Microsoft Azure yang intuitif untuk mengelola pengaturannya, seperti, misalnya, string koneksi database.

Azure SQL Database adalah penawaran database relasional PaaS. Ini menyediakan layanan database SQL yang sangat tersedia dan dikelola sepenuhnya yang mencakup penambalan dan pencadangan otomatis.

Arsitektur aplikasi web berbasis data Azure dengan grup sumber daya yang berisi paket Layanan Aplikasi, aplikasi web App Service, server logika Azure SQL, dan database Azure SQL.

Mengautentikasi ke lingkungan target

Sebelum Anda menyediakan infrastruktur target dan menyebarkan perangkat lunak Anda, Anda harus terlebih dahulu mengotorisasi akses dari Azure Pipelines ke lingkungan target. Saat menargetkan Azure App Service dan Azure SQL Database, lingkungan tersebut adalah langganan Azure.

Azure Pipelines menyediakan beberapa metode berbeda untuk menyediakan akses terautentikasi ke langganan Azure. Dalam latihan mendatang, Anda akan menggunakan prinsipal layanan Azure Active Directory (Azure AD) untuk tujuan ini, yang dapat Anda hasilkan secara otomatis dari dalam portal Azure DevOps. Dalam proyek Azure DevOps, prinsipal layanan tersebut diwakili oleh koneksi layanan, yang dapat Anda sediakan untuk saluran pipa apa pun dalam proyek.

Penyediaan lingkungan target

Untuk menerapkan lingkungan target, Anda telah memutuskan untuk menggunakan skrip Azure CLI, karena Anda terbiasa dengan skrip Bash. Berdasarkan gambaran umum sepintas dokumentasi Azure CLI, perintah untuk membuat grup sumber daya Azure, aplikasi web Azure App Service, dan database Azure SQL tampak mudah. Selain itu, Anda memverifikasi bahwa Azure Pipelines menawarkan tugas Azure CLI bawaan, yang mendukung koneksi layanan Azure dan referensi ke grup variabel.

Yang kedua dari dua poin ini penting, karena untuk menyebarkan server SQL logis Azure dan aplikasi web Azure App Service, Anda perlu menetapkan nama unik global untuk masing-masing. Anda dapat mengidentifikasi nama-nama tersebut sebelum penyebaran pertama, menyimpannya dengan menggunakan grup variabel, dan mereferensikannya selama eksekusi pipeline di berbagai tahap.

Catatan

Untuk mereferensikan grup variabel dari dalam pipeline, Anda perlu mengonfigurasi pengaturan akses grup variabel dan menautkan grup variabel ke pipeline. Anda akan melangkah melalui proses ini dalam latihan mendatang.

Konektivitas ke lingkungan target

Azure App Service dan Azure SQL Database menerapkan titik akhir publik. Untuk solusi Anda untuk bekerja, ada satu pertimbangan lagi. Server Azure SQL yang logis menyertakan firewall bawaan, yang, secara default, memblokir semua lalu lintas masuk. Untuk mengizinkan aplikasi web Azure App Service mengakses salah satu databasenya, Anda perlu menambahkan aturan firewall yang memungkinkan lalu lintas berasal dari Azure.

Agen Azure Pipelines untuk penyebaran sumber daya Azure

Untuk melakukan penyebaran sumber daya Azure, Anda memiliki lebih banyak fleksibilitas karena dukungan multi-platform untuk Azure CLI. Ini memungkinkan Anda memilih salah satu agen yang dihosting Microsoft, termasuk yang menjalankan Ubuntu atau macOS.