Mengelola analitik skala cloud

Saat ini, DevOps telah menggeser budaya bagaimana orang berpikir dan bekerja, mempercepat laju bisnis mewujudkan nilai dengan membantu individu dan organisasi untuk mengembangkan dan memelihara praktik kerja yang berkelanjutan. DevOps menggabungkan pengembangan dan operasi, dan sering dikaitkan dengan alat rekayasa perangkat lunak yang mendukung integrasi berkelanjutan (CI) dan praktik pengiriman berkelanjutan (CD). Alat dan praktik ini mencakup pengelola kode sumber (seperti Git, Apache Subversion, atau Team Foundation Version Control) dan pengelola build dan pengiriman otomatis (Azure Pipelines atau GitHub Actions).

DevOps yang dikombinasikan dengan pengamatan adalah kunci untuk menyediakan platform yang tangkas dan dapat diskalakan. DevOps memberi tim kemampuan untuk menerapkan kontrol sumber, alur CI/CD, infrastruktur sebagai kode, Alur kerja, dan otomatisasi. Sementara pengamatan memungkinkan pemilik bisnis, insinyur DevOps, arsitek data, insinyur data, dan teknisi keandalan situs untuk mendeteksi, memprediksi, mencegah, dan menyelesaikan masalah secara otomatis dan menghindari menghilangkan waktu henti yang jika tidak merusak analitik produksi dan AI.

Kontrol sumber

Kontrol sumber memastikan bahwa kode dan konfigurasi tetap ada dan perubahan tersebut dilacak dan berversi. Sebagian besar sistem kontrol sumber juga memiliki proses bawaan untuk meninjau dan bekerja di berbagai cabang repositori kode. Saat ini, jenis kontrol sumber yang paling populer adalah Git, yang merupakan sistem kontrol versi terdistribusi yang memungkinkan individu untuk bekerja secara offline dan menyinkronkan ke repositori pusat. Vendor Git biasanya juga menggunakan cabang dan mengikuti panduan permintaan pull untuk mendukung perubahan dan meninjau alur.

Cabang memisahkan perubahan atau menampilkan perkembangan tanpa mempengaruhi pekerjaan lain yang terjadi pada saat yang sama. Penggunaan cabang harus ditingkatkan untuk mengembangkan fitur, memperbaiki bug, dan bereksperimen secara aman dengan ide-ide baru. Permintaan pull menggabungkan perubahan yang dibuat dari satu cabang ke cabang default, dan mendukung proses ulasan terkontrol. Untuk tujuan keamanan, cabang utama harus menggunakan permintaan pull untuk memastikan ulasan kode.

Penting

Ikuti panduan berikut untuk repositori analitik skala cloud:

  • Amankan cabang utama repositori dengan menerapkan cabang dan permintaan pull untuk memastikan proses peninjauan terkontrol.
  • Repositori Azure DevOps atau GitHub harus digunakan untuk kontrol sumber guna melacak perubahan pada kode sumber dan memungkinkan beberapa anggota tim untuk mengembangkan kode pada saat yang sama.
  • Kode aplikasi dan konfigurasi infrastruktur harus diperiksa ke repositori.

Alur CI/CD

CI memungkinkan tim untuk secara otomatis menguji dan membangun kode sumber serta memungkinkan perulangan cepat dan perulangan umpan balik untuk memastikan kualitas kode tinggi dalam CD. Alur adalah cara untuk mengonfigurasi CI perubahan (kode perangkat lunak atau kode infrastruktur) dan CD dari perubahan yang dikemas/dikompilasi. Ini juga disebut sebagai bangun dan rilis. CD menjelaskan penyebaran otomatis aplikasi ke satu atau lebih lingkungan. CD biasanya mengikuti proses CI dan menggunakan tes integrasi untuk memvalidasi seluruh aplikasi.

Alur dapat berisi beberapa tahap dengan berbagai tugas dan dapat memiliki alur persetujuan yang mudah hingga kompleks untuk memastikan kepatuhan dan validasi. Berdasarkan preferensi, alur juga dapat dikonfigurasi dengan berbagai pemicu otomatis. Untuk penyebaran skala perusahaan dan AI, langkah-langkah produksi harus selalu memiliki pra-persetujuan manusia, dan ini dibangun ke dalam model operasi. Alur CI/CD harus dibangun dengan tindakan GitHub atau Azure Pipelines, dan alur tersebut harus menjadi pemicu otomatis.

Infrastruktur sebagai kode

Istilah kode di IaC sering menimbulkan kekhawatiran bagi staf IT tanpa latar belakang pengembang, tetapi IaC tidak merujuk pada penulisan kode cara pengembang perangkat lunak umum melakukannya. Namun, kode ini mengadopsi banyak alat dan prinsip yang sama dari proses pengembangan perangkat lunak untuk memberikan infrastruktur dalam format yang dapat diprediksi.

IaC membantu infrastruktur untuk disediakan, dikonfigurasi, dan dikelola sebagai bagian dari alur DevOps dengan kontrol perubahan penuh, riwayat audit, pengujian, validasi, dan proses persetujuan, memastikan bahwa tugas dapat didelegasikan ke peran yang sesuai untuk proyek tanpa mengorbankan keamanan dan kepatuhan.

Dua pendekatan untuk IaC adalah deklaratif dan imperatif:

  • Deklaratif mengacu pada menentukan keadaan infrastruktur yang diinginkan dan menjadikan mesin orkestrasi melaksanakan tindakan yang diperlukan untuk mencapai keadaan yang diinginkan. Di Azure, hal ini dilakukan dengan templat Azure Resource Manager. Lapisan abstraksi pihak ketiga seperti Terraform juga tersedia untuk pendekatan ini.

  • Pendekatan imperatif mengacu pada pelaksanaan perintah tertentu dalam urutan yang ditentukan. Untuk Azure, ini dapat dicapai dengan antarmuka baris perintah atau PowerShell, tetapi perlengkapan pengembang perangkat lunak bahasa pemrograman asli, misalnya, .NET, Python, dan Java, juga tersedia jika solusi terintegrasi diperlukan.

Di templat Azure Resource Manager, provisi inti ada di bagian sumber daya, dan konfigurasi sumber daya individual didefinisikan di bagian properti. Untuk Azure Data Lake Storage Gen2, konfigurasinya terlihat seperti berikut ini:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.MachineLearningServices/workspaces/datastores",
            "name": "[concat(parameters('workspaceName'), '/', parameters('datastoreName'))]",
            "apiVersion": "2020-05-01-preview",
            "location": "[parameters('location')]",
            "properties": {
                "DataStoreType": "adls-gen2",
                "SkipValidation": "[parameters('skipValidation')]",
                "ClientId": "[parameters('clientId')]",
                "ClientSecret": "[parameters('clientSecret')]",
                "FileSystem": "[parameters('fileSystem')]",
                "AccountName": "[parameters('accountName')]",
                "TenantId": "[parameters('tenantId')]",
                "ResourceUrl": "[parameters('resourceUrl')]",
                "AuthorityUrl": "[parameters('authorityUrl')]"
            }
        }
    ]
}

Penting

Setiap lapisan analitik skala cloud seperti zona pendaratan manajemen data, zona pendaratan data, atau aplikasi data (yang membuat produk data), harus didefinisikan dengan bahasa deklaratif seperti Azure Resource Manager atau Terraform, diperiksa ke repositori, dan disebarkan melalui alur CI/CD. Hal ini memungkinkan tim untuk melacak dan mengubah versi infrastruktur dan konfigurasi lingkup Azure sambil mendukung tingkat arsitektur yang berbeda untuk diotomatisasi dengan cara yang cerdas. Panduan ini mengarahkan tim untuk menggunakan repositori Git agar selalu memiliki visibilitas ke dalam kondisi cakupan Azure tertentu.

Alur kerja dan otomatisasi

Tim harus menggunakan alur CI/CD dalam beberapa tahap untuk memastikan bahwa kode yang dikembangkan tanpa kesalahan dan siap untuk produksi. Beberapa praktik terbaik adalah memiliki lingkungan pengembangan, lingkungan pengujian, dan lingkungan produksi. Tahap-tahap ini juga harus tercermin di Azure dengan menggunakan layanan terpisah untuk setiap lingkungan.

Tim platform bertanggung jawab untuk menyediakan dan memelihara templat penyebaran untuk menskalakan dengan cepat dalam suatu organisasi dan menyederhanakan penyebaran untuk tim yang tidak terbiasa dengan IaC. Templat ini berfungsi sebagai dasar untuk artefak baru dalam skenario dan perlu dipertahankan dari waktu ke waktu untuk mewakili praktik terbaik dan standar umum dalam perusahaan.

Penyebaran untuk menguji dan memproduksi hanya boleh dikelola melalui alur CI/CD dan sambungan layanan dengan izin tinggi untuk menerapkan praktik terbaik umum (misalnya, templat Azure Resource Manager).

Perhatian

Tim aplikasi data seharusnya hanya memiliki akses baca ke lingkungan pengujian dan produksi, dan penyebaran ke lingkungan ini hanya boleh dijalankan melalui alur CI/CD dan koneksi layanan dengan izin yang ditingkatkan. Untuk mempercepat jalur ke produksi, tim aplikasi data harus memiliki akses tulis ke lingkungan pengembangan.

Langkah berikutnya

Otomatisasi platform