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.

オレ流クラウドデザイン

374 views

Published on

2018年JAZUG福岡で発表したクラウドデザインパターンです。

Published in: Engineering
  • Be the first to comment

オレ流クラウドデザイン

  1. 1. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. オレ流クラウドデザイン Lv0~Lv400 株式会社オルターブース 小島 淳
  2. 2. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 株式会社オルターブース 代表取締役 (金髪銀髪おにいさん) 小島 淳(Atsushi Kojima) 2 とりあえずなんでもやるフルスタックエン ジニアと思っている方が多いですが本人的には OSSなミドルウェア職人と思っていてア プリケーション開発をバリバリしている人から見 ると物足りないしネットワーク超絶詳しい人 から見ても物足りないという中途半端な存在 を打破しようと日々精進しています。 Microsoft MVP(Microsoft Azure)だったりします。
  3. 3. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. つまらない世界から、 もっと刺激のある世界へ変化させよう!
  4. 4. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Web上で簡単に自分好みの“ソース”を作るこ とができるサービス。 マイクロサービスの実 行基盤をインテグレー ションするサービス。 Microsoft Azureに特化したフルスタックな開発運用 サービス。 SaaSアプリケーション マイクロサービス アーキテクチャー クラウドインテグレーション
  5. 5. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. クラウド使いこなしてますか?
  6. 6. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 一言でクラウドといっても様々なサービスを提供しているのでそれら を網羅的に扱うのは非常に難しい。
  7. 7. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
  8. 8. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. クラウドデザインパターンは非常に有効 に使えるけど、ちょっとミクロになりす ぎているところと外部のサービスを連携 する部分が抜けている。 自分たちのサービスがどのように当ては まるのかがわかりづらい。
  9. 9. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. ということで今回はそんなお悩みを一気 に解決してしまおう、あわよくば新機能 も一緒に勉強出来て、明日からすぐに使 えるイケてる技術を自慢してしまおうと いう主旨です。
  10. 10. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. ※注 長いのでダレる可能性あります。 なので適当に休憩していただいて結構です。
  11. 11. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Lv0 機能おさらい
  12. 12. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 基本形 Compute Service群 仮想マシン Web App Cloud Service Azureが提供するIaaSイン スタンス。Windowsおよび Linuxが利用可能。 Windows10も可能。 アプリケーション基盤飲み を提供するPaaSインスタン ス。カスタマイズ性は高く 多くの言語に対応している。 Azure初期から存在 するWindowsベース のRole型PaaS。
  13. 13. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Compute Service群 応用形 Azure Container Instances Azure Container Service Service Fabric コンテナーを中心としたマイクロサービス基盤
  14. 14. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. データを格納することを主としたサービス群 Data Store群 Blob Files Queue Table Storage SQL Database SQL DataWarehouse Azure Cache CosmosDB Azure DataLake Azure Search
  15. 15. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Network / Gateway Service群 API Gateway Application Gateway Azure CDN Express Route Azure LoadBalancer Traffic Manager 仮想ネットワーク
  16. 16. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. オレ的注目株 Cognitive Service Azure Machine Learning Logic Apps Operations Management Suite HDInsight
  17. 17. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 他にもたくさんのサービス があるので是非みなさんも 調べてみてください。
  18. 18. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Lv100 デザインパターン基本
  19. 19. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved.
  20. 20. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. データ処理のパターン1 センサーデバイス Azure API Apps SQL Database DocumentDB Storage Blob HTTP/HTTPS
  21. 21. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. データ処理のパターン2 センサーデバイス SQL Database DocumentDB Storage Blob WebSocket Azure Web Apps
  22. 22. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. データ処理のパターン3 センサーデバイス EventHubs Stream Analytics HDInsight SQL Database DocumentDB Storage Blob
  23. 23. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Lv200 マイソースファクトリー
  24. 24. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Single Page Architectureを採用 Database WebApps フロントエンド API バックエンド マイソースファクトリー https://mysaucefactory.com
  25. 25. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 全体像 Cognito API Gateway DocumentDB SQL Database TerraformWebApps Route53 S3 CloudFront Lambda Azure Container Service LB docker swarm ASP.NET Core BLOB
  26. 26. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Azure AWS Virtual Machines EC2 Load Balancer ELB SQL Database RDS DocumentDB DynamoDB CDN CloudFront DNS Route53 API Management API Gateway Functions Lambda Mobile Apps Cognito Storage Blob S3 参考)AzureとAWSのサービス比較 https://docs.microsoft.com/en-us/azure/architecture/aws-professional/services
  27. 27. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. ロギングパターン ASP.NET Core Azure Container Service Azure Storage Operations Management Suite
  28. 28. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. ビルドパイプライン 開発(Dev) Build Ship Run 運用(Ops)ECR ACS docker swarm AKS
  29. 29. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Blue Green Deployment ECR ASP.NET Core 開発メンバー 実行結果 Push Polling Azure Container Service ASP.NET Core ASP.NET Core nginx docker swarm docker pull docker push docker build
  30. 30. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. • Terraform • クラウドオーケストレーション • Ansible • ステージング / 本番環境 プロビジョニング • Docker • 全てのアプリはコンテナ • Jenkins 2 • CI/CDを支える • Git • インフラコード管理 マイソースを支えるツール群 Terraform
  31. 31. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 米国Docker社が提供する仮想コンテナーツールです。 アプリケーションをコンテナで実行したり、簡単にホスト間をマイグ レーションすることが出来ます。 Dockerとは コード化 Gitで管理 起動が早い カーネルを共有 ステートレス OSS コンテナーを仮想サーバーのように扱うことは出来ない。 1つのコンテナーには1つのサービスしか起動しない。 コンテナーはステートレスにしデータを格納しない。
  32. 32. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 現在6つのコンテナーサービスを提供している。 Azure Container Service(ACS) Azure Container Service for K8S(AKS) Azure Container Instance(ACI) Web App for Containers Azure Container Registry Azure Service Fabric Azureが提供しているコンテナーサービス
  33. 33. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. kubernetes(くーべねてぃす)とはコンテナークラス ターを構成し、コンテナーホストのデプロイ、スケール、 運用自動化など統合的に提供されるプラットフォームで す。近年非常に注目されておりAzureをはじめ各パブリッ ククラウドのフルマネージドコンテナーサービスで採用 されています。 Azureでは従来からリリースされている Azure Container Serviceで kubernetesが利用できます。またそれ にともなってAzure Container Service の略称であるACSからAKSへと変更され ています。 kubernetesは「k8s」と略されること が多いのですが、この「k8s」はkとsの 間に8文字を省力していることを意味し ています。 AKSは現在パブリックプレビュー提供
  34. 34. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Azure Container Service(AKS) フルマネージド 自動作成 コンテナのデプロイ
  35. 35. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Lv300 マイクロサービス アーキテクチャー
  36. 36. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 一般的なアプリケーションはほぼ全て3つの要素に分割できます。 3層アーキテクチャー考察 フロントエンド バックエンド データストア リクエスト 3層アーキテクチャー フロントエンド バックエンド データストアステートレス フロントエンド バックエンド データストアステートフル フロントエンド バックエンド データストアSPA
  37. 37. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. モノリスとは1枚岩と称され、全ての機能が1つのアプリケーションに 含まれている状態を指します。この状態での最大の課題はスケーリン グであり水平、垂直ともに課題の棚上げを行っているに過ぎません。 ※この棚上げに関する解決パターンはLv400でやります。 モノリス構造 機能A 機能B 機能C 完全なコピーをホスティングするバックエンドサーバー
  38. 38. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. マイクロサービスとは、アプリケーションを独立した複数のサービス に分割し、それぞれが独立した小さなサービスとして動かします。独 立した各サービスはオーケストレーションを通じて連携し、1つのア プリケーションとして機能させます。 マイクロサービス構造 機能A 機能B 機能C A B C B C A B A B C A C A B Cマイクロサービス
  39. 39. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 基本構成はマイソースと同じ。 マイクロサービスのクラウドデザイン基本形 SQL Database Web Apps フロントエンド API バックエンド JSフレームワーク View.jsとか マイクロサービス はAPI化する
  40. 40. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. バックエンドAPIのデザイン Azure Container Service for kubernetes(AKS) LB API API API API API API API API Web Apps フロントエンド マイクロサービスはAPIとして動作させ、コンテナへ配置する。 SPAの状態にしてフロントエンドから疎結合で連携する。 SQL Database
  41. 41. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. コンテナーを使ったマイクロサービスの場合、コンテナー自体にデー タを保管することは出来ないのでステートレスとして構成する必要が ある。 ステートレスマイクロサービス Frontend Request Multi Model Data Store
  42. 42. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Service Fabric
  43. 43. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. コンテナーを用いたマイクロサービスでは、コンテナーの特性上デー タをコンテナーに保存せず、外部のデータストアへ保存します。いわ ゆるステートレスとしてアプリケーションを構成します。一方でマイ クロサービスとは分散型アーキテクチャーでもあるのでデータに関し ても分散し整合を保ったままアプリケーションを稼働させたいという ニーズがあります。Service Fabricはコンテナーとは違いステートフ ルのマイクロサービス基盤であり、利用されるシナリオもステートフ ルマイクロサービスとして扱われます。 Service FabricとACS(AKS)との違い Web Apps フロントエンド Data App Service Fabric Data App Data App Data App Windowsも Linuxも動く
  44. 44. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. ステートフルマイクロサービス
  45. 45. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Service Fabricのアーキテクチャー ノード間通信制御 ノード統合しリーダー選出、エラー検知、ルーティングを行う Service Fabricの信頼性 を管理する。レプリカ、リ ソース管理、フェール オーバー。 サービスのアクティ ブ化 アプリケーションライ フサイクルの管理 アプリケー ションのデ プロイと監 視の管理 デプロイ前 のエラーシ ミュレーショ ン アプリケーションアーキテクチャー
  46. 46. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 一般的にアプリケーションとは何かのイベントをトリガーにアクショ ンを実行するが、その際にアプリケーションをホストするサーバーを 使わずコンテナを使って処理をするアーキテクチャー。 サーバーレス UI CLI Web Func2 Func3 Func1 Function as a Service API Management Functions AP Logic Apps
  47. 47. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. サーバーレス基本系 Azure AD B2C API Management DocumentDB SQL DatabaseAzure DNS Functions Azure Container Service LB kubernetes API API API
  48. 48. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Azure Logic Apps プログラムを書かずに多くの サービスを結合することで モノづくりを行える iPaas とも呼ばれるサービス
  49. 49. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. • IFTTT は非常に多くのサービスと連携可能 • 間に制御を挟まないシンプル構成 • Logic Apps / Microsoft Flow はユーザーが制御を挟む余地がある 外部パイプライン開発に最適 一般ユー ザー システム管理者や開発者 IFTTT Microsoft Flow Azure Logic Apps
  50. 50. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. 様々な外部サービスを繋ぐことが可能
  51. 51. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. クレームメール処理のサーバーレスパイプライン 1. メールチェック 2. 問い合わせ内容の確認 3. 顧客管理リストに 問い合わせ内容を登録 (クレーム時は優先) 4. 自動返信メール送信 (クレームか否か?) 5. 返信メール作成・送信
  52. 52. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Lv400 マイクロサービス実践
  53. 53. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. リソーススケールに関する柔軟性はクラウドの大きな特徴でありメ リットではあるけど、そのスケールパターンについておさらいします。 スケールに関する考察 エラー検知 リトライ制御 スケール 収束 Multi Resource Auto Scale 水平スケールや負荷分散をすることで リソースの枯渇を防ぐ方法が一般的。
  54. 54. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. モノリスのスケーリングパターン Azure LoadBalancer Multi-Server Azure LoadBalancer Auto Scale 仮想マシンScale Sets アプリケーションの完全なコピーをホス ティングするサーバーでスケールする。
  55. 55. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. モノリスのスケーリングパターンではアプリケーションの安定性や障 害に対する耐性が高まるように見えるが、リソースの枯渇における障 害に対しては棚上げになる。Circuit Breakerは失敗する見込みのある 操作の実行を防ぎ障害から復旧させます。 これにより障害が長引いていると判断している間はリソースの浪費な しにアプリケーションを継続できます。 Circuit Breakerパターン ブレーカーは失敗する可能性のある 操作に対するプロキシーの役割です。
  56. 56. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. ブレーカー制御 プロキシとしてリクエストが 操作にルーティングされる。 失敗検知がしきい値を超える とプロキシはオープンになる。 アプリケーションが失敗して 例外処理が返される。 アプリケーションから限られた リクエストが送られ監視する。
  57. 57. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. マイクロサービスのスケーリングパターン Circuit Breaker 正常マイクロサービス 異常マイクロサービス マイクロサービス=APIとした場合、API 単位でブレーカーを制御する。 API Management でAPI(URI)のリ バースプロキシーを構成する。 Functionsを使ってブレーカーオープン になっているAPIを迂回する。
  58. 58. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. Circuit Breakerは失敗する見込みのある操作の実行を防ぐことが目的 ですが、Retryはその名の通り障害が一時的なものとして操作を透過的 にリトライし一時的な障害に対してアプリケーションが対処できるよ うにします。 Retryパターン Status 500 ① Status 500 ② Status 200 ③ Circuit Breakerパターンと併用することが多い。
  59. 59. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. こういう細かいパターンを自分たちのプロダクトにどうやって組み込 むのか、という考え方ではなく、このプロダクトはこういう風にした いという要件をちゃんとまとめないと提供するのはなかなか難しい。 インフラやアプリという視点ではなく、サービスというマクロの支店 が必要になる。
  60. 60. Copyright © 2015-2018 ALTERBOOTH inc. All Rights Reserved. ご清聴ありがとうございました。 疲れた。。。

×
Save this presentationTap To Close