プログラマでありたい

おっさんになっても、プログラマでありつづけたい

VPCとクラウドネイティブ

 長くAWSを使っていると気が付かなくなるのだけど、VPCというのはAWSを始めようとする際の1つの関門になっています。こういう事を書くと、ネットワークの知識があればVPCやサブネットの構築なんて簡単と反論されるかもしれません。どの辺りが解りにくいのか、順番に見てみましょう。

AWSネットワークとVPCネットワーク



 まずAWSのネットワークと、VPCのネットワークの違いを見てみましょう。VPCは、(便宜的に名付ける)AWSネットワークの中に、仮想的に作られたネットワークです。広大なAWSネットワークの海の隅っこにブイと網で囲まれた遊泳場のような場所がVPCです。まずこの概念が解りにくいのです。
 次にAWSのサービスの中には、VPC内のみに利用できるサービスとVPC内にいれられないサービス、そして中にも外にも作れるサービスの3種類があります。更に、VPC内には作れないけど、VPCにエンドポイント(接続ポイント)が作れるものがあります。一度、図示してみます。
f:id:dkfj:20160425080634p:plain

 VPC/非VPCのサービスがあるために、利用しようとしているサービスを利用する場合に、どう始めればよいのか解らないという声を聞いたことがあります。VPCを作ってから始めるのか、そのまま利用できるのか。また非VPCのサービスをVPC内から利用するにはどうすれば良いのかなどです。
 私はこれを聞いた時、成る程と思いました。昔から触っていて、それぞれのサービスができた時に一つづつ覚えてきた人間には、この悩みは起きにくいなぁという点です。これから利用するユーザに対して、何らかの配慮が必要なのでしょう。

Amazon Web Services クラウドネイティブ・アプリケーション開発技法の場合



 Amazon Web Services クラウドネイティブ・アプリケーション開発技法は、EC2を一切利用せずにアプリケーションのバックエンド・サービスを構築する方法の説明をしています。実はEC2だけではなく、VPCも一切使っていません。
 理由としては、2つあります。1つ目は、サービスを素早く使って貰うことにより、VPCの構成に悩むなど挫折してほしく無いためです。(VPCの作成については、前作読んで貰いたいし)そして、2つ目は、実はVPCなくてもちゃんとセキュリティを意識したサービスを作れるからです。

VPC対応とセキュリティ



 日常は、いわゆるエンタープライズと呼ばれるような企業さんと一緒に仕事をしていることもあり、AWSさんにAWSの各種サービスのVPC対応をよろしく頼みますとかお願いしていたりします。一方で、VPCが無いからセキュリティが低いと考えるのは、思考停止だなと思っています。VPCを使う理由としてはアクセス元制限などがありますが、実はVPCを使わずにちゃんと出来るんだぜということを、Amazon Web Services クラウドネイティブ・アプリケーション開発技法に書いているつもりです。

感想



 VPCを使おうが使うまいがクラウドネイティブとは関係ないと思います。一方で、VPCに対応していないサービスはセキュアではないと考えている人もいるのも事実です。個人的にはもっとクラウドの利用が進んでいると、VPCというのが使われなくなってくるのではと考えています。理由としては、EC2やRDSではなくDynamoDBやLambdaというサービスを使っていくとVPCの枠組みに収まらなくなってくるからです。もちろんAWSは、しっかりと各種サービスのVPC対応はしていくでしょう。一方で、ユーザーとしては必ずしも使う必要はないかもしれません。


See Also:
アプリケーションエンジニア向けのAWS本を書きました
Amazon Web Services クラウドネイティブ・アプリケーション開発技法の目次
Amazon Web Services クラウドネイティブ・アプリケーション開発技法のサンプルアプリケーションをGitHubで公開しました
エンジニアよ、越境しよう!!クラウド時代のエンジニア像
『Rubyによるクローラー開発技法』を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました