・JAWS DAYS2018 ・東京 ・20180310
1DAISO INDUSTRIES CO., LTD.ユーザー企業におけるサーバレスシステムへの移⾏株式会社⼤創産業情報システム部開発1課 課⻑丸本 健⼆郎
View Slide
会社紹介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.(まとめ)使ってみての感想、できあがったものアジェンダ6DAISO INDUSTRIES CO., LTD.ユーザー企業におけるサーバレスシステムへの移⾏
7DAISO INDUSTRIES CO., LTD.1.(概念編)なぜ、サーバーレスに⾄ったのか
システム開発における課題を解決するため1.(概念編)なぜ、サーバーレスに⾄ったのか8DAISO INDUSTRIES CO., LTD.
課題1⼤規模システムはイヤ!1.(概念編)なぜ、サーバーレスに⾄ったのか9DAISO 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
⼤きいシステム → ⼩さいシステム⼤規模システムはイヤ!14DAISO INDUSTRIES CO., LTD.
課題2密結合はイヤ!1.(概念編)なぜ、サーバーレスに⾄ったのか15DAISO INDUSTRIES CO., LTD.
⼆つのシステムが密接に結びついた状態。システムどうしが固有のインターフェースに基づいて接続されているため、⼀⽅が他⽅を容易に取り替えられない状態をいう。密結合はイヤ!16DAISO INDUSTRIES CO., LTD.密結合とは?⼤辞林より密接⼀⽅にメス 他⽅にもメス
密結合はイヤ!17DAISO INDUSTRIES CO., LTD.密結合⼀⽅にメス他⽅にもメス他⽅にもメス他⽅にもメス他⽅にもメスもうメスなんて⼊れれない
密結合はイヤ!18DAISO INDUSTRIES CO., LTD.疎結合にするには?密接
密結合はイヤ!19DAISO INDUSTRIES CO., LTD.疎結合にするには?連携部分 を 切り出すキューAPI
密結合 → 疎結合密結合はイヤ!20DAISO INDUSTRIES CO., LTD.
課題3インフラ管理はイヤ!1.(概念編)なぜ、サーバーレスに⾄ったのか21DAISO INDUSTRIES CO., LTD.
インフラ管理はイヤ!DAISO INDUSTRIES CO., LTD. 22管理対象外管理対象全てを管理オンプレ クラウドMIDDLEVMプログラム建屋ハードOS電源NW⼟地ハードの管理が不要MIDDLEVMプログラム建屋ハードOS電源NW⼟地MIDDLEVMプログラム建屋ハードOS電源NW⼟地サーバーレスアプリのみに集中ビジネスプログラム
オンプレ、クラウド → サーバレスインフラ管理はイヤ!23DAISO INDUSTRIES CO., LTD.
課題4スケールアップはイヤ!14.(概念編)なぜ、サーバーレスに⾄ったのか24DAISO INDUSTRIES CO., LTD.
処理の考え⽅DAISO INDUSTRIES CO., LTD. 25処理したいデータ量処理能⼒1h処理能⼒/1h3h
処理の考え⽅DAISO INDUSTRIES CO., LTD. 26処理したいデータ量処理能⼒1h処理能⼒/1h1hで終わらせたい!スケールアップ
処理の考え⽅DAISO INDUSTRIES CO., LTD. 27処理したいデータ量処理能⼒1h処理能⼒/1h1hで終わらせたい!×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.(概念編)なぜ、サーバーレスに⾄ったのか31DAISO INDUSTRIES CO., LTD.
サービスいっぱい・・・DAISO INDUSTRIES CO., LTD. 32ComputeAmazonEC2AWS ElasticBeanstalkAmazonEFSAmazonGlacierAmazonS3StorageDatabaseAmazonDynamoDBAmazonElastiCacheAmazonRDSAmazonRedshiftAmazonCloudWatchAWSCloudFormationManagement ToolsAmazonKinesisAnalyticsAmazonEMRDeveloper ToolsAmazon APIGatewayAWS StepFunctionsAmazonSWFApplication ServicesMessagingAmazonSESAmazonSQSAmazonSNSAmazonECSAWSLambdaAWSCloudTrailAmazon ES AmazonCloudSearchAWSCodeCommitAWSCodeDeployAWSCodeBuildAWSCodePipeline
振り分けてみたDAISO INDUSTRIES CO., LTD. 33AmazonEC2AWS ElasticBeanstalkAmazonEFSAmazonGlacierAmazonS3AmazonDynamoDBAmazonElastiCacheAmazonRDSAmazonRedshiftAmazonCloudWatchAWSCloudFormationAmazonKinesisAmazonEMRAmazon APIGatewayAWS StepFunctionsAmazonSWFAmazonSESAmazonSQSAmazonSNSAmazonECSAWSLambdaAWSCloudTrailAmazon ESAmazonCloudSearchAWSCodeCommitAWSCodeDeployAWSCodeBuildAWSCodePipelineスケールアウト型スケールアップ型
システムを⼩さく、疎結合でインフラを持たずスケールアウト型で開発をしよう概念まとめ34DAISO INDUSTRIES CO., LTD.
35DAISO INDUSTRIES CO., LTD.2.(実践編)サーバーレス使ってみた
参照ためるチェック受取構成図36DAISO INDUSTRIES CO., LTD.コマンド クエリ参照更新POSデータを うける → ためる → つかう
S337DAISO INDUSTRIES CO., LTD.
38DAISO INDUSTRIES CO., LTD.⼀⾔で⾔うと、ファイルシステム
S339DAISO INDUSTRIES CO., LTD.サーバー サーバーレス冗⻑ バックアップ世代管理 バックアップ完全性 リネームイベント 検知サーバーあり、と、サーバーレスで⽐較標準標準標準標準
S340DAISO INDUSTRIES CO., LTD.ファイル移動が失敗することがあるAWS CLItips?AllmoveポーリングAllmove
S341DAISO INDUSTRIES CO., LTD.tips ファイル名を意識しよう20180310_A20180310_B20180310_C20180310_D20180310_E20180310_F
S342DAISO INDUSTRIES CO., LTD.tips ファイル名を意識しよう20180310_A20180310_B20180310_C20180310_D20180310_E20180310_Fアクセス効率が悪い
S343DAISO INDUSTRIES CO., LTD.tips ファイル名を意識しようファイル名20180310_A20180310_B20180310_C20180310_D20180310_E20180310_F
S344DAISO INDUSTRIES CO., LTD.tips ファイル名を意識しようab4j20180310_A1a6520180310_Boeb120180310_Cbeak20180310_D3jda20180310_Epm9j20180310_Fハッシュ値 + ファイル名
S345DAISO INDUSTRIES CO., LTD.tips ファイル名を意識しようハッシュ値 + ファイル名ab4j20180310_A1a6520180310_Boeb120180310_Cbeak20180310_D3jda20180310_Epm9j20180310_Fアクセス効率が良い定常的に100リクエスト/1秒、瞬間的に800リクエスト/1秒 以上
SQS46DAISO INDUSTRIES CO., LTD.
SQS47DAISO INDUSTRIES CO., LTD.疎結合にしよう処理Aキュー処理BクラウドデザインパターンQueuing Chain
SQS48DAISO INDUSTRIES CO., LTD.実⾏保証処理A 処理B
SQS49DAISO INDUSTRIES CO., LTD.冪等性確保複数回うごくことがあるtips
SQS50DAISO INDUSTRIES CO., LTD.はきだせるスケーラブルうけとめれる
④⑤SQS51DAISO INDUSTRIES CO., LTD.順番保証されない①②③④⑤②③tips①①②③④⑤
SQS52DAISO INDUSTRIES CO., LTD.順番保証されない①②③④⑤①②③④⑤結果整合性で設計する!どうしても順番がいる場合は、FIFOオプションtips
SQS53DAISO INDUSTRIES CO., LTD.拡張を⾒越した設計
SNS54DAISO INDUSTRIES CO., LTD.Pub Sub拡張を⾒越した設計クラウドデザインパターンFanoutイベントを起こす側 イベント処理を⾏う側
Lambda55DAISO INDUSTRIES CO., LTD.
Lambda56DAISO INDUSTRIES CO., LTD.アプリケーションコードを実⾏するサービスイベント
Lambda57DAISO INDUSTRIES CO., LTD.オンプレ クラウドサーバー サーバーレス⽐較EC2 Lamdba
Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較58DAISO INDUSTRIES CO., LTD.処理能⼒時240 126 18オンプレピークにあわせてリソースを確保想定処理量
59DAISO INDUSTRIES CO., LTD.処理能⼒停⽌240 12稼働 スケールアップ/アウトスケールダウン/イン6 18停⽌Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較クラウドサーバー想定処理量時
60DAISO INDUSTRIES CO., LTD.イベント駆動でスケーラブル、無駄がない処理能⼒240 126 18Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較サーバーレス時
Lambda61DAISO INDUSTRIES CO., LTD.オンプレ クラウドサーバー サーバーレス⽐較EC2 Lamdba
start endLambda62DAISO INDUSTRIES CO., LTD.MAX 5分tips
start endLambda63DAISO INDUSTRIES CO., LTD.MAX 5分時間内に処理できる量をつかむtips
start endLambda64DAISO INDUSTRIES CO., LTD.MAX 5分5分で終わるボリュームにカットtips
Lambda65DAISO INDUSTRIES CO., LTD.ソース容量50MB 制限外部ライブラリPandas(40MB)tips別の外部ライブラリ(20MB)もう⼊らない!解決策・・・⾒つかってません。。
DynamoDB66DAISO INDUSTRIES CO., LTD.
データベースDynamoDB67DAISO INDUSTRIES CO., LTD.RDS Dynamo特性 AICD(並列と相性悪い)結果整合性(並列と相性が良い)データモデルテーブル キー・バリューコストストレージI/Oストレージキャパシティユニット
データベースDynamoDB68DAISO INDUSTRIES CO., LTD.RDS Dynamo特性 AICD(同時コネクション数が少)結果整合性(同時コネクション数が多い)データモデルテーブル キー・バリューコストストレージI/Oストレージキャパシティユニットtips
書き込みキャパDynamoDB69DAISO INDUSTRIES CO., LTD.処理したいコ×5tips書き込みできたコ×3書き込みまちのコ×2Lambda5分制約タイムアウトエラー
書き込みキャパDynamoDB70DAISO INDUSTRIES CO., LTD.お⾦で解決書き込みできたコ×3書き込みまちのコ×2tips
書き込みキャパDynamoDB71DAISO INDUSTRIES CO., LTD.このようなコを発⽣させない仕掛けtips
書き込みキャパDynamoDB72DAISO INDUSTRIES CO., LTD.Lamdba同時起動数を制御しキャパシティ超えを起こさせないtips
DynamoDB73DAISO INDUSTRIES CO., LTD.同時実⾏数 制御前同時実⾏数 制御後書き込みキャパ上限で、Lamdbaがエラー多発書き込みキャパ以下でDynamoが稼働
開発⼿法74DAISO INDUSTRIES CO., LTD.
コーディング環境IDE75DAISO INDUSTRIES CO., LTD.
IDE76DAISO INDUSTRIES CO., LTD.⽐較ローカルスペックに依存or or
IDE77DAISO INDUSTRIES CO., LTD.ターミナル[CLI、git、linuxコマンド]ローカルプロジェクトフォルダソース⼀覧実際の画⾯
–ソース世代管理–ソースレビューソース管理78DAISO INDUSTRIES CO., LTD.
ソース管理79DAISO INDUSTRIES CO., LTD.プルリク(ソースレビュー)でナレッジ共有
ソース管理80DAISO INDUSTRIES CO., LTD.ツリー⾒たいときはSourceTreeを別途⽴ち上げ
CI/CD + cloudformation81DAISO INDUSTRIES CO., LTD.デプロイの⾃動化CFn未対応のものがある(ex.Lamdba同時実⾏数)tips
CI/CD + cloudformation82DAISO INDUSTRIES CO., LTD.AWS CLIデプロイの⾃動化CFn未対応のものがある(ex.Lamdba同時実⾏数)tipscircleCIで「CFn→CLI」
全体 開発イメージ83DAISO INDUSTRIES CO., LTD.本番環境本番⾃動デプロイ⾃動テストmaster83検証環境総合テスト⾃動デプロイ⾃動テストRelease/~~~開発環境結合テスト⾃動デプロイ⾃動テストdevelop実験環境環境テスト⾃動デプロイ⾃動テストPushFeature/~~~単体テストCommit改修プルリク プルリク
3.(まとめ)使ってみての感想、できあがったもの84DAISO 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点
おわり88DAISO INDUSTRIES CO., LTD.AWSで開発を推進中⼀緒に仕事しませんか!連絡、お待ちしております。[email protected]