開催2019年8月2日、インフラストラクチャエンジニアやネットワークエンジニア向けの勉強会「インフラ・ネットワークエンジニア勉強会」がアイスタイル株式会社で開催されました。同会では、AWSに関するインフラ・ネットワーク視点の話や、オンプレ環境の話など、過去の事例を共有。6人のエンジニアが成功・失敗談をシェアしました。「ネットワークしくじり先生」に登壇したのは、kaga氏。講演資料はこちらスピーカーkagaネットワークしくじり先生kaga氏:それでは、「ネットワーク設計アンチパターン」という話をさせていただきます......と思ったんですけれども、ちょっとタイトルが堅いので「ネットワークしくじり先生」に、ちょっとやさしい雰囲気に変えたので、肩の力を抜いて聞いていただければなと思います。(会場拍手)自己紹介です。QAを5年やって、サーバサイドを3年やって、今はインフラを5年やっています。この5年間はほとんどがAWS環境で、オンプレについては全然詳しくないです。この資料は既にアップしてあるので、Twitterのハッシュタグとかを追っていただければわかると思います。私の趣味なんですけど、エンジニア向けのカンファレンスやイベントでカメラマンをやっています。iOSエンジニア向けのカンファレンスや、PHPエンジニア向けのカンファレンス等で撮影担当をやっています。今日のアジェンダです。AWSのVPCについて話そうと思います。その次にVPCの設計のベストプラクティスって何だっけという話をして、みなさんが大好きな失敗談をやって、最後まとめたいと思います。VPCについてお話しします。手を挙げてもらってもいいですかね。(会場挙手)なるほど。ありがとうございます。AWS、パブリッククラウドをメインで見ている方ってどれぐらいいます?(会場挙手)半々。若干オンプレのほうが上でしょうか。ありがとうございます。VPCについてじゃあ、VPCについてお話しします。これは公式のドキュメントから引っ張ってきたやつなんですけど、「VPCってそもそも何だ?」ということから始めます。AWSっていろいろなサービスが利用できるんですけど、その中で仮想ネットワーク、ほかのネットワークから論理的に切り離されていて干渉されない独自のネットワークを作ることができるのがVPCです。それに付随してVPCの中でIPのレンジをこういうふうに定めるのがSubnetです。来なかったら、あとで公式のドキュメントを見ていただけるとすごくわかりやすいかなと思います。ここで3つの構成図をご紹介します。1、VPCを開発環境などの単位で区切ったような、よく見る感じの構成図ですね。2、VPCは1つですけど、Subnetを各環境ごとに切ってあるやつ。3、最後にデフォルト構成。これはAWSアカウントを作って、一番最初にアクセスするとこういう環境になります。「AWSのネットワークの設計って何が正しいのか。あるべきなんだろうか」ということは私自身すごく悩んでいまして、自分の中の答えの1つとしては、論理的な単位で分割するといいと考えています。「論理的な単位って何ぞや?」って話になるんですけれども、1つは、いわゆる開発環境とか提供しているサービスの単位ですね。前者ですと、開発環境があり、staging環境があり、本番環境があります。さっき紹介したVPCで切った、その1という構成図、あとはSubnetで切ったその2の構成図が、この環境単位というところに当てはまります。あとは、1社1サービスじゃなくて1社で複数サービスを提供している場合は、提供しているサービスの単位でネットワークを切ってあげるのもありですね。大きな組織になると、組織単位でネットワークを切る。ここまでいくとアカウントを分割しようって話になると思うんですけど、こういうのが論理的な単位に当てはまるのかなと考えています。VPCのベストプラクティスじゃあ、ここで「AWSはどういうふうに考えているのか」というベストプラクティスを紹介してみます。Beltオンラインセミナー」というオンラインセミナーがあって、そちらのスライドも参考にすることができます。これは公式ドキュメントのスライドの1つなんですが、AWS環境をコード化することができるCloudFormationというサービスのサンプルの一環として、インターネットに露出するパブリックのSubnet、アプリケーションを置くプライベートのSubnet、あとはデータベースを置くSubnetみたいな構成をベストプラクティスのサンプルとして1つ挙げられています。Beltオンラインセミナー」で紹介されているように、VPCを分割するケースっていっぱい考えられるんですね。今回このスライドに紹介されているのは、アプリケーションの単位だったり、これは大規模なところになるとあり得るかもしれないんですけど、システム監査のスコープの単位だったり、リスクレベルによる単位というものあります。最後に書かれているんですけれども、この分割パターンって結局正解がなくて、使う側のオペレーション次第で分割する必要があるというのが1つの結論ではあります。実際にVPCを作成する際にはVPCウィザードを活用するのも手です。使いやすい機能なので、そういったものを活用していけばいいと思います。VPCウィザードを使用してVPCを作成するときに4パターンぐらいの構成を選ぶことができます。パブリックのSubnetと1つのVPC、あとはVPCにパブリックのSubnetとプライベートのSubnetみたいな感じで、あとはVPNのアクセスが考慮されているものなどを選択することができます。インフラネットワークの失敗談ここまでVPCの説明が続いてしまったので、そろそろ本編に入りたいと思います。息を整えさせてください。先にお断りしておきますが、私が今所属している会社のサービスがこういう構成であるということではないという点だけ最初にお伝えさせてください。