[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
@ Copyright HANDSLAB INC All Rights Reserved.
2015年3月22日
東急ハンズのクラウドデザインパターン
アーキテクチャー編
ハンズラボ株式会社
チーフエンジニア
田部井 一成
TW:@HandsLabInc #jawsug #jawsdays #handslab 1
自己紹介
 名前:田部井 一成
 所属:ハンズラボ株式会社
 担当:外販案件、特にポイントシステム
 特技:シェル芸、電子工作
 趣味:ビールクラフト、燻製、歩く、寝る
 好きなAWSサービス:
TW:@HandsLabInc #jawsug #jawsdays #handslab 2
今日お話したいこと
新基幹システムのアーキテクチャーについて
TW:@HandsLabInc #jawsug #jawsdays #handslab 3
東急ハンズの基幹システム?
 本資料では、MDシステムのこと
 MD:マーチャンダイジング
 商品管理、在庫管理、売上管理・・・
小売業にとっての根幹業務を担うシステム!
TW:@HandsLabInc #jawsug #jawsdays #handslab 4
開発チーム
東急ハンズの内製化を担当してきた
 元店舗従業員も開発
 RDB?オブジェクト指向?
 ネイティブなエンジニアと協業
 ユニケージ開発手法
 バックエンドの言語はbash
 データはテキストファイルで保持
 ミドルウェアやパッケージを極力排除
 フロントエンドはHTML5
 レガシーなバックエンドに、フロントは極力最新の
WEB技術を組み合わせる
TW:@HandsLabInc #jawsug #jawsdays #handslab 5
ミッション
① リアルタイム
大原則:フルマネージドサービスを使い倒す!
② 夜間バッチレス
③ スケールアウト
TW:@HandsLabInc #jawsug #jawsdays #handslab 6
ミッション
① リアルタイム
大原則:フルマネージドサービスを使い倒す!
 即時のリアルデータによる、接客向上
 将来のEC連携・統合への布石
 即時性の必要なデータをDynamoDBに
TW:@HandsLabInc #jawsug #jawsdays #handslab 7
①リアルタイム
FTPd
S3Bucket SQS Worker SNS
SQS Worker
SQS Worker
POSレジ
新POS
売上テーブル
在庫テーブル
新PDA/店舗PC店舗
WEB/APP
サーバ
レジ売上から在庫・売上データ更新フローの例
TW:@HandsLabInc #jawsug #jawsdays #handslab 8
①リアルタイム
レジ売上から在庫・売上データ更新フローの例
既存POSからの売上受信
は、POSから直接FTPサー
バへ保存。
S3 Event Notifications を
利用し、トランザクションの
書き込みをSQSへキューイ
ング。
FTPd
S3Bucket SQS Worker SNS
SQS Worker
SQS Worker
POSレジ
新POS
売上テーブル
在庫テーブル
新PDA/店舗PC店舗
WEB/APP
サーバ
TW:@HandsLabInc #jawsug #jawsdays #handslab 9
①リアルタイム
Workerはキューをクロール
し、処理区分に応じたSNSト
ピックを発行。
SNSは更新対象のSQSへ
キューイング。
今回は売上なので、売上と
在庫それぞれのSQSへ。
FTPd
S3Bucket SQS Worker SNS
SQS Worker
SQS Worker
POSレジ
新POS
売上テーブル
在庫テーブル
新PDA/店舗PC店舗
WEB/APP
サーバ
レジ売上から在庫・売上データ更新フローの例
TW:@HandsLabInc #jawsug #jawsdays #handslab 10
①リアルタイム
Workerは自分の担当の
キューをクロールし、
DynamoDBの在庫/売上を
更新する。
店舗従業員は、各自の
PDA/店舗PCからアクセス
する。
AppサーバはDynamoDB
から在庫/売上を取得すると、
現時点の数量がリアルタイ
ムに表示される
FTPd
S3Bucket SQS Worker SNS
SQS Worker
SQS Worker
POSレジ
新POS
売上テーブル
在庫テーブル
新PDA/店舗PC店舗
WEB/APP
サーバ
レジ売上から在庫・売上データ更新フローの例
TW:@HandsLabInc #jawsug #jawsdays #handslab 11
①リアルタイム
 ポイント
 更新処理のトリガーをS3に
 S3に1ファイル置くだけで、後続処理はよしなに
 複数SQSへのキューイングはSNSで
 例外処理の省力化
 SNSがバッファになる
TW:@HandsLabInc #jawsug #jawsdays #handslab 12
ミッション
大原則:フルマネージドサービスを使い倒す!
② 夜間バッチレス
 夜中に電話で起こされるのはもう嫌・・・
 確定データ作成処理のお守りをする毎日
 完了遅延で開店ができない・・・
 日中も常に確定データを作り続け、店舗業務終了と
同時に日次データが完成
TW:@HandsLabInc #jawsug #jawsdays #handslab 13
②夜間バッチレス
FTPd
S3Bucket
POSレジ
新POS
レジ売上から日次データ更新までの流れ
Worker 日次データ
集計データ 新PDA/店舗PC店舗
WEB/APP
サーバ
既存POSからの売上受信
は、POSから直接FTPサー
バへ保存。
1トランザクション1ファイル
で、リアルタイム用とは別の
Bucketに保存する
TW:@HandsLabInc #jawsug #jawsdays #handslab 14
②夜間バッチレス
FTPd
S3Bucket
POSレジ
新POS
レジ売上から日次データ更新までの流れ
Worker 日次データ
集計データ 新PDA/店舗PC店舗
WEB/APP
サーバ
WorkerはS3上の取引ファイル
を集めて日次・集計処理。
一日分の取引を、日中常に洗い
替え処理するイメージ。
日次データは当日発生した
トランザクションのまとめファ
イル。
集計データは、過去データ
も含めた、計算済みファイル。
TW:@HandsLabInc #jawsug #jawsdays #handslab 15
②夜間バッチレス
FTPd
S3Bucket
POSレジ
新POS
レジ売上から日次データ更新までの流れ
Worker 日次データ
集計データ 新PDA/店舗PC店舗
WEB/APP
サーバ
店舗Appサーバは、過去
データの参照や、リアルタイ
ム性が不要な情報は、S3か
らファイルを取得する。
店舗業務終了後、サーバを
停止する。
店舗の業務が終わり、デー
タが発生しなくなったら、
Workerを止める。
最後の日次処理データ=確
定データ。
TW:@HandsLabInc #jawsug #jawsdays #handslab 16
②夜間バッチレス
FTPd
S3Bucket
POSレジ
新POS
レジ売上から日次データ更新までの流れ
Worker 日次データ
集計データ 新PDA/店舗PC店舗
WEB/APP
サーバ
店舗Appサーバは、過去
データの参照や、リアルタイ
ム性が不要な情報は、S3か
らファイルを取得する。
店舗業務終了後、サーバを
停止する。
店舗の業務が終わり、デー
タが発生しなくなったら、
Workerを止める。
最後の日次処理データ=確
定データ。
詳しくはWEBで!
TW:@HandsLabInc #jawsug #jawsdays #handslab 17
②夜間バッチレス
 ポイント
 DynamoDBを使わない
 集計処理や洗い替えには向かない
 RDSを使わない
 大規模にスケールできない
 そもそもテキストファイル文化
 S3にデータを保存する謎の安心感
TW:@HandsLabInc #jawsug #jawsdays #handslab 18
ミッション
大原則:フルマネージドサービスを使い倒す!
③ スケールアウト
 今後の新システムの全店導入をスムーズに
 新店オープンでも処理能力の心配を無しに
 EC連動/統合を視野にいれる
TW:@HandsLabInc #jawsug #jawsdays #handslab 19
③スケールアウト
SQS/SNSの活用で、各部が疎結合/ステートレス!
AutoScaling、DynamoDB、S3でデータ/処理能力がオートスケール!
S3Bucket
Worker
日次データ
集計データ
FTPd
S3Bucket SQS Worker SNS
SQS Worker
SQS Worker
POSレジ
新POS
売上テーブル
在庫テーブル
新PDA/店舗PC店舗
WEB/APP
サーバ
ASG
ASG
ASG
ASG
ASG
キュー数で
オートスケール!
負荷で
オートスケール!
TW:@HandsLabInc #jawsug #jawsdays #handslab 20
③スケールアウト
SQS/SNSの活用で、各部が疎結合/ステートレス!
AutoScaling、DynamoDB、S3でデータ/処理能力がオートスケール!
S3Bucket
Worker
日次データ
集計データ
FTPd
S3Bucket SQS Worker SNS
SQS Worker
SQS Worker
POSレジ
新POS
売上テーブル
在庫テーブル
新PDA/店舗PC店舗
WEB/APP
サーバ
ASG
ASG
ASG
ASG
ASG
キュー数で
オートスケール!
負荷で
オートスケール!
売上高1兆円規模でも対応可能!!
※2013年3月期
売上高 828億万円(Wikipediaより)
TW:@HandsLabInc #jawsug #jawsdays #handslab 21
③スケールアウト
1兆円システムへの懸念点・・・
S3Bucket
Worker
日次データ
集計データ
FTPd
S3Bucket SQS Worker SNS
SQS Worker
SQS Worker
POSレジ
新POS
売上テーブル
在庫テーブル
新PDA/店舗PC店舗
WEB/APP
サーバ
ASG
ASG
ASG
ASG
ASG
1Bucketが受けられる書き
込みリクエストは、100件/秒
まで
SNSは毎秒3000件を超え
るとAWSの中の人に怒られ
る
SQSも毎秒3000件を超える
とAWSの中の人に怒られる
TW:@HandsLabInc #jawsug #jawsdays #handslab 22
まとめ
ハンズラボでは、こういう、ちゃんとした、基幹システムもつく
れるということや
TW:@HandsLabInc #jawsug #jawsdays #handslab 23
まとめ
ハンズラボでは、こういう、ちゃんとした、基幹システムもつく
れるということや
しかも、既存の考え方にとらわれず、常に
新しいソリューションを追い求めます!
TW:@HandsLabInc #jawsug #jawsdays #handslab 24
今後の予定
 新MDシステムの全店舗展開
 新POSの開発
 ECとの連動、統合
 そして、外販へ・・・
今後も目玉開発が目白押し!
ハンズラボでは、一緒に新アーキテクチャーを構築し
てくれるメンバーを募集してます!

More Related Content

東急ハンズのクラウドデザインパターン アーキテクチャー編

  • 1. @ Copyright HANDSLAB INC All Rights Reserved. 2015年3月22日 東急ハンズのクラウドデザインパターン アーキテクチャー編 ハンズラボ株式会社 チーフエンジニア 田部井 一成
  • 2. TW:@HandsLabInc #jawsug #jawsdays #handslab 1 自己紹介  名前:田部井 一成  所属:ハンズラボ株式会社  担当:外販案件、特にポイントシステム  特技:シェル芸、電子工作  趣味:ビールクラフト、燻製、歩く、寝る  好きなAWSサービス:
  • 3. TW:@HandsLabInc #jawsug #jawsdays #handslab 2 今日お話したいこと 新基幹システムのアーキテクチャーについて
  • 4. TW:@HandsLabInc #jawsug #jawsdays #handslab 3 東急ハンズの基幹システム?  本資料では、MDシステムのこと  MD:マーチャンダイジング  商品管理、在庫管理、売上管理・・・ 小売業にとっての根幹業務を担うシステム!
  • 5. TW:@HandsLabInc #jawsug #jawsdays #handslab 4 開発チーム 東急ハンズの内製化を担当してきた  元店舗従業員も開発  RDB?オブジェクト指向?  ネイティブなエンジニアと協業  ユニケージ開発手法  バックエンドの言語はbash  データはテキストファイルで保持  ミドルウェアやパッケージを極力排除  フロントエンドはHTML5  レガシーなバックエンドに、フロントは極力最新の WEB技術を組み合わせる
  • 6. TW:@HandsLabInc #jawsug #jawsdays #handslab 5 ミッション ① リアルタイム 大原則:フルマネージドサービスを使い倒す! ② 夜間バッチレス ③ スケールアウト
  • 7. TW:@HandsLabInc #jawsug #jawsdays #handslab 6 ミッション ① リアルタイム 大原則:フルマネージドサービスを使い倒す!  即時のリアルデータによる、接客向上  将来のEC連携・統合への布石  即時性の必要なデータをDynamoDBに
  • 8. TW:@HandsLabInc #jawsug #jawsdays #handslab 7 ①リアルタイム FTPd S3Bucket SQS Worker SNS SQS Worker SQS Worker POSレジ 新POS 売上テーブル 在庫テーブル 新PDA/店舗PC店舗 WEB/APP サーバ レジ売上から在庫・売上データ更新フローの例
  • 9. TW:@HandsLabInc #jawsug #jawsdays #handslab 8 ①リアルタイム レジ売上から在庫・売上データ更新フローの例 既存POSからの売上受信 は、POSから直接FTPサー バへ保存。 S3 Event Notifications を 利用し、トランザクションの 書き込みをSQSへキューイ ング。 FTPd S3Bucket SQS Worker SNS SQS Worker SQS Worker POSレジ 新POS 売上テーブル 在庫テーブル 新PDA/店舗PC店舗 WEB/APP サーバ
  • 10. TW:@HandsLabInc #jawsug #jawsdays #handslab 9 ①リアルタイム Workerはキューをクロール し、処理区分に応じたSNSト ピックを発行。 SNSは更新対象のSQSへ キューイング。 今回は売上なので、売上と 在庫それぞれのSQSへ。 FTPd S3Bucket SQS Worker SNS SQS Worker SQS Worker POSレジ 新POS 売上テーブル 在庫テーブル 新PDA/店舗PC店舗 WEB/APP サーバ レジ売上から在庫・売上データ更新フローの例
  • 11. TW:@HandsLabInc #jawsug #jawsdays #handslab 10 ①リアルタイム Workerは自分の担当の キューをクロールし、 DynamoDBの在庫/売上を 更新する。 店舗従業員は、各自の PDA/店舗PCからアクセス する。 AppサーバはDynamoDB から在庫/売上を取得すると、 現時点の数量がリアルタイ ムに表示される FTPd S3Bucket SQS Worker SNS SQS Worker SQS Worker POSレジ 新POS 売上テーブル 在庫テーブル 新PDA/店舗PC店舗 WEB/APP サーバ レジ売上から在庫・売上データ更新フローの例
  • 12. TW:@HandsLabInc #jawsug #jawsdays #handslab 11 ①リアルタイム  ポイント  更新処理のトリガーをS3に  S3に1ファイル置くだけで、後続処理はよしなに  複数SQSへのキューイングはSNSで  例外処理の省力化  SNSがバッファになる
  • 13. TW:@HandsLabInc #jawsug #jawsdays #handslab 12 ミッション 大原則:フルマネージドサービスを使い倒す! ② 夜間バッチレス  夜中に電話で起こされるのはもう嫌・・・  確定データ作成処理のお守りをする毎日  完了遅延で開店ができない・・・  日中も常に確定データを作り続け、店舗業務終了と 同時に日次データが完成
  • 14. TW:@HandsLabInc #jawsug #jawsdays #handslab 13 ②夜間バッチレス FTPd S3Bucket POSレジ 新POS レジ売上から日次データ更新までの流れ Worker 日次データ 集計データ 新PDA/店舗PC店舗 WEB/APP サーバ 既存POSからの売上受信 は、POSから直接FTPサー バへ保存。 1トランザクション1ファイル で、リアルタイム用とは別の Bucketに保存する
  • 15. TW:@HandsLabInc #jawsug #jawsdays #handslab 14 ②夜間バッチレス FTPd S3Bucket POSレジ 新POS レジ売上から日次データ更新までの流れ Worker 日次データ 集計データ 新PDA/店舗PC店舗 WEB/APP サーバ WorkerはS3上の取引ファイル を集めて日次・集計処理。 一日分の取引を、日中常に洗い 替え処理するイメージ。 日次データは当日発生した トランザクションのまとめファ イル。 集計データは、過去データ も含めた、計算済みファイル。
  • 16. TW:@HandsLabInc #jawsug #jawsdays #handslab 15 ②夜間バッチレス FTPd S3Bucket POSレジ 新POS レジ売上から日次データ更新までの流れ Worker 日次データ 集計データ 新PDA/店舗PC店舗 WEB/APP サーバ 店舗Appサーバは、過去 データの参照や、リアルタイ ム性が不要な情報は、S3か らファイルを取得する。 店舗業務終了後、サーバを 停止する。 店舗の業務が終わり、デー タが発生しなくなったら、 Workerを止める。 最後の日次処理データ=確 定データ。
  • 17. TW:@HandsLabInc #jawsug #jawsdays #handslab 16 ②夜間バッチレス FTPd S3Bucket POSレジ 新POS レジ売上から日次データ更新までの流れ Worker 日次データ 集計データ 新PDA/店舗PC店舗 WEB/APP サーバ 店舗Appサーバは、過去 データの参照や、リアルタイ ム性が不要な情報は、S3か らファイルを取得する。 店舗業務終了後、サーバを 停止する。 店舗の業務が終わり、デー タが発生しなくなったら、 Workerを止める。 最後の日次処理データ=確 定データ。 詳しくはWEBで!
  • 18. TW:@HandsLabInc #jawsug #jawsdays #handslab 17 ②夜間バッチレス  ポイント  DynamoDBを使わない  集計処理や洗い替えには向かない  RDSを使わない  大規模にスケールできない  そもそもテキストファイル文化  S3にデータを保存する謎の安心感
  • 19. TW:@HandsLabInc #jawsug #jawsdays #handslab 18 ミッション 大原則:フルマネージドサービスを使い倒す! ③ スケールアウト  今後の新システムの全店導入をスムーズに  新店オープンでも処理能力の心配を無しに  EC連動/統合を視野にいれる
  • 20. TW:@HandsLabInc #jawsug #jawsdays #handslab 19 ③スケールアウト SQS/SNSの活用で、各部が疎結合/ステートレス! AutoScaling、DynamoDB、S3でデータ/処理能力がオートスケール! S3Bucket Worker 日次データ 集計データ FTPd S3Bucket SQS Worker SNS SQS Worker SQS Worker POSレジ 新POS 売上テーブル 在庫テーブル 新PDA/店舗PC店舗 WEB/APP サーバ ASG ASG ASG ASG ASG キュー数で オートスケール! 負荷で オートスケール!
  • 21. TW:@HandsLabInc #jawsug #jawsdays #handslab 20 ③スケールアウト SQS/SNSの活用で、各部が疎結合/ステートレス! AutoScaling、DynamoDB、S3でデータ/処理能力がオートスケール! S3Bucket Worker 日次データ 集計データ FTPd S3Bucket SQS Worker SNS SQS Worker SQS Worker POSレジ 新POS 売上テーブル 在庫テーブル 新PDA/店舗PC店舗 WEB/APP サーバ ASG ASG ASG ASG ASG キュー数で オートスケール! 負荷で オートスケール! 売上高1兆円規模でも対応可能!! ※2013年3月期 売上高 828億万円(Wikipediaより)
  • 22. TW:@HandsLabInc #jawsug #jawsdays #handslab 21 ③スケールアウト 1兆円システムへの懸念点・・・ S3Bucket Worker 日次データ 集計データ FTPd S3Bucket SQS Worker SNS SQS Worker SQS Worker POSレジ 新POS 売上テーブル 在庫テーブル 新PDA/店舗PC店舗 WEB/APP サーバ ASG ASG ASG ASG ASG 1Bucketが受けられる書き 込みリクエストは、100件/秒 まで SNSは毎秒3000件を超え るとAWSの中の人に怒られ る SQSも毎秒3000件を超える とAWSの中の人に怒られる
  • 23. TW:@HandsLabInc #jawsug #jawsdays #handslab 22 まとめ ハンズラボでは、こういう、ちゃんとした、基幹システムもつく れるということや
  • 24. TW:@HandsLabInc #jawsug #jawsdays #handslab 23 まとめ ハンズラボでは、こういう、ちゃんとした、基幹システムもつく れるということや しかも、既存の考え方にとらわれず、常に 新しいソリューションを追い求めます!
  • 25. TW:@HandsLabInc #jawsug #jawsdays #handslab 24 今後の予定  新MDシステムの全店舗展開  新POSの開発  ECとの連動、統合  そして、外販へ・・・ 今後も目玉開発が目白押し! ハンズラボでは、一緒に新アーキテクチャーを構築し てくれるメンバーを募集してます!

Editor's Notes

  • #5: その分止まってはいけない感が強い レガシーな仕組みがまだまだ多い オンプレミス、閉域網、Win2003・・・ 弊社で、内製でクラウド化
  • #6: これからは、これらにAWSのサービスを組み合わせて行きたい
  • #7: フルマネージドを使い倒す! →さらに具体的な3つの目標があった
  • #13: 間に構成要素がたくさんあるのに、リアルタイム?
  • #14: 確定データの話 一日のデータをためてから確定処理→夜中にエラー →確定処理が遅延、開店できない。もしくはプランB
  • #17: データの構造とかわかりにくい? 詳しくはWEBで!
  • #18: データの構造とかわかりにくい? 詳しくはWEBで!