Slide 1

Slide 1 text

0 Copyright© System Integrator Corp. All rights reserved. System Integrator SaaS on AWS 2022 立ち上げ期のSaaSを支えるAWSの技術 ~新規事業SaaSを1年開発/運用した話~ 2022年10月26日 株式会社システムインテグレータ 横山弘典

Slide 2

Slide 2 text

1 Copyright© System Integrator Corp. All rights reserved. System Integrator 横山 弘典 (@yokoyantech) • 株式会社システムインテグレータ • 製品企画室 • 宮崎→福岡→埼玉 • AWS歴 • 約8年 • SAP、DOP、SCS、DBS • JAWS DAYS • 2020年登壇 • 2021年登壇

Slide 3

Slide 3 text

2 Copyright© System Integrator Corp. All rights reserved. System Integrator 株式会社システムインテグレータ • 埼玉県さいたま市にある会社 • 東証スタンダード • 創業28年目 • 事業内容 • 自社パッケージソフト(EC、ERPなど) • 企画、開発 • カスタマイズ • 自社WEBサービス • 開発、運営 • 技術スタック • AWS、Azure • Java、C#、Python、Rubyなど

Slide 4

Slide 4 text

3 Copyright© System Integrator Corp. All rights reserved. System Integrator ボッチ参加なので AWS仲間を作りたい!

Slide 5

Slide 5 text

4 Copyright© System Integrator Corp. All rights reserved. System Integrator 体験談 共感 実践 今日の目的

Slide 6

Slide 6 text

5 Copyright© System Integrator Corp. All rights reserved. System Integrator

Slide 7

Slide 7 text

6 Copyright© System Integrator Corp. All rights reserved. System Integrator IDEA GARDENとは? アイデアを創出し みんなで育てるクラウドサービス

Slide 8

Slide 8 text

7 Copyright© System Integrator Corp. All rights reserved. System Integrator

Slide 9

Slide 9 text

8 Copyright© System Integrator Corp. All rights reserved. System Integrator 2週間で 400アイデア

Slide 10

Slide 10 text

9 Copyright© System Integrator Corp. All rights reserved. System Integrator Mission1 3ヶ月で動く プロトをつくる Mission2 SaaS利用状況の 見える化 Mission3 1ヶ月でイベント 登録サイトをつくる 今日お話すること

Slide 11

Slide 11 text

10 Copyright© System Integrator Corp. All rights reserved. System Integrator Mission1 3ヶ月で動く プロトをつくる Mission2 SaaS利用状況の 見える化 Mission3 1ヶ月でイベント 登録サイトをつくる 今日お話すること

Slide 12

Slide 12 text

11 Copyright© System Integrator Corp. All rights reserved. System Integrator 社員発の企画が実現

Slide 13

Slide 13 text

12 Copyright© System Integrator Corp. All rights reserved. System Integrator リーダー 横山 フロントエンド 後輩A バックエンド 後輩B 3人の開発チーム

Slide 14

Slide 14 text

13 Copyright© System Integrator Corp. All rights reserved. System Integrator 実装以外全部 (要件整理/クラウド) 横山 見た目 (フロントエンド) 後輩A 内部処理 (バックエンド) 後輩B 3人の開発チーム

Slide 15

Slide 15 text

14 Copyright© System Integrator Corp. All rights reserved. System Integrator 限られた人数で やることはいっぱい アプリ開発 インフラ開発 各種サポート

Slide 16

Slide 16 text

15 Copyright© System Integrator Corp. All rights reserved. System Integrator プロダクト関連 ビジョン策定 横山 プロダクトの方向づけ 横山 顧客課題の発見 横山 課題の仮説検証 横山 ユーザーインタビュー 横山 ウェビナー登壇 横山 お客様サポート 横山 プロジェクト管理 ロードマップ作成 横山 プロダクトバックログ整理 横山 スプリントプランニング 横山+α インフラ AWS設計 横山 AWS実装 横山 リリース作業 横山+α 運用監視 横山+α

Slide 17

Slide 17 text

16 Copyright© System Integrator Corp. All rights reserved. System Integrator 家族や子供との時間も 大切にしたい

Slide 18

Slide 18 text

17 Copyright© System Integrator Corp. All rights reserved. System Integrator 精神論で頑張らない AWSで仕組みを変える

Slide 19

Slide 19 text

18 Copyright© System Integrator Corp. All rights reserved. System Integrator CloudFormation ECS ECR <ミッション1> 3ヶ月で動くプロトタイプを作る

Slide 20

Slide 20 text

19 Copyright© System Integrator Corp. All rights reserved. System Integrator

Slide 21

Slide 21 text

20 Copyright© System Integrator Corp. All rights reserved. System Integrator CloudFormation ECS ECR <ミッション1> 3ヶ月で動くプロトタイプを作る

Slide 22

Slide 22 text

21 Copyright© System Integrator Corp. All rights reserved. System Integrator 手動のAWS構築は手間

Slide 23

Slide 23 text

22 Copyright© System Integrator Corp. All rights reserved. System Integrator # 他のスタックからパラメータ参照するためにOutputsで定義する Outputs: VPC: Value: !Ref VPC Export: Name: !Sub "${ENV}-VPC" VPCCIDR: Value: !Ref VPCCIDR Export: Name: !Sub "${ENV}-VPCCIDR" PublicSubnet1a: Value: !Ref PublicSubnet1a Export: Name: !Sub "${ENV}-PublicSubnet1a" CloudFormationのパラメータ化、スタック化

Slide 24

Slide 24 text

23 Copyright© System Integrator Corp. All rights reserved. System Integrator CloudFormation ECS ECR <ミッション1> 3ヶ月で動くプロトタイプを作る

Slide 25

Slide 25 text

24 Copyright© System Integrator Corp. All rights reserved. System Integrator EC2管理は手間

Slide 26

Slide 26 text

25 Copyright© System Integrator Corp. All rights reserved. System Integrator Private subnet VPC Availability Zone a Availability Zone c Public subnet ACM Route 53 VPN gateway ALB AWS Cloud RDS(Primary) S3 Fargate / ECS Cluster Service(Frontend) Node.js Task ECR Endpoints Customer gateway VPN connection 開発チーム 当社 Internet gateway Internet Application Image Push Push PrivateLink RDS(Standby) ElastiCache Redis ElastiCache Redis(Standby) Service(Backend) Rails Task

Slide 27

Slide 27 text

26 Copyright© System Integrator Corp. All rights reserved. System Integrator CloudFormation ECS ECR <ミッション1> 3ヶ月で動くプロトタイプを作る

Slide 28

Slide 28 text

27 Copyright© System Integrator Corp. All rights reserved. System Integrator 継続的に自動デプロイしたい

Slide 29

Slide 29 text

28 Copyright© System Integrator Corp. All rights reserved. System Integrator on: push: branches: - develop jobs: backend-deploy: runs-on: ubuntu-latest env: BACKEND_IMAGE_NAME: ${{ secrets.STAGING_BACKEND_ECR_REPOSITORY }} steps: - name: Checkout - name: Set up Docker Buildx - name: Configure AWS credentials (Staging) uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.STAGING_AWS_REGION }} - name: Login to Amazon ECR (Staging) id: login-ecr-staging uses: aws-actions/amazon-ecr-login@v1 - name: Build and push Backend image (Staging) uses: docker/build-push-action@v3 with: push: true context: ./backend tags: ${{ steps.login-ecr-staging.outputs.registry }}/${{ env.BACKEND_IMAGE_NAME }}:${{ github.sha }} GitHub Actionsによる ECR への自動プッシュ

Slide 30

Slide 30 text

29 Copyright© System Integrator Corp. All rights reserved. System Integrator AWS公式GitHub Actions(便利!)

Slide 31

Slide 31 text

30 Copyright© System Integrator Corp. All rights reserved. System Integrator steps: # 前ページからの続き - name: Download task definition run: aws ecs describe-task-definition --task-definition dev-idea-garden-backend --query taskDefinition > task-definition.json - name: Fill in the new image ID in the Amazon ECS task definition id: task-def uses: aws-actions/amazon-ecs-render-task-definition@v1 with: task-definition: task-definition.json container-name: dev-idea-garden-container-backend image: ${{ steps.login-ecr-staging.outputs.registry }}/${{ env.BACKEND_IMAGE_NAME }}:${{ github.sha }} - name: Deploy Amazon ECS task definition uses: aws-actions/amazon-ecs-deploy-task-definition@v1 with: task-definition: ${{ steps.task-def.outputs.task-definition }} service: dev-idea-garden-service-backend cluster: dev-idea-garden-cluster GitHub Actionsによる ECR への自動プッシュ→ECSデプロイ

Slide 32

Slide 32 text

31 Copyright© System Integrator Corp. All rights reserved. System Integrator Mission1 3ヶ月で動く プロトをつくる Mission2 SaaS利用状況の 見える化 Mission3 1ヶ月でイベント 登録サイトをつくる 今日お話すること

Slide 33

Slide 33 text

32 Copyright© System Integrator Corp. All rights reserved. System Integrator CloudWatch Container Insights Amazon QuickSight AWS Chatbot <ミッション2> SaaS利用状況の見える化

Slide 34

Slide 34 text

33 Copyright© System Integrator Corp. All rights reserved. System Integrator CloudWatch Container Insights Amazon QuickSight AWS Chatbot <ミッション2> SaaS利用状況の見える化

Slide 35

Slide 35 text

34 Copyright© System Integrator Corp. All rights reserved. System Integrator 手動で毎回集計するのは手間

Slide 36

Slide 36 text

35 Copyright© System Integrator Corp. All rights reserved. System Integrator AWS QuickSightによる利用状況の自動集計→メール通知 スキーマでのテナント分離は分析が面倒→行でテナント分離へ

Slide 37

Slide 37 text

36 Copyright© System Integrator Corp. All rights reserved. System Integrator 手動で毎回 ECS を起動するのは手間

Slide 38

Slide 38 text

37 Copyright© System Integrator Corp. All rights reserved. System Integrator CloudWatch Container Insights Amazon QuickSight AWS Chatbot <ミッション2> SaaS利用状況の見える化

Slide 39

Slide 39 text

38 Copyright© System Integrator Corp. All rights reserved. System Integrator LambdaによるECSタスク自動起動/停止→Slackへ通知

Slide 40

Slide 40 text

39 Copyright© System Integrator Corp. All rights reserved. System Integrator Mission1 3ヶ月で動く プロトをつくる Mission2 SaaS利用状況の 見える化 Mission3 1ヶ月でイベント 登録サイトをつくる 今日お話すること

Slide 41

Slide 41 text

40 Copyright© System Integrator Corp. All rights reserved. System Integrator

Slide 42

Slide 42 text

41 Copyright© System Integrator Corp. All rights reserved. System Integrator 簡単に別アプリを作りたい

Slide 43

Slide 43 text

42 Copyright© System Integrator Corp. All rights reserved. System Integrator API Gateway AWS Lambda AWS Amplify <ミッション3> 1ヶ月でイベント登録サイトを作る

Slide 44

Slide 44 text

43 Copyright© System Integrator Corp. All rights reserved. System Integrator VPC Availability Zone a Availability Zone c Public subnet Private subnet ACM Route 53 VPN gateway AWS Cloud (Entry App) RDS Customer gateway VPN connection 開発チーム 当社 Internet gateway Internet ElastiCache Redis Dev Amplify/ SSR SES Email Function URLs AWS Cloud(IDEA GARDEN) Private subnet VPC RDS ユーザー情報 移行Script ユーザー情報 移行Script API Gateway

Slide 45

Slide 45 text

44 Copyright© System Integrator Corp. All rights reserved. System Integrator 体験談 共感 実践 今日の目的

Slide 46

Slide 46 text

45 Copyright© System Integrator Corp. All rights reserved. System Integrator 精神論で頑張らない AWSで仕組みを変える

Slide 47

Slide 47 text

46 Copyright© System Integrator Corp. All rights reserved. System Integrator みなさんのSaaS立ち上げを 応援しています!

Slide 48

Slide 48 text

47 Copyright© System Integrator Corp. All rights reserved. System Integrator ※本資料掲載の情報・画像など、すべてのコンテンツの無断複写・転載を禁じます。