セクションナイン の 吉田真吾(@yoshidashingo)です。
前回の丹羽さんに続いて、今回はサーバーレスな開発の強力な手助けとなるフレームワークツールの話をしてくれる照井くんとのチャットです。
プロフィール
- 名前:照井将士 Masashi Terui
- 会社名:Willyworks, Serverworks, Section-9
- 職種:Software Engineer
Section-9や、AWSプレミアパートナーのサーバーワークスに所属しながらフリーランスとしても活動する札幌市在住のマルチワークなエンジニア。Serverless Architctureとの正しい付き合い方を考えながら、Lambda Functionのライフサイクルや周辺機能を管理を簡単にする「Lamvery」(Python)、API GatewayのAPI定義を管理する「Rapis」(Ruby)などをOSSで公開。
Quick Chat
---- ServerlessConf Tokyoでのセッション概要を教えてください
Serverless?サーバがない世界だと? おかしなことを。誰も傷つかず幸福を保つ世界はない。 アプリケーションとは、ユーザが居なくては生を謳歌できぬ獣の名だ。 運用が必要ないという綺麗事は、障害を直視できぬ弱者の戯言に過ぎぬ。 ――――雑種。お前の理想とやらは、泥臭さを覆い隠すだけの言い訳に過ぎぬ。
はい。
私は以前からLamveryというServerlessに関わるツールを作ってメンテナンスし続けています。ですが、今回はその話はほとんどしないつもりです。 私はそれを作り、メンテナンスし続けると共に、様々なツールやフレームワークやそれらのユースケースを見てきました。
そのことから、真に目的にあったフレームワークの選び方、あるいはそもそもServerless Architectureを採用すべきケースとそうではないケースなど、Serverlessの世界をより発展させ、混沌とさせないために必要かも知れない情報や考え方をお伝えしたいと思います。
また、これからServerlessの世界をより発展させていくために必要なフレームワークとはどんなものなのか?それを皆様と一緒に考えていければと思います。
――――謂わば、これは「Framework戦争」ならぬ「Framework問答」である。
---- ではそのほとんど話さないというLamveryについて教えてください、これは何がきっかけで作ろうと思ったんですか?
まず、Lambdaが出てきた時に大きな可能性を感じて「コレは!」って思って色々遊びたかったんですが、実際に使おうとするとビックリするほどデプロイが面倒で、当時まだServerless Flameworkとlambda-uploaderくらいしか無くて(会ったかもしれないけどそれくらいしか知らなかった)、手に馴染むデプロイツールが無かったから作ったという感じですね。
その後、色々自分のユースケースとかたまに使ってくれる人のフィードバックとかに合わせて拡張しながら今に至るって感じです。
---- 実際の開発現場でこういったツールはどんな意味を持ってますか?
Lamveryに関して言えば、Lambda上で色々試行錯誤したい時や、何かちょっとしたSingle Functionで完結する定期タスクとかイベントのつなぎ込みなんかを作りこむ時のスピード感や安心感を上げることを意識してます。
逆に言うとMulti FunctionでガッツリAPIバックエンドを作るのとかに便利な機能とかは特にないです。
なので、その辺りは自分の用途にあったものを選ぶことでServerlessな開発をブーストさせていくために使っていきましょうという感じですかね。
---- アプリ開発者がフレームワークを選ぶときの具体的な基準とか、どういったポイントを注視して選定するといいですかね?
それがセッションの趣旨の一つなので、ここで言っちゃうと・・・・w
とりあえず、「用途にあったものを選ぶ」というのは大事ですね。ただ1つのAPIと裏で動くFunctionを公開したいだけっていうユースケースでServerless Flameworkはどう考えても要らないですよねw
---- 開発フローを考慮してフレームワークの導入をしていくのってまだうまくできてる人が多くない気がするけど、今後こなれていきますかね?
そのあたりを整備していくのがコミュニティとかエコシステムの役割だと思いますね。まだまだこれからだと思います。
開発フローもそうですが、実務って観点だとサーバの運用はなくなるけど、システム運用ってそれだけじゃないわけで、その辺どうやって行くのが良いのかみたいな話もありますよね。
Infra as Codeとかであったように、Chef vs Ansibleみたいなツールの話が多くて、本当に必要な議論が中々進まないみたいなことにならないことを祈りつつ、自分のできる範囲で貢献していければと思います。
---- ところで照井くんは札幌在住で「複業」エンジニアをやってるけど、やってよかったですか?
まあ、まだ始めてそんなに経ってないので、「複業」が良かったかどうかはまだ分からないですね。リモートワークは良いなと感じ始めてます。札幌は本当に住みやすくて良い所なんで、そこでやりがいのある仕事をやらせてもらえてるのは本当にありがたいことです。
「家で仕事する」ということ自体にまだちゃんと慣れられていなかったり、意識の切り替えとかが上手く出来きてなくて、時間の使い方がまだ上手くいってないなと感じる面はあったりしますが、それはまた別の問題ですねw(そもそも自己管理能力低いんで。。。)
---- 海外のツール、たとえば Serverless Framework なんかは投資を受けて事業として成長させてるけど、そういう考えはありますか?
Lamveryでは要らないですねw自分で言うのもなんですが、前述のようにライトユースではかなり便利になっているのでメンテは続けますが、支援を受けるような規模になるものではないです。
これも前述しましたがMulti Functionでガッツリはまた別のものが必要になると思っていて、その辺りをメインでセッションでは話したいと思っているので、その結果「新しいの作ろうぜ!」って思ったらよろしくお願いしますw
---- すべての未来はサーバーレスに向かうと思いますか?つまり今ほどミドルウェアのセットアップやsysconfigいじる人のいない世界になるかな?
マジレスっぽくなっちゃいますが、アプリケーション開発の主流になる可能性はあるとは思いますが、「すべての未来」っていうとIaaSみたいに何でも乗っけて動かせる世界じゃないから難しいですよねw
サーバレスを含んだ広義のPaaSはもっとこれから発展すると思っていて、ミドルウェアのセットアップやsysconfigいじる人はさらに減っていくという可能性はかなり高いと思います。
PaaSの中でサーバレスというかFaaSが主流になれるかはこれからどうエコシステムが発展していくかにかかっていると思うんで、今はその可能性を模索していきたい気持ちです。
---- 当日はもっと突っ込んだ内容を期待してます、ありがとうございました
ありがとうございました。
まとめ
現在サーバーレスなエコシステムを支えているのは、プラットフォーム、フレームワークツール、アプリ開発者の三者です。
目的に応じたツールを選んで利用することで、開発速度の向上、ステージ設計や継続的デプロイのワークフローに合わせた構成管理方法といった知見を活用していきましょう。