EC2 から Lambda までの歴史を振り返ってクラウドネイティブに思いをはせる
Posted on
- #aws
この記事は AWS Advent Calendar 2015 の 4 日目の投稿です。
今年になってからバズっている「クラウドネイティブ」が一過性のブームなのか、それとも今後も重要なポジションを占めるのか、AWS の歴史を振り返りながら考えてみました。技術的な話はあまり出てきませんが、自分の考えを言語化して頭の中を整理するつもりで書いてみようと思います。
仰々しいタイトルをつけましたが半分ポエムです :-P
EC2 は仮想サーバか?
「EC2 はクラウド上の仮想サーバです。」
EC2 を一言で説明するなら、ほとんどの方がこう答えるのではないでしょうか? ですが、公式ページを読んでみると次のような説明があります。
Amazon Elastic Compute Cloud (Amazon EC2) とは、クラウド内でサイズ変更が可能なコンピューティング処理能力を提供するウェブサービスです。
EC2 は仮想サーバではなく コンピューティング処理能力 であると謳っているのです。もっと平たく言えば CPU やメモリの計算リソースを提供するサービスです。それは EC2 という名前にも表れています。 EC2 が "Elastic Computer Cloud" の略ではなく "Elastic Compute Cloud" なのも納得できます。
現実的には説明のしやすさやユーザーの戸惑いを避けるために仮想サーバという扱いになっていますが、EC2 はあくまでコンピューティング処理能力のサービスであり、これまでの仮想サーバと同義で扱うとメリットが色褪せてしまうのではないかと思います。
EC2 の歴史
次に EC2 の歴史で特にインパクトの大きかったものを振り返ってみます(日付は「AWS のサービスのリリース日をまとめた」を参考にさせてもらいました)。 EC2 には数多くの機能がありますが、初期のころは今とはまったく違うものでした。
- 2006-08-24
- EC2 のベータ版がリリース。
- 2008-03-27
- Elastic IP の登場でグローバル IP アドレスが固定できるようになった。それまではグローバル IP アドレスを固定する術がなかった。
- 2008-08-21
- EBS の登場で EBS-Backed インスタンスが使えるようになった。Instance Store-Backed インスタンスはデータの永続性がなくインスタンスの停止もできなかった。
- 2009-08-24
- VPC の登場でプライベートネットワークが使えるようになった。それまではインスタンス間の通信もインターネット経由だった。
ユーザーの声に耳を傾けて少しずつ機能が増えていったように見えますが、実際のところはクラウドの思想についてこられないユーザーが大半だったために AWS が歩み寄ったという感じがします。クラウドがまだ珍しくオンプレミスが主流だった時代に理解されないのは当然で時期尚早だったのでしょう。オンプレミスから移行するにしても技術的にいきなり大ジャンプはできないので、歩み寄りを見せたのは AWS を普及させる上で必要なフェーズだったと思います。
クラウド時代のアーキテクチャが登場
クラウドが普及していくにつれ 2010 年ごろから新しいアーキテクチャや概念が登場してきました。これらのアーキテクチャに共通して言えるのは、これまでのインフラアーキテクチャとは一線を画すクラウド特有の発想が根底にあることです。
- Auto Scaling
- The Twelve-Factor App
- Blue-Green Deployment
- Immutable Infrastructure
- Infrastructure as Code
- Chaos Monkey (Simian Army)
この頃から EC2 に対する考え方も変化してきました。「ペットと家畜」という例えがその変化を象徴しています。
Auto Scaling の登場、Heroku や Engine Yard のような PaaS の普及、Docker に代表されるコンテナ技術の成熟、Chef や Ansible によるインフラのコード化など、技術的な背景もクラウドの普及を後押ししたと思います。
2013 年ごろになるとエンタープライズの領域にまでクラウドが普及しはじめ、もはやクラウドファーストは当たり前になりました。多くの成功事例からクラウドに対する不安が払拭され、逆にオンプレミスにとどまることがリスクであるという認識が広まっていきました。
Lambda が登場し時代はサーバレスヘ
次に登場したのがクラウドネイティブという概念です。
AWS re:Invent 2014 で発表された Lambda がその発端で、サーバレスでアプリケーションコードを実行できる Lambda を筆頭に AWS が提供するマネージドサービスを組み合わせてサービスを設計しようという流れです。要件にうまく当てはまれば EC2 を使う必要がなくなり、エンジニアは価値を生み出さない作業から解放されてアプリケーション開発に集中できるのです。
AWS の立場に立ってみれば、Lambda を推すことで稼ぎ頭である EC2 の売り上げを落とすことになります。リスクを承知でなぜ Lambda をリリースしたのか考えてみると、これこそが EC2 をリリースしたときに思い描いた理想だったのではないでしょうか。
Lambda には IP アドレスやネットワークの概念はなく、サーバの管理という煩わしい作業も取っ払い、純粋にコンピューティング処理能力だけを提供します。 EC2 をリリースしたときには技術的に困難だったことをゼロから再設計したのが Lambda と言えないでしょうか。
そう考えると AWS は 2006 年からずっと同じ考えで、時代に応じてその時の最適な技術を提供していることに気づきます。
まとめ
クラウドネイティブは一過性のブームではありません。今後も AWS はクラウドネイティブを推し進めるのは間違いないでしょうし、ユーザー側の AWS の活用もさらに踏み込んだものになっていくはずです。失敗のリスクを最小限にとどめてトライアンドエラーを繰り返せるのが AWS のメリットです。今から少しずつクラウドネイティブを目指していくのはいかがでしょうか。