Unlimited Frameworks (ServerlessConfセッション紹介)

セクションナイン吉田真吾@yoshidashingo)です。

前回の丹羽さんに続いて、今回はサーバーレスな開発の強力な手助けとなるフレームワークツールの話をしてくれる照井くんとのチャットです。

プロフィール

  • 名前:照井将士 Masashi Terui
  • 会社名:Willyworks, Serverworks, Section-9
  • 職種:Software Engineer

f:id:yoshidashingo:20160904011937j:plain

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くらいしか無くて(会ったかもしれないけどそれくらいしか知らなかった)、手に馴染むデプロイツールが無かったから作ったという感じですね。

github.com

その後、色々自分のユースケースとかたまに使ってくれる人のフィードバックとかに合わせて拡張しながら今に至るって感じです。

---- 実際の開発現場でこういったツールはどんな意味を持ってますか?

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が主流になれるかはこれからどうエコシステムが発展していくかにかかっていると思うんで、今はその可能性を模索していきたい気持ちです。

---- 当日はもっと突っ込んだ内容を期待してます、ありがとうございました

ありがとうございました。

まとめ

現在サーバーレスなエコシステムを支えているのは、プラットフォーム、フレームワークツール、アプリ開発者の三者です。

目的に応じたツールを選んで利用することで、開発速度の向上、ステージ設計や継続的デプロイのワークフローに合わせた構成管理方法といった知見を活用していきましょう。

tokyo.serverlessconf.io

サーバレスとマイクロサービスで変わるゲームサーバ開発(ServerlessConfセッション紹介)

セクションナイン吉田真吾@yoshidashingo)です。

ServerlessConf Tokyoがいよいよ9月最終週にせまってきました。

トークもほぼすべて出揃いましたので、今回から何回かに分けてスピーカーの人にセッション内容を聞いてみようかなと思います。

プロフィール

  • 名前:丹羽一智 (Kazutomo Niwa)
  • 会社名:Game Server Services 株式会社
  • 役職:CEO

f:id:yoshidashingo:20160903131631p:plain

セガ、任天堂にてゲーム開発及び、サーバシステムの設計・開発業務に従事。 サーバレスアーキテクチャの可能性に惚れ込み、同概念を積極的に活用した mBaaSを提供するべく Game Server Services 株式会社を創業。 ゲームサーバの共通基盤化・マイクロサービス化を推進し、かつてゲームエンジンを各社が開発していた開発スタイルがゲームエンジンを用いた開発にシフトしたような現象をサーバシステム開発でも起こすべく活動中。

Quick Chat

---- ServerlessConf Tokyoでのセッション概要を教えてください

2016/10にベータテストを開始する予定のGame Server Services(GS2)はスマホゲームのバックエンドサーバをサーバレスアーキテクチャで実装し、1時間数円〜という低価格で提供します。

GS2 はサーバレス・マイクロサービスを利用して実装されていますが、なぜサーバレス・マイクロサービスを利用してサービス開発をすることになったのか、その背景をサーバレス・マイクロサービスを採用する利点を交えながらお話したいと思います。

f:id:yoshidashingo:20160903142723p:plain

gs2.io

---- 提供するサービスはスマホのネイティブアプリ向けですか?

GS2の提供するマイクロサービスはサーバ間通信をする形で利用しますので、ブラウザゲームも対応しています。 将来的には AWS の Cognito や STS のような認証モデルを採用したクライアントから直接GS2のインフラにアクセスする手段も提供したいと考えていますが、当面はサーバ間通信です。

GS2からはREST APIとSDK(当初はPHP/Ruby/Javaを予定)が提供され、そのAPIを利用してサービスを利用します。 課金モデルとしては、EC2のような性能を予約し、性能に応じた価格を時間単位で課金する形式や、APIコール回数に対する課金などが存在します。

f:id:yoshidashingo:20160903142855p:plain

---- ところでGS2ってどこのインフラを使っているんですか?

基本的にはAWSです。が、一部GCPを利用している箇所があります。 たとえば、AWS の CloudWatch に相当する統計情報提供のバックエンドには GCP の BigQuery を採用している。などです。 あとは、キュー処理はSQSよりPub/Subのほうがスループットが出るんで、データの流量が多いキューの場合はそっちを使ってたりしますね。

---- サーバーレス構成である以外に強力な特徴とかはありますか?

1つ目はメトリクスがちゃんと取れてることですかね。 なんだかんだ言って、サービスの利用状況を集めるのって大変じゃないですか。fluentd を立てたり、ログを保管したり、ElasticSerch を立てたり…。 リクエストにお金はかかるんですけど、クオータの利用状況の遷移とか、API呼び出し回数の遷移とか、ほしい指標のデータがいつでもAPI一発で取り出せるようになってます。

2つ目はサービスのスペック変更がノンストップでマネージメントコンソールで数クリック、APIなら一発で変更できることですね。 サーバレスなんだから、スペック変更とかいらないんじゃないの?って思われるかもしれませんが、 データベースにDynamoDBを使っているサービスは、事前にIOをコミットする必要があるので、EC2のインスタンスタイプみたいな形式を取らざるを得なくなってます。 将来的にIO課金型のデータベースでいいものが出てくるとこの辺もすっきりして綺麗になると思うんですけどね。 ちなみに、SimpleDB忘れてないですよ(笑) 将来性とスケーラビリティに不安があるので使ってないだけです。

www.slideshare.net

3つ目はマネージドサービスなんで当然なんですけど、ヘルスチェックがいらないですね。 Zabbix とか Nagios とかだと、そもそもそいつらが動いてるホストのヘルスチェックをどうするんだ。とか至上命題じゃないですか。 最近だと Mackerel とか Stackdriver とかいろいろ出てきてますけど、なんだかんだで結構費用もかかりますし、皆さん結構頭を悩ませてるところじゃないでしょうか。

---- サーバーレスなアプリケーション作成について、「開発しやすさ」と「サービスの安定性やサービスで使われている技術仕様の公開」はどのくらいの割合で重要視していますか?

GS2 としては、開発のしやすさにフォーカスをあてています。10:0といってしまってもいいかもしれません。 サービスの安定性等をプラットフォーマーであるAmazonやGoogleに依存することに不安がないとは言いませんが、それは、AmazonやGoogleが努力していくべき点で、逆に私では何もできないからです。

現在、S3にデータを預けるのにどれほど消失やサービス終了の不安感を持ちながら利用しているか。というと、そんなことを考えている人は殆どいなくなったと思います。Serverlessに関しても、実績がついてくれば将来的には問題にならない要素だと考えています。

とはいえ、いざ Lambda がなくなる。と言われると困ってしまいますが、Serverlessの基盤は 所詮コンテナの上でコードが実行されて定期的にコンテナが破棄されるという単純なものですので、いざというときには自前でコンテナを持てばいい。という逃げ道があるという安心感もあるかもしれません。

---- 絶賛開発中だとは思うんですが、どんなスケジュール感でサービス展開していく予定ですか?

今はローンチに向けて精一杯頑張ってる状態ですね。 ローンチ後のプランはまだあまり考えていなくて、利用いただいた方からのフィードバックを見ながら、既存のサービスを強化していくか、新しいサービスを追加していくか、方針を決めていきたいと思っています。

闇雲にサービスを充実させるというよりは、最初は少数かもしれませんが、利用いただいた方の満足度を高めていって、少しでもGS2を気に入ってもらえるよう成長させていきたいですね。 なので、早期に利用いただけると手厚い待遇が得られると思いますので、ぜひご検討ください(笑)

---- そういえばちょうど前職辞めたばかりですよね?生活変わりましたか?

任天堂で働いていた頃は結構遠くに住んでいたので、通勤に片道一時間かけていたんですが、今はゆっくり眠ることが出来るようになりましたね。ただ、当時の癖(任天堂の始業時間は8時45分)かわかりませんけど、この業界にしては早いんですが、朝9時には仕事を開始してますね。

それ以外だと、何も考えなくても固定給が支給されていたサラリーマンとは違って、頑張ってサービスを軌道に載せないといけない。という使命感はありますね。

---- プロフィール写真の犬が可愛いですね!犬好きですか?

ええ、写真の犬はミニチュアダックスフンドですが、あとチワワも飼っています。

子供の頃も犬を飼っていたんですが、室内で飼えるような小型犬が本当は飼いたかったんですよね。 でも、親が連れて行ってくれたのはペットショップじゃなくて保健所で(笑) 当然ながら、理想のちっこくて可愛い犬がいるわけはなくて、結局、室内では飼っていたんですが、完全に中型犬でしたね(笑)

そういうこともあって、大人になって理想の小型犬を飼いはじめた。という経緯がありますね。

---- ありがとうございました、まだ対面でお会いしたことないので、当日お会いできるのを楽しみにしています

ありがとうございました。

まとめ

GS2をこれから利用するカスタマーにとって、可用性や信頼性といった非機能要件が徹底的にプラットフォーム任せというのは、下手に自分たちでインフラ運用されるよりよっぽど信用できるというのは明らかでしょう。

機能性にフォーカスすればそれだけ経営のスピードを上げられるという典型で、大いに期待ができるサービスだと思いました。

実際の機能やサーバーレス構成についてはぜひイベントに参加して本人から直接聞いてみてください。

tokyo.serverlessconf.io

先週のAWS関連ブログ〜8/28(月) - Happy 10th birthday EC2!、サーバーレスでバーチャルトレードなど

セクションナイン吉田真吾@yoshidashingo)です。

先日8/24にAmazon EC2が10周年を迎えました。

Amazon EC2 Beta | AWS News Blog

当時のスペックは以下の1種類だけだったんですね。

  • CPU: Xeon 1.7 GHz
  • Mem: 1.75GB
  • HDD: 160GB
  • ネットワーク帯域: 250Mbps
  • 時間単価: $0.1 (つまり月間$72くらい)

そこから現在に至るまでさまざまなOSをサポートし、不揮発なEBSが利用可能になったり、マーケットプレイスで構成済みイメージの販売ができたりとさまざまな変遷を経て、大きく進化しました。いまやEC2としてのサーバー利用だけでなく、他のマネージド・サービスの基底としても欠かせないサービスになっています。

サーバーレスの文脈だとちょっと鼻つまみもの扱いされることも多いEC2ですが、最近ではX1なんてモンスターマシンがリリースされたりしてますし、今後も楽しみです。

それでは今週も行ってみましょう。

AWS公式

1. Elastic BeanstalkがASP.NET Coreをサポート、またシングル環境に複数の.NETアプリケーションをデプロイ可能に

  • Elastic BeanstalkがASP.NET Coreをサポート

docs.aws.amazon.com

  • Elastic Beanstalkシングル環境に複数の.NETアプリケーションをデプロイ可能に

docs.aws.amazon.com

リンク:AWS Elastic Beanstalk Supports ASP.NET Core and Multi-App .NET Support リンク:http://blogs.aws.amazon.com/net/post/Tx29MH65I0HLAN5/Multiple-Application-Support-for-NET-and-Elastic-Beanstalk

2. Amazon EFSを活用したSAPシステム構築

  • SAPでEFSがサポートされたとのこと

aws.typepad.com

3. 岡三オンライン証券がサーバーレスでバーチャルトレードシステムを構築

  • ネット証券の老舗である岡三オンライン証券のバーチャルトレードシステム(デモ画面)をサーバーレスアーキテクチャで構築した事例

リンク:AWS 導入事例:岡三オンライン証券株式会社 | AWS

AWS関連

4. AWSで始めるServerless React Server Side Rendering

  • Grand Frontend OsakaでのLT
  • API Gatewayを使ってLambdaでサーバーサイドレンダリングしたReactのコンテンツにアクセスすることで、SEO対策などにも有効な方法です。

speakerdeck.com qiita.com

5. iPhoneアプリのバックエンドとしてServerless Framework使ってみた

  • iPhoneアプリ/API Gateway/Lambda/その他AWSリソースの複数セットの管理のためにServerless Frameworkをラップしたリリース用のスクリプトでいい感じに開発フローを構築した話
  • サーバー構築不要で、コストが安く済み、セキュリティが担保できたといった感想

speakerdeck.com

その他

6. インサイトテクノロジーがDelphixの取扱いを開始

  • ストレージの仮想化技術でスナップショットされたバージョンでアプリやデータを管理、リストアできるDelphixをインサイトテクノロジーが取扱い開始
  • 膨大なテストデータを本番データからマスキングしてテスト利用するときなどに良いようだが、Delphix自体はもっとユースケースとして可能性もありそうなので期待

http://www.insight-tec.com/press/20160824_delphixwww.insight-tec.com

7. 変態的 CSS トリック

  • Grand Frontend OsakaのサイトのCSSのトリッキーに見えるテクニックをKiteくんが丁寧に解説してます。
  • 正直すべては理解できなかったけど、斜めデザインとか使いドコロありそうだし、なにより美しいWebデザインに対する姿勢が参考になります。ここまでやってるとは。

speakerdeck.com

ということで今週は以上です。