Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

How you can speed up serverless development by local

451 vues

Publié le

ピクスタ株式会社 第五回開発合宿の成果発表資料です。
「How you can speed up serverless development by local」といタイトルで、サーバレス開発におけるローカル開発環境の構築および、開発生産性向上のポイントをまとめました。

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

How you can speed up serverless development by local

  1. 1. How you can speed up Serverless development by local ピクスタ株式会社 星直史 16545027 Photo by Fast&Slow
  2. 2. はじめに 資料は後ほど公開します 撮影OK (ただし、シャッター音は控えめに) 実況も大歓迎です #pixta
  3. 3. 自己紹介 2018年1月より開発部の部長に就任。 エンジニアの採用、育成、組織作りに取り組んでいる。 星直史 @NaoshiHoshi
  4. 4. ピクスタのご紹介
  5. 5. PIXTAのご紹介
  6. 6. fotowa のご紹介
  7. 7. Snapmart のご紹介
  8. 8. ● 現状確認 ● テスタビリティをこじあける アジェンダ 話すこと 話さないこと ● サイズとピラミッドとループ ● そこから先へ ● 何を作ったか(!) ● Golangの書き方や使用感など 今回の開発合宿の目標はココ!
  9. 9. Special thanks
  10. 10. ● 現状確認 ● テスタビリティをこじあける アジェンダ 話すこと 話さないこと ● サイズとピラミッドとループ ● そこから先へ ● 何を作ったか(!) ● Golangの書き方や使用感など
  11. 11. ● 109行のコード、1つの関数 ● 重複コード ● AWS DynamoDB SDKのラッ パーが使えていない ● テストが存在しない ● ローカルで回せていない ● デプロイに時間がかかる → 開発継続に備えて自動テスト を書いて振る舞いが変わっていな いことを確かめる環境を整備した い
  12. 12. ● 現状確認 ● テスタビリティをこじあける アジェンダ 話すこと 話さないこと ● サイズとピラミッドとループ ● そこから先へ ● 何を作ったか(!) ● Golangの書き方や使用感など
  13. 13. ● DynamoDBの準備 ○ Tableの作成 ○ 作成したテーブルにデータの追加 ● Lambda Functionを準備してデプロイ ○ デプロイパッケージ作成 ■ go get -u hogehoge ■ ビルド ■ ZIP圧縮 ○ 実行ロール作成 ■ IAMロール作成 ■ ARNをメモしてLambdaに適用 ● 目視でテスト ○ Lambdaのコンソールでテスト用のJSONを作成、実行、コンソールのログを 目視で確認 ○ もしくは、AWS CLIでLambda Functionを実行、結果を目視確認 テスト手順書_v1
  14. 14. ● DynamoDBの準備 ○ Tableの作成 ○ 作成したテーブルにデータの追加 ● Lambda Functionを準備してデプロイ ○ デプロイパッケージ作成 ■ go get -u hogehoge ■ ビルド ■ ZIP圧縮 ○ 実行ロール作成 ■ IAMロール作成 ■ ARNをメモしてLambdaに適用 ● 目視でテスト ○ Lambdaのコンソールでテスト用のJSONを作成、実行、コンソールのログを 目視で確認 ○ もしくは、AWS CLIでLambda Functionを実行、結果を目視確認 テスト手順書_v1
  15. 15. ● DynamoDBの準備 ○ Tableの作成 ○ 作成したテーブルにデータの追加 ● Lambda Functionを準備してデプロイ ○ デプロイパッケージ作成 ■ go get -u hogehoge ■ ビルド ■ ZIP圧縮 ○ 実行ロール作成 ■ IAMロール作成 ■ ARNをメモしてLambdaに適用 ● 目視でテスト ○ Lambdaのコンソールでテスト用のJSONを作成、実行、コンソールのログを 目視で確認 ○ もしくは、AWS CLIでLambda Functionを実行、結果を目視確認 テスト手順書_v1
  16. 16. ● ServerlessFramework定義書作成 ● Lambda Functionを準備してデプロイ ○ デプロイパッケージ作成 ■ go get -u hogehoge ■ ビルド ■ ZIP圧縮 ● 目視でテスト ○ Lambdaのコンソールでテスト用のJSONを作成、実行、コンソールのログを 目視で確認 ○ もしくは、AWS CLIでLambda Functionを実行、結果を目視確認 テスト手順書_v2
  17. 17. via. Testable Lambda: Working Effectively with Legacy Lambda / Takuto Wada AWSにデプロイを行うことでフィー ドバックループに時間がかかる
  18. 18. 1. ローカルでテストを行うための モックを準備 2. 荒い粒度のテストから始める アプローチ
  19. 19. LocalStack
  20. 20. ● Synonym関数内でStage( dev / staging / test / prod)によるエンドポイントの分岐がある ● コードを直接編集しなくても振る舞いを変えたい → Synonym関数の一つ前に薄い関数を噛ませることで、 DyanmoDBのClientを外から差し込めるようにしたい
  21. 21. ● Synonym関数にDynamoDBのClientを渡す関数を作成 ● Synonym関数はDynamoDBのClientを受け取れる様に 修正 → TestHandlerは対象の関数にDynamoDBのエンドポイ ントを変えたClientを渡すだけでモックを利用に可能に
  22. 22. 勝てそうな気がしてきた
  23. 23. via. Testable Lambda: Working Effectively with Legacy Lambda / Takuto Wada ● ServerlessFrameworkによ りデプロイの簡略化 ● LocalStackのモックを利用 することでデプロイが不要 に ● 粒度の大きいテストでまず は最低限の動作を担保 フィードバックループにかかる時 間が30分から2秒に
  24. 24. サーバーレスでは、初手で開発生産性が向 上する環境を用意する 1. ローカルテスト環境構築 2. 自動テストによるフィードバックループの 高速化 3. デプロイの簡略化 まとめ
  25. 25. 才能をつなぎ、 世界をポジティブにする We're hiring! 7336449 Photo by Sunny studio

×