$30 off During Our Annual Pro Sale. View Details »

creating infra / 新サービスのインフラ作ってた話

ryosms
November 03, 2020

creating infra / 新サービスのインフラ作ってた話

合同勉強会 in 大都会岡山 -2020 Winter Online-

ryosms

November 03, 2020
Tweet

More Decks by ryosms

Other Decks in Technology

Transcript

  1. 新サービスのインフラ作ってた話
    @合同勉強会 in 大都会岡山 -2020 Winter Online-

    View Slide

  2. I am a GitKraken Ambassador, not a paid employee of GitKraken by Axosoft.
    INTRODUCE MYSELF
    Ryo Sumasu
    @ryosms
    #gbdaitokai

    View Slide

  3. 拍手アプリ
    https://syobochim.hatenablog.com/entry/2020/10/31/205851
    ⚫ ↓にアクセスすると拍手ができます
    ⚫ 拍手してもらえるとハゲみになります
    ⚫ https://dprn9mw3rdpyz.cloudfront.net/?id=c
    466f4d0-00e3-4271-a626-93a09e705ce4

    View Slide

  4. AGENDA
    ⚫ 前置き
    ⚫ インフラ構成
    ⚫ デプロイ周り

    View Slide

  5. 会社・前業務・サービス内容
    前置き

    View Slide

  6. 会社のこと
    https://www.rhizome-e.com/
    ⚫ 株式会社リゾーム
    ⚫ 通称 #R社
    ⚫ toB事業(主にショッピングセンター向け)
    ⚫ 所属チームはRailsがメイン
    ⚫ 運用はAWS / heroku

    View Slide

  7. 前にやってた業務(抜粋)
    ⚫ toCサイト(閉鎖済み)
    ⚫ Spring Boot + Docker + Elastic Beanstalk
    ⚫ Rundeck構築
    ⚫ 社内システムの構築
    ⚫ 主力商品(Rails)の検証環境構築の簡易化
    ⚫ Vue.js + Cognito + AWS Amplify
    ⚫ API Gateway + AWS Lambda(Golang) + DynamoDB
    ⚫ Elastic Beanstalk (Docker multi container)

    View Slide

  8. 今回のサービスの概要
    ⚫ ショッピングセンター向けWebサービス
    ⚫ 帳票出力有り
    ⚫ マルチテナントなクラウドサービス
    ⚫ もう少しでサービスイン

    View Slide

  9. 全体像
    インフラ構成

    View Slide

  10. View Slide

  11. 個別
    インフラ構成

    View Slide

  12. Rails

    View Slide

  13. 帳票

    View Slide

  14. ログ分析

    View Slide

  15. ツールとか、デプロイ方法とか
    デプロイ周り

    View Slide

  16. デプロイツール
    ⚫ CloudFormation
    ⚫ Terraform
    ⚫ ecspresso

    View Slide

  17. CloudFormation
    https://aws.amazon.com/jp/cloudformation/
    ⚫ インフラのガワを構築するのに利用
    ⚫ VPC関連
    ⚫ ECS Cluster
    ⚫ SQS
    ⚫ Elasticsearch
    ⚫ Lambda(sam cli)
    ⚫ CloudWatch Logs ロググループ
    ⚫ S3
    ⚫ IAM
    ⚫ etc…

    View Slide

  18. Terraform
    https://www.terraform.io/
    ⚫ パラメータストアの管理に使用
    ⚫ CloudFormationでは管理できないケースがある
    ⚫ https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/late
    st/UserGuide/aws-resource-ssm-parameter.html

    View Slide

  19. ecspresso
    https://github.com/kayac/ecspresso
    ⚫ ECSサービスのデプロイに使用
    ⚫ config.yml
    ⚫ service-def.json
    ⚫ task-def.json

    View Slide

  20. ecspresso
    https://twitter.com/ryosms/status/1219871032485404675

    View Slide

  21. ecspresso
    https://github.com/kayac/ecspresso
    ⚫ ECSサービスのデプロイに使用
    ⚫ config.yml
    ⚫ service-def.json service-def.yml
    ⚫ task-def.json task-def.yml
    ⚫ yqを利用してyml→jsonに変換

    View Slide

  22. デプロイ手順
    ⚫ デプロイやDBのメンテ用にEC2を作成
    ⚫ EC2の起動テンプレートとansibleで作り直し可能
    ⚫ 手元で動かせるように同様のDockerイメージも作成
    ⚫ 各手順はすべてコマンドで実行
    ⚫ 複雑なコマンドは手順をシェルスクリプトにしたりしている

    View Slide

  23. デプロイ手順
    ⚫ 最新ソースをgit pull
    ⚫ terraform applyでパラメータストア更新
    ⚫ CFnのOutputから環境変数作成
    ⚫ サービス定義・タスク定義のjson生成
    ⚫ Dockerイメージのbuild・push
    ⚫ ECSサービスのデプロイ

    View Slide

  24. もっと簡単にデプロイしたい
    めんどくさい

    View Slide

  25. めんどくさい処理はRundeckにやらせよう
    Rundeck

    View Slide

  26. Rundeckでのデプロイ手順
    ⚫ RundeckのWebコンソールにログインする
    ⚫ 本プロジェクトのページに移動する
    ⚫ デプロイ用のJobを実行する

    View Slide

  27. Rundeckでのデプロイ手順

    View Slide

  28. I am a GitKraken Ambassador, not a paid employee of GitKraken by Axosoft.
    Use my referral URL to be entered to win a Nintendo Switch!
    www.gitkraken.com/invite/xKSqCHYi

    View Slide