Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ユーザー企業におけるサーバレスシステムへの移行/JAWS DAYS2018
Search
marumoto
March 10, 2018
Technology
7
4k
ユーザー企業におけるサーバレスシステムへの移行/JAWS DAYS2018
・JAWS DAYS2018
・東京
・20180310
marumoto
March 10, 2018
Tweet
Share
More Decks by marumoto
See All by marumoto
コミュニティで好循環の人生を
marumoto
0
1.5k
低価格で高品質なAWS
marumoto
0
290
ユーザー企業のアプリ開発でクラウドメリットを享受する/AWS Loadshow広島2017
marumoto
0
180
Other Decks in Technology
See All in Technology
事業者間調整の行間を読む 調整の具体事例
sugiim
0
1.4k
初心者に Vue.js を 教えるには
tsukuha
5
390
Nix入門パラダイム編
asa1984
2
200
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
9
2.1k
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.3k
Shift-from-React-to-Vue
calm1205
3
1.3k
GitHub Universe: Evaluating RAG apps in GitHub Actions
pamelafox
0
170
CyberAgent 生成AI Deep Dive with Amazon Web Services / genai-aws
cyberagentdevelopers
PRO
1
480
新卒1年目が向き合う生成AI事業の開発を加速させる技術選定 / ai-web-launcher
cyberagentdevelopers
PRO
7
1.5k
生成AIと知識グラフの相互利用に基づく文書解析
koujikozaki
1
140
わたしとトラックポイント / TrackPoint tips
masahirokawahara
1
240
WINTICKETアプリで実現した高可用性と高速リリースを支えるエコシステム / winticket-eco-system
cyberagentdevelopers
PRO
1
190
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
The World Runs on Bad Software
bkeepers
PRO
65
11k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Bash Introduction
62gerente
608
210k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Designing for humans not robots
tammielis
249
25k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
3
370
Making Projects Easy
brettharned
115
5.9k
Faster Mobile Websites
deanohume
304
30k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
Transcript
1 DAISO INDUSTRIES CO., LTD. ユーザー企業におけるサーバレスシステムへの移⾏ 株式会社⼤創産業 情報システム部 開発1課 課⻑
丸本 健⼆郎
会社紹介 DAISO INDUSTRIES CO., LTD. 2 (2017/10現在) 売上4,200億 店舗5,050 商品70,000
国27
会社紹介 DAISO INDUSTRIES CO., LTD. 3 売上4,200億 店舗5,050 商品70,000 国27
(2017/10現在)
会社紹介 DAISO INDUSTRIES CO., LTD. 4 売上4,200億 店舗5,050 商品70,000 国27
(2017/10現在)
• ⽒名 丸本 健⼆郎(まるもと けんじろう) • 年齢 37歳 • ⽣まれ
広島 • 趣味 – スキー 1級 30回/年 – ロードバイク ave 27km/h – ビリヤード C級 – 釣り ⿂探任せ – 料理 休⽇コック – 畑仕事 30分/毎朝 – DIY 外構完成、ウッドデッキ図⾯製作中 • 社歴 Sier(⼤阪)→ 外資(東京)→ ダイソー(広島) ⾃⼰紹介 DAISO INDUSTRIES CO., LTD. 5
1.(概念編)なぜ、サーバーレスに⾄ったのか 2.(実践編)サーバーレス使ってみた 3.(まとめ)使ってみての感想、できあがったもの アジェンダ 6 DAISO INDUSTRIES CO., LTD. ユーザー企業におけるサーバレスシステムへの移⾏
7 DAISO INDUSTRIES CO., LTD. 1.(概念編)なぜ、サーバーレスに⾄ったのか
システム開発における課題を 解決するため 1.(概念編)なぜ、サーバーレスに⾄ったのか 8 DAISO INDUSTRIES CO., LTD.
課題1 ⼤規模システムはイヤ! 1.(概念編)なぜ、サーバーレスに⾄ったのか 9 DAISO INDUSTRIES CO., LTD.
⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 10 ベンダー システム サーバー 機能
C 機能 A 機能 B ・システム変更による影響範囲が広い ・テストが⼤きくなる
⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 11 ベンダー システム サーバー 機能
C 機能 A 機能 B 特定ベンダーでないと改修できない
⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 12 ベンダー システム サーバー 機能
C 機能 A 機能 B システムが⼤きいからだ
⼤規模システムはイヤ! DAISO INDUSTRIES CO., LTD. 13 システムは⼩さく創ろう ベンダー システム サーバー
機能 C 機能 A 機能 B
⼤きいシステム → ⼩さいシステム ⼤規模システムはイヤ! 14 DAISO INDUSTRIES CO., LTD.
課題2 密結合はイヤ! 1.(概念編)なぜ、サーバーレスに⾄ったのか 15 DAISO INDUSTRIES CO., LTD.
⼆つのシステムが密接に結びついた状態。 システムどうしが固有のインターフェースに基づいて接続 されているため、⼀⽅が他⽅を容易に取り替えられない状 態をいう。 密結合はイヤ! 16 DAISO INDUSTRIES CO., LTD.
密結合とは? ⼤辞林より 密接 ⼀⽅にメス 他⽅にもメス
密結合はイヤ! 17 DAISO INDUSTRIES CO., LTD. 密結合 ⼀⽅にメス 他⽅にもメス 他⽅にもメス
他⽅にもメス 他⽅にもメス もうメスなんて⼊れれない
密結合はイヤ! 18 DAISO INDUSTRIES CO., LTD. 疎結合にするには? 密接
密結合はイヤ! 19 DAISO INDUSTRIES CO., LTD. 疎結合にするには? 連携部分 を 切り出す
キュー API
密結合 → 疎結合 密結合はイヤ! 20 DAISO INDUSTRIES CO., LTD.
課題3 インフラ管理はイヤ! 1.(概念編)なぜ、サーバーレスに⾄ったのか 21 DAISO INDUSTRIES CO., LTD.
インフラ管理はイヤ! DAISO INDUSTRIES CO., LTD. 22 管理対象外 管理対象 全てを管理 オンプレ
クラウド MIDDLE VM プログラム 建屋 ハード OS 電源 NW ⼟地 ハードの 管理が不要 MIDDLE VM プログラム 建屋 ハード OS 電源 NW ⼟地 MIDDLE VM プログラム 建屋 ハード OS 電源 NW ⼟地 サーバーレス アプリ のみに集中 ビジネス プログラム
オンプレ、クラウド → サーバレス インフラ管理はイヤ! 23 DAISO INDUSTRIES CO., LTD.
課題4 スケールアップはイヤ! 14.(概念編)なぜ、サーバーレスに⾄ったのか 24 DAISO INDUSTRIES CO., LTD.
処理の考え⽅ DAISO INDUSTRIES CO., LTD. 25 処理したいデータ量 処 理 能
⼒ 1h 処理能⼒/1h 3h
処理の考え⽅ DAISO INDUSTRIES CO., LTD. 26 処理したいデータ量 処 理 能
⼒ 1h 処理能⼒/1h 1hで終わらせたい! スケールアップ
処理の考え⽅ DAISO INDUSTRIES CO., LTD. 27 処理したいデータ量 処 理 能
⼒ 1h 処理能⼒/1h 1hで終わらせたい! ×3 スケールアウト
スケールアップはイヤ! DAISO INDUSTRIES CO., LTD. 28 店舗数 ・・・5,050 × 商品数
・・・70,000 × 計算⽇数 ・・・45 =15,907,500,000レコード (159億)
スケールアップはイヤ! DAISO INDUSTRIES CO., LTD. 29 処理したいデータ量 スケールアップ
スケールアップはイヤ! DAISO INDUSTRIES CO., LTD. 30 処理したいデータ量 スケールアウト
スケールアップ → スケールアウト 14.(概念編)なぜ、サーバーレスに⾄ったのか 31 DAISO INDUSTRIES CO., LTD.
サービスいっぱい・・・ 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
振り分けてみた 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 スケールアウト型 スケールアップ型
システムを⼩さく、 疎結合で インフラを持たず スケールアウト型で 開発をしよう 概念まとめ 34 DAISO INDUSTRIES CO.,
LTD.
35 DAISO INDUSTRIES CO., LTD. 2.(実践編)サーバーレス使ってみた
参照 ためる チェック 受取 構成図 36 DAISO INDUSTRIES CO., LTD.
コマンド クエリ 参照更新 POSデータを うける → ためる → つかう
S3 37 DAISO INDUSTRIES CO., LTD.
38 DAISO INDUSTRIES CO., LTD. ⼀⾔で⾔うと、ファイルシステム
S3 39 DAISO INDUSTRIES CO., LTD. サーバー サーバーレス 冗⻑ バックアップ
世代管理 バックアップ 完全性 リネーム イベント 検知 サーバーあり、と、サーバーレスで⽐較 標準 標準 標準 標準
S3 40 DAISO INDUSTRIES CO., LTD. ファイル移動が失敗することがある AWS CLI tips
? All move ポーリング All move
S3 41 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう 20180310_A 20180310_B
20180310_C 20180310_D 20180310_E 20180310_F
S3 42 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう 20180310_A 20180310_B
20180310_C 20180310_D 20180310_E 20180310_F アクセス効率が悪い
S3 43 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう ファイル名 20180310_A
20180310_B 20180310_C 20180310_D 20180310_E 20180310_F
S3 44 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう ab4j20180310_A 1a6520180310_B
oeb120180310_C beak20180310_D 3jda20180310_E pm9j20180310_F ハッシュ値 + ファイル名
S3 45 DAISO INDUSTRIES CO., LTD. tips ファイル名を意識しよう ハッシュ値 +
ファイル名 ab4j20180310_A 1a6520180310_B oeb120180310_C beak20180310_D 3jda20180310_E pm9j20180310_F アクセス効率が良い 定常的に100リクエスト/1秒、瞬間的に800リクエスト/1秒 以上
SQS 46 DAISO INDUSTRIES CO., LTD.
SQS 47 DAISO INDUSTRIES CO., LTD. 疎結合にしよう 処理A キュー 処理B
クラウドデザインパターン Queuing Chain
SQS 48 DAISO INDUSTRIES CO., LTD. 実⾏保証 処理A 処理B
SQS 49 DAISO INDUSTRIES CO., LTD. 冪等性 確保 複数回うごくことがある tips
SQS 50 DAISO INDUSTRIES CO., LTD. は き だ せ
る スケーラブル う け と め れ る
④ ⑤ SQS 51 DAISO INDUSTRIES CO., LTD. 順番保証されない ①
② ③ ④ ⑤ ② ③ tips ① ① ② ③ ④ ⑤
SQS 52 DAISO INDUSTRIES CO., LTD. 順番保証されない ① ② ③
④ ⑤ ① ② ③ ④ ⑤ 結果整合性で設計する! どうしても順番がいる場合は、FIFOオプション tips
SQS 53 DAISO INDUSTRIES CO., LTD. 拡張を⾒越した設計
SNS 54 DAISO INDUSTRIES CO., LTD. Pub Sub 拡張を⾒越した設計 クラウドデザインパターン
Fanout イベントを起こす側 イベント処理を⾏う側
Lambda 55 DAISO INDUSTRIES CO., LTD.
Lambda 56 DAISO INDUSTRIES CO., LTD. アプリケーションコードを実⾏するサービス イベント
Lambda 57 DAISO INDUSTRIES CO., LTD. オンプレ クラウドサーバー サーバーレス ⽐較
EC2 Lamdba
Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較 58 DAISO INDUSTRIES CO., LTD. 処 理 能
⼒ 時 24 0 12 6 18 オンプレ ピークにあわせてリソースを確保 想定処理量
59 DAISO INDUSTRIES CO., LTD. 処 理 能 ⼒ 停⽌
24 0 12 稼働 スケール アップ/アウト スケール ダウン/イン 6 18 停 ⽌ Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較 クラウドサーバー 想定処理量 時
60 DAISO INDUSTRIES CO., LTD. イベント駆動でスケーラブル、無駄がない 処 理 能 ⼒
24 0 12 6 18 Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較 サーバーレス 時
Lambda 61 DAISO INDUSTRIES CO., LTD. オンプレ クラウドサーバー サーバーレス ⽐較
EC2 Lamdba
start end Lambda 62 DAISO INDUSTRIES CO., LTD. MAX 5分
tips
start end Lambda 63 DAISO INDUSTRIES CO., LTD. MAX 5分
時間内に処理できる量をつかむ tips
start end Lambda 64 DAISO INDUSTRIES CO., LTD. MAX 5分
5分で 終わる ボリューム にカット tips
Lambda 65 DAISO INDUSTRIES CO., LTD. ソース容量 50MB 制限 外部ライブラリ
Pandas(40MB) tips 別の外部ライブラリ (20MB) もう⼊らない! 解決策・・・⾒つかってません。。
DynamoDB 66 DAISO INDUSTRIES CO., LTD.
データベース DynamoDB 67 DAISO INDUSTRIES CO., LTD. RDS Dynamo 特性
AICD (並列と相性悪い) 結果整合性 (並列と相性が良い) データ モデル テーブル キー・バリュー コスト ストレージ I/O ストレージ キャパシティユニット
データベース DynamoDB 68 DAISO INDUSTRIES CO., LTD. RDS Dynamo 特性
AICD (同時コネクション数が少) 結果整合性 (同時コネクション数が多い) データ モデル テーブル キー・バリュー コスト ストレージ I/O ストレージ キャパシティユニット tips
書き込みキャパ DynamoDB 69 DAISO INDUSTRIES CO., LTD. 処理したいコ×5 tips 書き込みできたコ×3
書き込みまちのコ×2 Lambda5分制約 タイムアウトエラー
書き込みキャパ DynamoDB 70 DAISO INDUSTRIES CO., LTD. お⾦で解決 書き込みできたコ×3 書き込みまちのコ×2
tips
書き込みキャパ DynamoDB 71 DAISO INDUSTRIES CO., LTD. このようなコを 発⽣させない仕掛け tips
書き込みキャパ DynamoDB 72 DAISO INDUSTRIES CO., LTD. Lamdba同時起動数を制御し キャパシティ超えを 起こさせない
tips
DynamoDB 73 DAISO INDUSTRIES CO., LTD. 同時実⾏数 制御前 同時実⾏数 制御後
書き込みキャパ上限で、 Lamdbaがエラー多発 書き込みキャパ以下でDynamoが稼働
開発⼿法 74 DAISO INDUSTRIES CO., LTD.
コーディング環境 IDE 75 DAISO INDUSTRIES CO., LTD.
IDE 76 DAISO INDUSTRIES CO., LTD. ⽐較 ローカルスペックに依存 or or
IDE 77 DAISO INDUSTRIES CO., LTD. ターミナル [CLI、git、linuxコマンド] ローカル プロジェクト
フォルダ ソース⼀覧 実際の画⾯
–ソース世代管理 –ソースレビュー ソース管理 78 DAISO INDUSTRIES CO., LTD.
ソース管理 79 DAISO INDUSTRIES CO., LTD. プルリク(ソースレビュー)でナレッジ共有
ソース管理 80 DAISO INDUSTRIES CO., LTD. ツリー⾒たいときはSourceTreeを別途⽴ち上げ
CI/CD + cloudformation 81 DAISO INDUSTRIES CO., LTD. デプロイの⾃動化 CFn未対応のものがある
(ex.Lamdba同時実⾏数) tips
CI/CD + cloudformation 82 DAISO INDUSTRIES CO., LTD. AWS CLI
デプロイの⾃動化 CFn未対応のものがある (ex.Lamdba同時実⾏数) tips circleCIで「CFn→CLI」
全体 開発イメージ 83 DAISO INDUSTRIES CO., LTD. 本番環境 本番 ⾃動
デプロイ ⾃動 テスト master 83 検証環境 総合テスト ⾃動 デプロイ ⾃動 テスト Release/ ~~~ 開発環境 結合テスト ⾃動 デプロイ ⾃動 テスト develop 実験環境 環境テスト ⾃動 デプロイ ⾃動 テスト Push Feature/ ~~~ 単体 テスト Commit 改修 プルリク プル リク
3.(まとめ)使ってみての感想、できあがったもの 84 DAISO INDUSTRIES CO., LTD.
アプリ チーム インフラ チーム サーバーあり 1 1 サーバーレス 3.(まとめ)使ってみての感想 DAISO
INDUSTRIES CO., LTD. 85 苦労した?? 2 初モノはなんでも苦労する 0.1
3.(まとめ)使ってみての感想 DAISO INDUSTRIES CO., LTD. 86 アプリ チーム インフラ チーム
サーバーあり 1 1 サーバーレス 0.1 苦労した?? → 今はどう? 0.8 ・制約があるから、迷わない ・優秀な先⽣がいっぱい
アプリ インフラ サーバーあり 70点 70点 サーバーレス 3.(まとめ)できあがったもの DAISO INDUSTRIES CO.,
LTD. 87 創られたシステムの出来は? 90点 クラウドのメリットを簡単に、⼤きく享受 90点
おわり 88 DAISO INDUSTRIES CO., LTD. AWSで開発を推進中 ⼀緒に仕事しませんか! 連絡、お待ちしております。
[email protected]