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.

クラウドやOSSで“デザイン”するモダンなシステムアーキテクチャ

3,391 views

Published on

Developers Summit 2017 Kyushuでの登壇資料です。
http://event.shoeisha.jp/devsumi/20170922/

Published in: Technology

クラウドやOSSで“デザイン”するモダンなシステムアーキテクチャ

  1. 1. クラウドやOSSで “デザイン”するモダンな システムアーキテクチャ 2017/09/22 デブサミ九州 @tsubakimoto_s
  2. 2. 2 松村 優大 株式会社オルターブース 業務執行役員/CTA Microsoft MVP for VSDT MLBを愛する30歳 ソフトボールやってます 一児の父
  3. 3. 島根、長崎を経て福岡に移住 ↓ 地場の中小IT企業に就職 ↓ 他社常駐で医療SEを務める ↓ 新卒5年半で退社 ↓ オルターブースに入社 3 C#/VB.NET/VB6 C#/PHP/Azure/AWS
  4. 4. 4
  5. 5. 5
  6. 6. オルターブースが使うクラウド 7 Azure
  7. 7. オルターブースが使うOSS 9
  8. 8. OSSがもたらすメリット OSSとはソースコードが公開され、 改良や再配布を行うことが許可されて いるソフトウェアです。 ソースコードが 公開されている コミュニティに よるサポート 柔軟なカスタマ イズが可能 インターネット で共有 10
  9. 9. 11 https://mysaucefactory.com/
  10. 10. 13
  11. 11. 16 エンジニアの興味からOSSを選定 自社サービスでの検証で知見を得る 自信をつけてから受託開発に投入
  12. 12. アーキテクチャをデザインする 17 インフラ • 責任分界点を明確に(IaaS/PaaS/SaaS) • “バズったとき”でもサービスを提供 開発 • OSSのフレームワークやライブラリの活用 • 品質とスピードを保つ仕組み 運用・監視 • 状況の見える化 • サービスのヘルスチェック
  13. 13. 下 横 フレームワークや開発環境 監視やマイクロサービス
  14. 14. Infrastructure 20
  15. 15. インフラデザイン 21
  16. 16. インフラデザイン 22 Scalability
  17. 17. インフラデザイン 23 Stateless
  18. 18. インフラデザイン 24 Availability
  19. 19. Development 27
  20. 20. 開発デザイン •チーム開発 •フレームワークの恩恵を活かす •スケール前提の構成を考える •“Testable”なコーディング •CI/CDを構築し、開発に集中 •ツール前提で始めない 28
  21. 21. 例) C#でのWebアプリ開発 •ASP.NET or ASP.NET Core •機能の共通化 • .NET Standard •デザインパターンの採用 • Repository Pattern • Service Layer 29
  22. 22. .NET FRAMEWORK 30 UsersController IUserService IUserRepositoryUserService UserRepository DbContext etc DI 実装 実装 DI DI DI : Dependency Injection (依存性注入) リソースを 操作するクラス Repositoryを操作する ビジネスロジック 単体テストで 差し替える 単体テストで 差し替える
  23. 23. .NET開発者のこれから •.NET Coreを学ぶべき •英語の資料への抵抗を無くす •C#で作れるアプリは多い (Desktop/Web/Mobile/Serverless/Game) 31
  24. 24. Operation 33
  25. 25. 運用・監視のデザイン 34 Azure Container Service Azure Storage
  26. 26. 業務システムでの勘所 •全て自分たちで実装しようとしない •必要機能を細かく分割する •負荷等の影響を受けやすい機能は? • ライブラリで賄えそうか • PaaSやSaaSで賄えそうか •図を書いてフローを整理する 35
  27. 27. 36
  28. 28. 37 メールを送信せずに メールを送信する
  29. 29. これまでなら… クラウドなら… 38 定型メールの分散化(例) Postfix User User Queue Functions 送信機能を独立し、 アプリへの負荷減 負荷増大 →遅延
  30. 30. クラウドやOSSとどう付き合うか •選ぶことを楽しむ •検証を楽しむ •失敗を楽しむ •成功を楽しむ •スピード感を楽しむ •流行り廃りを楽しむ とにかく楽しみましょう! 39
  31. 31. ありがとうございました
  32. 32. 機能は分散させる 42 https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-overview-microservices
  33. 33. (ASP).NET Coreの利点=コンテナ化前提の構成 43 Kestrel Kestrel Kestrel Kestrel Browsers
  34. 34. 44 Learn. Imagine. Build. .NET Conf https://fukuten.connpass.com/event/63612/ (2017/10/21)

×