Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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-

  2. I am a GitKraken Ambassador, not a paid employee of

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

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

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

  6. 会社のこと https://www.rhizome-e.com/ ⚫ 株式会社リゾーム ⚫ 通称 #R社 ⚫ toB事業(主にショッピングセンター向け) ⚫

    所属チームはRailsがメイン ⚫ 運用はAWS / heroku
  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)
  8. 今回のサービスの概要 ⚫ ショッピングセンター向けWebサービス ⚫ 帳票出力有り ⚫ マルチテナントなクラウドサービス ⚫ もう少しでサービスイン

  9. 全体像 インフラ構成

  10. None
  11. 個別 インフラ構成

  12. Rails

  13. 帳票

  14. ログ分析

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

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

  17. CloudFormation https://aws.amazon.com/jp/cloudformation/ ⚫ インフラのガワを構築するのに利用 ⚫ VPC関連 ⚫ ECS Cluster ⚫

    SQS ⚫ Elasticsearch ⚫ Lambda(sam cli) ⚫ CloudWatch Logs ロググループ ⚫ S3 ⚫ IAM ⚫ etc…
  18. Terraform https://www.terraform.io/ ⚫ パラメータストアの管理に使用 ⚫ CloudFormationでは管理できないケースがある ⚫ https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/late st/UserGuide/aws-resource-ssm-parameter.html

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

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

  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に変換
  22. デプロイ手順 ⚫ デプロイやDBのメンテ用にEC2を作成 ⚫ EC2の起動テンプレートとansibleで作り直し可能 ⚫ 手元で動かせるように同様のDockerイメージも作成 ⚫ 各手順はすべてコマンドで実行 ⚫

    複雑なコマンドは手順をシェルスクリプトにしたりしている
  23. デプロイ手順 ⚫ 最新ソースをgit pull ⚫ terraform applyでパラメータストア更新 ⚫ CFnのOutputから環境変数作成 ⚫

    サービス定義・タスク定義のjson生成 ⚫ Dockerイメージのbuild・push ⚫ ECSサービスのデプロイ
  24. もっと簡単にデプロイしたい めんどくさい

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

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

  27. Rundeckでのデプロイ手順

  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