サーバーレスとオープンソースとの出会い
サーバーレスの本格的な旅立ちは、2014年のAWS Lambdaの登場から始まりました。それまでのクラウド環境は、EC2のようなサーバーインスタンスの管理が中心でしたが、Lambdaの登場によって「サーバーを構築せずにプログラムをAWS上で実行できる」という新しい可能性が開かれました。
さらに2015年にはAPI Gatewayが登場し、LambdaベースのアプリケーションをHTTPプロトコルを通して外部に公開できるようになりました。これにより、AWSのサービスを組み合わせてより手軽に面白いアプリケーションを構築できるようになり、クラウドの可能性が大きく広がりました。しかし、いろいろなサーバーレスアプリケーションの開発に取り組んでみると、そこにはいくつかの課題も見えてきました。
- ソースコードのバージョン管理が難しい(Lambda等のコンソールから直接コードをアップロードするため)
- システムを複数のサービスで構成する分散環境下での管理の複雑さ
- CI/CDパイプラインを自動化するツールなどがない
サーバーレスでの開発がより多くのエンジニアに広まり、様々なユースケースに対応するために、こうした課題は解決しなければなりません。そこで登場したのが「Serverless Framework」です。このオープンソースのフレームワークはサーバーレスアプリケーションの開発、デプロイ、運用を簡素化し、AWSの構成をコード化して管理できるようにするものです。Serverless Frameworkは世界中の有志の開発者によって日々改善が行われ、当時はサーバレスのデプロイツールとしては唯一のデファクトスタンダードといえる存在だったでしょう。
単にクラウドベンダーがリリースしたサービスを使うだけでなく、自らその課題を見つけオープンソースとして公開し、多くのエンジニアと共有する。ここにクラウドの新たな可能性を見出すことができました。
オープンソースコミュニティへの参加で得られるもの
さて、改めてクラウド業界におけるオープンソースコミュニティの魅力についてご紹介しましょう。まず、オープンソースコミュニティへの参加は、単なる技術的な貢献以上の価値があります。
- スキルアップの機会:人気のあるオープンソースプロジェクトには優れた開発者が集まっており、そこでの議論や開発、ソースレビューなどを通じてエンジニアとして大きくスキルアップします
- グローバルなつながり:言語の壁を超えて、世界中の開発者とつながりを持つことができます。翻訳ツールを活用すれば、英語が得意でなくても意思疎通は可能です
- 継続による信頼構築:継続的にプルリクエストを送り続けることで信頼を築き、コミット権を得られる可能性が高まります。これにより、コミュニティ内での立場も変わり、見える世界も変わります
コミュニティといえば、近年のクラウド界隈でもJAWS-UGを初めとしたユーザーグループが活況で、参加されている方も多いでしょう。こうしたユーザーグループに比べると、オープンソースコミュニティへの参加は、コードやドキュメントの作成といった実務での貢献が求められるため、ハードルが高いかもしれません。
しかし、例え書いたのが1行のコードだけだとしても、そのオープンソースソフトウェアを使う世界中の人々の役に立っていることに違いはありません。そして、オープンソースソフトは、そうした世界中のエンジニアによる小さな貢献によって成り立っています。
一方で、オープンソース活動は、なかなか継続することが難しいものです。コードを公開したり、プルリクエストを送ったりしても、反応がないとモチベーションが続かず、飽きてしまいがちです。そうならない為には、ちょっとしたコツがあります。
- 多くの人が関心を持ち継続的に開発が続いているコミュニティ(例えばGithubで千以上のスターが付いているとか)に参加する
- help-wantedなどコントリビューションが積極的に求められているタグの付いているIssueを解決する
- 1や2のコミュニティで継続的にプルリクエストを送り貢献する
こうした活動を続けることで、コミュニティの内外から信頼を得られる可能性が高くなります。その頃には、コミュニティのメンバーとして内外に認知され、自分自身が見えている景色も以前とは大きく変わっているはずです。
クラウドネイティブ時代のマインドセット
繰り返しになりますが、現在のクラウドはサーバーレスやAIによって新たな段階に達しています。テクノロジーカンファレンス「ServerlessDays」の発起人のひとりでもあるPaul Jonstonは、ブログで「コードが王様だった時代は、サーバーレスによって終わった」として、それこそが「クラウド2.0の時代」だと発言しています。
この発言の要旨をかいつまんでみましょう。サーバーレスの発展により、エンジニアはフルマネージドサービスをうまく利用することで、アプリケーションロジックの責務の多くをクラウドに任せ、よりビジネスバリューを出すための仕事に集中することができるようになりました。
その結果、エンジニアが書くコードの量は減り、サービス側に任せられる部分を増やしていく傾向が強まっていきます。ただし、コードが減ったからといって、コードを書くことの価値が失われることを意味するわけではありません。むしろ、クラウドサービスを結びつける「最小限最適化されたコード」を書ける人材がより重要になっています。
つまり、クラウド2.0におけるエンジニアのマインドセットは、「フルマネージドサービスをうまく利用することで、アプリケーションロジックの責務の多くをクラウドに任せ、よりビジネスバリューを出すための仕事に集中すること」になるわけです。
オープンソースの新たな価値
クラウドサービスは日々新しいものがリリースされ、それに伴い新たな課題も生まれています。こうした課題を見つけた時こそ、オープンソース活動におけるチャンスです。自分のコードでこれらの問題を解決することで、多くの人に影響を与えることができるからです。
サーバーレスの世界では、クラウドベンダーが主導権を握るように見えますが、実際にはエンジニアコミュニティがそのエコシステムを大きく形作っています。Serverless FrameworkやCDK, SAMを始めとするデプロイツールやHonoやlambda-apiなどのフレームワークの多くのツールが、ベンダーのサービスをより使いやすくし、開発者体験を向上させています。
クラウドの発展とともに、エンジニアの役割は変化し続けています。サーバーレスアーキテクチャの広がりにより、コードの責務は変わりつつありますが、その価値が失われることはありません。オープンソース活動を通じて、エンジニアは単なるサービスの消費者ではなく、エコシステムの重要な一員として貢献できるのです。
世界を変えることは難しいかもしれませんが、オープンソースへの小さな貢献を積み重ねることで、少しずつ世界を良くすることができます。そしてそれは、自分自身のキャリアを豊かにする道でもあるのです。