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.

How you can speed up serverless development by local

250 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×