ASP Genel VMware

ASP.NET Core ile Mikroservis Mimarisi Uygulama Rehberi

ASP.NET Core ile Mikroservis Mimarisi Uygulama Rehberi

ASP.NET Core ile Mikroservis Mimarisi Uygulama Rehberi

Mikroservis mimarisi, günümüz yazılım geliştirme dünyasında esneklik ve ölçeklenebilirlik sağlamak için tercih edilen bir yöntemdir. ASP.NET Core, mikroservis tabanlı uygulamaların geliştirilmesi için güçlü bir çerçeve sunar. Bu makalede, ASP.NET Core kullanarak mikroservis mimarisini nasıl uygulayabileceğinizi, teknik detaylar ve örneklerle inceleyeceğiz.

Mikroservis Mimarisi Nedir?

Mikroservis mimarisi, bir uygulamanın küçük, bağımsız çalışan servisler halinde geliştirilmesini ve dağıtılmasını öngören bir yaklaşımdır. Her bir servis, belirli bir işlevi yerine getirir ve diğer servislerle API’ler aracılığıyla iletişim kurar. Bu yapı, uygulamanın ölçeklenebilirliğini artırır ve bakımını kolaylaştırır.

Mikroservislerin Avantajları

1. Ölçeklenebilirlik: Her bir servis bağımsız olarak ölçeklenebilir, bu da kaynakların verimli kullanılmasını sağlar.

  1. Esneklik: Servisler bağımsız olduğu için farklı teknolojilerle geliştirilebilir ve güncellenebilir.
3. Geliştirme Hızı: Küçük ekipler, bağımsız servisler üzerinde paralel olarak çalışabilir, bu da geliştirme sürecini hızlandırır.

ASP.NET Core ile Mikroservis Geliştirme

ASP.NET Core, mikroservis geliştirme için hafif, modüler ve yüksek performanslı bir platform sunar. .NET Core’un çapraz platform desteği, mikroservislerin farklı işletim sistemlerinde çalışmasını kolaylaştırır.

Proje Yapısı

Mikroservis tabanlı bir uygulama geliştirirken, her bir mikroservis için ayrı bir ASP.NET Core projesi oluşturmanız önerilir. Bu yapı, servislerin bağımsız olarak geliştirilmesine ve dağıtılmasına olanak tanır.

Örnek Proje Yapısı

ProductService
– Controllers
– Models
– Services
OrderService
– Controllers
– Models
– Services

Her bir servis, kendi bağımsız proje dosyalarına ve bağımlılıklarına sahip olmalıdır.

API Gateway Kullanımı

API Gateway, mikroservis mimarisinde önemli bir rol oynar. Tüm istemci istekleri, API Gateway üzerinden yönlendirilir ve ilgili mikroservise iletilir. Bu yapı, istemci ile mikroservisler arasındaki iletişimi basitleştirir ve merkezi bir güvenlik katmanı sağlar.

Ocelot ile API Gateway

Ocelot, ASP.NET Core tabanlı bir API Gateway kütüphanesidir. Mikroservis mimarinizde Ocelot kullanarak API Gateway oluşturabilirsiniz.

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/api/products",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 5001
        }
      ],
      "UpstreamPathTemplate": "/products",
      "UpstreamHttpMethod": [ "Get" ]
    }
  ]
}

Bu konfigürasyon, /products isteğini localhost:5001/api/products adresine yönlendirir.

Servis Keşfi ve Yük Dengeleme

Mikroservislerin dinamik olarak keşfedilmesi ve yük dengelenmesi, uygulamanın ölçeklenebilirliğini artırır. Consul veya Eureka gibi araçlar, servis keşfi ve yük dengeleme için kullanılabilir.

Consul ile Servis Keşfi

Consul, servis keşfi ve yapılandırma yönetimi için popüler bir araçtır. ASP.NET Core uygulamalarında Consul kullanarak mikroservislerinizi dinamik olarak keşfedebilirsiniz.

public void ConfigureServices(IServiceCollection services)
{
    services.AddConsulConfig(Configuration);
}

Bu kod, ASP.NET Core uygulamanıza Consul yapılandırmasını ekler.

Veritabanı ve Veri Yönetimi

Her mikroservis, kendi veritabanına sahip olmalıdır. Bu yapı, servislerin bağımsızlığını artırır ve veri tutarlılığını sağlar. Veritabanı seçiminde, servislerin ihtiyaçlarına göre SQL veya NoSQL çözümleri tercih edilebilir.

Örnek Veri Yönetimi

public class ProductContext : DbContext
{
    public ProductContext(DbContextOptions options)
        : base(options)
    {
    }

    public DbSet Products { get; set; }
}

Bu kod, bir mikroservis için Entity Framework Core kullanarak veritabanı yönetimini sağlar.

Güvenlik

Mikroservis mimarisinde güvenlik, her bir servis için ayrı ayrı ele alınmalıdır. OAuth 2.0 ve OpenID Connect gibi protokoller, güvenli kimlik doğrulama ve yetkilendirme sağlar.

JWT ile Kimlik Doğrulama

JSON Web Token (JWT), mikroservisler arasında güvenli iletişim için yaygın olarak kullanılır.

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        ValidIssuer = Configuration["Jwt:Issuer"],
        ValidAudience = Configuration["Jwt:Audience"],
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
    };
});

Bu kod, ASP.NET Core uygulamanızda JWT kimlik doğrulamasını yapılandırır.

Dağıtım ve Ölçekleme

Mikroservislerinizi dağıtırken, konteyner tabanlı çözümler kullanmak ölçeklenebilirlik ve yönetilebilirlik açısından avantaj sağlar. Docker ve Kubernetes, mikroservislerin konteynerize edilmesi ve yönetilmesi için popüler araçlardır.

Docker ile Mikroservis Dağıtımı

Docker, uygulamalarınızı konteynerler içinde paketleyerek, bağımlılıklarıyla birlikte taşınabilir hale getirir.

FROM mcr.microsoft.com/dotnet/aspnet:5.0
COPY ./bin/Release/net5.0/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "ProductService.dll"]

Bu Dockerfile, bir ASP.NET Core mikroservisini konteyner içinde çalıştırmak için gerekli yapılandırmayı sağlar.

Performans ve İzleme

Mikroservislerin performansını izlemek ve optimize etmek, uygulamanızın sağlıklı çalışması için kritik öneme sahiptir. Prometheus ve Grafana gibi araçlar, izleme ve analiz için kullanılabilir.

Prometheus ile İzleme

Prometheus, mikroservislerinizin performansını izlemek için güçlü bir araçtır. ASP.NET Core uygulamalarınızda Prometheus kullanarak metrikleri toplayabilirsiniz.

services.AddPrometheusMetrics();

Bu kod, ASP.NET Core uygulamanıza Prometheus metriklerini ekler.

Sonuç

ASP.NET Core ile mikroservis mimarisi uygulamak, esnek ve ölçeklenebilir yazılım çözümleri geliştirmenizi sağlar. Bu makalede ele alınan teknik detaylar ve örnekler, mikroservis tabanlı bir uygulama geliştirirken karşılaşabileceğiniz zorlukları aşmanıza yardımcı olacaktır. Mikroservislerinizi barındırmak için Cloud Sunucular veya VDS Sunucular gibi çözümleri değerlendirerek, altyapınızı güçlendirebilirsiniz.