Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam panduan cepat ini, Anda akan membuat flag fitur di Azure App Configuration dan menggunakannya untuk mengontrol ketersediaan halaman web baru secara dinamis di aplikasi web Go Gin tanpa melakukan restart atau melakukan deploy ulang.
Dukungan manajemen fitur memperluas fitur konfigurasi dinamis di App Configuration. Contoh ini menunjukkan cara mengintegrasikan bendera fitur ke dalam aplikasi web Go Gin dengan pembaruan real time dan penyajian halaman kondisional.
Prasyarat
- Sebuah akun Azure dengan langganan aktif. Buat akun gratis.
- Toko Konfigurasi Aplikasi. Buat toko.
- Buka 1.21 atau yang lebih baru. Untuk informasi tentang menginstal Go, lihat halaman Unduhan Go.
- Penyedia Azure App Configuration Go v1.1.0 atau yang lebih baru.
Membuat bendera fitur
Tambahkan bendera fitur yang disebut Beta ke penyimpanan App Configuration dan biarkan Label dan Deskripsi dengan nilai defaultnya. Untuk informasi selengkapnya tentang cara menambahkan bendera fitur ke penyimpanan menggunakan portal Azure atau CLI, buka Membuat bendera fitur.
Membuat aplikasi web Go
Buat direktori baru untuk proyek Go Anda dan navigasikan ke dalamnya:
mkdir gin-feature-flag-quickstart cd gin-feature-flag-quickstartMenginisialisasi modul Go baru:
go mod init gin-feature-flag-quickstartInstal paket Go yang diperlukan untuk Azure App Configuration, kerangka kerja web Gin, dan manajemen fitur:
go get github.com/gin-gonic/gin go get github.com/microsoft/Featuremanagement-Go/featuremanagement go get github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfigBuat direktori templat untuk templat HTML Anda dan tambahkan file HTML yang diperlukan:
mkdir templatesTambahkan file templat HTML berikut dari repositori GitHub dan letakkan di
templatesdirektori:-
index.html- Templat halaman beranda -
beta.html- Templat halaman beta
-
Menggunakan bendera fitur
Buat file bernama
appconfig.godengan konten berikut. Anda dapat menyambungkan ke penyimpanan App Configuration menggunakan MICROSOFT Entra ID (disarankan) atau string koneksi.package main import ( "context" "log" "os" "github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" ) func loadAzureAppConfiguration(ctx context.Context) (*azureappconfiguration.AzureAppConfiguration, error) { // Get the endpoint from environment variable endpoint := os.Getenv("AZURE_APPCONFIG_ENDPOINT") if endpoint == "" { log.Fatal("AZURE_APPCONFIG_ENDPOINT environment variable is not set") } // Create a credential using DefaultAzureCredential credential, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("Failed to create credential: %v", err) } // Set up authentication options with endpoint and credential authOptions := azureappconfiguration.AuthenticationOptions{ Endpoint: endpoint, Credential: credential, } // Configure feature flag options options := &azureappconfiguration.Options{ FeatureFlagOptions: azureappconfiguration.FeatureFlagOptions{ Enabled: true, RefreshOptions: azureappconfiguration.RefreshOptions{ Enabled: true, }, }, } // Load configuration from Azure App Configuration appConfig, err := azureappconfiguration.Load(ctx, authOptions, options) if err != nil { log.Fatalf("Failed to load configuration: %v", err) } return appConfig, nil }Petunjuk
Ketika tidak ada pemilih yang ditentukan dalam
FeatureFlagOptions, itu memuat semua bendera fitur di penyimpanan App Configuration Anda tanpa label. Interval refresh default bendera fitur adalah 30 detik. Anda dapat menyesuaikan perilaku ini melaluiRefreshOptionsparameter . Misalnya, cuplikan kode berikut hanya memuat bendera fitur yang dimulai dengan TestApp: dalam nama kuncinya dan memiliki dev label. Kode juga mengubah waktu interval refresh menjadi 5 menit. Perhatikan bahwa waktu interval refresh ini terpisah dari itu untuk nilai kunci reguler.azureappconfiguration.FeatureFlagOptions{ Enabled: true, Selectors: []azureappconfiguration.Selector{ { KeyFilter: "TestApp:*", LabelFilter: "dev", }, }, RefreshOptions: azureappconfiguration.RefreshOptions{ Enabled: true, Interval: 5 * time.Minute, }, }Buat file bernama
main.godengan konten berikut:package main import ( "context" "fmt" "log" "net/http" "os" "github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration" "github.com/gin-gonic/gin" "github.com/microsoft/Featuremanagement-Go/featuremanagement" "github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfig" ) type WebApp struct { featureManager *featuremanagement.FeatureManager appConfig *azureappconfiguration.AzureAppConfiguration } func (app *WebApp) refreshMiddleware() gin.HandlerFunc { return func(c *gin.Context) { go func() { ctx := context.Background() if err := app.appConfig.Refresh(ctx); err != nil { log.Printf("Error refreshing configuration: %v", err) } }() c.Next() } } func (app *WebApp) featureMiddleware() gin.HandlerFunc { return func(c *gin.Context) { // Check if Beta feature is enabled betaEnabled, err := app.featureManager.IsEnabled("Beta") if err != nil { log.Printf("Error checking Beta feature: %v", err) betaEnabled = false } // Store feature flag status for use in templates c.Set("betaEnabled", betaEnabled) c.Next() } } func (app *WebApp) setupRoutes(r *gin.Engine) { r.Use(app.refreshMiddleware()) r.Use(app.featureMiddleware()) // Load HTML templates r.LoadHTMLGlob("templates/*.html") // Routes r.GET("/", app.homeHandler) r.GET("/beta", app.betaHandler) } // Home page handler func (app *WebApp) homeHandler(c *gin.Context) { betaEnabled := c.GetBool("betaEnabled") c.HTML(http.StatusOK, "index.html", gin.H{ "title": "Feature Management Example App", "betaEnabled": betaEnabled, }) } // Beta page handler func (app *WebApp) betaHandler(c *gin.Context) { betaEnabled := c.GetBool("betaEnabled") if !betaEnabled { return } c.HTML(http.StatusOK, "beta.html", gin.H{ "title": "Beta Page", }) } func main() { ctx := context.Background() // Load Azure App Configuration appConfig, err := loadAzureAppConfiguration(ctx) if err != nil { log.Fatalf("Error loading Azure App Configuration: %v", err) } // Create feature flag provider featureFlagProvider, err := azappconfig.NewFeatureFlagProvider(appConfig) if err != nil { log.Fatalf("Error creating feature flag provider: %v", err) } // Create feature manager featureManager, err := featuremanagement.NewFeatureManager(featureFlagProvider, nil) if err != nil { log.Fatalf("Error creating feature manager: %v", err) } // Create web app app := &WebApp{ featureManager: featureManager, appConfig: appConfig, } // Set up Gin with default middleware (Logger and Recovery) r := gin.Default() // Set up routes app.setupRoutes(r) // Start server fmt.Println("Starting server on http://localhost:8080") fmt.Println("Open http://localhost:8080 in your browser") fmt.Println("Toggle the 'Beta' feature flag in Azure portal to see changes") fmt.Println() if err := r.Run(":8080"); err != nil { log.Fatalf("Failed to start server: %v", err) } }
Jalankan aplikasi web
Atur variabel lingkungan untuk autentikasi dan jalankan aplikasi.
go mod tidy go run .Buka jendela browser, dan buka
http://localhost:8080. Browser Anda harus menampilkan halaman yang serupa dengan gambar di bawah ini.
Masuk ke portal Azure. Pilih Semua sumber daya, dan pilih penyimpanan App Configuration yang Anda buat sebelumnya.
Pilih Pengelola fitur dan temukan bendera fitur Beta . Aktifkan bendera dengan memilih kotak centang di bawah Diaktifkan.
Muat ulang peramban beberapa kali. Saat jendela waktu interval refresh berlalu, halaman ditampilkan dengan konten yang diperbarui:
Perhatikan bahwa item menu Beta sekarang muncul di bilah navigasi. Klik untuk mengakses halaman beta:
Membersihkan sumber daya
Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.
Penting
Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya di dalamnya dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini di dalam grup sumber daya yang berisi sumber daya lain yang ingin Anda pertahankan, hapus setiap sumber daya satu per satu dari panel masing-masing, daripada menghapus grup sumber daya tersebut.
- Masuk ke portal Azure, lalu pilih Grup sumber daya.
- Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
- Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
- Pilih Hapus grup sumber daya.
- Anda diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.
Setelah beberapa saat, grup sumber daya dan semua sumber dayanya dihapus.
Langkah selanjutnya
Dalam panduan cepat ini, Anda membuat feature flag di Azure App Configuration dan menggunakannya di aplikasi web Go Gin. Pustaka Feature Management Go menyediakan kemampuan bendera fitur yang terintegrasi dengan mulus dengan Azure App Configuration.Untuk fitur lainnya, lanjutkan ke dokumen berikut.
Meskipun bendera fitur memungkinkan Anda mengaktifkan atau menonaktifkan fungsionalitas di aplikasi, Anda mungkin ingin menyesuaikan bendera fitur berdasarkan logika aplikasi Anda. Filter fitur memungkinkan Anda mengaktifkan bendera fitur secara kondisional. Untuk informasi selengkapnya, lanjutkan ke tutorial berikut.
Azure App Configuration menawarkan filter fitur bawaan yang memungkinkan Anda mengaktifkan bendera fitur hanya selama periode tertentu atau ke audiens yang ditargetkan tertentu dari aplikasi Anda. Untuk informasi selengkapnya, lanjutkan ke tutorial berikut.