はじめに
髙橋愛理です!
AWSサーバーレス開発のチームリーダーやってます。
私のチームでは、AWSでサーバレス開発を行っているのですが、1年半と少しの間、実際がっつりやってみた思ったことや感じたことをまとめてみました。
サーバレス開発とは
サーバレス開発とは、サーバを意識せず、クラウドのサービスをフル活用して行う開発手法。
ようは、「インフラの面倒くさそうな設定は全部クラウドに任せて、開発に専念してね!」ってやつ。
開発の経緯・概要
私が所属している事業推進チームでは、自社webアプリ開発を行っている。
総勢8名、フロントエンド、バックエンド、インフラの3つのチームに分かれている。
去年(2022年)1月に、事情によって前任のリーダーが退職し、
私が新しくリーダーに就任したが、技術選定から設計まで、全ての工程をやり直すことに。
その際、「どうせ一からなら、サーバーレス開発やりたい!」と思い、開発に踏み切った。
実際やってみて感じたこと
キャッチアップがすごく大変
まず、真っ先に感じたのが、コレ。
サーバレス開発はクラウドのサービスをフル活用して構築するため、覚える量が多いのなんの。
今使用しているサービスで、ざっと10個は超える。
しかも、構築がサービスに頼りきりなので、深い粒度まで理解していないと、事故の原因につながる。
その上、AWSのドキュメントが見にくい!!
機能がかなり多いくせに、英語をそのまま翻訳したみたいな呪文で書かれているので、調べにくい。
もうちょいドキュメントわかりやすくしてください、AWSさん。。
情報が少ない
フルでサーバレス開発をやっている人があんまりいないせいか、情報が少ない。
だから呪文のような公式ドキュメントや、SDKの仕様書みたいのを頑張って読まなくてはいけない時がある。
各コンポーネントのチューニングが面倒
各リソースのチューニング、ちゃんとやると普通に面倒くさい。
設定値が多いし、それを全部理解して設計に落とし込むってなると、もうヤダ!ってなる。
もちろん大体は自動でスケールしてくれるけど、同時実行数に限りがあるものもあるので、理解してないと事故の原因になる。
サーバがないからインフラの設定必要ないジャン!ってのがサーバレスの売りなはずなのに…。
開発が早い
覚えてしまえば、開発は結構早い。
サーバレスで使うのは、マネージドサービスがほとんどで、初期設定のような作業がほぼ必要ない。
小機能くらいだったら本当ささーっと開発できる。
初期費用が掛からない
サーバレスで使うサービスって、何万リクエストまで無料、かつ超過しても1リクエスト1円?みたいなオッたまげな単位 。
どうやって採算とるんだ?って思うくらい。
まぁベンダーロックインさせて、後からどんどんかかるゾってやつなんだろうけど…。
だから、スタートアップ企業とかで非常に導入しやすい。
全員がフルスタック気味になってく
サーバレスはリソース間連携がキモなので、「この部分のこのリソースだけお願いネ!」なんてわけにはいかず。
連携している一連のサービスを理解してないとなかなか対応が難しい。
かつ、インフラ系のタスクがバックエンドに足突っ込んでたり、フロントでもAWSリソースの仕様がわかってないといけなかったりするので、完全分業はムリじゃね?って思う。
チーム皆仲良しが重要。
設計が重要
AWSリソースだけで作るから、設計間違えると地獄。
関数の中で関数呼び出して…みたいなのが続くような設計とか、本当死に向かっているようなもの。
小機能を作るようなイメージでリソース同士を組み合わせて、コンポーネント化して疎結合にし、それぞれを連携させることが重要。
まぁその設計のノウハウってどんだけの人が持ってるんだろう?と疑問に思うが…。
逆に、それさえ出来れば、変更に強いアーキテクチャになる。
運用監視の設定が独特
コンポーネント間の連携をしくったら?コンポーネント内でエラーが起きたら?
っていうのを全部考えると、これまた大変。
その辺のノウハウに関する情報が、調べてもあんまりないのよね。
ログ設計とかも、必要なログちゃんと拾おうってなると、結構細かくやる必要がある。
運用・監視設計とかも、集計したログをどうやって検索するかとか、考えることは多い。
最終的に、自分達で要件にあった設計をするしかないねってなった。
最後に
AWSはサーバレス製品をガンガンリリースしてた時期があったし、サーバレスを押している感あったので、もっと広まるだろうと思っていた。
が、キャッチアップコストがかなりかかるし、そこに対しての費用を捻出できる企業が少ないから、フルサーバレスでの開発は、正直あまり増えない気もする。
体力のある大手企業では、サーバレスを採用することもあると思うが、
中小企業では、一部サーバーレスで構築するという形が多くなるのではないかと思う。
サーバレスは部分使いでサクッと機能を作るのはかなり得意なので、是非そういう形で増えていってほしいなぁ。
個人的にはやっぱサーバレス好きだし、もっともっと増えて欲しいと思いつつも…
サーバレスの味方には、なり切れないでいる。