Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例

177 views

Published on

Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
ASP.NET Framework経験者から見たASP.NET Core 1.1 ⇒ 2.0 ⇒ 2.1への道
https://fukuten.connpass.com/event/95744/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例

  1. 1. 挑み続ける! Dockerコンテナによる ASP.NET Core アプリケーション開発事例 // ASP.NET Framework経験者から見たASP.NET Core 1.1 ⇒ 2.0 ⇒ 2.1への道 Fukuoka.NET Conf 2018 (2018/9/29) ジェイエムテクノロジー株式会社 ジョニー
  2. 2. about:config VB, VBA, Java (Swing), Flex, C/C++ (Win32, MFC, COM, wxWidgets), Windows Forms (VB.NET, C#), WPF, Windows Store Apps Windows RPG, CAS/400 Java, Native library (C/C++)Android ASP, PHP, JSP, Spring, XSLT, DHTML+HTC, ASP.NET Web Forms, ASP.NET MVC/API, ASP.NET Core, React, ... Web Anders Hejlsberg, Mark Russinovich, Scott Hanselman, Jon Skeet, Ben Adams, David Fowler, … Fav People ジョニー @joni2nja https://medium.com/@joni2nja https://github.com/jo-ninja
  3. 3. Agenda •.NET Coreとは? •開発事例の紹介 •サービス概要 •ASP.NET Framework 経験者から見た ASP.NET Core •ASP.NET Core 1.1 ⇒ 2.0 ⇒ 2.1 への道~
  4. 4. .NET Coreとは?
  5. 5. .NET Core – Open Source http://www.businessinsider.com/microsoft-github-open-source-2016-9
  6. 6. .NET Core Release History
  7. 7. ~2016年2月~ 1.15 Million = ASP.NET 4.6の2300%の改善 https://www.ageofascent.com/2016/02/18/asp-net-core-exeeds-1-15-million-requests-12-6-gbps/
  8. 8. ~2016年11月~ Monoより859倍速い! https://www.techempower.com/blog/2016/11/16/framework-benchmarks-round-13/
  9. 9. ~遅い? ~Windowsのみ? • Linux上で動作します! • もしかして10年前のマイクロソフトの話をしていませんか? https://www.techempower.com/blog/2016/11/16/framework-benchmarks-round-13/
  10. 10. そして、2018年現在~ https://www.codemag.com/article/1807041
  11. 11. Best plaintext response per second
  12. 12. ほとんどの処理時間は DBコールじゃないの? DBクエリ ↓ HTMLエスケープ ↓ UTF8エンコード ↓ HTMLドキュメントやテーブル等 https://twitter.com/ben_a_adams/status/1004641789653995520
  13. 13. メリット 一台のサーバー でより多くのリ クエストを処理 できる ⇒コスト削減 同じコストで もっといろんな ことができる
  14. 14. 開発事例の紹介
  15. 15. サービス 概要
  16. 16. http://www.originwireless.net/
  17. 17. ASP.NET Framework経験者 から見たASP.NET Core 印象的なものをいくつ かピックアップして紹 介します
  18. 18. ASP.NET Core アプリ ⇒ コンソール アプリ • Web サーバーを作成する コンソール アプリ • デフォルトWebサーバー ⇒ Kestrel • Cross-platform (macOS, Linux, and Windows)
  19. 19. .NET Frameworkをターゲット可能 • ASP.NET Core は .NET Core または .NET Framework をターゲット にすることができる • .NET Framework をター ゲットとする ASP.NET Core アプリはクロスプ ラットフォームではない— Windows でのみ実行され る。
  20. 20. Web.config さようなら?
  21. 21. SynchronizationContextがない • ConfigureAwait(false)の考慮は不要 • ※ライブラリコードを書く時を除く、これまでのルール適用 AspNetSynchronizationContext が存在 しない • 例:Task.GetAwaiter().GetResult() 通常ブロックするコードを使ってもデッド ロック発生しない
  22. 22. DI (IoC)デザインパターン Built-in Dependency Injection 01 もちろん Bring Your Own Container (BYOC)も可能。 • 例:Autofac, DryIoc, LightInject, 等 02
  23. 23. サービスクラス等からHttpContextを アクセスしたいんだけど・・・ あれ? HttpContextBase, HttpContextWrapper がない? HttpContext ってモックしにくいので、C #3.5から使用しな いで、って言われてるんだよな~
  24. 24. 安心してください。はいってますよ。 専用インターフェース: IHttpContextAccessor
  25. 25. IHostedService • バックグラウンド処理をより簡単に実装できる • キュー、メッセージバス、バッチ等 • DI 対応
  26. 26. ASP.NET Core 1.1 ⇒ 2.0 ⇒ 2.1への道~ • Dockerコンテナ採用 • 1.1 ⇒ 2.0 ⇒ 2.1へのバージョンアップ経験を紹介 • 使用するライブラリによって発生する問題もあり、すべ てのケースで必ず発生するとは限らない
  27. 27. Containers vs Virtual Machines
  28. 28. Docker アーキ テクチャ https://docs.docker.com/engine /docker-overview/#docker- architecture
  29. 29. コンテナ化~ • デプロイ単位⇒コンテナ • アプリとライブラリや.NET Coreランタイムが一体化 • エキスパート(Microsoft)による最適化済み.NET Coreランタイム同梱 • .NET Coreランタイムのパッチ適用 ⇒ Dockerfileの変更 • 古い・既存ランタイムのメンテ(削除等)作業が不要 • すぐに前のバージョンに戻せる⇒使い捨てイメージ • 「It works on my machine.」問題解消? • 起動が速い • 開発メンバーの増員で開発環境構築が楽になる
  30. 30. ASP.NET Core 1.1 ⇒ 2.0
  31. 31. Authentication & Identity • 1.x ⇒ 2.0 の変更点多い (;^_^A • Dual/Multiple Authorization • Cookie (OpenID Connect) • JWT • [Authorize] ⇒ [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] • 2.0でありながら、2.1 RC版のVirtualSchemeを導入 • [Authorize(AuthenticationSchemes = JwtBeare rDefaults.AuthenticationScheme)] ⇒ [Authori ze] • よりフレクシブル • VirtualSchemeは2.1リリース時、PolicySchemeへリネーム
  32. 32. PolicyScheme
  33. 33. ASP.NET Core 2.0 ⇒ 2.1 RC 1
  34. 34. 本番環境へデプロイ?「どうぞ!」 • 事前準備で2.1 RC 1 へバージョンアップ
  35. 35. PolicyServer • Identity != Permissions • Identity + Permissions == Authorization https://policyserver.io/
  36. 36. HttpClientFactory https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient- applications/use-httpclientfactory-to-implement-resilient-http-requests
  37. 37. Tiered Compilation COMPlus_TieredCompilation=1 https://blogs.msdn.microsoft.com/do tnet/2018/08/02/tiered-compilation- preview-in-net-core-2-1/
  38. 38. 2.1 RC 1 ⇒ 2.1 コードの変更無し! ヽ(^o^)丿
  39. 39. .NET Core って🚀
  40. 40. ~おまけ~
  41. 41. Directory.Build.props ファイル ~ビルドをカスタマイズ~ 例:ソリューション内のすべてのプロジェクト は最先端のC# versionを使いたい! ⇒ルートディレクトリに Directory.Build.props ファイ ルを配置することで各プロジェクトの設定が不要!
  42. 42. Ben.Demystifier Stack tracesをより読みや すく
  43. 43. 高パフォーマンスLogger LoggerMessage.Define
  44. 44. https://www.fuget.org nuget ⇒ fuget
  45. 45. ご清聴ありがとうございました

×