Slide 1

Slide 1 text

1 DAISO INDUSTRIES CO., LTD. ユーザー企業におけるサーバレスシステムへの移⾏ 株式会社⼤創産業 情報システム部 開発1課 課⻑ 丸本 健⼆郎

Slide 2

Slide 2 text

会社紹介 DAISO INDUSTRIES CO., LTD. 2 (2017/10現在) 売上4,200億 店舗5,050 商品70,000 国27

Slide 3

Slide 3 text

会社紹介 DAISO INDUSTRIES CO., LTD. 3 売上4,200億 店舗5,050 商品70,000 国27 (2017/10現在)

Slide 4

Slide 4 text

会社紹介 DAISO INDUSTRIES CO., LTD. 4 売上4,200億 店舗5,050 商品70,000 国27 (2017/10現在)

Slide 5

Slide 5 text

• ⽒名 丸本 健⼆郎(まるもと けんじろう) • 年齢 37歳 • ⽣まれ 広島 • 趣味 – スキー 1級 30回/年 – ロードバイク ave 27km/h – ビリヤード C級 – 釣り ⿂探任せ – 料理 休⽇コック – 畑仕事 30分/毎朝 – DIY 外構完成、ウッドデッキ図⾯製作中 • 社歴 Sier(⼤阪)→ 外資(東京)→ ダイソー(広島) ⾃⼰紹介 DAISO INDUSTRIES CO., LTD. 5

Slide 6

Slide 6 text

1.(概念編)なぜ、サーバーレスに⾄ったのか 2.(実践編)サーバーレス使ってみた 3.(まとめ)使ってみての感想、できあがったもの アジェンダ 6 DAISO INDUSTRIES CO., LTD. ユーザー企業におけるサーバレスシステムへの移⾏

Slide 7

Slide 7 text

7 DAISO INDUSTRIES CO., LTD. 1.(概念編)なぜ、サーバーレスに⾄ったのか

Slide 8

Slide 8 text

システム開発における課題を 解決するため 1.(概念編)なぜ、サーバーレスに⾄ったのか 8 DAISO INDUSTRIES CO., LTD.

Slide 9

Slide 9 text

課題1 ⼤規模システムはイヤ! 1.(概念編)なぜ、サーバーレスに⾄ったのか 9 DAISO INDUSTRIES CO., LTD.

Slide 10

Slide 10 text

⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 10 ベンダー システム サーバー 機能 C 機能 A 機能 B ・システム変更による影響範囲が広い ・テストが⼤きくなる

Slide 11

Slide 11 text

⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 11 ベンダー システム サーバー 機能 C 機能 A 機能 B 特定ベンダーでないと改修できない

Slide 12

Slide 12 text

⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 12 ベンダー システム サーバー 機能 C 機能 A 機能 B システムが⼤きいからだ

Slide 13

Slide 13 text

⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 13 システムは⼩さく創ろう ベンダー システム サーバー 機能 C 機能 A 機能 B

Slide 14

Slide 14 text

⼤きいシステム → ⼩さいシステム ⼤規模システムはイヤ! 14 DAISO INDUSTRIES CO., LTD.

Slide 15

Slide 15 text

課題2 密結合はイヤ! 1.(概念編)なぜ、サーバーレスに⾄ったのか 15 DAISO INDUSTRIES CO., LTD.

Slide 16

Slide 16 text

⼆つのシステムが密接に結びついた状態。 システムどうしが固有のインターフェースに基づいて接続 されているため、⼀⽅が他⽅を容易に取り替えられない状 態をいう。 密結合はイヤ! 16 DAISO INDUSTRIES CO., LTD. 密結合とは? ⼤辞林より 密接 ⼀⽅にメス 他⽅にもメス

Slide 17

Slide 17 text

密結合はイヤ! 17 DAISO INDUSTRIES CO., LTD. 密結合 ⼀⽅にメス 他⽅にもメス 他⽅にもメス 他⽅にもメス 他⽅にもメス もうメスなんて⼊れれない

Slide 18

Slide 18 text

密結合はイヤ! 18 DAISO INDUSTRIES CO., LTD. 疎結合にするには? 密接

Slide 19

Slide 19 text

密結合はイヤ! 19 DAISO INDUSTRIES CO., LTD. 疎結合にするには? 連携部分 を 切り出す キュー API

Slide 20

Slide 20 text

密結合 → 疎結合 密結合はイヤ! 20 DAISO INDUSTRIES CO., LTD.

Slide 21

Slide 21 text

課題3 インフラ管理はイヤ! 1.(概念編)なぜ、サーバーレスに⾄ったのか 21 DAISO INDUSTRIES CO., LTD.

Slide 22

Slide 22 text

インフラ管理はイヤ! DAISO INDUSTRIES CO., LTD. 22 管理対象外 管理対象 全てを管理 オンプレ クラウド MIDDLE VM プログラム 建屋 ハード OS 電源 NW ⼟地 ハードの 管理が不要 MIDDLE VM プログラム 建屋 ハード OS 電源 NW ⼟地 MIDDLE VM プログラム 建屋 ハード OS 電源 NW ⼟地 サーバーレス アプリ のみに集中 ビジネス プログラム

Slide 23

Slide 23 text

オンプレ、クラウド → サーバレス インフラ管理はイヤ! 23 DAISO INDUSTRIES CO., LTD.

Slide 24

Slide 24 text

課題4 スケールアップはイヤ! 1­4.(概念編)なぜ、サーバーレスに⾄ったのか 24 DAISO INDUSTRIES CO., LTD.

Slide 25

Slide 25 text

処理の考え⽅ DAISO INDUSTRIES CO., LTD. 25 処理したいデータ量 処 理 能 ⼒ 1h 処理能⼒/1h 3h

Slide 26

Slide 26 text

処理の考え⽅ DAISO INDUSTRIES CO., LTD. 26 処理したいデータ量 処 理 能 ⼒ 1h 処理能⼒/1h 1hで終わらせたい! スケールアップ

Slide 27

Slide 27 text

処理の考え⽅ DAISO INDUSTRIES CO., LTD. 27 処理したいデータ量 処 理 能 ⼒ 1h 処理能⼒/1h 1hで終わらせたい! ×3 スケールアウト

Slide 28

Slide 28 text

スケールアップはイヤ! DAISO INDUSTRIES CO., LTD. 28 店舗数 ・・・5,050 × 商品数 ・・・70,000 × 計算⽇数 ・・・45 =15,907,500,000レコード (159億)

Slide 29

Slide 29 text

スケールアップはイヤ! DAISO INDUSTRIES CO., LTD. 29 処理したいデータ量 スケールアップ

Slide 30

Slide 30 text

スケールアップはイヤ! DAISO INDUSTRIES CO., LTD. 30 処理したいデータ量 スケールアウト

Slide 31

Slide 31 text

スケールアップ → スケールアウト 1­4.(概念編)なぜ、サーバーレスに⾄ったのか 31 DAISO INDUSTRIES CO., LTD.

Slide 32

Slide 32 text

サービスいっぱい・・・ DAISO INDUSTRIES CO., LTD. 32 Compute Amazon EC2 AWS Elastic Beanstalk Amazon EFS Amazon Glacier Amazon S3 Storage Database Amazon DynamoDB Amazon ElastiCache Amazon RDS Amazon Redshift Amazon CloudWatch AWS CloudFormation Management Tools Amazon Kinesis Analytics Amazon EMR Developer Tools Amazon API Gateway AWS Step Functions Amazon SWF Application Services Messaging Amazon SES Amazon SQS Amazon SNS Amazon ECS AWS Lambda AWS CloudTrail Amazon ES Amazon CloudSearch AWS CodeCommit AWS CodeDeploy AWS CodeBuild AWS CodePipeline

Slide 33

Slide 33 text

振り分けてみた DAISO INDUSTRIES CO., LTD. 33 Amazon EC2 AWS Elastic Beanstalk Amazon EFS Amazon Glacier Amazon S3 Amazon DynamoDB Amazon ElastiCache Amazon RDS Amazon Redshift Amazon CloudWatch AWS CloudFormation Amazon Kinesis Amazon EMR Amazon API Gateway AWS Step Functions Amazon SWF Amazon SES Amazon SQS Amazon SNS Amazon ECS AWS Lambda AWS CloudTrail Amazon ES Amazon CloudSearch AWS CodeCommit AWS CodeDeploy AWS CodeBuild AWS CodePipeline スケールアウト型 スケールアップ型

Slide 34

Slide 34 text

システムを⼩さく、 疎結合で インフラを持たず スケールアウト型で 開発をしよう 概念まとめ 34 DAISO INDUSTRIES CO., LTD.

Slide 35

Slide 35 text

35 DAISO INDUSTRIES CO., LTD. 2.(実践編)サーバーレス使ってみた

Slide 36

Slide 36 text

参照 ためる チェック 受取 構成図 36 DAISO INDUSTRIES CO., LTD. コマンド クエリ 参照更新 POSデータを うける → ためる → つかう

Slide 37

Slide 37 text

S3 37 DAISO INDUSTRIES CO., LTD.

Slide 38

Slide 38 text

38 DAISO INDUSTRIES CO., LTD. ⼀⾔で⾔うと、ファイルシステム

Slide 39

Slide 39 text

S3 39 DAISO INDUSTRIES CO., LTD. サーバー サーバーレス 冗⻑ バックアップ 世代管理 バックアップ 完全性 リネーム イベント 検知 サーバーあり、と、サーバーレスで⽐較 標準 標準 標準 標準

Slide 40

Slide 40 text

S3 40 DAISO INDUSTRIES CO., LTD. ファイル移動が失敗することがある AWS CLI tips ? All move ポーリング All move

Slide 41

Slide 41 text

S3 41 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう 20180310_A 20180310_B 20180310_C 20180310_D 20180310_E 20180310_F

Slide 42

Slide 42 text

S3 42 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう 20180310_A 20180310_B 20180310_C 20180310_D 20180310_E 20180310_F アクセス効率が悪い

Slide 43

Slide 43 text

S3 43 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう ファイル名 20180310_A 20180310_B 20180310_C 20180310_D 20180310_E 20180310_F

Slide 44

Slide 44 text

S3 44 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう ab4j20180310_A 1a6520180310_B oeb120180310_C beak20180310_D 3jda20180310_E pm9j20180310_F ハッシュ値 + ファイル名

Slide 45

Slide 45 text

S3 45 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう ハッシュ値 + ファイル名 ab4j20180310_A 1a6520180310_B oeb120180310_C beak20180310_D 3jda20180310_E pm9j20180310_F アクセス効率が良い 定常的に100リクエスト/1秒、瞬間的に800リクエスト/1秒 以上

Slide 46

Slide 46 text

SQS 46 DAISO INDUSTRIES CO., LTD.

Slide 47

Slide 47 text

SQS 47 DAISO INDUSTRIES CO., LTD. 疎結合にしよう 処理A キュー 処理B クラウドデザインパターン Queuing Chain

Slide 48

Slide 48 text

SQS 48 DAISO INDUSTRIES CO., LTD. 実⾏保証 処理A 処理B

Slide 49

Slide 49 text

SQS 49 DAISO INDUSTRIES CO., LTD. 冪等性 確保 複数回うごくことがある tips

Slide 50

Slide 50 text

SQS 50 DAISO INDUSTRIES CO., LTD. は き だ せ る スケーラブル う け と め れ る

Slide 51

Slide 51 text

④ ⑤ SQS 51 DAISO INDUSTRIES CO., LTD. 順番保証されない ① ② ③ ④ ⑤ ② ③ tips ① ① ② ③ ④ ⑤

Slide 52

Slide 52 text

SQS 52 DAISO INDUSTRIES CO., LTD. 順番保証されない ① ② ③ ④ ⑤ ① ② ③ ④ ⑤ 結果整合性で設計する! どうしても順番がいる場合は、FIFOオプション tips

Slide 53

Slide 53 text

SQS 53 DAISO INDUSTRIES CO., LTD. 拡張を⾒越した設計

Slide 54

Slide 54 text

SNS 54 DAISO INDUSTRIES CO., LTD. Pub Sub 拡張を⾒越した設計 クラウドデザインパターン Fanout イベントを起こす側 イベント処理を⾏う側

Slide 55

Slide 55 text

Lambda 55 DAISO INDUSTRIES CO., LTD.

Slide 56

Slide 56 text

Lambda 56 DAISO INDUSTRIES CO., LTD. アプリケーションコードを実⾏するサービス イベント

Slide 57

Slide 57 text

Lambda 57 DAISO INDUSTRIES CO., LTD. オンプレ クラウドサーバー サーバーレス ⽐較 EC2 Lamdba

Slide 58

Slide 58 text

Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較 58 DAISO INDUSTRIES CO., LTD. 処 理 能 ⼒ 時 24 0 12 6 18 オンプレ ピークにあわせてリソースを確保 想定処理量

Slide 59

Slide 59 text

59 DAISO INDUSTRIES CO., LTD. 処 理 能 ⼒ 停⽌ 24 0 12 稼働 スケール アップ/アウト スケール ダウン/イン 6 18 停 ⽌ Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較 クラウドサーバー 想定処理量 時

Slide 60

Slide 60 text

60 DAISO INDUSTRIES CO., LTD. イベント駆動でスケーラブル、無駄がない 処 理 能 ⼒ 24 0 12 6 18 Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較 サーバーレス 時

Slide 61

Slide 61 text

Lambda 61 DAISO INDUSTRIES CO., LTD. オンプレ クラウドサーバー サーバーレス ⽐較 EC2 Lamdba

Slide 62

Slide 62 text

start end Lambda 62 DAISO INDUSTRIES CO., LTD. MAX 5分 tips

Slide 63

Slide 63 text

start end Lambda 63 DAISO INDUSTRIES CO., LTD. MAX 5分 時間内に処理できる量をつかむ tips

Slide 64

Slide 64 text

start end Lambda 64 DAISO INDUSTRIES CO., LTD. MAX 5分 5分で 終わる ボリューム にカット tips

Slide 65

Slide 65 text

Lambda 65 DAISO INDUSTRIES CO., LTD. ソース容量 50MB 制限 外部ライブラリ Pandas(40MB) tips 別の外部ライブラリ (20MB) もう⼊らない! 解決策・・・⾒つかってません。。

Slide 66

Slide 66 text

DynamoDB 66 DAISO INDUSTRIES CO., LTD.

Slide 67

Slide 67 text

データベース DynamoDB 67 DAISO INDUSTRIES CO., LTD. RDS Dynamo 特性 AICD (並列と相性悪い) 結果整合性 (並列と相性が良い) データ モデル テーブル キー・バリュー コスト ストレージ I/O ストレージ キャパシティユニット

Slide 68

Slide 68 text

データベース DynamoDB 68 DAISO INDUSTRIES CO., LTD. RDS Dynamo 特性 AICD (同時コネクション数が少) 結果整合性 (同時コネクション数が多い) データ モデル テーブル キー・バリュー コスト ストレージ I/O ストレージ キャパシティユニット tips

Slide 69

Slide 69 text

書き込みキャパ DynamoDB 69 DAISO INDUSTRIES CO., LTD. 処理したいコ×5 tips 書き込みできたコ×3 書き込みまちのコ×2 Lambda5分制約 タイムアウトエラー

Slide 70

Slide 70 text

書き込みキャパ DynamoDB 70 DAISO INDUSTRIES CO., LTD. お⾦で解決 書き込みできたコ×3 書き込みまちのコ×2 tips

Slide 71

Slide 71 text

書き込みキャパ DynamoDB 71 DAISO INDUSTRIES CO., LTD. このようなコを 発⽣させない仕掛け tips

Slide 72

Slide 72 text

書き込みキャパ DynamoDB 72 DAISO INDUSTRIES CO., LTD. Lamdba同時起動数を制御し キャパシティ超えを 起こさせない tips

Slide 73

Slide 73 text

DynamoDB 73 DAISO INDUSTRIES CO., LTD. 同時実⾏数 制御前 同時実⾏数 制御後 書き込みキャパ上限で、 Lamdbaがエラー多発 書き込みキャパ以下でDynamoが稼働

Slide 74

Slide 74 text

開発⼿法 74 DAISO INDUSTRIES CO., LTD.

Slide 75

Slide 75 text

コーディング環境 IDE 75 DAISO INDUSTRIES CO., LTD.

Slide 76

Slide 76 text

IDE 76 DAISO INDUSTRIES CO., LTD. ⽐較 ローカルスペックに依存 or or

Slide 77

Slide 77 text

IDE 77 DAISO INDUSTRIES CO., LTD. ターミナル [CLI、git、linuxコマンド] ローカル プロジェクト フォルダ ソース⼀覧 実際の画⾯

Slide 78

Slide 78 text

–ソース世代管理 –ソースレビュー ソース管理 78 DAISO INDUSTRIES CO., LTD.

Slide 79

Slide 79 text

ソース管理 79 DAISO INDUSTRIES CO., LTD. プルリク(ソースレビュー)でナレッジ共有

Slide 80

Slide 80 text

ソース管理 80 DAISO INDUSTRIES CO., LTD. ツリー⾒たいときはSourceTreeを別途⽴ち上げ

Slide 81

Slide 81 text

CI/CD + cloudformation 81 DAISO INDUSTRIES CO., LTD. デプロイの⾃動化 CFn未対応のものがある (ex.Lamdba同時実⾏数) tips

Slide 82

Slide 82 text

CI/CD + cloudformation 82 DAISO INDUSTRIES CO., LTD. AWS CLI デプロイの⾃動化 CFn未対応のものがある (ex.Lamdba同時実⾏数) tips circleCIで「CFn→CLI」

Slide 83

Slide 83 text

全体 開発イメージ 83 DAISO INDUSTRIES CO., LTD. 本番環境 本番 ⾃動 デプロイ ⾃動 テスト master 83 検証環境 総合テスト ⾃動 デプロイ ⾃動 テスト Release/ ~~~ 開発環境 結合テスト ⾃動 デプロイ ⾃動 テスト develop 実験環境 環境テスト ⾃動 デプロイ ⾃動 テスト Push Feature/ ~~~ 単体 テスト Commit 改修 プルリク プル リク

Slide 84

Slide 84 text

3.(まとめ)使ってみての感想、できあがったもの 84 DAISO INDUSTRIES CO., LTD.

Slide 85

Slide 85 text

アプリ チーム インフラ チーム サーバーあり 1 1 サーバーレス 3.(まとめ)使ってみての感想 DAISO INDUSTRIES CO., LTD. 85 苦労した?? 2 初モノはなんでも苦労する 0.1

Slide 86

Slide 86 text

3.(まとめ)使ってみての感想 DAISO INDUSTRIES CO., LTD. 86 アプリ チーム インフラ チーム サーバーあり 1 1 サーバーレス 0.1 苦労した?? → 今はどう? 0.8 ・制約があるから、迷わない ・優秀な先⽣がいっぱい

Slide 87

Slide 87 text

アプリ インフラ サーバーあり 70点 70点 サーバーレス 3.(まとめ)できあがったもの DAISO INDUSTRIES CO., LTD. 87 創られたシステムの出来は? 90点 クラウドのメリットを簡単に、⼤きく享受 90点

Slide 88

Slide 88 text

おわり 88 DAISO INDUSTRIES CO., LTD. AWSで開発を推進中 ⼀緒に仕事しませんか! 連絡、お待ちしております。 [email protected]