Azure İşlevleri ile sunucusuz Node.js uygulamaları geliştirme

Azure İşlevleri ile HTTP API'leri ve olay temelli Node.js uygulamaları derleyin ve çalıştırın. Ardından bu makalenin geri kalanını kullanarak uygulamanız için doğru sunucusuz barındırma ve tümleştirme yolunu seçin.

İşlev uygulaması kaynağı nedir?

İşlev uygulaması, işlev kodunuzu belirli bir coğrafi konumdaki tek bir Azure kaynağında dağıtmaya ve çalıştırmaya yönelik mantıksal bir birimdir. Kaynak, birbirinden bağımsız olarak yürütülen ancak aynı işlem kaynaklarını, bağlantıyı ve ayarları paylaşan tek bir işlev veya birçok işlev içerebilir. İşlevler, hızlı bir şekilde başlamanıza yardımcı olmak için çok çeşitli tetikleyici tabanlı şablonlar sağlar. Kodunuzu ve diğer çıkış ve giriş bağlamalarını ekleyebilirsiniz.

İşlev uygulaması kaynak ayarları ortam değişkenleri, kimlik doğrulaması, günlük kaydı ve CORS gibi yaygın sunucusuz yapılandırmaları içerir.

Kalıcı, durum bilgisine sahip işlevler

Azure'daki işlev yürütmeleri doğası gereği durum bilgisi tutmasa da, Dayanıklı İşlevlerdurumu korur ve Azure'da uzun süre çalışan işlevleri yönetir. Tek bir istekten sonra gelen düzenlemelere, yeniden denemelere veya çok aşamalı iş akışlarına ihtiyacınız olduğunda bunları kullanın. Başlamak için bkz. JavaScript'te ilk dayanıklı işlevinizi oluşturma.

Statik web uygulamaları işlevleri içerir

Sunucusuz API'lere de ihtiyaç duyan statik bir ön uç istemci uygulaması (Angular, React veya Vue gibi) geliştirirken, her ikisini birlikte paketlemek için işlevlerle Statik Web uygulamalarını kullanın.

İstemci uygulaması ile API arasında ara sunucu

API'nizi statik web uygulamanızla dağıtmayı planlıyorsanız istemci uygulamanızın API çağrılarına ara sunucu eklemeniz gerekmez. İşlev uygulamasını yönetilen bir uygulama olarak dağıttığınızda ara sunucu sizin için kurulur.

statik web uygulamanızı Azure İşlevleri kullanarak yerel olarak geliştirdiğinizde, Azure Static Web Apps CLI yerel ara sunucu sağlar.

Azure İşleviniz için yapılandırmanız gereken yaygın güvenlik ayarları

Azure İşlevinizin güvenliğini sağlamak için aşağıdaki yaygın ayarlar yapılandırılmalıdır:

  • Kimlik doğrulaması ve yetkilendirme:
    • Güçlü kimlik doğrulaması için Microsoft Entra Id (eski adıyla Azure Active Directory) kullanın. İşlev uygulamanızı üretim iş yükleri için OAuth2 belirteçleri gerektirecek şekilde yapılandırın.
    • Hassas uygulamalar için işlev anahtarlarını kullanmaktan kaçının. Bunun yerine Microsoft Entra ID ile tümleştirin veya işlev kodunuzda JWT belirteçlerini doğrulayın.
    • İşlev uygulamanızın kimliğini diğer Azure kaynaklarıyla doğrulamak için yönetilen kimlikleri kullanarak her işlevin yalnızca ihtiyaç duyduğu erişimi almasını sağlayın.
  • Yapılandırma ayarları:
    • Uygulama ayarları - Güvenliği etkilemeyen ayarlar için Uygulama ayarları oluşturun.
    • Gizli diziler ve anahtarlar - Güvenliği etkileyen tüm ayarlar için şu katmanlı yaklaşımı kullanın:
      1. İlk olarak, desteklenen yerlerde kimlik doğrulaması için Microsoft Entra Id kullanın.
      2. Entra Id'yi desteklemeyen tümleştirmeler için gizli dizileri Azure Key Vault'ta depolayın ve bu ayarları Key Vault'unuzdan çekin.
      3. Koda veya yapılandırma dosyalarına sırları hiçbir zaman yerleştirmeyin.
    • Diğer platform güvenlik ayarları için bkz. Azure İşlevlerinin Güvenliğini Sağlama.
  • Ağ güvenliği:
    • CORS - istemci etki alanlarınızı yapılandırın. Tüm etki alanlarını belirten * kullanmayın.
    • Sanal ağ tümleştirmesi - Ağ maruziyetini sınırlamak ve güvenilen kaynaklardan gelen trafiği kısıtlamak için özel uç noktaları veya sanal ağ tümleştirmesini kullanın.
  • HTTPS ve şifreleme:
    • HTTPS için TLS/SSL ayarı - API'niz varsayılan olarak HTTP ve HTTPS isteklerini kabul eder. HTTPS'yi yalnızca TLS/SSL ayarlarında etkinleştirin. İşlev uygulamanız güvenli bir alt etki alanında (*.azurewebsites.net) barındırıldığından, bunu hemen https ile kullanabilir; bir etki alanı adı satın almayı ve hazır olana kadar etki alanı için sertifika kullanmayı erteleyebilirsiniz.
  • Dağıtım ve izleme:
    • Dağıtım Yuvaları - stage veya preflight gibi bir dağıtım yuvası oluşturun ve bu yuvaya gönderin. Hazır olduğunuzda bu aşama yuvasını üretimle değiştirin. Manuel olarak üretime gönderme alışkanlığı edinmeyin. Kod tabanınız, bir slotta hangi sürümün veya commit’in bulunduğunu gösterebilmelidir. Flex Consumption kullanıyorsanız, dağıtım yuvaları yerine kesintisiz dağıtımları kullanın.
    • İşlevlerinizi ve denetim günlüklerinizi şüpheli etkinlikler için izlemek üzere gerçek zamanlı telemetri, uyarı ve anomali algılama için Application Insights'ı etkinleştirin.

Kapsamlı güvenlik yönergeleri için bkz. Azure İşlevlerinin Güvenliğini Sağlama.

Azure İşlevleri için barındırma seçenekleri

Gereksinimlerinize bağlı olarak Azure İşlevlerini farklı şekillerde barındırabilirsiniz:

Azure İşlevleri kaynak barındırma planları

İşlev uygulaması kaynağı oluşturduğunuzda şu İşlev barındırma planlarından birini seçin:

  • Tüketim planı (eski):Yalnızca işlevlerinizin otomatik ölçeklendirmeyle çalıştığı süre için ödeme gerçekleştirin.
  • Esnek Tüketim planı: Soğuk başlangıçları, sanal ağ tümleştirmesini ve yapılandırılabilir örnek boyutlarını (512 MB ile 4 GB arasında) azaltmak için her zaman hazır örneklerle gelişmiş denetim sağlar. Bu plan, kurumsal güvenlik ve performans özellikleri gerektiren yeni Linux tabanlı iş yükleri için önerilir. Bu plan, Tüketim planına benzer, ancak her zaman hazır örnekler gibi özellikler için ek maliyetlerle yürütme tabanlı faturalamayı kullanır.
  • Premium plan: Önceden ısıtılmış örnekler, sanal ağ bağlantısı ve daha uzun yürütme süreleri ile gelişmiş performans sağlar.
  • Ayrılmış (App Service) planı: Öngörülebilir maliyetler ve çalışma ortamı üzerinde tam kontrol için ayrılmış sanal makinelerde fonksiyonları çalıştırın.

Doğru barındırma planını seçme hakkında daha fazla bilgi için bkz. Azure İşlevleri barındırma seçenekleri.

Azure Container Apps kaynağı

Alternatif olarak, Azure İşlevleri'yi kapsayıcılı iş yükleri olarak bir Azure Container Apps kaynağına dağıtabilirsiniz. Bu seçenek kapsayıcı ortamı üzerinde tam denetim sağlar ve özel bağımlılıklara, uzun süre çalışan işlemlere ihtiyacınız olduğunda veya işlevleri diğer kapsayıcılı mikro hizmetlerle birleştirmek istediğinizde idealdir. Daha fazla bilgi için bkz. Azure Container Apps üzerinde Azure İşlevleri’a genel bakış.

Azure İşlevleri geliştirme önkoşulları

  • Node.js LTS - Azure İşlevleri ile en iyi uyumluluk ve güvenlik güncelleştirmeleri için en son Uzun Vadeli Destek (LTS) sürümünü kullanın.
  • Azure İşlevleri Temel Araçları - Yerel geliştirme ve hata ayıklama için geçerli ana sürümü kullanın.

HTTP istekleri için basit bir JavaScript işlevi

İşlev, istek ve bağlam bilgileriyle dışarı aktarılan zaman uyumsuz bir işlevdir. Azure portalındaki aşağıdaki kısmi ekran görüntüsünde işlev kodu gösterilmektedir.

İşlev projenizin başlangıç noktası olarak aşağıdaki v4 programlama modeli örneklerinden birini kullanın.

import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";

export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log(`Http function processed request for url "${request.url}"`);

    return {
        status: 200,
        jsonBody: {
            env: process.env
        }
    };
};

app.http('status', {
    route: "status",
    methods: ['GET'],
    authLevel: 'anonymous',
    handler: status
});

Uygulama başlatıldıktan sonra uç noktayı yerel ortamda test etmek için http://localhost:7071/api/status adresine gidin.

Visual Studio Code ve uzantılarla işlevleri yerel olarak geliştirme

Visual Studio Code kullanarak ilk işlevinizi oluşturun. Visual Studio Code, Azure İşlevleri uzantısıyla ayrıntıların çoğunu basitleştirir.

Bu uzantı, yaygın şablonlarla JavaScript ve TypeScript işlevleri oluşturmanıza yardımcı olur.

Diğer Azure hizmetleri ile tümleştirme

Sunucusuz işlevler sunucu yapılandırmasının ve yönetiminin büyük bir kısmını kaldırır, böylece yalnızca ihtiyacınız olan koda odaklanabilirsiniz.

  • Düşük kodlu işlevler: Azure İşlevleri ile, tetikleyici bağlamalarını kullanarak diğer Azure hizmetleri tarafından tetiklenen veya diğer Azure hizmetlerine çıkış veren işlevler oluşturursunuz. v4 programlama modeli tüm tetikleyicileri ve bağlamaları doğrudan kodunuz içinde kaydederek yapılandırma türünü güvenli ve sezgisel hale getirir.
  • Yüksek kod işlevleri: Daha fazla denetim için diğer Azure hizmetlerini koordine etmek ve denetlemek için Azure SDK'larını kullanın. Kimlik bilgilerini yönetmeden işlevlerinizin kimliğini diğer Azure kaynaklarıyla güvenli bir şekilde doğrulamak için yönetilen kimlikleri kullanın.

Sonraki Adımlar