Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Daha taşınabilir, daha bağımsız .NET uygulamaları tasarlamak

Eser Ozvataf
November 03, 2018

Daha taşınabilir, daha bağımsız .NET uygulamaları tasarlamak

Eser Ozvataf

November 03, 2018
Tweet

More Decks by Eser Ozvataf

Other Decks in Programming

Transcript

  1. ESER ÖZVATAF /eserozvataf /eserozvataf HAKKIMDA ▸ Süreç Lideri @ Setur

    ▸ Sektörde 18 Yıl İş Deneyimi ▸ Açık Kaynak Ekolünden ▸ Blockchain üzerine çalışmalar yapan
 lisansüstü öğrencisi
  2. BUGÜN BAHSEDECEKLERİM ▸ Uygulama Taşınabilirliği ▸ Bağımlılıkların Tespiti ▸ Daha

    Taşınabilir Olmanın Getirileri ▸ Taşınabilir Uygulama Tasarlamak ▸ Kod Tasarım Çözümleri ▸ Mimari Çözümler ▸ Araç Çözümleri ▸ Paketlemek ▸ Ortam Yapılandırmaları ▸ Uygulamaları Platform Bağımsız Paketlemek ▸ Örnek Uygulama
  3. BAĞIMLILIKLARIN TESPİTİ UYGULAMA TAŞINABİLİRLİĞİ NuGet Paketleri SaaS Hizmetler / Veri

    Sağlayıcıları Servisler / APIler Dosya / Kurulum Bağlılıkları Symbiot / Parazit Uygulamalar Uygulama “Bende çalışıyor” Platform / İşletim Sistemi
  4. DAHA TAŞINABİLİR OLMANIN GETİRİLERİ UYGULAMA TAŞINABİLİRLİĞİ Yan Etki Üretmemek Çoklu

    Cloud Provider Desteği Çoklu Platform Desteği Ölçeklenebilirlik Aynı Uygulamanın Farklı Ortam Kurgularıyla Çalışabilmesi Dağıtık Sistemlere İmkan Daha Net Ölçülebilirlik Test Edilebilirlik
  5. KOD TASARIM ÇÖZÜMLERİ TAŞINABİLİR UYGULAMA TASARLAMAK Microsoft.Extensions.Configuration ve Microsoft.Extensions.Options’u kullanın

    Ortam bazlı belirleyebildiğiniz konfigurasyon dosyalarınız olsun Konfigurasyon dosyalarınız environment variable’lar ile ezilebilsin
  6. MİMARİ ÇÖZÜMLER TAŞINABİLİR UYGULAMA TASARLAMAK ▸ Kütüphane gereksinimleri için bağımlılık

    yönetimi araçlarını kullanın (NuGet) ▸ Farklı işlevlere sahip uygulamaların kod tabanlarını ayrı tutun ▸ Her müşteriniz için ayrı derlemeler yerine Multi-Tenancy kullanın ▸ Episodik Kurgu ile Stateless ve Event-Driven uygulamalar tasarlayın ▸ Dosyaları ancak okumak için kullanın, diğer IO işlemlerinden uzak durun ▸ Platformlarla uyum kontrolleri için integration testler yazmaya çalışın
  7. ARAÇ ÇÖZÜMLERİ TAŞINABİLİR UYGULAMA TASARLAMAK ▸ Coverage Tool - Coverlet

    ▸ Statik analiz için .NET Core Analyzers ▸ Powershell ve Bash scriptleri yerine MSBuild ▸ Visual Studio yerine .NET Core SDK CLI
  8. ORTAM YAPILANDIRMALARI PAKETLEMEK Development Testing Staging Production Ortam Development Testing

    Staging Production Konfigurasyon Dosyası app.Development.json app.Testing.json app.Staging.json app.Production.json IDovizKurlariProvider DovizKurlariMockProvider TcmbTestProvider TcmbProvider TcmbProvider IRepositoryProvider RepositoryMockProvider RepositoryProvider RepositoryProvider RepositoryProvider Connection String localhost:5006/db mongodb.local/db db-staging.x.com/db db.x.com/db
  9. UYGULAMALARI PLATFORM BAĞIMSIZ PAKETLEMEK PAKETLEMEK ▸ Uygulamanızın tüm ortamlarda dotnet

    run ile çalıştığından,
 dotnet build ile derlendiğinden,
 dotnet test ile test edilebildiğinden emin olun ▸ Uygulamanızı self-contained bir biçimde publish edin ▸ Uygulamanızı Dockerize edin ▸ Uygulamanızı Docker-Compose ile ayağa kalkabilir bir hale getirin ▸ CI/CD kullanıyorsanız Visual Studio ve NuGet.exe ile değil, .NET Core SDK ile işlemlerinizi gerçekleştirin