
こんにちは。LayerX AI・LLM事業部 SREの@shinyorke(しんよーく)と申します。
最近は個人開発で作っている「生成AIによる野球データ分析」がだいぶ進捗して嬉しいです。
詳細は7/29(火)LayerX ランチタイムLT「AI for fun」でお披露目しますのでご興味あるかたはぜひ!*1
ここから先、本題の話となります。
本記事では、多くの方が苦しむであろう(私もかつて苦しんでいました)、
クラウドネイティブな環境におけるネットワーク設計・構築
について、SREとしての実践的な学び方を紹介します。
特に、エンタープライズ企業でのシステム構築において、多くのエンジニアが苦戦するネットワーク分野について、効果的な学習方法と実務でよく遭遇するパターンについて解説していきます。
なお、「VPC(VNet)」「Subnet」といった、基本的な要素は解説しませんのでご了承ください。
TL;DR
クラウドなネットワークを学ぶには、「ネットワークデザインパターンの理解」と「実際に作って触ってみる実践的な学習」が最も効果的です。
クラウドなネットワークを学ぶ
クラウドネイティブな環境におけるネットワーク設計は、従来のオンプレミス環境とは異なる考え方が求められます。多くのエンジニアがこの分野で苦戦する理由は、クラウドプロバイダー固有の概念やサービスを理解する必要があるためです。
効果的な学習アプローチ
クラウドなネットワークを学ぶ上で、以下の2つのアプローチが最も効果的です:
- ネットワークデザインパターンの理解
- 実際に作って触ってみる実践的な学習
ネットワークデザインパターンの理解
ネットワークデザインパターンは、書籍と事例集から体系的に学ぶことができます。まずは、自分が使用しているパブリッククラウドの公式ドキュメントや書籍から入ることをお勧めします。
私自身、Azureのネットワークをキャッチアップするために以下の書籍を活用しました:
- Azureネットワーク設計・構築入門: Azure固有の知識とベストプラクティスを学ぶ
- マルチクラウドネットワークの教科書: プロバイダー非依存のネットワークデザインパターンを理解する
AWSおよびGoogle Cloudは他にも書籍があるかもしれません(私は読んでいない)。
これらの書籍を並行して読むことで、特定のクラウドプロバイダーの特性と、普遍的なネットワーク設計の原則の両方を理解できます。
事例集とサンプルコードの活用
ネットワークに限らず、事例集はGoogle Cloudが最も充実しています。
Google Cloud Official Icons & Solution Architecturesでは、アイコン・素材集のスライドの後半にアーキテクチャ例が豊富に掲載されています。
一例を上げると、「Digital Asset Management and Sharing」というパターン(インターネット経由で動画などのメディア配信を想定)ではこのようなアーキテクチャ図などが提示されています。

具体的なVPCやSubnet構成に触れていないものの、これらの事例は概念理解に非常に役立ち、作りたいパターンと似ているものがあれば真似して構築することで学習効果が高まります。
また、Terraformのサンプルコードも活用できます。terraform-docs-samplesなどのリポジトリには、実際に動作するサンプルコードが多数公開されています。
これらのコードを写経して動かすことで、実践的なスキルを身につけることができます。
私は前職(大手外資コンサルのTechnical部門でSREのManagerをしていました)にて、初めて触るTerraformおよび、初めて見るようなクラウドのインフラ設計、特にネットワーク設計で想定されるパターンは上記のリソース(と資格取得)を通じて学びました*2。
実践的な学習の重要性
最大の学習方法は「自分で触ってみる、やってみる」ことです、具体的には「個人開発」「趣味プロジェクト」でモノを作ると理解が早まります。
紹介した書籍やサンプルの真似をしながら、自分で写経して動かすのが最も効率的な学習方法です。
また、仕事でやれないパターン(特に新技術やβ版などGAされていない新サービス)は個人開発、趣味プロジェクトの範疇で試すとGoodです。
手前味噌かつ、古い記事ではありますが私自身はSWEとしてのスキルを個人開発で磨きつつ、
- 試したいクラウドサービスを試す
- やったこと無いネットワーク設計をやる
といった事を個人開発で実践しました。生成AIが普及した今ならもっと楽にやれそうな気がします。
なお、構築・デバッグ共に生成AIに頼るのは良いですが、
- 基本的な設計や構築は自分で行う
- 生成AIが出力した結果、動いたら全て読んでまた壊して動かしてみる
といった自学自習とスクラップアンドビルドをすると、より深い理解が得られます。
実務でありがちなパターン
以上は学び方の話でしたが、割と鉄板のパターンもいくつかあります。
エンタープライズ企業でのシステム構築において、以下の2つのパターンは非常に頻繁に遭遇します。これらのパターンについて、最初に考えるべきポイントを紹介します。
- 異なるVPC/VNet同士の接続
- 異なるクラウド同士の接続
異なるVPC/VNet同士の接続
異なるVPC(Virtual Private Cloud)やVNet(Virtual Network)同士を接続する必要がある場合、クラウドプロバイダーによって概念や実装方法が異なることに注意が必要です。
クラウドプロバイダー別のアプローチ
以下はChatGPTに聞きつつ、私が間違いを修正してまとめたパターンです。
Azureの場合 Azureでは、VNetピアリングから考えることが基本です。VNetピアリングは、同じリージョン内の2つのVNetを接続する最も効率的な方法です。VPNや専用線を使用せずに、低レイテンシーで高帯域幅の接続を実現できます。
AWSの場合 AWSでは、VPCピアリングが標準的なアプローチです。VPCピアリングにより、異なるVPC間でプライベートIPアドレスを使用した通信が可能になります。
Google Cloudの場合 Google CloudもVPCピアリングを提供していますが、構成によってはShared VPCを使用するパターンが効果的な場合もあります。Shared VPCは、複数のプロジェクトでVPCを共有する仕組みで、大規模な組織での管理を効率化できます。
設計時の考慮点
異なるVPC/VNet同士の接続を設計する際は、以下の点を考慮する必要があります:
- IPアドレス空間の重複回避: 接続するVPC/VNet間でIPアドレス空間が重複しないよう設計する*3
- ルーティング設定: 適切なルーティング設定により、トラフィックの流れを制御する
- セキュリティグループ/NSG: ネットワークレベルでのセキュリティを確保する
- モニタリング: 接続の状態とパフォーマンスを監視する仕組みを構築する
以上を考慮するといい感じになります。
異なるクラウド同士の接続
マルチクラウド環境では、異なるクラウドプロバイダー間の接続が必要になる場合があります。この場合、まずは要件を事細かに確認することが重要&要件によって毎度考えることが重要です。
接続方式の選択
異なるクラウド同士の接続には、基本的に以下の3つの選択肢があります(他にもありそうですがとりあえず3つ):
- VPN接続: インターネット経由での仮想的な専用線
- 専用線: 物理的な専用回線による接続
- WAN(SD-WAN、マネージドWAN): ソフトウェア定義WANやマネージドWANサービス
選択基準の整理
接続方式を選択する際は、以下の4つの観点から評価することをお勧めします:
- レイテンシー: データ転送の遅延時間
- 可用性: サービスの稼働率と障害時の復旧時間
- セキュリティ: データの暗号化とアクセス制御
- コスト: 初期費用と運用費用の総合的な評価
これらの観点を事前に整理しておくことで、要件に最適な接続方式を選択できます。
本当は各社(Azure/AWS/Google Cloud)で各手段の紹介をしたいところですが長くなるので割愛します(読みたい希望が出てきたら続編として別記事にできればと思います)。
結び
クラウドなネットワークを学ぶことは、現代のSREにとって必須かつ重要なスキルです。
本音で言うと私はネットワークが大の苦手なのですが、SREロールで働き始めた4年前から学習してなんとか克服しました。
本記事で紹介した学習方法と実務パターンを参考に、効果的なネットワーク設計・構築スキルを身につけていただければと思います。
特に、ネットワークデザインパターンの理解と実践的な学習の両方を重視することで、より深い理解と実践的なスキルを獲得できます。各組織の状況や要件に応じて、適切なアプローチを選択し、継続的に学習を進めることが重要です。
この辺詳しく話をしたい方は、私とカジュアル面談もしくはSRE NEXT 2024のLayerXブースでぜひお話しましょう!
Xの@LayerX_techアカウントではLayerXの様々な取り組みを発信していますので、是非こちらもフォローしてください。
最後までお読みいただきありがとうございました。