$30 off During Our Annual Pro Sale. View Details »

ユーザー企業におけるサーバレスシステムへの移行/JAWS DAYS2018

marumoto
March 10, 2018

ユーザー企業におけるサーバレスシステムへの移行/JAWS DAYS2018

・JAWS DAYS2018
・東京
・20180310

marumoto

March 10, 2018
Tweet

More Decks by marumoto

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 処理の考え⽅
    DAISO INDUSTRIES CO., LTD. 25
    処理したいデータ量




    1h
    処理能⼒/1h
    3h

    View Slide

  26. 処理の考え⽅
    DAISO INDUSTRIES CO., LTD. 26
    処理したいデータ量




    1h
    処理能⼒/1h
    1hで終わらせたい!
    スケールアップ

    View Slide

  27. 処理の考え⽅
    DAISO INDUSTRIES CO., LTD. 27
    処理したいデータ量




    1h
    処理能⼒/1h
    1hで終わらせたい!
    ×3
    スケールアウト

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. サービスいっぱい・・・
    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

    View Slide

  33. 振り分けてみた
    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
    スケールアウト型
    スケールアップ型

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. S3
    37
    DAISO INDUSTRIES CO., LTD.

    View Slide

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

    View Slide

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

    View Slide

  40. S3
    40
    DAISO INDUSTRIES CO., LTD.
    ファイル移動が失敗することがある
    AWS CLI
    tips

    All
    move
    ポーリング
    All
    move

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  46. SQS
    46
    DAISO INDUSTRIES CO., LTD.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. SQS
    50
    DAISO INDUSTRIES CO., LTD.





    スケーラブル






    View Slide



  51. SQS
    51
    DAISO INDUSTRIES CO., LTD.
    順番保証されない







    tips






    View Slide

  52. SQS
    52
    DAISO INDUSTRIES CO., LTD.
    順番保証されない










    結果整合性で設計する!
    どうしても順番がいる場合は、FIFOオプション
    tips

    View Slide

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

    View Slide

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

    View Slide

  55. Lambda
    55
    DAISO INDUSTRIES CO., LTD.

    View Slide

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

    View Slide

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

    View Slide

  58. Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較
    58
    DAISO INDUSTRIES CO., LTD.





    24
    0 12
    6 18
    オンプレ
    ピークにあわせてリソースを確保
    想定処理量

    View Slide

  59. 59
    DAISO INDUSTRIES CO., LTD.




    停⽌
    24
    0 12
    稼働 スケール
    アップ/アウト
    スケール
    ダウン/イン
    6 18


    Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較
    クラウドサーバー
    想定処理量

    View Slide

  60. 60
    DAISO INDUSTRIES CO., LTD.
    イベント駆動でスケーラブル、無駄がない




    24
    0 12
    6 18
    Lambda オンプレ、クラウドサーバー、サーバーレスを⽐較
    サーバーレス

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  66. DynamoDB
    66
    DAISO INDUSTRIES CO., LTD.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  70. 書き込みキャパ
    DynamoDB
    70
    DAISO INDUSTRIES CO., LTD.

    お⾦で解決
    書き込みできたコ×3
    書き込みまちのコ×2
    tips

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide