Aracılığıyla paylaş


Hızlı Başlangıç: Go konsol uygulamasına özellik bayrakları ekleme

Bu hızlı başlangıçta, Azure Uygulama Yapılandırması'nda bir özellik bayrağı oluşturacak ve bunu go konsol uygulamasındaki özelliklerin kullanılabilirliğini dinamik olarak denetlemek için kullanacaksınız.

Özellik yönetimi desteği, Uygulama Yapılandırması'daki dinamik yapılandırma özelliğini genişletir. Bu örnekte, gerçek zamanlı izleme özellikleriyle özellik bayraklarını Go konsol uygulamasıyla tümleştirme gösterilmektedir.

Önkoşullar

Özellik bayrağı oluşturma

Uygulama Yapılandırma deposuna Beta adlı bir özellik bayrağı ekleyin ve Etiket ve Açıklama değerlerini varsayılan değerleriyle bırakın. Azure portalını veya CLI'yı kullanarak bir depoya özellik bayrakları ekleme hakkında daha fazla bilgi için Özellik bayrağı oluşturma bölümüne gidin.

Özellik bayrağı oluşturma işleminin ekran görüntüsü.

Özellik bayrağı kullanma

  1. Go projeniz için yeni bir dizin oluşturun ve bu dizine gidin:

    mkdir go-feature-flag-quickstart
    cd go-feature-flag-quickstart
    
  2. Yeni bir Go modülü başlatın:

    go mod init go-feature-flag-quickstart
    
  3. Azure Uygulama Yapılandırması ve özellik yönetimi için gerekli Go paketlerini yükleyin:

    go get github.com/microsoft/Featuremanagement-Go/featuremanagement
    go get github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfig
    
  4. Aşağıdaki içeriğe sahip adlı appconfig.go bir dosya oluşturun. Microsoft Entra Id (önerilen) veya bir bağlantı dizesi kullanarak Uygulama Yapılandırma deponuza bağlanabilirsiniz.

    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
    }
    

    Tavsiye

    içinde FeatureFlagOptionshiçbir seçici belirtilmediğinde, Uygulama Yapılandırma deponuzda etiket içermeyentüm özellik bayraklarını yükler. Özellik bayraklarının varsayılan yenileme aralığı 30 saniyedir. Bu davranışı parametresi aracılığıyla RefreshOptions özelleştirebilirsiniz. Örneğin, aşağıdaki kod parçacığı yalnızca TestApp ile başlayan özellik bayraklarını yükler: anahtar adlarında ve etiket geliştirmesine sahiptir. Kod ayrıca yenileme aralığı süresini 5 dakika olarak değiştirir. Bu yenileme aralığı süresinin normal anahtar-değerler için bu süreden ayrı olduğunu unutmayın.

    azureappconfiguration.FeatureFlagOptions{
        Enabled: true,
        Selectors: []azureappconfiguration.Selector{
            {
                KeyFilter:   "TestApp:*",
                LabelFilter: "dev",
            },
        },
        RefreshOptions: azureappconfiguration.RefreshOptions{
            Enabled: true,
            Interval: 5 * time.Minute,
        },
    }
    
  5. Ana uygulama dosyasını main.gooluşturun:

    package main
    
    import (
    	"context"
    	"fmt"
    	"log"
    	"os"
    	"time"
    
    	"github.com/microsoft/Featuremanagement-Go/featuremanagement"
    	"github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfig"
    )
    
    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)
        }
    
        // Monitor the Beta feature flag
        fmt.Println("Monitoring 'Beta' feature flag (press Ctrl+C to exit):")
        fmt.Println("Toggle the Beta feature flag in Azure portal to see real-time updates...")
        fmt.Println()
    
        ticker := time.NewTicker(5 * time.Second)
        defer ticker.Stop()
    
        for {
            select {
            case <-ticker.C:
                // Refresh configuration to get latest feature flag settings
                if err := appConfig.Refresh(ctx); err != nil {
                    log.Printf("Error refreshing configuration: %v", err)
                    continue
                }
    
                // Evaluate the Beta feature flag
                isEnabled, err := featureManager.IsEnabled("Beta")
                if err != nil {
                    log.Printf("Error checking if Beta feature is enabled: %v", err)
                    continue
                }
    
                // Print timestamp and feature status
                timestamp := time.Now().Format("15:04:05")
                fmt.Printf("[%s] Beta is enabled: %t\n", timestamp, isEnabled)
    
            case <-ctx.Done():
                fmt.Println("\nShutting down...")
                return
            }
        }
    }
    

Uygulamayı çalıştırma

  1. Uygulamayı çalıştırın:

    go mod tidy
    go run .
    

  2. Uygulama Beta özellik bayrağını izlemeye başlar ve 5 saniyede bir geçerli durumunu görüntüler:

    Monitoring 'Beta' feature flag (press Ctrl+C to exit):
    Toggle the Beta feature flag in Azure portal to see real-time updates...
    
    [14:30:15] Beta is enabled: false
    [14:30:20] Beta is enabled: false
    [14:30:25] Beta is enabled: false
    
  3. Azure portalınaoturum açın. Tüm kaynaklar'ı seçin ve daha önce oluşturduğunuz Uygulama Yapılandırma deposu'na tıklayın.

  4. Özellik yöneticisi'ni seçin ve Beta özellik bayrağını bulun. Etkin altındaki onay kutusunu seçerek bayrağı etkinleştirin.

  5. Konsol uygulamanıza dönün. Birkaç saniye sonra özellik bayrağı durumunun değiştiğini görmeniz gerekir:

    [14:30:30] Beta is enabled: false
    [14:30:35] Beta is enabled: true
    [14:30:40] Beta is enabled: true
    
  6. Konsol uygulamanızda yeniden başlatmadan gerçek zamanlı güncelleştirmeleri görmek için Azure portalında özellik bayrağını açıp kapatabilirsiniz.

  7. Uygulamayı durdurmak için Ctrl+C tuşlarına basın.

Kaynakları temizle

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Bir kaynak grubunu silmek geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil seçeneğini seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki Adımlar

Bu hızlı başlangıçta, Azure Uygulama Yapılandırması'nda bir özellik bayrağı oluşturdunuz ve bunu go konsol uygulamasında kullandınız. Özellik Yönetimi Go kitaplığı, Azure Uygulama Yapılandırması ile sorunsuz bir şekilde tümleşen zengin özellik bayrağı özellikleri sağlar. Diğer özellikler için aşağıdaki belgeye geçin.

Özellik bayrağı, uygulamanızdaki işlevselliği etkinleştirmenize veya devre dışı bırakmanıza olanak tanırken, uygulamanızın mantığına göre bir özellik bayrağını özelleştirmek isteyebilirsiniz. Özellik filtreleri, bir özellik bayrağını koşullu olarak etkinleştirmenizi sağlar. Daha fazla bilgi için aşağıdaki eğitime devam edin.

Azure Uygulaması Yapılandırması, özellik bayrağını yalnızca belirli bir dönemde veya uygulamanızın belirli bir hedef kitlesine etkinleştirmenizi sağlayan yerleşik özellik filtreleri sunar. Daha fazla bilgi için aşağıdaki eğitime devam edin.