はじめに
ABEJAでフロントエンド開発をやっている清水です。 先月末から今月初にかけてラスベガスで開催された AWS re:Invent に行ってきました。
この記事は、12月14日に弊社が運営しているコミュニティ主催で開催されたイベントで話した内容の補足になります。
https://abeja-innovation-meetup.connpass.com/event/45987/
re:Invent について
re:Invent は年に1度開催されるAmazon Web Service 主催の開発者向けカンファレンスで、 今年は11/28〜12/2までラスベガスで開催されました。
行く前の準備
今回はABEJAからは一人で参加しました。私は英語を話すのが得意ではありません。 そして最近はフロントエンドを専門にやっているため、たくさんあるAWSのサービスを全部キャッチアップするのは難しく、 前提知識の面にも不安がありました。
悪あがきで行く前に準備したことを紹介すると
- 英会話の勉強
- AWSの復習
- 事前説明会への参加
どれも付け焼き刃的なのですが、いくらか役に立ちました。 一番役に立ったのは事前説明会の参加で、ここで知り合った方々のおかげでイベントが楽しめました。
フロントエンドエンジニアとしての関心
最近ではLambdaの登場でサーバーレスアーキテクチャの話題も活発で、導入した事例もちらほら聞こえてきます。
私の担当しているABEJAのサービスもフロントはSPA、バックエンドのAPIはサーバーレスで作られています。 そのため、今回はサーバーレス系のセッションに的を絞ってスケジュールを組みました。
ラスベガスに行ってみて
ラスベガスに初めていきました。視界に入るのはホテルとカジノ
会場のホテルがとても広く、セッション会場間の移動にも20分以上かかります。 毎日歩き疲れて夕方にはヘロヘロになります。
キーノートは日韓来場者のために優先席に用意されていて間近で見ることができました。 目の前にSnowmobileが出てきた時は正直冗談かと思いました。
夜は日本人だけのパーティー(Japan Night)に参加したり、re:Playに行ったり…
サーバーレスについての発表
サーバーレスに関係する発表も多数ありました。 LambdaのC#対応、Lambda Edge、Step Functions、 その他 Glue Athena Batch Pinpointなど今までは、EC2やEMRを使って構築する必要があったものが フルマネージドなサービスとして発表もされました。
サーバーレスの事例紹介
事例として、複数の AWS サービスの内部で Lambda がすでに使われていることや、 Finra 社では15兆もの証券取引を Lambda で実現しているという話がありました。
参加したセッション
新機能の発表でセッションも後から追加され [serverless lambda] で検索してみると117件もありました。 私は4日間で18個のセッションに参加しました。セッションの情報についてはビデオやスライドがすでに公開されているのでここでは割愛します。
来年行く人に向けて
来年行く方が楽しむためのアドバイスとしては
- AWS全般の知識 (サービスの概要レベルだけでも知っているといいと思います)
- やっぱり英語は大事 (AWSのエンジニアに質問できるチャンスがあります)
- 仲間が大事 (おかげですごく楽しめました)
- 余裕のあるスケジュール (聞きたいセッションを絞って余裕を持たせないとすごく疲れます)
- 最後は体力 (5日間楽しむためには体力が必要)
フロントエンドエンジニアとして思うこと
re:Inventに参加される方はインフラエンジニアの方がほとんどなので、私はフロントエンドエンジニアとして感じたことを書きます。
サーバーレスのインパクト
サーバレスアーキテクチャの一番の特徴は構築し管理すべきサーバインスタンスが存在しないことがあると思います。 今まではサービスの要件にもよりますが、バックエンドのアーキテクチャを考える上でスケーラビリティやアベイラビリティ、弾力性などの非機能要件を考慮して考える必要があります。 そのためにはOSやミドルウェア、クラスタなど様々な知識を駆使して構築する必要がありました。そして構築した環境の運用、監視の方法も同時に考えていく必要もあります。 そのためには専門的なチームに分かれ、お互いが連携しながらサービスを開発していく必要がありました。
サーバレスアーキテクチャではこれらをプラットフォーム側が担保することによって、開発者はよりサービスやアプリケーションに集中できるようになります。
サーバレスアーキテクチャはまだ新しいため多くの課題もたくさんあります。 また、すべてのシステムにフィットすることもないと思いますが ABEJAのようにリソースも少なく、スピード感をもってサービスをスケールさせていく必要があるベンチャーにとっては有効性を感じます。
チーム構成の変化
私が担当するフロントエンドチームは、他のチームが開発した複数のサービスをAPIを通して利用します。 開発を進めるなかで BFF (Backend for FrontEnd) 層の必要性を感じます。
BFF層を設けることでUIのためにAPIを最適化でき、 バグや変更があった場合に別チームへ依頼を出して、リリースを待つことなくBFF層を使って解決できる余地が生まれます。
BFF層を作るのは面倒
しかし、BFF層を作るには当然サーバサイトの知識が必要になります。フロントエンドを開発するために要求される技術や知識もたくさんあります。 その上、サーバーサイドの知識を身につけてアップデートしてくのはとても大変です。
サーバーレスによりBFF層の導入が簡単に
しかし、サーバーレスの登場によりBFF層を構築することが容易になりました。 AWSのLambdaはNode.jsをサポートしているため、SPAとのモデルの共有やLambdaでSSR(Server Site Renddring)をするなどの選択肢が広がります。
これからのフロントエンドチーム
今後サービスの顔ともいうべきフロントエンドチームは、フルマネージドなサービスを組み合わせて早くアイデアを形にする サービスチームとしての重要性が増してくるのではないでしょうか。 re:InventのセッションのServerless Architectural Patterns and Best Practices (ARC402) で話されていた「AppOps」の時代が来るかもしれません。 そのためには、フロントエンドのエンジニアもAWSのようなクラウドプラットフォームが出すサービスにも注目していく必要があると思います。
今後
AWSのLambdaだけではなく、GCP(Google Compute Platform) の Cloud Functions、 Azure の Azure Functionsなど他のクラウドプラットフォームでもサーバーレス開発のための機能が整備されてきています。 今後もフロントエンドエンジニアとして動向に注目していきたいと思っています。
宣伝
ABEJAでは最新のアーキテクチャで世界を変えるサービスの開発を行っています。 ご興味のある方は、ぜひご連絡ください