ビットバンク株式会社
Deploy Typescript Application
by
CodePipeline
〜CodePipelineを使用したLambdaデプロイについて〜
2018 / 8 / 24 bitbank LT Night #2 ~Node.js~
shogo ishikawa / bitbank, lnc
Copyright © bitbank, inc.
自己紹介
Resources:
 Introduction:
  Type: My::Introduction
  Properties:
Name: shogo ishikawa
Age: 11000b
Role: AWS engineer
   FavoriteService: CloudFormation
Hobby: SELinux
Copyright © bitbank, inc.
今回お話すること
サーバレスデプロイのCI/CD
してますか?
Copyright © bitbank, inc.
今回お話すること
TypeScriptでCodePipelineを使った
サーバレスデプロイを自動化する方法について
お話します。
Copyright © bitbank, inc.
CI / CDの導入のキッカケ
● 手動デプロイをしたくない
● ソースコード管理を確実にしたい
負担が増大して辛い 
リリース手順書
作業ミスの増大作業がしんどい
Git管理されてないソー
スがあるか不安
Copyright © bitbank, inc.
CI / CDの導入のメリット
● ソースコード管理を簡略化
● 手動デプロイの撲滅
● テストからデプロイまでの一連の作業を自動化
リリース自動化
手順書不要リリース楽
作業ミス減る
自動化されて安心
Copyright © bitbank, inc.
利用したサービス
● CodePipeline
● CodeBuild
● SAM
● Lambda
● CircleCI
Copyright © bitbank, inc.
CodePipelineとCodeBuild
● 様々なサービスと連携可能なパイプライン
Source Test Build Deploy
Github
CodeBuild
CloudFormation
...
S3
CodeCommit
ECS
Copyright © bitbank, inc.
SAMとは
● 端的に言うとCloudFormationにServerlessよりなサービスをプ
ロビジョニングできるよう拡張したもの。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Copyright © bitbank, inc.
構成図
Copyright © bitbank, inc.
デプロイのルール
● Githubのブランチはproductionとdevelopmentに分離
● CircleCIでテストパス後、CodePipelineをWebhookで呼び出す
Copyright © bitbank, inc.
なぜCircleCIから直接デプロイしないのか?
● CircleCIにAWSクレデンシャルを払い出したくなかった
● CodePipeline経由にすることで、承認フローも追加できるため
Copyright © bitbank, inc.
なぜTypeScriptなのか?
● データの型を定義できる
○ Lambdaの利用はサービス間のデータ連携が主になる
○ node: const id = event.invocationId;
● eventってこのJSON何者???
○ ts: 何が入ってくるか明示的に書かれているので安心
Copyright © bitbank, inc.
なぜTypeScriptでSAMなのか?
● sam-localを使ったローカルテスト
○ command: sam local invoke sampleEvent -t sample-template.yaml -e ./event.json
eventデータを用意する必要があるため、実データのダミーも残る
ため、いちいち内容を確認する必要がない
メンテナンス性が高くなる!
SAMテンプレートがLambdaの全てを語ってくれる
Copyright © bitbank, inc.
デモ
デモします。当日のみ
Copyright © bitbank, inc.
まとめ
● CI/CDを導入することでサーバレスデプロイを自動化
● CircleCIから直接デプロイするのではなくて、CodePipeline経由
でLambdaデプロイすることでAWSクレデンシャルを払い出さず
に済む
Copyright © bitbank, inc.
We're Hiring!
AWSエンジニアを募集しています。
● FaaS
○ Lambda with TypeScript
● CI / CDの構築
○ CodePipeline, CodeBuild
● Infrastructure as code
○ CloudFormation
● コンテナ導入
○ Fargete、Docker

Deploy TypeScript Application by CodePipeline

  • 1.
  • 2.
    Copyright © bitbank,inc. 自己紹介 Resources:  Introduction:   Type: My::Introduction   Properties: Name: shogo ishikawa Age: 11000b Role: AWS engineer    FavoriteService: CloudFormation Hobby: SELinux
  • 3.
    Copyright © bitbank,inc. 今回お話すること サーバレスデプロイのCI/CD してますか?
  • 4.
    Copyright © bitbank,inc. 今回お話すること TypeScriptでCodePipelineを使った サーバレスデプロイを自動化する方法について お話します。
  • 5.
    Copyright © bitbank,inc. CI / CDの導入のキッカケ ● 手動デプロイをしたくない ● ソースコード管理を確実にしたい 負担が増大して辛い  リリース手順書 作業ミスの増大作業がしんどい Git管理されてないソー スがあるか不安
  • 6.
    Copyright © bitbank,inc. CI / CDの導入のメリット ● ソースコード管理を簡略化 ● 手動デプロイの撲滅 ● テストからデプロイまでの一連の作業を自動化 リリース自動化 手順書不要リリース楽 作業ミス減る 自動化されて安心
  • 7.
    Copyright © bitbank,inc. 利用したサービス ● CodePipeline ● CodeBuild ● SAM ● Lambda ● CircleCI
  • 8.
    Copyright © bitbank,inc. CodePipelineとCodeBuild ● 様々なサービスと連携可能なパイプライン Source Test Build Deploy Github CodeBuild CloudFormation ... S3 CodeCommit ECS
  • 9.
    Copyright © bitbank,inc. SAMとは ● 端的に言うとCloudFormationにServerlessよりなサービスをプ ロビジョニングできるよう拡張したもの。 AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31
  • 10.
    Copyright © bitbank,inc. 構成図
  • 11.
    Copyright © bitbank,inc. デプロイのルール ● Githubのブランチはproductionとdevelopmentに分離 ● CircleCIでテストパス後、CodePipelineをWebhookで呼び出す
  • 12.
    Copyright © bitbank,inc. なぜCircleCIから直接デプロイしないのか? ● CircleCIにAWSクレデンシャルを払い出したくなかった ● CodePipeline経由にすることで、承認フローも追加できるため
  • 13.
    Copyright © bitbank,inc. なぜTypeScriptなのか? ● データの型を定義できる ○ Lambdaの利用はサービス間のデータ連携が主になる ○ node: const id = event.invocationId; ● eventってこのJSON何者??? ○ ts: 何が入ってくるか明示的に書かれているので安心
  • 14.
    Copyright © bitbank,inc. なぜTypeScriptでSAMなのか? ● sam-localを使ったローカルテスト ○ command: sam local invoke sampleEvent -t sample-template.yaml -e ./event.json eventデータを用意する必要があるため、実データのダミーも残る ため、いちいち内容を確認する必要がない メンテナンス性が高くなる! SAMテンプレートがLambdaの全てを語ってくれる
  • 15.
    Copyright © bitbank,inc. デモ デモします。当日のみ
  • 16.
    Copyright © bitbank,inc. まとめ ● CI/CDを導入することでサーバレスデプロイを自動化 ● CircleCIから直接デプロイするのではなくて、CodePipeline経由 でLambdaデプロイすることでAWSクレデンシャルを払い出さず に済む
  • 17.
    Copyright © bitbank,inc. We're Hiring! AWSエンジニアを募集しています。 ● FaaS ○ Lambda with TypeScript ● CI / CDの構築 ○ CodePipeline, CodeBuild ● Infrastructure as code ○ CloudFormation ● コンテナ導入 ○ Fargete、Docker