本投稿は2021年3月31日の21時から開催予定のイベント(ライブストリーミング)で話す内容(の一部)です。もしお時間があればぜひこちらにもご参加ください。登録はこちら。
Update!!: ライブ配信のアーカイブが公開されてますのでよろしければこちらもどうぞ。
TL;DR
- 2020年にやってきたサーバーレスに関するこのシリーズは最終回だよ
- 6年以上サーバーレスやってきたので思い出話するよ
はじめに
Twitterでも言ったのですが、本日がAmazon Web Service Japan(AWSJ)での勤務最終日です。これもTwitterで言ったとおりなんですが、AWSJに入社してからの僕のキャリアはサーバーレス(というかAWS Lambda)とともにあったと言っても過言ではないです。
突然ですが本日を最終日としてAWS Japanを退職します! AWSで僕がどれだけできたかは自分では分かりませんが、多少の貢献はできたかと思っております。さて、終わる歴史あれば新たに始まる歴史もあるということで2ヶ月ほど有休で潜った後、6月より活動再開予定です。これからもどうぞよろしく!(1/5) pic.twitter.com/E21rJDSEYc
— Keisuke Nishitani (@Keisuke69) 2021年3月31日
AWS公式ではない、という意味で野良でやってきたこのイベントについてもAWSのサーバーレスとの関係性が変化する以上、ひとまず区切りをつけるべく今回を持って最終回とします。そしてこの最終回ではサーバーレスの歴史を個人的な思い出たっぷりに振り返りつつ今後についてもお話ししたいと思っています。つまりポエムです。
そもそもこのイベントはサーバーレスにおけるかつてのアンチパターンがサービスの機能アップデートによりアンチパターンではなくなったというのを正しくクイックに紹介することを目的として始めました。ただ、そんなアップデートが毎月あるわけでもないので回を重ねるにつれネタ切れになりつつあったのも事実です。
というわけで、いったん『サーバーレスアンチパターン今昔物語』としてはキリがいいのでお終いにしようかと思った次第です。最終回にふさわしいお題が何か考えた結果、漫談をすることにしました。おじさんの自分語りって最悪なんですが、まあそこは生ぬるく見守ってください。
Lambdaとの関わり
さて、僕がAmazon Web Service Japan(当時はまだAmazon Data Service Japan)に入社したのは2014年7月です。AWS Lambdaが発表されたのはこの年のre:Inventでした。
Work Hard. Have Fun. Make History.
— Keisuke Nishitani (@Keisuke69) 2014年7月1日
Now, I have joined Amazon Data Services Japan !
本日よりAWSの中の人としてお仕事することになりました。
もちろん、僕はLambdaおよびサーバーレスをやるために入社したというわけではなく普通にスタートアップやWeb系のお客様担当のソリューションアーキテクトとして入社しました。
ちなみに入社1週間後くらいにCognitoというサービスが発表されまして、AWSがこういった機能特化型フルマネージドサービスを出していく始まりとなりました。実際にはその随分前にSQSがあったけどこれがサーバーレスとして扱われるようになったのは割と最近。
また、余談ですがこのCognitoのローンチ時のPM(Product Manager)はその後API GatewayのローンチPMでもあり、その後はサーバーレスのスペシャリストSAになって今はサーバーレスの別プロダクトのPMをやってます。
僕がAWS Lambdaを担当するようになったのは社内でとある新しいアプリケーション系サービスが出る予定なのでこれのローンチサポートをする人募集!的なやつがきっかけです。
このコンセプトを見た時、最初はGAEみたいなものなのかな?と思ったのですがファンクションモデルであるということ、そしてイベントドリブンアーキテクチャを実現するものということを理解したときに心鷲掴みにされたんですね。そこからずっとサーバーレスやってきました。最初はアカウントSAを本業としてボランティア的に、途中はそれを専門とするスペシャリストとして、そして最後のほうは少し引いたところから。
なお、発表される直前、ほんの数時間前までサービス名はAWS LambdaではなくAmazon Lambdaで、アイコンもオレンジではなく紫色でした。
さて、そんなAWS Lambdaは2014年11月13日(現地時間)にAWSの年次グローバルカンファレンスであるAWS re:Invent 2014のDay2 Keynoteで発表されました。
ここにもEvent Drivenとあるのがわかりますね。そうです、当初は『サーバーレス』って言葉はなかったんですね。この言葉が出てきたのは翌年Amazon API Gatewayが登場してからです。
なお、このときの発表の様子はYouTubeでアーカイブ動画が公開されています。未だにテンション上がる。
当時のツイート。冷静な風だけど裏ではテンションあがってるし同時並行で色々仕込んでたりしました。
モバイルアプリからの画像のアップロードでリサイズとかするためにAPIサーバたてて処理してからS3に保管してたよね?そういうの要らなくなります。S3へのアップロードをトリガーにfunctionでリサイズとかできるので。しかも激安。 => AWS Lambda
— Keisuke Nishitani (@Keisuke69) 2014年11月13日
この2014年のre:Inventは個人的には神回だと思っていまして、AWS LambdaだけでなくAmazon Aurora、Amazon ECS、そしてAWS CodeCommit / AWS CodePipeline / AWS CodeDeployとAWSにおけるDevOpsの中核をなす3サービスが出た年だったりします。
なお、この時点ではAWS LambdaはまだGAではありません。Previewということで申し込んだ人のみ、順番に利用が可能になっていくという形をとっていました。この時点で、サポートされている言語はNode.jsのみ。しかもv0.10とかそんな感じでした。タイムアウトは最大60秒、メモリも最大1GBで同時実行にいたっては最大25です。そこから6年以上をかけてサーバーレスは成長してきました。
11月ということもあって出た直後にAdvent Calendarの募集を開始したのですが、まだPreviewなのに全部埋まってるってすごい。今から考えるとこれPR的にはかなりグレーゾーンだったんだけど若気の至りということで。Previewなので自分の日が近づいてるのにまだ使えないなんてこともありました。
AWS Lambda Advent Calendar 2014 - Qiita
12月22日にはMeetupも開催したし、年明け早々にはCodeZineにも寄稿した。
そんなAWS Lambdaですが、年が明けて2015年の4月にGAしました。この時点でサポートする言語はNode.js、Python、Javaとなっています。先ほども述べたとおり、この時点では単なるイベントドリブンコンピューティングと言ってました。その後、2015年の夏にAPI Gatewayがリリースされてサーバーレスというコンセプトになり、2016年にはStep Functions、2019年にはEventBridgeが出たわけです。
クラウドネイティブ時代のアプリケーションサービス。Amazon API Gatewayの登場です。バックエンドはLambdaファンクションで!http://t.co/zPcktpgXDY
— Keisuke Nishitani (@Keisuke69) 2015年7月9日
API GatewayのリリースにあわせてBlackbeltというWebinerなんかもやってました。
Lambdaの東京リージョン記念に引き続きAPI Gatewayの緊急特番やるよ【Black Belt 緊急開催のお知らせ】AWS Black Belt Tech Webinar 2015 - Amazon API Gateway http://t.co/wB9NO8OEgL
— Keisuke Nishitani (@Keisuke69) 2015年7月12日
このとき配信に使ってたサービスの不調だかで翌週に再演することに。
API Gatewayの #awsblackbelt 再放送は今日の18時から!再放送じゃなくて再演です!もう一度喋ります。新しいことも少しだけ話します!Adobe Connect溢れさせたいので拡散お願いします! http://t.co/xw1QMgvmR9 #jawsug
— Keisuke Nishitani (@Keisuke69) 2015年7月17日
Blackbeltといえば2019年に都合4回にわけて『Let's Dive Deep into AWS Lambda』というシリーズをやったのも思い出深い。これ、『俺の知ってるすべてをお伝えする』ってのをコンセプトにやったものでして、それまでの参加者数最高記録を達成したものでした。これ以降、僕はBlackbeltで登壇することはなかったので間違いなく1つのターニングポイントだったと思います。
そんなAWS Lambdaおよびサーバーレスはその後6年以上をかけて成長してきました。今やサポートする言語は先の3つに加えてGo、.NET、Rubyも対応していますし、カスタムランタイムという機能や先日発表されたコンテナイメージによるデプロイ機能を利用することで実質的にどんな言語でも利用可能となっています。
また、6年以上も歴史があるので当然のごとく多くのサービス提供実績もあります。もちろんエンタープライズの現場でも使われています。エンタープライズといえば2017年の8月8日に六本木のベルサールで『AWS Enterprise Serverless Day 2017』という1 dayイベントを企画して開催したのですが、来場者がいつものTシャツな感じではなくスーツもしくはワイシャツ着用の人が多くて狙い通りと喜んだ次第です。
なお、個人的にはAWS LambdaとAmazon API Gatewayの東京リージョンローンチは結構頑張りました。USに行っては当時のGMやPMに日本にはどれくらいのビジネス的な機会があって、これだけのユーザが待ってるんだってことをあの手この手でインプットしてましたw その結果もあってかGAして3ヶ月後の2015年7月にはAWS Lambdaが、Amazon API Gatewayに至ってはリリースされて3ヶ月後の10月に東京リージョンのローンチにいたりました。これ結構早いんですよね。当時、日本では社内的にもサーバーレスというコンセプトの新しさや話題性は認められつつもまだビジネスになるかどうかは未知数ってことで、事業開発のメンバーもいなかったので結構頑張りました。
とはいえ、実際のところ最初のうちはあまり理解してもらえなかったですね。一部の人たちにはうけたものの全体としてはキワモノ扱いされてたと言えます。サーバーレスといっても実際にサーバーがなくなるわけではない、とかユーザーから『インフラに関わるOps』をなくしているだけで全体を見るとそこにOpsは依然として存在するし、減るOpsについてもサービスにオフロードしてるだけだというような意見もいただきました。
機能的に足りない点が多々あったのは否めないですがコンセプト自体に批判的なものも多かったですね。
で、まあなんやかんやあったのですが正直アカウントSAを本業としつつ、サーバーレスの市場作りやボランティア的な支援・活動をしていくのは結構辛いなーと思っていた頃に社内でスペシャリストSAというロールができることになり、そのタイミングでサーバーレスのスペシャリストSAとしてロールチェンジします。2016年くらいだったと思う。つまり、ここからサーバーレスにフルコミットしていくことになるのです。
その流れでAWS Lambdaに関する本を書くことになるんですが、あまりにもニッチすぎるのでなかなか悩ましかった思い出があります。あと、これを書くのにあたって社内のリーガルとかと調整するわけですが、サービスチームも含めて書籍というフォーマットになかなか理解を示してもらえなかったのが大変でした。
そんなAWS Lambdaの書籍を9月くらいに発売します。もちろん日本語で。今ならちょこっとだけ抜粋したサンプル版ダウンロードできます。 https://t.co/tQKTi8CXcT #AWSSummit #jawsug
— Keisuke Nishitani (@Keisuke69) 2016年6月2日
と告知したもののなんやかんやあって遅れたのはそういった事情もありました。で、結局発売は翌年のAWS Summitのタイミングに合わせました。そのときの経緯なんかはこちらのエントリに書いてます。
ニッチすぎて全然売れないかもと思ってたので、AWS Summitというある意味HOMEの場ではあったものの初日の早い段階で売り切れたのは嬉しかった。
ちなみにこの年はAWS Summit自体でもいろいろやっていて、前年のTIm Wagner (サーバーレスのGM)に続いてこの年はついにLambdaのPM、オリジネイターでもあるAjayを招聘したり、
裏で1日、『Serverless Evolution Day』という形でパネルから何から全部入れ替えてジャックしたイベントなんかもやってました。懐かしい。
その間もLambdaおよびサーバーレスの成長は続き、翌年もまた本を出します。
このときのブログはこちら。
このあたりから、1人でサーバーレスを広めていくことに限界を感じてきています。というのも1人でできること、リーチできる範囲には限りがあるのですね。幸い、サーバーレスについてはコミュニティも熱量高く活動しているということでこのあたりからサーバーレスのスペシャリストSAから一歩踏み込んでAWSを利用してアプリケーション開発をする人たち全般を支援する、アプリケーション開発に特化して支援してお客様プロジェクトのアクセラレーションを行うという方向にシフトしていった結果、現在のプロトタイピングというプログラムとそれを担う部門の立ち上げにつながっていくのですがこのあたりの話はまた別の話。
このあたりから自分がサーバーレススペシャリストSAとして活動するのではなく、よりスケールさせるためにそのポジションを他の人に譲ることを考えました。その結果、2019年の2月に新たなサーバーレスSAとして現在も活躍している下川さんがジョインするんですね。実はこの手前にも幻のサーバーレスSAがいたけどその話は割愛。
2019年の前半はトランジション期間として並行して活動し、2020年からは完全に僕はサーバーレススペシャリストSAとしての仕事を手放しました。そのうえで本業とは別に、またレベニューとかそういった視点を気にすることなくサーバーレスに関する活動を始めます。その1つがこの『サーバーレスアンチパターン今昔物語』というイベントだったんですね。
サービスの発表数
ところでサービス登場以降今までの機能発表数ってどのくらいかなとふと思ったので数えてみようとしたのですが挫折しました。
最初はWhat's Newで発表された数だけカウントすればいいかなと思っていたのですが、What's Newのエントリ数=アップデート数ではないこと、加えて実はそれ以外でのアナウンスが結構多いんですよね。特に初期の頃にその傾向がありまして現実的に数えるのは無理でしたw
ちなみにWhat's newのエントリ数だけだとこんな感じです。
サービス | アップデート数 |
---|---|
AWS Lambda | 135 |
Amazon API Gateway | 95 |
AWS Step Functions | 50 |
AWS Event Bridge | 18 |
最初は何もできなかったといってもおかしくないAWS Lambdaが今のように多くのワークロードを実現できるようになるまでこのくらいの数のアップデートがあったんですね。
コミュニティ
さて、サーバーレスの発展にはコミュニティの力もあったことは誰もが知るところだと思います。
AWSには通称JAWS UGというユーザコミュニティがあるのですが、これとは別にサーバーレスに関するコミュニティ、その名も『Serverless Community』が存在しています。オーガナイザーの吉田真吾さんを中心として立ち上がったこのコミュニティなんですが、話は2016年に遡ります。
2016年の5月にNewYorkでおそらく世界で最初のサーバーレスに特化したカンファレンスである『Serverlessconf』が開催されました。人数的には200人から300人くらいの小さなイベントでしたがブルックリンの小さな倉庫跡を使って開催されたこのイベントに僕はもちろん吉田さんも来てたのです。
このときの会場の熱量はすさまじく(文字通り暑かったのもある)、僕自身もサーバーレスという未来を改めて感じたイベントでした。吉田さんはこのイベントに参加して、これを日本でも開催したいと思いたち、なんと同じ年の9月には開催してしまうのです。行動力が半端ない。
このときの会場は芝浦のTabloidというこれまたニューヨークと同様に倉庫跡のイベント会場でした。
その後も定期的にミートアップを開催しつつ、年次で大きめのイベントも開催しています。翌2017年はServerlessconf、2018年、2019年はServerless Daysがこの吉田さんを中心とするServerless Communityによって開催されています。
このServerless CommunityはAWSのサーバーレスに特化したコミュニティでなく、AzureやGCPはもちろんそれ以外にもサーバーレスのエッセンスを含むものを取り扱っていて確実に日本のサーバーレスムーブメントの発展に大きな貢献をしています。いや、むしろこのコミュニティがなくて僕だけが頑張ったりするような状況だったら今みたいな世界は訪れてなかったと思う。ありがたいことに2018年、2019年は基調講演をやらせていただきました。冒頭の写真は2018年にやらせてもらったときの締めのスライドです。
その後、吉田さんはその功績が認められてグローバルでAWS Serverless Heroとして認定されています。カッコいい!
最後に
ALL YOU NEED IS CODE
これは僕がLambda登場当初からいろんなところ、いろんな登壇とかプレゼンテーションで言ってきた言葉です。
でも、正直すべてがまだそうはなってない。
ただ、かなり近づいてきてるとは思っています。本当にこれだけですむケースもかなりあります。
でも、もっとコードを減らすためには、そんな世界が来るようにするためにはどうしたらいいのか。どういう問題をどう解決するのか。
残念ながらサーバーレスはまだ未完成です。
そういった世界が来るまでは利用者による知見の共有が必要と思っています。AWSを始めとするサービス提供者側からの一方的なアウトプットではなく、ユーザ同士での知見の共有とユーザからサービス提供側へのフィードバック、このサイクルが回り続ける必要があると思っています。
そのためにコミュニティの力はやはり大きいと思っています。OSS開発も同じですね。
もちろん過去の回で言ったようにすべてを無理にサーバーレスでやろうとすることが最大のアンチパターンといったのは変わりないです。でも、このイベントのコンセプトと同様に機能のアップデートにより過去のアンチパターンがアンチパターンでなくなることも往々にしてあるのです。
Everything will be Serverless
少なくとも僕はそう信じています。今は無理でもいつかはそういう未来が来ると思っています。
というわけで、AWSからは離れるのですがこのサーバーレスという世界には立場を変えて関与し続けたいと思っています。これまではAWSという特定のサービス提供者側にいたことでどうしてもできなかったこと、発信内容もあります。これは特定企業に所属する限り当たり前のことだと思っているのでそれに対して否定的な思いはありません。
立場が変わることにより、今後はユーザとしてサーバーレスという世界の発展に貢献していければなと思っています。Serverless Communityへの参加はもちろん、少し違った切り口で個人による発信も続けるつもりです。
というわけで、ひとまず今のフォーマットでの『サーバーレスアンチパターン今昔物語』は終了とし次からは違うシリーズをやっていきます。
まずは僕の大好きなVercelについて取り上げる回をやるつもりです。他にもCloudflare Workersとか昨日発表されたDeno DeployとかAWS以外のプラットフォームも含めて僕視点でのフラットな発信ができればと思っています。
長々としたポエムに最後までお付き合いいただきありがとうございました。
そして、みなさんこれからもどうぞよろしく。