S3 20周年の日に、20年前の自分を思い出す
Amazon S3が正式にローンチされたのは2006年3月14日です。今日でちょうど20周年になります。おめでとうございます。
改めて20周年と聞くと、とんでもない長さです。S3が誕生した日に生まれた人は、もう20歳です。私の中ではクラウドはいまだに「比較的新しい技術」という感覚がありますが、今の若い世代にとっては、物心ついたころから当たり前に存在していたものなのだと気づかされます。
S3は、クラウドの歴史を語るうえで外せない存在です。ですが、少なくとも20年前の私は、そんな偉大な一歩とは全く認識していなかったです。正直に言えば、「Amazonがまた何か変なことを始めたな」くらいの感覚でした。

最初に見えていたのは、壮大な未来ではなく、ただの「わからなさ」だった
私は2006年3月30日に触っていたようで、当時のメモがブログの記事として残っています。そこにあるのは凄いものが出たという驚きではなく、何なのか理解できず試行錯誤する戸惑いでした。
思い立ってAmazon S3に申し込んでみる。サンプルアプリを触ってみる。PEARのライブラリを入れる。ReadMeを読む。エラーが出る。BucketとKeyが何を指すのかわからない。マニュアルを読む。そういう、ごく手探りの記録です。
当時の私が最初につまずいたのは「Bucketとは何か」でした。マニュアルを読んで「表領域みたいなものか」と理解したあたりに時代を感じます。オンプレのデータベースが一番身近なインフラだった時代、新しい概念を既存の知識で理解しようとする。今思えば、当然の反応でした。
さらに言えば、サンプルアプリにはBucketを作る機能すらなく、SOAPかRESTでPUTするところから始めないといけないという状態。HTTP_Requestライブラリのバグに遭遇し(果たして本当にライブラリのバグだったのか、自分の使い方が間違っていたのか、今となってはわかりません)、日本のサーバからアクセスしたらDateヘッダの問題で認証エラー。USのサーバに移してもAccess Denied。今なら「aws s3 mb」の一行で済むことに、どれだけの時間を費やしたか。
でも、あの「わからなさ」こそが、新しい時代の入り口の風景だったのだと思います。
Bucketの名前空間が変わった日に
20年前の私を困らせたBucketの仕組みについて、ちょうど20周年の直前に大きなアップデートがありました。S3にアカウントリージョナル名前空間が導入されたのです。
これまでS3のBucket名はグローバルに一意である必要がありました。全ユーザーで名前空間を共有しているため、「test」のような単純な名前は早い者勝ちで取られてしまう。私も20年前のブログで「どうやらbucket名はAmazon S3ユーザ間で共有されているようだ」と書いていました。
新しい名前空間では、アカウントIDとリージョンをサフィックスとして付与することで、自分のアカウント内で自由にBucket名を決められるようになります。なお、サフィックスが付与されることで、Bucket名がグローバルで一意であるという性質自体は維持されています。あくまで「名前の衝突を気にせず、好きなプレフィックスでBucketを作れるようになった」というのが今回の変更の本質です。
今にして思えば、最初からグローバルに一意という制約を課したのは、S3にとってとてつもないメリットだったと思います。もし最初からアカウント単位で一意という設計にしていたら、アカウント間のデータ共有やバケットの移行、クロスアカウントアクセスなど、後々多くの問題を引き起こしていたはずです。20年後の今に至るまでS3がクラウドの基幹であり続けている背景には、こうした初期設計の強さもあったのではないかと思います。そのうえで、マルチアカウント運用が当たり前になった時代に合わせて、名前の衝突を気にせず使える選択肢を追加した。20年越しの、良いアップデートだと思います。
20年分の「当たり前」
2006年当時、S3はRESTとSOAPのAPIでのみアクセスできる、シンプルなオブジェクトストレージでした。それが今やS3は350兆を超えるオブジェクトを格納し、毎秒1億回以上のリクエストを処理する巨大なインフラになっています。
でも、S3単体の成長よりも重要なのは、S3がきっかけとなって「クラウド」という概念そのものが形づくられていったことだと思います。S3のローンチから5ヶ月後の2006年8月にEC2が登場し、「ストレージだけでなくコンピューティングもクラウドで」という世界が始まりました。S3はその基幹として、クラウドのあらゆるサービスの土台であり続けています。
2006年当時、自分のデータを、自分のサーバではなく、インターネットの向こう側にある誰かのサーバに預けるという発想自体が突飛なものでした。当時のエンジニアの多くは、これを自分の仕事で使うものとは考えていなかったと思います。
潮目が変わったのは2009年前後だったと記憶しています。VPCが登場してネットワークの分離が可能になり、エンタープライズでの利用が現実味を帯び始めました。そこから先の展開は加速度的です。2012年のDynamoDB、2014年のLambda。サーバレスという概念が生まれ、「サーバを意識しないインフラ」が現実になりました。そしてここ数年は生成AIの波が押し寄せ、Bedrockを通じてクラウドはAIの実行基盤そのものになっています。
振り返ると、この20年間でクラウドは「インフラの持ち方そのもの」を変えてしまいました。データセンターにラックを並べ、ハードウェアを調達し、OSをインストールするところから始まっていたあの時代。今の若いエンジニアには想像しづらいかもしれませんが、サーバを1台増やすのに稟議を通して発注して届くまで数週間かかるのが普通でした。それが今では、コンソールを数クリックするか、コマンドを一行叩けば、世界中のどこにでもインフラが立ち上がる。
この変化の起点にS3があった。最初の一歩は「インターネット越しにファイルを置ける」という、ただそれだけのサービスでした。でも、その「ただそれだけ」が、インフラに対する私たちの常識を根底から書き換えていったのです。
おわりに
20年という時間は、技術を「新しいもの」から「当たり前のもの」に変えるのに十分な長さでした。S3はその筆頭です。
私はこの20年間、AWSとともに歩んできたと言っても過言ではありません。BucketとKeyの概念がわからなかった初心者が、今ではAWS IAMのマニアックな話を本に書いています。そう考えると、クラウドの歴史は、私自身のエンジニアとしての歴史でもあるのです。
こうして20年を振り返ると、S3は単なるストレージサービスではなく、クラウドそのものの歴史を開いた存在だったのだと改めて感じます。そのS3の内部構造や設計思想を、もう少し深く掘り下げて書いたのがこちらの一冊です。
また、クラウドの歴史に思いを馳せると、いま当たり前に見えるサービスも、長い試行錯誤の積み重ねで形づくられてきたと感じます。その歩みを敬意を込めてたどった一冊もあります。
S3、20周年おめでとうございます。そしてこれからも、クラウドという「当たり前」の土台を支え続けてください。
なお、最後に一言付け加えるとすると、SQSは2004年にAmazon Mechanical Turkは2005年に出ております。そちらにも思いを馳せてあげてください。










