【レポート】AWS で実現するクラウドファーストなエンタープライズ・インテグレーション基盤 #AWSSummit

AWS Summit Tokyo 2018「AWS で実現するクラウドファーストなエンタープライズ・インテグレーション基盤」のセッションレポートです。セション概要:ファーストリテイリングでは全社を挙げて、商品の企画・生産、物流、社員の働き方までを一体改革する「有明プロジェクト」を進めています。新しいアプリケーション基盤の構築、および我々が描いているエンタープライズの未来についてご紹介します。
2018.05.30

AWS Summit Tokyo 2018。Day1 で開催された「AWS で実現するクラウドファーストなエンタープライズ・インテグレーション基盤」についてレポートします。

スピーカー:石井 健一 株式会社ファーストリテイリング デジタル業務改革サービス部 シニアエンタープライズアーキテクト/マネージャー

セッション概要は下記となります。

ファーストリテイリングでは全社を挙げて、商品の企画・生産、物流、社員の働き方までを一体改革する「有明プロジェクト」を進めています。デジタル化を軸 にビジネスモデルそのものを変革していく中、基幹系を含めた業務システムの全面クラウド化は避けられない状況でした。クラウド化を前提とした大規模エン タープライズ開発に向けて、2年前から取り組んできた新しいアプリケーション基盤の構築、および我々が描いているエンタープライズの未来についてご紹介します。

レポート

ファーストリテイリング

  • UNIQLO 19の国と地域。8つのブランド
    • SPA:製造小売という業態
  • 有明プロジェクト
    • グループが変革に対応するために
    • 新しい産業を創る
    • 情報製造小売業へ

エンタープライズIT事例

  • エンタープライズIT事例
    • 新しいビジネスへ
    • 業務システムを作りなおす
    • 準備、段取りがなければ成功は難しい
  • これまで
    • オンプレミスxクローズド
      • ジャパンセントリック
      • 海外からのアクセスが考慮外だった
  • これから
    • クラウドxオープン
      • アーキテクチャを刷新
  • エンタープライズITにおけるAWS活用事例
    • 基幹システムを含む既存サーバをAWSに移行
    • SAP ERPをAWSインフラ上に短期間で構築展開
      • 6ヶ月で構築
    • B2B EDIサービスをクラウドネイティブなアーキで再構築
      • 時間起動からイベントドリブンへ

クラウドファースト・インテグレーション基盤

  • インテグレーションの仕組みをどうやって用意したら良いのかを検討した
    • 悩み1: もつれてからみあったジョブネットをなんとかしたい
    • 悩み2: 密結合かつ大量のシステム間IFをなんとかしたい
    • 開発に着手する前に、まずは標準化されたインテグレーション基盤が不可欠
  • AWSサービスを組み合わせてバッチ実行とデータ連携のための基盤を構築してみる
    • AWSでバッチ開発したいとき
      • SQSを使った分散バッチ環境
      • Beanstalk Worker Tierを使うことでBLの実装に専念
    • 大規模なエンタープライズ開発に適用するには
      • At-Least-One-Deliverly, 順序保証ない
      • ジョブ依存はクライアント任せ
      • 冪等性の担保
      • 既存システムとの連携
      • 負荷分散
    • 要件
      • 非同期なアプリケーション実行
      • ジョブネットを代替可能なタスクフロー管理
      • 並列処理
      • 重複実行回避
      • パラメータ
    • アーキテクチャ
      • SQS+Beanstalkが基本
      • 各種制御を追加。RDSを使用
        • 定義情報
        • 実行履歴の保持
    • タスク実行
      • SQSメッセージ重複受信チェック
      • メッセージからJSONパラメータを取得
      • パラメータの定義でメソッドInvoke
      • 実行ステータスをRDSに記録
    • 後続タスク起動
      • 後続タスクの定義取得
      • 定義に合わせたJSONパラメータを生成
      • SQSへメッセージ送信
    • リカバリ・再実行
      • コンソールから実行結果を確認
      • 必要に応じてメッセージを再送信
    • JSONメッセージ
      • lastMessageIdで重複をチェック
    • タスク同士の依存解決
      • Regular
      • Splitter and Aggregator
        • 分散と集約の待ち合わせ

システム間のデータ連携

  • システム間のデータ連携をしたい場合にはどうするか
    • S3イベントとAWS Lambdaを使うことでイベントドリブン
    • サーバレスアーキテクチャなので運用負荷削減
    • システム数が増えてくると、メッシュ化
    • ハブ&スポーク型への移行は必須
  • システム間データ連携基盤に求める要件
    • イベント駆動の非同期連携
    • in-outの分離
    • 各dエータソースへの接続情報/アクセス権限の一元管理
    • 定義ベースでのルーティング制御
    • EDI/ETL連携
    • 運用(モニタリング/保留など)API
  • アーキテクチャ
    • inbount-internal-outboundバケットを分離
    • Beanstalk Applicationで処理、ルーティング
  • ユースケース
    • 同報配信
    • ETL
      • srcやdestをS3ではなくDBなどに差し替え可能
      • talend
    • 保留・再送信
      • Webのコンソールから再開の指示としてSQSのメッセージを送信
      • データの訂正: S3からダウンロードして修正、アップロード

まとめ

  • SQSとBeanstalk Worker環境をそのまま使うのではなく、RDSを使った実行管理
    • 重複実行排除、タスク依存解決
  • メッセージ標準化
  • S3
  • EDIサービスの構築にバッチ処理、データ連携のアーキテクチャを採用
  • 正式なアーキテクチャ標準として採用

仲間募集中

  • さまざまな職種で求人中

さいごに

ファーストリテイリングのビジネスを支えるインテグレーション基盤の紹介でした。AWSのサービスをベースにして、SQS + Beanstalk Workerという基本設計から、さらに独自に拡張したものをビジネスアプリケーションの基盤としたという点が興味ふかいですね。