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.

Cloud Native Application on DEIS by using 12 factor

15,279 views

Published on

This presentation explain how to create the cloud native scalable application by using 12 factor app of Heroku. In the presentation, I use the DEIS Workflow for kubernetes on Azure Container Services on Azure.

If you are interested in this, I created Hands on Lab as follows. Please try following?
https://github.com/yoshioterada/DEIS-k8s-ACS

Published in: Technology
  • Be the first to comment

Cloud Native Application on DEIS by using 12 factor

  1. 1. 自己紹介 日本マイクロソフト(株) Java エバンジェリスト 寺田 佳央 ハッシュタグ #てらだよしおがんばれ
  2. 2. クラウドを有効活用できす アプリケーションを 実装されてますか?
  3. 3. 今のアプリケーションを そのままクラウドに移行する?
  4. 4. ところで 昨今話題ですが
  5. 5. マイクロサービス は必要 ?
  6. 6. モノリシック?マイクロ?
  7. 7. 一般的な企業システムの実装例 顧客管理 受注管理 物流管理 売り上げ管理 商品管理 レコメンド 顧客分析 経営分析 企業システム DB
  8. 8. どんどんマイクロ・サービス化 受注管理 サービス 顧客管理 DB 物流管理 サービス 顧客管理 DB
  9. 9. マイクロサービス いち早くサービスを 提供したい 柔軟にスケール させたい 独立したサービス作りを おこないたい 耐障害性を高めたい 変更に強いシステムを 作りたい とりあえず MSA 化が必要 Docker を導入したい 何のためのマイクロ・サービス?
  10. 10. マイクロサービス 一番だめなパターン とりあえず MSA 化が必要 Docker を導入したい
  11. 11. マイクロサービス いち早くサービスを 提供したい 柔軟にスケール させたい 独立したサービス作りを おこないたい MSA でなくてもできません?
  12. 12. マイクロサービス 耐障害性を高めたい (回復性を高める) 変更に強いシステムを 作りたい MSA が有効 ( 寺田の所感 )
  13. 13. https://jaxenter.com/microservices-trends-2017-survey-133265.html 既存サービスを マイグレーション する 新規サービスで 導入 導入済み 予定なし
  14. 14. 12 Factor App Reactor Manifest 組織作り TDD Agile 継続的インテグレーション Infrastructure as Code 継続的デリバリ
  15. 15. © 2017 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。 ちょっと宣伝させてください
  16. 16. Azure Container Service
  17. 17. クラウド・ネイティブな スケーラブル・アプリ開発のために
  18. 18. はじめに Java SE の現在と将来 Java EE の現在と将来 ソースコード管理
  19. 19. ソースコード管理
  20. 20. どのようなソースコード管理 してます? 複数のモジュールを 1レポジトリで管理
  21. 21. サービス毎にレポジトリを作成しましょう
  22. 22. サービス毎の履歴管理や 把握が容易に !!
  23. 23. はじめに Java SE の現在と将来 Java EE の現在と将来 どうやって実装?
  24. 24. 今までの Web アプリケーション ビジネス・ロジック
  25. 25. ビューとロジックを分離 ビジネス・ロジック
  26. 26. Front End For Back End
  27. 27. RESTful Web Services JSON
  28. 28. Stateless
  29. 29. UI とバックエンド・サービスの分割 UI Face Detect warファイル Emotional UI サービス Face Detect Emotional
  30. 30. はじめに Java SE の現在と将来 Java EE の現在と将来 並列処理 非同期 ノンブロッキング
  31. 31. 同期?非同期? Service C Service C
  32. 32. Service C Load Balancer API Gateway 待ちによる スレッドの滞留を防ぐ
  33. 33. はじめに Java SE の現在と将来 Java EE の現在と将来 共有ライブラリ
  34. 34. 共有ライブラリ呪縛 から解放されません?
  35. 35. 顧客管理 受注管理 物流管理 売り上げ管理 商品管理 レコメンド 顧客分析 経営分析 共有ライブラリ
  36. 36. 共有ライブラリ 顧客管理 受注管理 物流管理 売り上げ管理 商品管理 レコメンド 顧客分析 経営分析 共有ライブラリにバグがみつかった!! えっ?!全部再テスト? 追加機能に影響が!! リリース・スケジュール延期!!
  37. 37. 顧客管理 受注管理 商品管理 レコメンド 共有ライブラリ ライブラリ 顧客管理 ライブラリ 商品管理 ライブラリ 受注管理 ライブラリ レコメンド
  38. 38. バグがみつかった!! v1 顧客管理 v1 受注管理 v2 顧客管理
  39. 39. ビルド
  40. 40. プライベート レポジトリ 建てましょう
  41. 41. https://youtu.be/Wj4yQpDxe_k
  42. 42. ライブラリ v1 商品管理 ライブラリ v2 レコメンド ライブラリ v1 物流管理 ライブラリ v2 売り上げ管理 共有ライブラリ 依存から脱却し ましょう
  43. 43. はじめに Java SE の現在と将来 Java EE の現在と将来 リソース設定を 柔軟に !!
  44. 44. どこでも動くアプリを 心掛けましょう
  45. 45. 外部リソース の設定 サービス JDBC メッセージ プログラム?XML?
  46. 46. https://youtu.be/LVo_6AdC4wQ
  47. 47. はじめに Java SE の現在と将来 Java EE の現在と将来 ビルド リリース 実行
  48. 48. Build Release Run $ mvn clean package $ docker build . $ mvn deploy $ docker push $ java –jar App.jar $ docker run
  49. 49. https://youtu.be/e7hIwW9c4Es
  50. 50. https://youtu.be/N52zkq4hsFg
  51. 51. $ deis releases -a lonely-jokester === lonely-jokester Releases v6 2017-04-26T14:41:41Z yoterada added DATABASE_URL v5 2017-04-26T14:27:08Z yoterada rolled back to v2 v4 2017-04-26T14:09:56Z yoterada changed healthcheck info for proc type cmd v3 2017-04-26T14:09:03Z yoterada added healthcheck info for proc type cmd v2 2017-04-26T12:29:44Z yoterada deployed 545623c v1 2017-04-26T12:26:01Z yoterada created initial release
  52. 52. $ deis rollback v2 -a lonely-jokester Rolling back to v2... done, v5 $ deis releases -a lonely-jokester === lonely-jokester Releasesv5 2017-04-26T14:27:08Z yoterada rolled back to v2 V4 2017-04-26T14:09:56Z yoterada changed healthcheck info for proc type cmd V3 2017-04-26T14:09:03Z yoterada added healthcheck info for proc type cmd V2 2017-04-26T12:29:44Z yoterada deployed 545623c V1 2017-04-26T12:26:01Z yoterada created initial release
  53. 53. はじめに Java SE の現在と将来 Java EE の現在と将来 廃棄容易性
  54. 54. 起動時間の最小化 不意な停止に対応 素早い起動・停止
  55. 55. https://youtu.be/oXk4-LkQOfA
  56. 56. $ deis autoscale:set cmd --min=3 --max=8 --cpu-percent=75 -a lonely-jokesterApplying autoscale settings for process type cmd on lonely-jokester... Done $ deis autoscale:list -a lonely-jokester === lonely-jokester Autoscale --- cmd: Min Replicas: 3 Max Replicas: 8 CPU: 75%
  57. 57. はじめに Java SE の現在と将来 Java EE の現在と将来 自己完結型 アプリケーション
  58. 58. 自己完結で軽量に動くアプリに ポートバインディングを通してサービスを公開
  59. 59. https://youtu.be/ag4edz5ff-Q
  60. 60. はじめに Java SE の現在と将来 Java EE の現在と将来 開発・本番一致
  61. 61. 開発と本番環境の環境は統一しましょう 開発環境 テスト環境 本番環境 Java JDK 8 u121 JDK 8 u72 JDK 8 u20 Ruby 2.3.0 2.2.4 2.2.4 MySQL 5.6 5.5 5.5 OS Win/Ubuntu RedHat RedHat
  62. 62. 開発と本番環境の環境は統一しましょう 開発環境 テスト環境 本番環境 Java JDK 8 u121 JDK 8 u121 JDK 8 u121 Ruby 2.4.1 2.4.1 2.4.1 MySQL 5.7 5.7 5.7 OS Ubuntu Ubuntu Ubuntu
  63. 63. ホット・デプロイから継続的デプロイ すべての変更を自動的に本番での検証 • Feature Flag • Blue/Green Deploy • A/B Test • Canary Test • Red/Black
  64. 64. Feature Flag
  65. 65. はじめに Java SE の現在と将来 Java EE の現在と将来 運用・監視ログ
  66. 66. はじめに Java SE の現在と将来 Java EE の現在と将来 さいごに
  67. 67. おきないように 頑張る ? 起きても大丈夫な ように作る? 障害はおきる!!
  68. 68. 分散コンピューティングの落とし穴
  69. 69. 誤った考えかた https://blogs.oracle.com/jag/resource/Fallacies.html
  70. 70. 分散コンピューティングを 意識したシステム開発
  71. 71. どこで障害が発生する? 仮想 IP LB App Server ハートビート HA-Cluster ハートビート 仮想 IP
  72. 72. 今だから再び !! オススメの一冊
  73. 73. マイクロ・サービス Face API Emotion API Bot Framework Azure Managed MySQL VSTS DEIS Kubernetes Azure Container Services 12 Factor App Git Maven Nexus 3 Payara Micro Docker Java
  74. 74. https://aka.ms/deis- k8s-acs
  75. 75. Microsoft OSS
  76. 76. セッションアンケートにご協力ください  専用アプリからご回答いただけます。 decode 2017  スケジュールビルダーで受講セッションを 登録後、アンケート画面からご回答ください。  アンケートの回答時間はたったの 15 秒です!
  77. 77. Ask the Speaker のご案内 本セッションの詳細は『Ask the Speaker Room』各コーナーカウンタにて ご説明させていただきます。是非、お立ち寄りください。
  78. 78. © 2017 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
  79. 79. はじめに Java SE の現在と将来 Java EE の現在と将来 データベース連携
  80. 80. 顧客管理 受注管理 物流管理 売り上げ管理 商品管理 レコメンド 顧客分析 経営分析 企業システム DB
  81. 81. 顧客管理 サービス 顧客管理 DB 受注管理 サービス 受注管理 DB 物流管理 サービス 物流管理 DB 売上管理 サービス 売上管理 DB JDBC 接続 プール JDBC 接続 プール JDBC 接続 プール JDBC 接続 プール
  82. 82. 受注管理 サービス 顧客管理 DB 物流管理 サービス 物流管理 DB JDBC 接続 プール JDBC 接続 プール
  83. 83. 顧客管理 DB 物流管理 DB 受注管理 サービス 物流管理 サービス JDBC 接続 プール JDBC 接続 プール 受注 完了 メ ッ セ ー ジ ン グ ・シ ス テ ム メッセージ連携 受注 発生
  84. 84. イベント処理
  85. 85. はじめに Java SE の現在と将来 Java EE の現在と将来 その他
  86. 86. メッセージ駆動 (Message Driven)Consumer-Driven Contracts
  87. 87. https://github.com/DiUS/pact-jvm

×