はじめに
こんにちは、技術本部SRE部フロントSREブロックの柳田です。オンプレミスとクラウドの構築・運用に携わっています。
ZOZOTOWNでは、既存システムのリプレイスプロジェクトを進行中です。リプレイス過渡期の現在、オンプレミスのネットワークとAWSのデータセンターを直接専用線で接続し、安定した高速通信を実現するDirect Connect(以降、DX)を利用しています。各サービスのマイクロサービス化に伴い、オンプレミスとクラウド間の通信量が増えた為、DX10Gの回線が逼迫する問題に直面しました。
本記事では、この回線逼迫の課題をどのように解決したかについて紹介します。
目次
回線逼迫の課題
DX10Gの回線逼迫により、以下の課題が出てきました。
- ZOZOTOWNへのアクセスが困難
- 今後のリプレイスプロジェクトが遅延する可能性
ZOZOTOWNへのアクセスが困難
DX10Gが回線逼迫することで、性能低下、アクセスの難しさ、信頼性の低下が生じます。具体的には、データ転送の遅延、レイテンシーの増加によるユーザーエクスペリエンスの低下、サイトやサービスへのアクセス障害、予期せぬダウンタイムによるサービス信頼性等、様々な影響が考えられます。
これらの問題は、ZOZOTOWNだけではなく同様に回線を利用している弊社のサービスであるWEARにも発生しうるものでした。
今後のリプレイスプロジェクトが遅延する可能性
ZOZOTOWNはリプレイスプロジェクトが現在進行中であり、リプレイスが進むにつれて、オンプレミスとクラウド間の通信が増えていました。このままDX10Gを使用し続ける場合、回線の飽和が生じてしまいます。この状況はリプレイスプロジェクトに遅延をもたらす可能性が高いです。リプレイスプロジェクトが遅延すると、ZOZOTOWNの成長が遅れるとともに、サイトの進化にも悪影響を及ぼすことが考えられました。
DX10GからDX100Gへの移行
上記2つの課題を対処するために、DX10GからDX100Gへの移行を実施しました。
このアップグレードにより、性能低下やアクセス困難、信頼性の低下といった問題を解決し、ZOZOTOWNのサービス品質を大幅に向上できると考えられました。
ZOZOTOWNのDX10Gネットワーク構成を簡潔に示すと、以下になります。
DX100Gへの移行準備は、以下の3ステップにて実施しました。それぞれのステップについて説明します。
- DX100Gの利用申請(クラウド)
- DX100G用のスイッチ導入(オンプレミス)
- AWS Transit Gatewayの導入(クラウド)
ステップ1:DX100Gの利用申請(クラウド)
AWSマネジメントコンソールからDX100Gの利用申請を行います。
まず、AWS Direct Connectサービスにアクセスし、必要なデータセンターを選択して100G回線を指定します。この過程で、Letter of Authorization (LOA) をダウンロードする必要があり、これは回線事業者への申請に必要な公式文書です。LOAを回線事業者へ提出することで、物理的な接続設定を開始します。この手続きは、AWS環境とオンプレミス環境間の高速接続を確立するための重要なステップです。
詳しくはこちらをご参照下さい。
ステップ2:DX100G用のスイッチ導入(オンプレミス)
オンプレミス側の必要な項目について以下にまとめます。
- データセンター機器のレンタル
- 100G通信が可能なONUとデータセンター機器を、回線事業者およびデータセンターからレンタルしました。
- レンタルに関する詳細情報や契約条件は、提携している回線事業者やデータセンターに直接お問い合わせいただくことをお勧めします。
- スイッチ/ケーブルの準備
- 弊社のスイッチは10Gまでの通信しかサポートしていなかった為、10G以上の通信を実現するためには、QSFPに対応したSFPモジュールの準備が必要でした。
- MPOケーブルの準備が必要です。これは、10Gを超える通信に適しており、複数のファイバーを効率的に扱えます。
- マネージド機器とスイッチの結線
- 準備したONUとマネージドスイッチを、弊社の既存スイッチに結線します。
- 実際に用意したSFPモジュールとMPOケーブルを結線する際の緊張感は、とんでもないものでした。
この段階のネットワーク構成は以下の通りです。
ステップ3:AWS Transit Gatewayの導入(クラウド)
DX100Gへの移行に伴い、Transit Gateway(TGW)を導入しました。
TGWにより、複数のVPCとオンプレミスネットワーク間の通信が簡素化され、管理が大幅に効率化されます。TGWの導入は、ネットワークの拡張性と柔軟性を向上させます。
このステップは、ZOZOTOWNのインフラを次のレベルへと引き上げる重要な進展でした。それぞれについて詳しく説明します。
Transit Gateway導入の経緯
リプレイスが進むにつれ、新規VPCを追加する度にDirect Connect Gateway(DXGW)とVirtual Private Gateway(VGW)を紐付ける作業に多大な労力を要していました。
この組み合わせでは、紐づけ可能なVPCの数が最大で10までと限定されており、さらにVPC間での直接通信が不可能であるという制約がありました。
これらの課題を解決するために、TGWへの移行を決定しました。TGWを採用することで、紐付け可能なVPCの数が5000まで増加し、異なるAWSアカウント間でのVPC間通信が可能になります。この移行はネットワーク管理の効率化と柔軟性の向上を実現しました。
TransitVIFとDXGWを用意
オンプレミスとクラウド間の通信にTGWを使用する為、Transit Virtual Interface (TransitVIF)の作成が必須です。
しかし、重要な注意点があります。TransitVIFは既存のDXGWには紐付けられません。そのため、新しいDXGWを準備し、そこにTransitVIFを紐付ける手順が必要になります。また、AS(Autonomous System)番号の重複にも注意してください。
DXGWとTGWの紐付け
DXGWとTGWの紐付け作業はAWSマネジメントコンソールから実施します。
IaCによるTGWの作成と管理
Infrastructure as Code (IaC)を用いてTGWの作成、そのアタッチメント、およびアソシエーションとプロパゲーションを実施しました。
この作業により、TGWのデプロイメントが自動化され、複数のVPCやオンプレミスネットワーク間での統合通信が容易になりました。IaCの採用により、これらの作業をコードベースで管理し、迅速かつ一貫性のある環境構築を実現しました。
この段階のネットワーク構成は以下の通りです。
本番移行
オンプレミスとクラウド環境の準備が整ったため、次はDX100Gへの移行プロセスについて説明します。
移行前準備
DX10GからDX100Gへの移行において、通信断やサイト停止を最小限に抑えるため、移行前に可能な限り多くの準備作業を行いました。
特に、TGWアタッチメントのアソシエーションとプロパゲーションは、既存の通信に影響を与えず事前に実施できる作業として挙げられます。これらの作業を先行することで、移行プロセスの影響を最小化しました。
また、重要な点として、各VPCのルートテーブルをTGWに向ける変更をしなければ、既存の通信へ影響を及ぼすことはありません。
移行実施
いよいよ移行作業です。
ZOZOTOWNはその巨大なシステム規模から、関連する多くのシステムとの連携が必要であり、サイト停止の調整が不可欠でした。このため、DX100Gへの移行作業は数十分で完了予定だったものの、全体としては約4時間のサイト停止時間を確保する必要がありました。約4時間かかる理由として、以下の要素がありました。
- ZOZOTOWNと関連システムの停止/開始作業
- DX100G切り替え後、ZOZOTOWN全体の動作検証
- 移行失敗時の切り戻し時間(バッファ)
移行作業としては以下作業を実施しました。
- ルートテーブルのターゲット切り替え(クラウド)
- 移行対象のVPCに関連するルートテーブルのターゲットをVGWからTGWに変更します。
- ZOZOTOWNはネットワークもIaC管理の為、CI/CDパイプラインを通じてルートテーブルのターゲットをVGWからTGWに変更しました。
- この自動化されたアプローチにより、ネットワーク設定の更新と展開を迅速かつ効率的に行うことができました。
- ファイアウォール機器のスタティックルート切り替え(オンプレミス)
- オンプレミスとクラウドの通信にファイアウォール機器を使用しています。
- ファイアウォール機器のスタティックルートがDX10G回線を指している為、DX100G回線へ向けてルーティングを更新します。
- これにより、通信がDX100G回線を経由するようになり、高速で安定した接続が確保されます。
上記の作業を実施した結果、6個のVPCを20分程度でDX100Gに切り替えることができました。また、VGWの関連付け解除は、移行後の対応で問題ありません。
この過程で、継続的な接続確認のためにpingやtracertコマンドを活用し、新しい回線への正確な切り替わりを監視しました。また、より詳細なネットワークパフォーマンス分析のためにmtrコマンドも利用可能です。これらのツールを駆使することで、移行作業の安全性とスムーズな実行を確保しました。適切なモニタリング手法の選択は、環境に応じて異なりますが、移行プロセスの成功には欠かせません。
まとめ
本記事では回線逼迫を解決するために、DX10GからDX100Gへの移行方法を紹介しました。
DX10GからDX100Gへの移行は、オンプレミスからクラウドまで多岐にわたる作業が必要で、非常に手間がかかりました。
本作業は、幅広い技術と計画が求められ、チーム全体での協力が不可欠でした。特に、dev/stg環境での移行手順の事前検証や移行リハーサルが、スムーズな移行を実現するための大きな要因となりました。
結果として、この移行はZOZOTOWNのインフラを大幅に強化し、将来の拡張性とパフォーマンスの向上を実現させることができました。
DX100Gを検討している方がいれば、ぜひ参考にしてください。
ZOZOでは、一緒にサービスを作り上げてくれる方を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください!