Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS Code Build / Pipelineで攻めのサービス改善

1,096 views

Published on

2018/3/12に行われたAWS Startup Day Tokyoで登壇した際の発表資料です。
https://aws.amazon.com/jp/startup-day/tokyo/sessions/#T02

Published in: Technology
  • Be the first to comment

AWS Code Build / Pipelineで攻めのサービス改善

  1. 1. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Code Build / Pipelineで 攻めのサービス改善 株式会社Voicy 窪田 雄司 | 2018−03−12
  2. 2. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 株式会社 Voicy CTO 窪田 雄司 @yuji0316 1999年からSIerで金融、製造、ECといったシステムの開発やマネ ジメントを経験。 2016年から声のベンチャー企業であるVoicyにジョイン。現在はフ ロント、サーバー、アプリ、インフラをやりながら、プロジェク トマネジメントやチームビルディングも行う。 好きなAWS:Elastic Beanstalk 好きな言語:静的型付け言語 自己紹介
  3. 3. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. サービス紹介 スマホ1つでどこでも収録 生活のあらゆる場所から声を届けます パソコン スマート フォン スマート スピーカー ロボット … and more iPhone & Android
  4. 4. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. サービス紹介 今年に入り、多くのインフルエンサーの方が配信者として参加! はあちゅうさん イケダハヤトさん 本島彩帆里さん 家入一真さん 塩谷舞さん
  5. 5. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. サービス紹介 その結果、ユーザー数が40倍に増加! 40倍
  6. 6. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. アクセス増加問題 上がり続けるアクセス数!
  7. 7. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. アクセス増加問題 でも大丈夫!
  8. 8. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. アクセス増加問題 僕たちにはElastic Beanstalkがある! Availability Zone Availability Zone ユーザー ELB EC2 EC2 RDS RDS (Backup) Auto Scaling group Elastic Beanstalk container
  9. 9. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 攻めのサービス改善 アクセス負荷はひとまず問題なし 守りの心配が無くなったので このチャンスに攻めのサービス改善!
  10. 10. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 攻めのサービス改善 現在フルコミットエンジニア2人(+たまにお手伝い数名)で
  11. 11. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 攻めのサービス改善 … and more 多くのデバイスに対応するための パソコン スマート フォン スマート スピーカー ロボット iPhone & Android
  12. 12. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 攻めのサービス改善 多くのタスクをこなすには
  13. 13. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 攻めのサービス改善 とにかく自動化!
  14. 14. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 攻めのサービス改善 運用リリーステスト開発 とは言え、 いつまで続くかわからないこのチャンス期間でどこを自動化するべきか ※ 結果的にはおかげさまで現在もサービスはどんどん伸び続けております m(_ _)m
  15. 15. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. リリース作業自動化 運用リリーステスト開発 とは言え、 いつまで続くかわからないこのチャンス期間でどこを自動化するべきか ※ 結果的にはおかげさまで現在もサービスはどんどん伸び続けております m(_ _)m ここにしました
  16. 16. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. リリース作業自動化 これまでの課題 ・WEB、アプリ、スマートスピーカなど多展開のためリリース作業が多い ・リリースモジュールのビルドコマンドが複雑。テスト用/本場用でも違う ・リリース手順が ビルド → マネジメンコンソール開く→ デプロイ と面倒 ・テスト環境にデプロイするつもりが本番環境にデプロイしたことがある ・本番環境のモジュールがmasterブランチにプッシュされていなかったことがある
  17. 17. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. リリース作業自動化 AWS CodeBuild & AWS Code Pipeline による自動化で全て解決! AWS CodeBuild AWS CodePipeline BuildSource Deploy AWS Elastic Beanstalk GitHub
  18. 18. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. リリース作業自動化 AWS CodeBuild & AWS Code Pipeline 採用理由 ・設定がとにかく簡単 ・元々使用していたGitHubとElastic Beanstalkに対応 ・複雑なビルドコマンドもそのまま再利用可能 ・以前より導入を検討しており、調査中だった AWS CodeBuild AWS CodePipeline
  19. 19. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CodeBuild AWS CodeBuild ちょっとハマったポイント1 Go 1.8が入ってない • CodeBuildではビルドするたびに新しくDocker コンテナが作成される • VoicyではGoを使用しており、パッケージ管理 ツールとしてdepを使用している • depはGo 1.8以上が必要だが、 作成されるコン テナにはGo 1.7しか入っていなかった • buildspec.ymlで最初にGo 1.8をインストールし てからビルドコマンドを実行するように指定 ・・・ phases: install: commands: # Install Go 1.8 & dep command - curl -sSL -o /tmp/go.tar.gz https://storage.googleapis.com/golang/go1.8.5.linux-amd64.tar.gz - tar -C /usr/local -xzf /tmp/go.tar.gz - export GOPATH=${HOME}/go && echo ${GOPATH} - export PATH=/usr/local/go/bin:${GOPATH}/bin:${PATH} && echo ${PATH} - go get -u github.com/golang/dep/cmd/dep pre_build: commands: # Get go packages - mkdir -p ${GOPATH}/${SRC_DIR} && cd ${GOPATH}/${SRC_DIR} - mv ${CODEBUILD_SRC_DIR}/* ${CODEBUILD_SRC_DIR}/.??* . - dep ensure ・・・ buildspec.yml (抜粋)
  20. 20. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CodeBuild AWS CodeBuild ちょっとハマったポイント2 Dockerコンテナから外部に繋げない • VPC内でCodeBuildが作成するDockerコンテナ はパブリックIPが無いため直接外部に繋げない • そのためdepで必要なパッケージが取得できな い • 外部へ繋ぐためにはNATゲートウェイを作成し、 そこへルーティングする必要がある • NATゲートウェイの設定を間違えて、なかなか 外部に繋がらずにハマってしまった VPC subnet 2 VPC VPC subnet 1 VPC NAT gateway Internet ルートテーブルで外部へのリクエスト をNAT gatewayにルーティング 外部へリクエストを送信 Code Buildの Dockerコンテナ
  21. 21. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CodeBuild AWS CodeBuild ちょっとハマったポイント2 Dockerコンテナから外部に繋げない • VPC内でCodeBuildが作成するDockerコンテナ はパブリックIPが無いため直接外部に繋げない • そのためdepで必要なパッケージが取得できな い • 外部へ繋ぐためにはNATゲートウェイを作成し、 そこへルーティングする必要がある • NATゲートウェイの設定を間違えて、なかなか 外部に繋がらずにハマってしまった VPC subnet 2 VPC VPC subnet 1 VPC NAT gateway Code Buildの Dockerコンテナ Internet 当初間違えてDockerコン テナと同じサブネットに NAT GWを作成していた
  22. 22. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. まとめ • AWS CodePipelineの設定はハマるところが探せないくらいシンプルで簡単! • AWS CodeBuildは最初のビルド設定は多少の試行錯誤が必要だが、 数回のデプロイ作業で元が取れる! • Elastic Beanstalkで運用しているなら使うべき! • 今後はAWS CodeCommitやAWS CodeDeployとも連携していきたい! • LambdaやEC2上のバッチ処理もリリース自動化を行う!
  23. 23. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 声で伝わる 声で彩る 声の可能性をもっと広げる Voice Tech Company

×