ユーザー企業におけるサーバレスシステムへの移行/JAWS DAYS2018
by
marumoto
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 スケールアップはイヤ! 14.(概念編)なぜ、サーバーレスに⾄ったのか 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
スケールアップ → スケールアウト 14.(概念編)なぜ、サーバーレスに⾄ったのか 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]