Slide 1

Slide 1 text

Copyright © OPTiM Corp. All Right Reserved. Yak shaving を避けながら AWS Fargateを使った話 Oct 24, 2019 株式会社 オプティム Takahashi

Slide 2

Slide 2 text

Copyright © OPTiM Corp. All Right Reserved. 2  高橋(Takahashi) プラットフォーム事業部 DXユニット マネージャー  SNS • Twitter:@yukey1031(ukitiyan) • Github:@ukitiyan • SlideShare: @ukitiyan(https://www.slideshare.net/ukitiyan) • Qiita: @ukitiyan(https://qiita.com/ukitiyan)  備考 • 2018/09 OPTiM入社(無事に1年経過!) • 好きなCIOSサービス:Messaging • Javaとサーバーレスを好む • 過去にマギーと呼ばれていた

Slide 3

Slide 3 text

Copyright © OPTiM Corp. All Right Reserved. 3

Slide 4

Slide 4 text

Copyright © OPTiM Corp. All Right Reserved. 4

Slide 5

Slide 5 text

Copyright © OPTiM Corp. All Right Reserved. 5 本題

Slide 6

Slide 6 text

Copyright © OPTiM Corp. All Right Reserved. 6 お話すること AWS Fargate AWS CloudFormation

Slide 7

Slide 7 text

Copyright © OPTiM Corp. All Right Reserved. 7 キーワード ある問題を解決しようとするとそのためにまた別の問題が 発生する、ということが繰り返し起こる現象

Slide 8

Slide 8 text

Copyright © OPTiM Corp. All Right Reserved. 8 シナリオ(仮定) CIOSを活用しながらも アプリのみ AWSにデプロイするDX案件 (期間限定だけど今すぐに) というシナリオ

Slide 9

Slide 9 text

Copyright © OPTiM Corp. All Right Reserved. 9 構成 Cloud IoT OS ( CIOS ) App App App IdM App Cluster App App Messaging (Pub/Sub) FileStorage Streaming ここだけ AWSに Appは 若いメンバーが実装

Slide 10

Slide 10 text

Copyright © OPTiM Corp. All Right Reserved. 10 構成 Cloud IoT OS ( CIOS ) App App App IdM App App Messaging (Pub/Sub) FileStorage Streaming AWSに Appをデプロイ

Slide 11

Slide 11 text

Copyright © OPTiM Corp. All Right Reserved. 11  Java, Vue.js, PHP... で実装されたマイクロサービス前提のAppのデプロイに対 応する。  CIOSとの親和性は残したまま、本件に伴うApp カスタマイズは極力行わない。  一時的な公開となるため、極力サーバー運用に手を掛けない。  基本的にこの周辺は自分が行う。 • 若いメンバーはApp実装しながら、私の行動を見つめている。という妄想。。 考える事

Slide 12

Slide 12 text

Copyright © OPTiM Corp. All Right Reserved. 12 Fargate一択 なのは確か AWS Fargate

Slide 13

Slide 13 text

Copyright © OPTiM Corp. All Right Reserved. 13 AWS構成 VPC Availability Zone Availability Zone Public subnet Bastion Public subnet Private subnet Private subnet DT Web Sub App WebAPI Video Server DT App DB subnet DB subnet Ras Front

Slide 14

Slide 14 text

Copyright © OPTiM Corp. All Right Reserved. 14 先程の妄想。。

Slide 15

Slide 15 text

Copyright © OPTiM Corp. All Right Reserved. 15 何食わぬ顔で `シュっ` とやりたい

Slide 16

Slide 16 text

Copyright © OPTiM Corp. All Right Reserved. 16 シュっとやる

Slide 17

Slide 17 text

Copyright © OPTiM Corp. All Right Reserved. 17 CloudFormationで `シュっ` とやる Not Terraform

Slide 18

Slide 18 text

Copyright © OPTiM Corp. All Right Reserved. 18 AWS SamplesのCFテンプレートを活用 Amazon ECSおよびAWS CloudFormation(YAML)で コンテナー化されたマイクロサービスをデプロイするための リファレンスアーキテクチャ(Not Fargate)

Slide 19

Slide 19 text

Copyright © OPTiM Corp. All Right Reserved. 19  Fargateに対応する。  今回App用のServiceとAWSWaf, Bastion, RDS, S3等各種InfrastructureのCFテンプ レートをネストで実装する。 (AutoScalingも必要に応じて設定  BastionのCloud-InitでDDL, DMLの実行をする。  マイクロサービスに対応するために、ECS ServiceDiscovery、TaskRoleへの AWSXRayDaemonWriteAccessと各TaskへのxrayデーモンのサイドカーをCFテンプ レートに実装する。  既存のパイプラインを使いAppのDockerImageは所定のECRにプッシュされる前提。 対応事項 参照:

Slide 20

Slide 20 text

Copyright © OPTiM Corp. All Right Reserved. 20  aws cloudformation create-stackコマンドでデプロイ実行。 環境構築 stack起動 20分 シュっと完成!!

Slide 21

Slide 21 text

Copyright © OPTiM Corp. All Right Reserved. 21 他にやっておくべきこと

Slide 22

Slide 22 text

Copyright © OPTiM Corp. All Right Reserved. 22 マイクロサービス前提なAppを 連携するための サービスディスカバリー

Slide 23

Slide 23 text

Copyright © OPTiM Corp. All Right Reserved. 23 Amazon ECS Service Discovery https://aws.amazon.com/jp/blogs/news/amazon-ecs-service-discovery/ App Mesh とは 統合しない

Slide 24

Slide 24 text

Copyright © OPTiM Corp. All Right Reserved. 24 ECS Service Discovery Amazon Route 53 Hosted zone ECS(ServiceDiscovery) ECSServiceDiscoveryNamespace: Type: AWS::ServiceDiscovery::PrivateDnsNamespace Properties: Vpc: !Ref VPC Name: "showroom.local" Resources: ServiceDiscoveryRecord: Type: "AWS::ServiceDiscovery::Service" Properties: Name: ”dt-app” DnsConfig: NamespaceId: !Ref ECSServiceDiscoveryNamespace Route table showroom.local dt-app.showroom.local  PrivateDNSにAレコードが追加され対象サービス に自動紐づけ

Slide 25

Slide 25 text

Copyright © OPTiM Corp. All Right Reserved. 25 サービス間の連携をトレースする 分散トレーシング

Slide 26

Slide 26 text

Copyright © OPTiM Corp. All Right Reserved. 26 AWS X-Ray https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/aws-xray.html App Meshは使わない

Slide 27

Slide 27 text

Copyright © OPTiM Corp. All Right Reserved. 27 X-Ray AWS X-Ray Task App x-ray-demon com.amazonaws aws-xray-recorder-sdk-spring 2.3.0 @Aspect @Component public class XRayInspector extends AbstractXRayInterceptor { ... } e.g. Spring Appの場合 抜 粋

Slide 28

Slide 28 text

Copyright © OPTiM Corp. All Right Reserved. 28 マイクロサービス間のメトリクスを 収集、集計、要約

Slide 29

Slide 29 text

Copyright © OPTiM Corp. All Right Reserved. 29 Amazon ECS Container Insights 因みに、CF未対応

Slide 30

Slide 30 text

Copyright © OPTiM Corp. All Right Reserved. 30 Amazon ECS Container Insights  現在、AWS CloudFormation を使用して新しいクラスターを作成する場合、Container Insights を有効にすることはできません。  深追いせずに、AWS CLI のバージョン 1.16.200 以降で以下2コマンドで有効にする。 $ aws ecs put-account-setting --name "containerInsights" --value "enabled" $ aws ecs update-cluster-settings --cluster showroom ¥ --settings name=containerInsights,value=enabled

Slide 31

Slide 31 text

Copyright © OPTiM Corp. All Right Reserved. 31 サービス単位での部分リリース

Slide 32

Slide 32 text

Copyright © OPTiM Corp. All Right Reserved. 32 kayac/ecspresso

Slide 33

Slide 33 text

Copyright © OPTiM Corp. All Right Reserved. 33 kayac/ecspresso  面白法人カヤックさん から提供されているGo製のECSデプロイツール。  CloudFormationでのサービスのデプロイも可能だが、副次的に他サービス が更新されるリスクがあるため、サービス単体でデプロイ可能は幸せ。  AWS CLIのラッパーのため、CFでサポートされていないAPI(例えば FireLens)等の対応が先行する。 $ ecspresso init --region ap-northeast-1 --cluster rasshowroom ¥ --service webapi-service --config webapi.yaml $ ls ecs-service-def.json ecs-task-def.json webapi.yaml $ ecspresso deploy --config webapi.yaml ・init して deploy するだけでサービスの更新

Slide 34

Slide 34 text

Copyright © OPTiM Corp. All Right Reserved. 34 まとめ

Slide 35

Slide 35 text

Copyright © OPTiM Corp. All Right Reserved. 35 本質的に、どうすれば Yak Shavingを避けられるか?

Slide 36

Slide 36 text

Copyright © OPTiM Corp. All Right Reserved. 36 ご清聴ありがとうございました!!

Slide 37

Slide 37 text

Copyright © OPTiM Corp. All Right Reserved. ‹#› © 2019 OPTiM Corp.