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

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

ゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみたゲーム開発出身者がチームラボで働いてみた
ゲーム開発出身者がチームラボで働いてみた
 
Git入門
Git入門Git入門
Git入門
 
俺とInstant team building
俺とInstant team building俺とInstant team building
俺とInstant team building
 
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
Are you ready? ~これからアジャイル開発をスタートアップするために プラクティスの実践と実感~
 
Osashimi
OsashimiOsashimi
Osashimi
 
Jawsug yokohama recap_week1_gp3
Jawsug yokohama recap_week1_gp3Jawsug yokohama recap_week1_gp3
Jawsug yokohama recap_week1_gp3
 
【第13回RxTStudy勉強会】Redmine BacklogsプラグインでScrum開発! ~Redmineでアジャイルに開発しよう
【第13回RxTStudy勉強会】Redmine BacklogsプラグインでScrum開発!~Redmineでアジャイルに開発しよう【第13回RxTStudy勉強会】Redmine BacklogsプラグインでScrum開発!~Redmineでアジャイルに開発しよう
【第13回RxTStudy勉強会】Redmine BacklogsプラグインでScrum開発! ~Redmineでアジャイルに開発しよう
 
Event bridge で s3 イベント通知を試してみた
Event bridge で s3 イベント通知を試してみたEvent bridge で s3 イベント通知を試してみた
Event bridge で s3 イベント通知を試してみた
 
はじめてのJavaScript / JS Girls Tokyo #1
はじめてのJavaScript / JS Girls Tokyo #1はじめてのJavaScript / JS Girls Tokyo #1
はじめてのJavaScript / JS Girls Tokyo #1
 
Salary negotiation battle on Cybozu - employee side
Salary negotiation battle on Cybozu - employee sideSalary negotiation battle on Cybozu - employee side
Salary negotiation battle on Cybozu - employee side
 
Pythonの10年と今、これから
Pythonの10年と今、これからPythonの10年と今、これから
Pythonの10年と今、これから
 
「アジャイル入門」(AgileJapan2013チュートリアルセッション資料)
「アジャイル入門」(AgileJapan2013チュートリアルセッション資料)「アジャイル入門」(AgileJapan2013チュートリアルセッション資料)
「アジャイル入門」(AgileJapan2013チュートリアルセッション資料)
 
簡単ログ解析ハンズオン

簡単ログ解析ハンズオン
簡単ログ解析ハンズオン

簡単ログ解析ハンズオン

 
今からでも遅くない! 2から始めるangular js
今からでも遅くない! 2から始めるangular js今からでも遅くない! 2から始めるangular js
今からでも遅くない! 2から始めるangular js
 
はじめてのアジャイル - Agile in a nutshell
はじめてのアジャイル - Agile in a nutshellはじめてのアジャイル - Agile in a nutshell
はじめてのアジャイル - Agile in a nutshell
 
アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -
アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -
アジャイルサムライ壱の太刀 - 説得しないはじめないアジャイル開発のはじめ形 -
 
UiPath Go!フレームワーク探求記
UiPath Go!フレームワーク探求記UiPath Go!フレームワーク探求記
UiPath Go!フレームワーク探求記
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
匠Methodを使った製品開発の現場
匠Methodを使った製品開発の現場匠Methodを使った製品開発の現場
匠Methodを使った製品開発の現場
 
Jaws niigata#8
Jaws niigata#8Jaws niigata#8
Jaws niigata#8
 

Semelhante a How you can speed up serverless development by local

【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...
【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...
【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...
Unity Technologies Japan K.K.
 
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
Developers Summit
 
Scrum始めました
Scrum始めましたScrum始めました
Scrum始めました
minamo
 

Semelhante a How you can speed up serverless development by local (20)

How to develop a huge Single Page Application
How to develop a huge Single Page ApplicationHow to develop a huge Single Page Application
How to develop a huge Single Page Application
 
ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!
 
Visasq
VisasqVisasq
Visasq
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
Agile開発のスプリント(開発サイクル)を4週間から2週間に短縮した話と、そのメリットデメリット
Agile開発のスプリント(開発サイクル)を4週間から2週間に短縮した話と、そのメリットデメリットAgile開発のスプリント(開発サイクル)を4週間から2週間に短縮した話と、そのメリットデメリット
Agile開発のスプリント(開発サイクル)を4週間から2週間に短縮した話と、そのメリットデメリット
 
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
 
【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...
【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...
【Unity道場スペシャル 2017大阪】Post processing stackでワンランク上のビジュアル表現+時間をかけずに武器になるツー...
 
マネージャーになってからの技術を磨く戦略と戦術
マネージャーになってからの技術を磨く戦略と戦術マネージャーになってからの技術を磨く戦略と戦術
マネージャーになってからの技術を磨く戦略と戦術
 
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
 
チケットの棚卸し ウチではこうしてます
チケットの棚卸し ウチではこうしてますチケットの棚卸し ウチではこうしてます
チケットの棚卸し ウチではこうしてます
 
はじめてのアジャイル
はじめてのアジャイルはじめてのアジャイル
はじめてのアジャイル
 
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends
 
スマートフォンアプリエンジニアのための最新プロトタイピング講座
スマートフォンアプリエンジニアのための最新プロトタイピング講座スマートフォンアプリエンジニアのための最新プロトタイピング講座
スマートフォンアプリエンジニアのための最新プロトタイピング講座
 
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
 
OutSystems Workflow Builder
OutSystems Workflow BuilderOutSystems Workflow Builder
OutSystems Workflow Builder
 
SQiP2016 SIG8
SQiP2016 SIG8SQiP2016 SIG8
SQiP2016 SIG8
 
re:日暮里アジャイル
re:日暮里アジャイルre:日暮里アジャイル
re:日暮里アジャイル
 
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
 
Scrum始めました
Scrum始めましたScrum始めました
Scrum始めました
 
ディレクターが身につけておきたいチームビルディング
ディレクターが身につけておきたいチームビルディングディレクターが身につけておきたいチームビルディング
ディレクターが身につけておきたいチームビルディング
 

Mais de PIXTA Inc.

Mais de PIXTA Inc. (11)

新卒入社のみなさまへ30代が贈る20代のキャリア戦略入門
新卒入社のみなさまへ30代が贈る20代のキャリア戦略入門新卒入社のみなさまへ30代が贈る20代のキャリア戦略入門
新卒入社のみなさまへ30代が贈る20代のキャリア戦略入門
 
SnapmartにおけるCameraRollから写真の複数枚アップロードの実装
SnapmartにおけるCameraRollから写真の複数枚アップロードの実装SnapmartにおけるCameraRollから写真の複数枚アップロードの実装
SnapmartにおけるCameraRollから写真の複数枚アップロードの実装
 
Reactnative はじめの一歩
Reactnative はじめの一歩Reactnative はじめの一歩
Reactnative はじめの一歩
 
WebエンジニアのReactNativeでの戦い方
WebエンジニアのReactNativeでの戦い方WebエンジニアのReactNativeでの戦い方
WebエンジニアのReactNativeでの戦い方
 
ピクスタ株式会社 完全到着マニュアル
ピクスタ株式会社 完全到着マニュアルピクスタ株式会社 完全到着マニュアル
ピクスタ株式会社 完全到着マニュアル
 
サービスのスケール化のための検索システム改善
サービスのスケール化のための検索システム改善サービスのスケール化のための検索システム改善
サービスのスケール化のための検索システム改善
 
スクラムを導入してみて一回挫折したけど再起させた話
スクラムを導入してみて一回挫折したけど再起させた話スクラムを導入してみて一回挫折したけど再起させた話
スクラムを導入してみて一回挫折したけど再起させた話
 
PIXTAにおけるCloudSearchのコスト削減
PIXTAにおけるCloudSearchのコスト削減PIXTAにおけるCloudSearchのコスト削減
PIXTAにおけるCloudSearchのコスト削減
 
PIXTAの紹介
PIXTAの紹介PIXTAの紹介
PIXTAの紹介
 
PIXTAにおけるCloudSearch運用 - JAWS DAYS 2016 LT
PIXTAにおけるCloudSearch運用 - JAWS DAYS 2016  LTPIXTAにおけるCloudSearch運用 - JAWS DAYS 2016  LT
PIXTAにおけるCloudSearch運用 - JAWS DAYS 2016 LT
 
PIXTAにおけるABテスト
PIXTAにおけるABテストPIXTAにおけるABテスト
PIXTAにおけるABテスト
 

How you can speed up serverless development by local