105
de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成 3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース 松村優大 森田邦裕

MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

de:code 2019 MW01

ASP.NET Core + Azure で支える

熟成 3 年「私だけのポン酢」アーキテクチャ

株式会社オルターブース

松村優大 森田邦裕

Page 2: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

松村優大 (まつむらゆうた)

業務執行役員 / Chief Technical ArchitectMicrosoft MVP for Developer Technologies

C# / PHP / Microsoft AzureFukuoka.NET 主催

Page 3: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

森田邦裕 (もりた くにひろ)

ソリューションアーキテクト

JAWS-UG福岡, Serverless Meetup Fukuoka 運営

Page 4: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

株式会社オルターブース

2015 年 3 月設立 (5 期目)Microsoft Azure を活用したソリューションを展開するクラウドインテグレーター2017 年 8 月 Japan Microsoft Partner of the Year (OSS on Azure) 受賞

Page 5: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

本セッションについて

Page 6: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

本セッションについて

Page 7: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

世界でたったひとつだけの、

自分だけのオリジナルソースを作ろう。

簡単に、お手軽に。あなたの「コレ、好き!」を作るお手伝い。

https://mysaucefactory.com/

Page 8: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

マイソースファクトリーの構成

アプリケーション インフラストラクチャ

Page 9: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

マイソースファクトリーの構成

アプリケーション インフラストラクチャ

Page 10: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

クラウドネイティブ技術

https://github.com/cncf/toc/blob/master/DEFINITION.md

Page 11: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

クラウドネイティブのメリット

https://github.com/cncf/toc/blob/master/DEFINITION.md

Page 12: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

クラウドネイティブを実践する上で大事なこと

アーキテクチャ

Page 13: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

連携

Page 14: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

連携

Page 15: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ASP.NET Core の採用

Page 16: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース
Page 17: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

• MVC (Model-View-Controller)

• Web API

Page 18: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

バージョン マイソースファクトリー 取り組んだこと

1.0-preview 開発初期~ベータ版 .xproj + project.json

1.0 正式公開 .csproj に移行

2.0

正式公開継続的なアップデート

(大きな問題は起きていない)2.1

2.2

Page 19: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

なぜ .NET Core を最初から採用したか

Page 20: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

なぜ .NET Core を最初から採用したか

Page 21: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

なぜ .NET Framework ではなかった?

Page 22: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

開発当初に苦労したこと

Page 23: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

API バージョニング

/api/v1/resources

/api/v2/resources

Page 24: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

API バージョニング

Page 25: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Swagger で API のデバッグ

Page 26: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース
Page 27: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

リポジトリパターンの採用

Page 28: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

リポジトリパターンとは

https://docs.microsoft.com/ja-jp/dotnet/standard/microservices-

architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-design

Page 29: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

リポジトリパターンとは

データ ソースへのアクセスに必要なロジックをカプセル化する

クラスまたはコンポーネントです。

リポジトリは一般的なデータ アクセス機能を一元管理して

保守性を向上させ、ドメイン モデル レイヤーからデータベース

にアクセスするためのインフラストラクチャやテクノロジを切り

離します。

Page 30: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース
Page 31: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Data Source

Repository

Controller

View

Model

Service

Data Source

Model

Controller

View

Page 32: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Data Source

Model

Controller

View

Page 33: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Data Source

Repository

Controller

View

Model

Service

Page 34: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

連携

Page 35: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

初代アーキテクチャ

Page 36: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

全体の利用ツール・クラウド

ACS

WebApps

BLOB

SQLDatabase

DocumentDB

LogicApp

Functions

OMS

CloudFrontRoute53

S3

API Gateway

ECR

Cognito

IAM

Lambda

CloudWatch

Page 37: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

• .NET Core で動く

• コンテナーで本番環境

• ログの可視化

• CI/CD による自動化

• 自動フェイルオーバー

リリースに向けたアーキテクチャ方針 (2016年)

Page 38: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

.NET Core が動く

Page 39: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

コンテナーで本番環境

Page 40: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseContainer Service

Page 41: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseContainer Service

Single Page Application

Page 42: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseContainer Service

Page 43: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseContainer Service

Page 44: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseContainer Service

• 自前で認証を持ちたくなかった

• Azure AD B2C はデザインの一貫性が合わなかった

• AWS で実現

Page 45: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseContainer Service

Azure と AWS のマルチクラウド

Page 46: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ログの可視化Azure Container Service

Storage

Page 47: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

CI/CD による自動化

実行結果

Push

Polling

Azure Container Service

docker swarm

docker pulldocker push

docker build

Amazon EC2 Container Registry

blue green

開発メンバー

Page 48: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

フェイルオーバー

Page 49: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Azure での構成も検討したが

Amazon Route 53

Web Apps Amazon CloudFront

Amazon S3

マイソースファクトリー

https://mysaucefactory.com

Page 50: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

連携

Page 51: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース
Page 52: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

時代・環境の変化 (2017年)

Page 53: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

サービス提供を持続可能な運用形式へのシフト

運用の手間を無くす

マネージメントレベルの高いサービスへ乗り換え

解決するには?

Page 54: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

マネージメントレベルの高いサービス

https://docs.microsoft.com/ja-jp/azure/security/security-management-and-monitoring-

overview

Page 55: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

連携

Page 56: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

2代目アーキテクチャ

Page 57: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

改善の目的 (2018年~)

Page 58: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseContainer Service

Page 59: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps

Page 60: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps• コンテナーホスティングを辞めた

• Azure Container Service から Web Apps へ乗り換え

Page 61: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps

Azure Container 上のコンテナーで動いていた一部処理を Function Apps に移植

Page 62: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps

Azure Container Service 上でバッチ起動していたコンテナーを Azure Container Instance で起動するように移植

Page 63: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps

• サービスプリンシバルからの脱却

• コードにアスセスキーを埋め込まない

• SDK が期限付きトークンを自動的に取得/再取得

• これまで通り Azure サービスに対しアクセス可能( Azure AD 認証をサポートするサービスのみ)

Page 64: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャ (検討中)

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps

Azure AD B2C

認証機能を Azure AD B2C へ移行

Page 65: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

新旧リソース切り替え

Container Service

Web Apps

Amazon Route 53 SQL Database

Page 66: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

リソースのサブスクリプション移動

旧 Subscription 新 Subscription

Page 67: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

リソースのサブスクリプション移動

Web Apps

Amazon Route 53 SQL Database

Web Apps

Page 68: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Azure Container Service からWeb Apps へAzure Container Service Web Apps

as a Service IaaS PaaS

アップデート対応 自前で対応 プラットフォーム側対応

サービス監視 自前で対応 プラットフォーム側対応

セキュリティ 自前で対応 プラットフォーム側対応

Infrastructure as Code Terraform, Ansible Terraform

環境構築OS からミドルウェア、アプリデプ

ロイまで全て自前で対応アプリデプロイするだけ

Page 69: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Web Apps に変えて

Page 70: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Kubernetes (k8s) に変えなかったの?

Page 71: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ログの可視化Azure Container Service

Storage

Page 72: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ログの可視化

Web Apps Application Insights

アプリにApplication Insights SDK を組み込み

Page 73: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Elasticsearch + Fluentd + Kibana から Application Insights へ

Elasticsearch + Fluentd +

KibanaApplication Insights

as a Service IaaS SaaS

アップデート対応 自前で対応 プラットフォーム側対応

サービス監視 自前で対応 プラットフォーム側対応

セキュリティ 自前で対応 プラットフォーム側対応

Infrastructure as Code Terraform, Ansible Terraform

環境構築OS からミドルウェアまで全て

自前で対応サービスを利用する

Page 74: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Application Insights に変えて

Page 75: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

CI/CD による自動化

実行結果

Push

Polling

Azure Container Service

docker swarm

docker pulldocker push

docker build

Amazon EC2 Container Registry

blue green

開発メンバー

Page 76: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

CI/CD による自動化

実行結果

Push

Polling

Azure DevOps

Web Apps Web Apps

ReleaseBuild

開発メンバー

Page 77: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Jenkins から Azure DevOps へJenkins Azure DevOps

as a Service IaaS SaaS

アップデート対応 自前で対応 プラットフォーム側対応

サービス監視 自前で対応 プラットフォーム側対応

セキュリティ 自前で対応 プラットフォーム側対応

Infrastructure as Code Terraform, Ansible -

環境構築OS からミドルウェアまで全て

自前で対応。 Jenkins職人サービスを利用する

Page 78: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Azure DevOps に変えて

Page 79: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

連携

Page 80: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ログの送信先

Page 81: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ログの送信先

Page 82: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース
Page 83: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

メールのアーキテクチャ

Page 84: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps

Page 85: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

メールのアーキテクチャ

Page 86: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

サーバーレスで実現する負荷分散メール

API

Page 87: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

責任範囲が明確になる

API

Page 88: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

責任範囲が明確になる

API

Page 89: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

責任範囲が明確になる

API

Page 90: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

シークレットの保護(= 機密情報)

Page 91: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

AWS LambdaAmazon

API Gateway

Amazon Cognito

Web Apps

SQL DatabaseWeb Apps

Managed Identities

Container Instance

Function Apps

Page 92: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

https://12factor.net/ja/config

Page 93: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Secret Manager

Development Staging / Production

Azure Key Vault

Managed Identities

secrets.json

Page 94: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Azure Key Vault でシークレットを管理する理由

Page 95: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

Managed Identities

Page 96: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース
Page 97: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

分散キャッシュ

Page 98: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

• 分散キャッシュ

キャッシュ

Page 99: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース
Page 100: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

まとめ

Page 101: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ASP.NET Core に挑戦して良かった

Page 102: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

ASP.NET Core に挑戦して良かった

Page 103: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

アーキテクチャに関するドキュメントが豊富

https://dot.net/architecture

Page 104: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

継続的クラウドネイティブ

Page 105: MW01 - eventmarketing.blob.core.windows.net · de:code 2019 MW01 ASP.NET Core + Azure で支える 熟成3 年「私だけのポン酢」アーキテクチャ 株式会社オルターブース

© 2018 Microsoft Corporation. All rights reserved.

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

© AlterBooth,inc.

本情報の内容 (添付文書、リンク先などを含む) は、de:code 2019 開催日 (2019年5月29~30日) 時点のものであり、予告なく変更される場合があります。

本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。