>100 Views
May 25, 19
スライド概要
エンタープライズアジャイル勉強会 5/16
FPT ジャパン エグゼクティブエバンジェリスト 独立行政法人 国立印刷局 デジタル統括アドバイザー兼最高情報セキュリティアドバイザー Microsoft で13年間、テクニカルエバンジェリストとして .NET、C#、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け技術啓発活動 (DevRel) 。Dell、Accenture、Elastic、VMware 等での DevRel 後、2024年11月1日より現職で DevRel 活動を開始。NVIDIA との戦略的協業 AI GPU クラウド、Azure/AWS/GC 上の AI &データ関連サービスのマーケティング、プリセールス、教育、関連新規サービス開発。元内閣官房 IT 総合戦略室 政府 CIO 補佐官(兼務)、元デジタル庁 ソリューションアーキテクト(兼務)。
エンタープライズアジャイル勉強会 5月セミナー モノリスなアプリからマイクロサービスへ - クラウドネイティブなアプリ開発における CI/CD プロセスと DevOps ツール - 鈴木 章太郎 横山 依子 株式会社 FIXER Technical Fellow, Evangelist 内閣官房 政府 CIO 補佐官 株式会社 FIXER Cloud Evangelist © COPYRIGHT 2019 FIXER Inc.
鈴木章太郎 株式会社 FIXER Technical Fellow, Evangelist 内閣官房 政府 CIO 補佐官 (法務省担当) 元 Microsoft Evangelist AWS, Azure, GCP Certified Professional Follow me! @shosuz © COPYRIGHT 2019 FIXER Inc.
横山 依子 (ヨコヤマ ヨリコ) 株式会社FIXER Cloud Evangelist Follow me! @yokoyamasandesu © COPYRIGHT 2019 FIXER Inc.
Technology to FIX your challenges. あなたのチャレンジをテクノロジーで成就する 私たちはテクノロジーの力を信じています。 情報化社会のビジネスシーンにおいて、 新たなチャレンジの基盤となるテクノロジー。 スローガンに込めた「FIX(=成就)」とは、 お客さまのチャレンジを実現し、事業の価値を高めること。 そして「your challenges」は、お客さまとFIXER の社員、 あらゆるステークホルダーのチャレンジを示します。 その全てをテクノロジーでFIX することが 私たちの歓びであり、みなさまへの約束です。 COPYRIGHT © COPYRIGHT©2019 FIXER Inc. 2019 FIXER inc. 4
会社概要 (2019年4月1日現在) 会社名 株式会社FIXER 代表者 松岡 清一 所在地 従業員数 資本金 従業員数 東京都港区芝浦1-2-3シーバンスS館 24階 会長: 仲畑 貴志 代表取締役社長: 松岡 清一 役員 2009年11月6日 COPYRIGHT © COPYRIGHT©2019 FIXER Inc. 2019 FIXER inc. 社外取締役: 板野 泰之 顧問: 渥美 俊英 社外監査役: 名古屋 聡介 3,500万円 118名 (正社員) 172名 (他雇用形態・業務委託を含む) 取締役: 中尾 公一 関連会社 株式会社ドラゴン東京 5
拠点 (2019年1月1日現在) 金沢事業所 名古屋事業所 東京本社 FIXER クラウドセンター FIXER Technologies, Inc. COPYRIGHT © COPYRIGHT©2019 FIXER Inc. 2019 FIXER inc. 石川県金沢市広岡2-13-37 STビル 愛知県名古屋市中区栄2-2-23 アーク白川公園ビルディング 東京都港区芝浦1-2-3 シーバンスS館 三重県津市あのつ台4-6-1 あのつピア 717 Market St STE100, San Francisco CA 94103 6
当社が提供するサービスの全体像 コアプロダクトであるマネージドサービス cloud.config を基盤に、Fintech/MaaS 領域でサービスを開発。 これらのサービスの基礎技術となる AI/Machine Learning および IoT Platform の研究開発を積極的に推進 Fintech サービス開発 クラウドバンキングの開発から、 デジタル時代の銀行のビジネスと システムアーキテクチャデザイン Lift & Shift マネージド サービス MaaS (Mobility as a Service) cloud.config クラウド移行の 難易度・効果を クイックに診断、 プランをご提案 AI / Machine Learning 先端技術開発 COPYRIGHT © COPYRIGHT©2019 FIXER Inc. 2019 FIXER inc. マルチモーダルサービス対応の アプリ開発、自動運転時代の データプラットフォーム開発 自然言語処理のLegal Tech応用、 対話型エージェントの開発 cloud.config Portal 設計・監視・運用 ・保守を24/7支援 するフルネージド サービス プロビジョニング からスケーリング までを自動化する 管理ポータル IoT Platform クラウドの利点をフル活用できる 5G時代のデータ収集・転送・分析 プラットフォームの開発 7
Microsoftとのパートナーシップ Microsoftの「Cloud Solution Provider Program」に開始初期から参加、2017年には「Microsoft Country Partner of the Year」を受賞するなど、緊密に連携してビジネスを展開 クラウドのためのベストサービス ~フルマネージドサービス~ 最適なパブリッククラウド ~クラウドマネージメント~ 2013 当社松岡が発起人となり一般社団法人アジュール評議会(ACE)設立 Microsoft Azure パートナーアワード Cloud Service Vendor 最優秀賞 受賞 2014 Microsoft Azure パートナーアワード Cloud Service Vendor 最優秀賞 受賞 2015 パートナープログラム「Cloud Solution Provider Program」の開始に当たり パートナーとして認定(世界26社のうち1社) 2016 2017 日本国内で最も優秀な成績を収めたパートナーとして、Microsoft Country Partner of the Year 受賞 2018 Microsoft Financial Services Award 受賞 2019 COPYRIGHT © COPYRIGHT©2019 FIXER Inc. 2019 FIXER inc. 8
Cloud Config TechBlog Powered by FIXER https://tech-blog.cloud-config.jp/ COPYRIGHT © COPYRIGHT©2019 FIXER Inc. 2019 FIXER inc. 10
Agenda • アプリケーションのクラウド移行戦略 • マイクロサービスとは何か • マイクロサービスを支える技術 • Azure DevOps デモ • サンプルアプリご紹介 • まとめ © COPYRIGHT 2019 FIXER Inc.
アプリケーションの クラウド移行戦略 © COPYRIGHT 2019 FIXER Inc.
デジタル・トランスフォーメーションとは何か 異業種からの参入 市場環境の流動性 顧客嗜好の多様化 不確実性の増大 ビジネスのスピードを圧倒的に上げるしか 対処する術はない ➢ ➢ ➢ 意思決定サイクル の短縮 現場への 大幅な権限委譲 流水化された ビジネス・プロセス 現場や顧客の「見える化」 自律的なチームによる 運営と管理 バリューストリームの 管理と把握 経営会議のサイクルを月次から日次へ 販売実績の報告を日次からリアルタイムへ 労働時間の把握を月次からリアルタイムへ (ヒト、モノ、カネ、情報) デジタル・テクノロジーを駆使 ビジネス・スピードを加速する デジタル・トランスフォーメーション © COPYRIGHT 2019 FIXER Inc.
デジタルトランスフォーメーションを取り巻く2つの環境 ビ ジ ネ ス 環 境 D X を 支 え る 仕 組 み I T 環 境 © COPYRIGHT 2019 FIXER Inc. 異業種からの参入 市場環境の流動性 顧客嗜好の多様化 不確実性の増大 事業継続の条件:変化への即応力を持つこと 意志決定の迅速化 ビジネス・プロセスのデジタル化 見える化 最適化 機械学習×データサイエンス ERP × BPR / BPM プラットフォーム ビジネスの現場からのデータ収集 アジャイル開発と DevOps クラウド:コンテナ × Kubernetes / SaaS × PaaS 変 化 に 俊 敏 に 対 応 で き る 企 業 文 化 ・ 体 質
クラウド移行戦略 リフト&シフト+モダナイズ New シフトの指針 ガートナーの5つのR ・Rehost ・Refactor ・Rearchitect ・Rebuild ・Replace © COPYRIGHT 2019 FIXER Inc.
アプリケーション ポートフォリオ アセスメント EOS(例:Windows Sever 2008)がきっかけの場合も • ビジネス • テクノロジー • 人 ・ビジネス価値 ・コスト ・アプリケーション ・プラットフォーム ・ワークフローの メンテナンスや 更新 リタイア リプレース リビルド リアーキテクト リファクタ リホスト © COPYRIGHT 2019 FIXER Inc. 16
アプリケーションのクラウド移行シナリオ オンプレミス © COPYRIGHT 2019 FIXER Inc. IaaS コンテナ サーバーレス 17
リアーキテクト : アプリのアーキテクチャ変更 マイクロサービスでアプリ構築 ・スケールアップやメンテナンスがより簡単になり、弾力性があり安定した運用が可能 モノリシック © COPYRIGHT 2019 FIXER Inc. マイクロサービス 18
モノリシックからマイクロサービス(APIベース) © COPYRIGHT 2019 FIXER Inc. API 商品 API 注文 API 決済 API 配達
マイクロサービス的実装例 API API API API © COPYRIGHT 2019 FIXER Inc.
Smart hotels 360 https://azure.microsoft.com/ja-jp/campaigns/smarthotel360/ © COPYRIGHT 2019 FIXER Inc.
日本政府の 取り組み • 世界最先端デジタル 国家創造宣言 • 官民データ活用推進 基本計画 • デジタル・ガバメント 推進方針 • デジタル・ガバメント 実行計画 © COPYRIGHT 2019 FIXER Inc. 世界最先端デジタル国家 実行計画が 目指すもの (ToBe)
デジタル ファースト 法案、 衆院通過 © COPYRIGHT 2019 FIXER Inc.
• 【方針2-3】プラットフォームの共用化と民間サービスの活用 • 効率的かつ効果的なプラットフォームの整備を行うため、共用化を前提とした 共通システムや共通サービスの整備及び拡充を推進する。業務やデータの標準 化等の業務改革を進めながら、府省共通システムの継続的な充実及び強化や自 治体クラウドの一層の推進に取り組む。 • 全国同一水準での提供が求められる地方公共団体等のサービスについて、各主 体において個別に情報システムの整備を行うのではなく、自治体クラウド等 への集約化を推進する。加えて、クラウドの広域化やグループ同士の統合等を 進め、機能の共用化を促進する。 • プラットフォームの共用化の一環として、行政機関におけるテレワーク・リ モート アクセス環境の共通化等、生産性の向上や多様なワークスタイルを実 現する共通インフラの整備を推進する。 • 情報システムの導入に当たっては、全ての機能を行政自らが構築するという自 前主義に拘泥するのではなく、民間クラウドや民間サービスを積極的に活用し、 行政機関が全てを保有・管理する形態から必要なものを必要な期間だけ利用 するという考え方へ転換する。これによって、最新技術の早期かつ適時の導入 や投資対効果の向上を実現する。国において直接保有・管理する必要がある 政府情報システムについては、標準化・共通化を図るとともに、投資対効果の 検証を徹底した上で、政府共通プラットフォームへの移行を推進する。 クラウドバイデフォルト の推進 © COPYRIGHT 2019 FIXER Inc. • 国際的な動向を見ながら、 プラットフォームの共通化 を再検討する必要あり • クラウド方針を作成 (CIO 補佐官技術タスク フォース) • データ分析やプロジェクト 管理等、汎用機能での民間 サービスの積極的活用 (CIO 補佐官) 24
政府 CIO 補佐官技術タスクフォース ディスカッションペーパー https://cio.go.jp/dp © COPYRIGHT 2019 FIXER Inc.
引用:パブリック・クラウドを利用した情報システムにおける計画・構築時の基本的な考え方 https://cio.go.jp/dp2019_01 パブリック・クラウド利用時の考え方 (従来の考え方) システム設計 クラウドサービスのリファレンスアーキテクチャをベースと する 様々な技法・手法や、これまでの経験をベースとする 開発量の削減 SaaS、PaaS、マネージドサービス等を利用する パッケージや超高速開発ツール等を適用する データベース マネージドサービスの DB を利用する (スケールアップ・スケールアウト可能) ライセンスを購入して個別に DB サーバを構築する BI マネージドサービスの BI を利用する ライセンスを購入して個別に BI 環境を構築する システム間インタフェース 疎結合、非同期を前提に、API 管理ツールで一元管理を行う 個別に設計・実装 サービス指向 マネージドサービスのマイクロサービス(サーバレス)を 利用する 個別にサービス化を行う 環境変化への姿勢 環境変化を当然と捉えて、前向きに対応する。 アジャイル開発を積極的に取り入れ、コンテナ等の DevOps も想定する 環境変化を必要悪と捉えて、やむを得ず対応する (参考)3.アプリケーション設計・開発に おける考え方 1/2 © COPYRIGHT 2019 FIXER Inc.
マイクロサービス とは何か © COPYRIGHT 2019 FIXER Inc.
マイクロ サービスとは • MSDN アーキテクチャーセンター • マイクロサービスアーキテクチャは、小さな 自律的サービスのコレクションで構成されます。 各サービスは自己完結型で、1つのビジネス機能 を実装している必要があります。 • https://docs.microsoft.com/jajp/azure/architecture/guide/architecturestyles/microservices • ビジネスの変化に即応するための目的的な概念 © COPYRIGHT 2019 FIXER Inc.
各サービスの特長 © COPYRIGHT 2019 FIXER Inc.
①小さく、独立的で、疎結合 © COPYRIGHT 2019 FIXER Inc.
②小規模な1つの開発者チームで作成および管理可能 © COPYRIGHT 2019 FIXER Inc.
大規模なチーム開発だと・・・ © COPYRIGHT 2019 FIXER Inc.
③個別にデプロイ可能で、 アプリケーション全体を再構築 したり再デプロイしたりすることなく、個別にサービスを 更新可能 © COPYRIGHT 2019 FIXER Inc.
多くの人手・承認・時間など コストがかかる © COPYRIGHT 2019 FIXER Inc.
④サービスのデータや外部の状態を保持する役割を担う © COPYRIGHT 2019 FIXER Inc.
⑤明確に定義された API で互いに通信し、各サービス内部 の実装の詳細は、他のサービスに開示されない © COPYRIGHT 2019 FIXER Inc.
⑥各サービスは、サービスの特性に応じて異なるテクノロジスタック、 ライブラリ、またはフレームワークで構築可能 © COPYRIGHT 2019 FIXER Inc.
このシステム 複雑すぎる・・・ どのコードを参照したら いいんだっけ・・・?? しかもNode.js使いたいん ですけど。 © COPYRIGHT 2019 FIXER Inc.
⑦障害も分離される © COPYRIGHT 2019 FIXER Inc.
全サービス、ストップ。 いつ復旧するの?損害は? © COPYRIGHT 2019 FIXER Inc.
モノリシックサービス © COPYRIGHT 2019 FIXER Inc.
マイクロサービス © COPYRIGHT 2019 FIXER Inc.
マイクロサービスの 特長 • • • • • • • ビジネスドメインに沿ったモデル化 実装の詳細の隠避 自動化の推進 高度な分散化の推進 独立したデプロイメント 障害の分離の徹底 監視と管理の高度化 © COPYRIGHT 2019 FIXER Inc.
マイクロサービス化する上での 課題とは?? 01 02 03 運用管理コスト データの整合性 結合テスト 単純に複数サーバで運用するので データベースも複数運用となる アプリケーションが複数の 運用管理コストは増大します。 と、データの整合性の問題も出 サーバの費用もそうですが、環境 サーバ、インスタンスにま てきます。また、既存サービス 構築や監視、メンテナンスなど サーバが増えるのでそれも運用コ ストとなります。 © COPYRIGHT 2019 FIXER Inc. をデータ分割するとなると難易 度が上がります。 たがった構成になるので結 合テストが難解になります。
ちょうどいいマイクロ サービス化を行い、 変化に対応しやすい システムを作ろう! © COPYRIGHT 2019 FIXER Inc.
マイクロ サービスの2側面 • プラットフォーム技術 • Container • Docker • Kubernetes • ソフトウェアアーキテクチャ • 分散アーキテクチャ • 通信 • データ © COPYRIGHT 2019 FIXER Inc.
• ビジネスモデルの急速な 変化 • • • • マイクロサービスの 台頭① © COPYRIGHT 2019 FIXER Inc. アジャイル開発 クラウドベンダー成長 クラウド利用企業激増 API 公開・連携の拡大 • アプリケーション最新化 • 反復的 • 継続的
• プラットフォーム技術 • Container, Orchestrator • 運用コスト削減 • ビジネス機会の拡大 • 選択と集中 • 必要機能のみスケール アウト マイクロサービスの 台頭② © COPYRIGHT 2019 FIXER Inc.
マイクロサービス アーキテクチャによるアプリ構築 着手前に考慮すべき技術的課題 • 同機能のモノリシックアプリより多くの動的なパーツで構成され複雑 • サービス間の境界にまたがってリファクタリングを行うことは困難 • 多くの異なる言語やフレームワークを使用する場合のアプリのガバナ ンス • ネットワークの輻輳と待機時間 • 独自のデータを永続化する各マイクロサービスを使用するためデータ 整合性の困難さ • サービス間で相互に関連付けられたログを記録することは難しい • 複数のサービスが特定の時点で更新される場合があるためバージョン 管理を慎重に設計する必要がある • 高度な分散システムのため成功のために必要なスキルセット © COPYRIGHT 2019 FIXER Inc.
マイクロサービスを 支える技術 © COPYRIGHT 2019 FIXER Inc.
Docker Containers クラウドからオンプレミスまで どこでも実行可能な高速で軽量な アプリケーション / サービスの 配置、運用、管理、自動化のための技術 コンテナー型のアプリ仮想化技術 ◼ ◼ ◼ ネットワークやリソースを分離 高速かつオーバーヘッドの少ない配置展開 オープンソース © COPYRIGHT 2019 FIXER Inc. Linux Windows
Docker とは? App A App A’ App B Bins/ Libs Bins/ Libs Gues t OS Guest OS Bins/ Libs Gues t OS Guest OS VM Guest OS ◼ コンテナー型のアプリ仮想化技術 ◼ コンテナ間は分離 ◼ OS カーネルや各種ライブラリ等は共有 ◼ 高速かつオーバーヘッドの少ない デプロイ、再起動、移行 ◼ オープンソース App B’ App B’ App B’ Bins/Libs App B © COPYRIGHT 2018 FIXER Inc. App A’ Hypervisor (Type 2) App A Container Bins/Libs Host OS Host OS Server Server 52
Docker とは? 参考:マンガでわかるDocker_技術書典 © COPYRIGHT 2018 FIXER Inc. 53
本日Dockerについて 覚えていただきたいこと ①コンテナ ②イメージ © COPYRIGHT 2019 FIXER Inc.
Docker と コンテナの関係は? 参考:マンガでわかるDocker_技術書典 © COPYRIGHT 2018 FIXER Inc. 55
イメージ とは? コンテナをつくる元となる ファイルのこと。 © COPYRIGHT 2018 FIXER Inc. 56
「Docker」で「イメージ」をもとに「コンテナ」を起動する 参考:マンガでわかるDocker_技術書典 © COPYRIGHT 2018 FIXER Inc. 57
イメージが置いてあるDocker hubっていうWebサイトがあるよ。 © COPYRIGHT 2018 FIXER Inc. 58
資源効率性の高さ Container (Docker)を なぜ使うのか © COPYRIGHT 2019 FIXER Inc. ポータビリティ(移植性)の 高さ コンテナはホスト OS を共有するので、 ゲスト OS を立てる必要がない コンテナを構成してリポジトリに保存し ておけば、どこでも動かせる クラウドをまたぐことも可能(Poly Cloud) 展開の容易性と高速性 コマンドのみで展開、再展開が容易に 可能 開発の容易性と高速性 アプリケーションが動作する環境をコン テナとして維持管理可能
従来のサーバ構成 MW (Apache/Post greSQL) アプリケーション バイ ナリ OS (Linux/Windows) HW (CPU/メモリ/ディスク) © COPYRIGHT 2019 FIXER Inc. ライブ ラリ • アプリケーション/MWは、バイナリ (Java コ マンド等) /ライブラリに依存しており、動作 させるためには OS に依存対象をインスト ールする必要あり 依存 • その結果、OS 含めたサーバ全体が、 “Web サーバ”、”バッチサーバ” といった目 的に特化したものとなり汎用性がなくなるこ とになる • 例えば、”Web サーバ”と”バッチサーバ”を 一つのサーバに同居させようとすると、 ”Web + バッチサーバ”という目的に特化 したOS設定となる
Docker を利用したコンテナ化 • アプリケーション/MW が依存するバイナリ/ライ ブラリをコンテナイメージという形でパッケージング dockerコンテナ MW (Apache/Po stgreSQL) アプリケーション バイ ナリ Docker OS (Linux/Windows) HW (CPU/メモリ/ディスク) © COPYRIGHT 2019 FIXER Inc. ライブ ラリ 依 存 • どんなサーバでも、docker が動いていればコン テナイメージをコンテナとして稼働可能 • 結果、アプリケーション/MW は、コンテナとして 抽象化され、 OS 以下のレイヤーは汎用的に • 例えば、障害時のフェイルオーバや負荷による スケールアウトが、コンテナと OS/HW で分離 されるため柔軟に実行可能 • OS/HW はクラウドで容易に調達可能である ため、クラウドのメリットをより引き出すシステム 構成
Docker Containers ~ 共通デプロイ単位 Leverage the Azure platform Keep using the platform of your choice, designed for your container needs running great on Azure Options of compute Azure Web App for Containers Service Fabric Azure Kubernetes Service (AKS) Azure Container Registry Visual Studio tools © COPYRIGHT 2019 FIXER Inc. Redhat Openshift Container Platform InteliJ Kubernetes Docker Hub, private registry Jenkins Ma en Pivotal Cloud Foundry
コンテナが増えすぎた! © COPYRIGHT 2019 FIXER Inc.
• Docker により、アプリケーション のコード、インフラの構成情報を 統合的に管理(疎結合) • ただし、大規模システムの場合、 複数のホストマシンからなる、分 散環境構築が必要 • 開発したアプリケーションを、効 率よく継続的にデプロイしていく か?という開発 / 運用を考え なくてはならない コンテナのオーケストレーションの 必要性 © COPYRIGHT 2019 FIXER Inc. ↓ • コンテナのオーケストレーション ツールが必要
コンテナのオーケストレーションとは? • 複数のコンテナアプリケーションを連動させて一つの サービスとして提供するサービス • 障害時の対策など運用面を考慮し、複数コンテナ を管理するシステム • AWS、Microsoft、Google、IBM、等主要クラ ウドベンダーが採用したこともあり、現在のところコン テナオーケストレーションツールとして Kubernetes はデファクトといえる存在 © COPYRIGHT 2019 FIXER Inc.
Kubernetes (クゥバネィテス) とは • ギリシャ語で “船の操縦手” “統括者・支配者” という意味 • K8s と略され記述される事が多い(8は K から s の間の文字 数) • ベアメタルサーバーや、仮想マシン(On-Premise、Cloud)上の、 Docker をはじめとするコンテナ群を管理するシステム(コンテナオー ケストレーションツール) • Google 社内で開発/運用されている、コンテナクラスタ管理システ ム “Borg” でのノウハウを結集して開発された • 現在は、Apache ライセンスで配布されているオープンソースソフト ウェア • マイクロサービスを効率的にデプロイ、アップデートする機能として、 • コンテナのオートスケール • Blue Green Deployment • Rolling Update などの機能を備えている © COPYRIGHT 2019 FIXER Inc.
Kubernetes における コンテナのオーケストレーション • コンテナを複数のノードに配置し、 全体を一つのプラットフォームとして 管理可能 Master Node Pod Pod Pod Pod Agent Node Agent Node © COPYRIGHT 2019 FIXER Inc. • スケジューリング、配置 • 監視、復旧 • コンテナの冗長構成 • コンテナ間の通信確保 • コンテナのオートスケール (In/Out) などの機能を備えている
• Kubernetes 上にデプロイした サービスの間の通信を統一的な 仕組みで管理 • Blue/Green Deployment • カナリアリリース • サーキットブレーカー(CDP) • 分散トレーシング • Envoy サイドカーパターン https://docs.microsoft.com/ja-jp/azure/aks/istio-scenario-routing Istio - サービスメッシュ (Service Mesh) © COPYRIGHT 2019 FIXER Inc.
Circuit Breaker パターン 一般的な 業務処理 Circuit Breaker 処理 通常処理( Close ) 準縮退処理( Half-Open) © COPYRIGHT 2019 FIXER Inc.
Microsoft Azure でコンテナに対応している サービス 利用用途に応じて適切なサービスを選択可能 管理重視 © COPYRIGHT 2019 FIXER Inc. 生産性重視 70
• 使い慣れた C# / VB.NET を用いて コンテナで実行するアプリを開発可能 .NET Core でマイクロサービスを 開発するメリット © COPYRIGHT 2019 FIXER Inc. • 開発環境をサポートするツール群 • .NET Core CLI (dotnet コマンド) • Docker for Windows • Visual Studio 2019 による コンテナサポート • ※ Windows のみの環境で Linux を含むコンテナ実行 アプリを開発可能
マイクロサービスの開発ライフサイクル 開発環境 ローカル 環境での 開発 テスト環境 / 運用環境 Azure Kubernetes Service Azure Container Registry Azure Kubernetes Service Pipeline Azure Kubernetes Service A チーム Repository B チーム © COPYRIGHT 2019 FIXER Inc. © COPYRIGHT 2019 FIXER Inc. Azure DevOps
Web Apps 開発ライフサイクル (シナリオ例) Deploy Deploy git push pull, clone 開発環境 Azure © COPYRIGHT 2019 FIXER Inc.
Azure DevOps デモ① - Azure Web Apps - © COPYRIGHT 2019 FIXER Inc.
Container 開発とツールサポート • Docker CLI • Azure CLI, SSH • Visual Studio Code & Docker 拡張機能 • Visual Studio 2019 コンテナー サポート (Build, Debug) • Docker Image の管理 • Docker Hub • Azure Container Registry • Private Registry © COPYRIGHT 2018 FIXER Inc.
Container 開発ライフサイクル (シナリオ例) docker push docker push git push pull, clone CD (Webhook) 開発環境 Azure © COPYRIGHT 2019 FIXER Inc.
• 開発 • ASP.NET Core アプリを ローカルで開発 • Azure DevOps でソース コードを管理 • Docker Compose (Option) • 自動ビルド マイクロサービスの開発から 展開までの流れ © COPYRIGHT 2019 FIXER Inc. • Azure DevOps Pipeline でビルド&単体テスト • Azure Container Registry にコンテナイメージ を登録 • クラウド展開 • Helm Charts を利用し て AKS に展開
サンプルアプリの構造 Select Range List C# JavaScript HTML SQL ASP.NET Core Web API User ID Password Users Admin Introduction ☒ 1.2. C# C# xxxxxxxxxxxx ☒ 3. C# yyyyyyyyyyyy ☒ 4. ・・・・・・・ nTimes AND Trial Mode 78/100 Correct Description C# has only 3 Types ? × Web API consists of Interfaces? 〇 〇 ・ ・ © COPYRIGHT 2019 FIXER Inc. Description http://quizap.com/ 2 .NET is the Language? YES NO Description http://quizap.com/ 3 Web API consists of Interfaces? YES NO Description http://quizap.com/ ・ ・ 1 Question 1 Answer × Correct Answer:NO C# has only 3 Types ? Description: xxxxxxxxxxxxxx OR Picture from Blob URL (if exists) Results 3 NO Recommended by AI Result List .NET is the Language? YES Wrong Answers Past 2 C# has only 3 Types ? Conditions : Study Mode L CRUD, BULK INSERT(Link Added) 1 Search wrong Answers or Top 100 from the Beginning Trial Mode READ, UPDATE Questions List 5. ・・・・・・・ Mode Selection 1 Questions List Study Mode Subjects Top Menu User Authentication Users Admin http://quizap.com/ 1 Answer Description http://quizap.com/ 2 Answer Description http://quizap.com/ 3 Answer Reference: http://quizap.com/ or Blob URL 3 Answer 〇 Correct Answer: NO Description: YES NO Next xxxxxxxxxxxxxx Reference: http://quizap.com/ or Blob URL Next
サンプルアプリ画面遷移イメージ © COPYRIGHT 2019 FIXER Inc.
サンプルアプリ画面遷移イメージ © COPYRIGHT 2019 FIXER Inc.
追加実装する範囲 • • • • 統合認証機能 検索機能追加 BI (Power BI) 機能追加 AI (Recommendation 等) 機能追加 © COPYRIGHT 2019 FIXER Inc.
統合認証、検索、BI / AI 機能追加 Select Range List C# JavaScript HTML SQL ASP.NET Core Web API User ID Password Users Admin Introduction ☒ 1.2. C# C# xxxxxxxxxxxx ☒ 3. C# yyyyyyyyyyyy ☒ 4. ・・・・・・・ Times n AND Trial Mode 78/100 Correct Description C# has only 3 Types ? × Web API consists of Interfaces? 〇 〇 ・ ・ © COPYRIGHT 2019 FIXER Inc. Description http://quizap.com/ 2 .NET is the Language? YES NO Description http://quizap.com/ 3 Web API consists of Interfaces? YES NO Description http://quizap.com/ ・ ・ 1 Question 1 Answer × Correct Answer:NO C# has only 3 Types ? Description: xxxxxxxxxxxxxx OR Picture from Blob URL (if exists) Results 3 NO Recommended by AI Result List .NET is the Language? YES Wrong Answers Past 2 C# has only 3 Types ? Conditions : Study Mode L CRUD, BULK INSERT(Link Added) 1 Search wrong Answers or Top 100 from the Beginning Trial Mode READ, UPDATE Questions List 5. ・・・・・・・ Mode Selection 1 Questions List Study Mode Subjects Top Menu User Authentication Users Admin http://quizap.com/ 1 Answer Description http://quizap.com/ 2 Answer Description http://quizap.com/ 3 Answer Reference: http://quizap.com/ or Blob URL 3 Answer 〇 Correct Answer: NO Description: YES NO Next xxxxxxxxxxxxxx Reference: http://quizap.com/ or Blob URL Next
追加する機能について • Facebook/Twitter/Google/Microsoft 認証追加 Trial Mode Conditions : • Active Directory 認証追加 Wrong Answers Past AND n Times OR Recommended by AI • Study (学習)モード追加 • 検索機能追加 • BI 機能追加 (Power BI 等) • AI バックエンド追加 (Recommendation 等) © COPYRIGHT 2019 FIXER Inc.
追加編実装の方針 • • • • 統合認証機能追加 → App Services で追加、認証ロジック追加 検索機能追加 → Service 実装、Model に Search フォルダを追加 BI (Power BI) 機能追加 → Web API をフルに公開 AI (Recommendation 等) 機能追加 → 様々な方法有り • 例:Recommendations Solution Template © COPYRIGHT 2019 FIXER Inc.
Recommendations Solution Template とは • Azure にレコメンデーションエンジンがデプロイ • • Azure Web Apps、Web Jobs、Storage で構成 商品カタログとトランザクション履歴のデータに 基づき、商品のレコメンド予測モデルを構築 • SAR(Smart Adaptive Recommendations) アルゴリズムにより、2つのシナリオがサポート • Item-to-Item Recommendations • • • 「この商品をチェックした人はこんな商品もチェックしています」の ようなレコメンドを表示するシナリオ 関連する商品を表示することで、カタログ内の商品を見つけや すくする Personalized Recommendations • ユーザーの最近のトランザクション履歴をもとに、そのユーザーに 特化したレコメンドを表示 https://github.com/Microsoft/Product-Recommendations © COPYRIGHT 2019 FIXER Inc.
マイクロサービス化 ASP.NET Core Web App Azure Kubernetes Services(AKS) Business Intelligence 認証 Recommend Recommendation Solution Template 検索 バッチ処理 Azure Functions iOS, Android © COPYRIGHT 2018 FIXER Inc. 87
© COPYRIGHT 2019 FIXER Inc.
クイズアプリ Web サイトの 実行用アーキテクチャ実装例 (AKS) Quiz サービス Web App 自動スケール ・Azure Kubernetes Services ・SQL Azure Database Managed Instance SQL Database 東日本 Geo レプリケーション 西日本 東南アジア 認証サービス マスター DB 検索サービス 出題サービス BI サービス AI サービス Web App Web App Web App Web App Web App Web App Test API Report API SQL Database SQL Database Token Service API SQL Database © COPYRIGHT 2018 FIXER Inc. Master API SQL Database Search API SQL Database Message Bus Recommend API SQL Database 89
実装方針 • • • • • 最初にモノリシックなアプリを開発 各種必要機能を追加 CDP 等を考慮してサービス単位を分割 Docker でのローカルテスト Azure Kubernetes Services へのデプロイ © COPYRIGHT 2019 FIXER Inc.
マイクロサービスの開発ライフサイクル 開発環境 ローカル 環境での 開発 テスト環境 / 運用環境 Azure Kubernetes Service Azure Container Registry Azure Kubernetes Service Pipeline Azure Kubernetes Service A チーム Repository B チーム © COPYRIGHT 2019 FIXER Inc. © COPYRIGHT 2019 FIXER Inc. Azure DevOps
Azure Dev Spaces (Preview) • Azure Kubernetes Service (AKS) 上でのコンテナーの実行とデバッグを実行可能 • マネージドな Kubernetes クラスターをチームで共有して共同作業可能 • 依存関係を複製したりモックアップしたりすることなく、自分のコードを分離して 開発したり、他のコンポーネントと併せてエンド ツー エンドのテストを実行 © COPYRIGHT 2018 FIXER Inc.
Azure Dev Spaces (Preview) • Azure Kubernetes Service (AKS) 上でのコンテナーの実行とデバッグを実行可能 • マネージドな Kubernetes クラスターをチームで共有して共同作業可能 • 依存関係を複製したりモックアップしたりすることなく、自分のコードを分離して開発したり、 他のコンポーネントと併せてエンド ツー エンドのテストを実行 • さまざまな開発言語/フレームワーク、Windows, macOS, Linux で利用可能 • 開発とプロダクションで同一の Docker / Helm 環境を利用 http://web-frontend.bd0cfb25.../aksapp.io http://scott.s.web-frontend.bd0cfb25.../aksapp.io © COPYRIGHT 2019 FIXER Inc. Scott
© COPYRIGHT 2019 FIXER Inc.
Azure DevOps デモ③ - Azure Dev Spaces - © COPYRIGHT 2019 FIXER Inc.
まとめ • • • • • • アプリケーションのクラウド移行戦略 マイクロサービスとは何か マイクロサービスを支える技術 Azure DevOps デモ サンプルアプリご紹介 まとめ © COPYRIGHT 2018 FIXER Inc.
FIXER Tech Academy Cloud Config Boot Camp © COPYRIGHT 2018 FIXER Inc. Nagisa Terrace in Tamachi
Cloud Config Boot Camp(クラウド・コンフィグ・ブートキャンプ) Azureソリューションに必要なスキルを体系的に習得 FIXERでは、Azureへのリフト&シフトやクラウドの効果的な活用、クラウド上でのアプリ開発など、 様々なスキルを体系的に習得できる各種トレーニングをご用意しております。 インフラ 構築編 アプリ開発 基礎編 アプリ開発 機能追加編 応用編 CDP概論・各論、 仮想ネットワーク、 ARMテンプレート等 ASP.NET Core MVC Web モノリシック アーキテクチャ ASP.NET Core MVC Web マイクロサービス アーキテクチャ Azureの基礎知識 Azure基本事項、Azureサービスと機能のツアーなど © COPYRIGHT 2018 FIXER Inc.
ご清聴 ありがとう ございました! © COPYRIGHT 2019 FIXER Inc.
© COPYRIGHT 2019 FIXER Inc.