2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
Startup Architecture Of The Year 2019 #6-7 double jump.tokyo株式会社(全1記事)
提供:アマゾン ウェブ サービス ジャパン株式会社
リンクをコピー
記事をブックマーク
司会:ここまでで5社のピッチが終了しまして、残すところ、あと2社ですね。次は、 double jump.tokyo株式会社のエンジニアである満足さんにご登壇をいただきたいと思います。それでは、よろしくお願いします。
満足亮氏(以下、満足):よろしくお願いします。さっそくですけど、ブロックチェーンを知っている方、手を挙げてください。
(会場挙手)
じゃあ、だいぶ飛ばしていきます。
我々は『マイクリプトヒーローズ』というゲームを作っております。「ゲームにかけた時間もお金も情熱も、あなたの資産となる世界」というキャッチフレーズでやっています。ブロックチェーンのEthereumを使っていまして、プラス、分散ストレージであるIPFSを利用して、ゲーム資産の非中央集権性を実現しています。
ただ、ブロックチェーンによくあるスケーラビリティやUXの課題に関しては、ゲームの機能としては、AWS上に従来どおりサーバで構築しております。
ゲーム画面としてはこんな感じですね。左から、バトルの画面であったり、マーケットの画面であったり、今出しているアセット(ゲーム内アイテムやキャラクターなどの資産)の図鑑ですね。
やっぱり「なぜブロックチェーンを使っているの?」という疑問があると思うんですけど、ブロックチェーンゲームにおいて、ゲーム資産の所有情報は、あくまでもユーザーのものです。つまり、自由に取引ができたり、ユーザー間の(アセットの)譲渡が可能です。
また、ゲームの枠と飛び越えて、我々が作っているアセットなんですけど、別に我々以外のところで使っていただいてもぜんぜん構わないという、ユーザーに対する期待があります。
また、開発者である我々の視点から見ると、認証であったり決済のプラットフォームが、Ethereum上のものを使うことによって、事実上ほぼ手数料なしで利用が可能になります。
具体的にどういう感じで作っているかというと、こういうかたちでEthereum上にゲーム資産の所有情報を持っていまして、ユーザーは自分の持っている端末の秘密鍵を用いてEthereumと通信していますし、我々のサーバともそのような認証情報を使ってアクセスしています。
具体的に、AWSの構成要素はこういう感じのグラフになります。ユーザーはCDNやNLBを通してWebサーバに接続して、リソースによってはS3やAuroraにデータを取りにいっています。我々のサーバとEthereum間のアクセスは、レガシーな感じですけど、バッチサーバでがんばっております。
使っている技術スタックとしては、フロントはSPAで、Nuxt.jsやweb3.js、gRPC-Webを採用しています。Webサーバに関しては、Nginxがかなりがんばっていまして、TLSのterminationをやったりだとか、gRPC-Webのproxyを行っていたり、L7のRoutingをガリガリやっています。
後ろ側には、gRPCで作っているものがCore-serviceとしてありまして、それ以外に認証やアップロードなど、マイクロサービス的に作ってあります。
このアーキテクチャを採用している理由としまして、ブロックチェーンとgRPCというエッジの利いた部分に飛び込むにあたり、それ以外は実績と信頼のあるAWSの機能を活用することで、新規領域に集中ができるようにと考えて、こういうアーキテクチャになっています。
また、SPAを採用していることによって、多様な処理を一元管理するために、Nginxをかなり最大活用しています。コンテナなどのバックエンドの通信に不安が出るようなものは採用せずに、同一インスタンスにsystemdで地味に立ち上げております。
Well Architectedなポイントとしては、課金はブロックチェーンで行っていますので、信頼性はありますし、セキュリティだと公開鍵の認証を使っています。サーバコストや運用上の理由になるんですけど、Auroraの自動拡張を非常に信頼して使っていますが、一部のデータはAuroraからS3にコピーすることで、コストの削減につながっているかなと思います。また、Protobufでフロントとバックエンドの開発コストも非常に小さくなっています。
パフォーマンス側はとくに推していまして、HTTP/2とgRPCで大量の並列アクセスを捌けたりだとか、データはJSONのままに保存していまして、インデックスのみカラムを作っているとか、JOINを使っていないとか、S3とLambdaを使って非同期処理を作ったりしています。
これがgRPS-Webの並列アクセスの様子です。
アクセスだったりDBのレイテンシーも安定して低くなっています。
このアーキテクチャによって、2ヶ月で構築ができています。今までの累計ユーザーだと5万人だったりとか、6,000DAU、3,000のオンチェーンのトランザクションが発行されていて、6ヶ月で1万2,000ETH超えの売上のある、世界一のブロックチェーンゲームになっています。
最後に、Managed Blockchainのやつが欲しいです。
司会者:はい、以上になります。満足さん、ありがとうございました。
(会場拍手)
司会者:最後はご要望もいただき、ありがとうございます。1分間Q&Aになります。なにかコメントやご質問のある方、お願いします。
松本勇気氏(以下、松本):EthereumとかIPFSって外部安定性にちょっと不安があるんですけど、ここらへんのread/writeなどはどういうふうに実装していますか?
満足:書き込み処理に関しては、もうユーザーから直接やらざるを得ないと思うんですけど、読み込み処理に関しては、かなりの部分proxyしてますし、IPFSのGETをできるようにはしていますが、事実上はS3からのみ取っています、という感じですね。あと、IPFSのアップロードに関しては、先ほどちょっと触れたように、Lambdaを使って非同期にやっています。
松本:あと、今サーバからトランザクションを発行していたじゃないですか。あそこはどういったトランザクションになっているんですか?
満足:例えば、ゲーム上で新しいアセットを購入できるようになっているので、その付与であったり、bitの情報などがメインです。
松本:そこの鍵の安全性とか、サービス内の工夫はありますか?
満足:それに関しては、スマートコントラクト上である程度絞っているので、なにか起きたらすぐに対応、という状況にはなっています。
松本:あと、鍵の安全性のほうは?
満足:鍵の安全性は、ある程度keystoreのようなかたちで、サーバで直に直しています。
竹内秀行氏(以下、竹内):すいません。先ほどクライアントのアイコンアプリのほうにも鍵を持っていると言っておられましたが、あそこでトランザクションの署名をしているわけではないですよね。
満足:ユーザーが直接Ethereumにアクセスする場合の署名は、そこでやっています。
竹内:そこで署名して、そこから直接Ethereumのネットワークに。
満足:そうです。proxyはあくまでReadだけです。
竹内:わかりました。またあとでお話を。
満足:はい、よろしくお願いします。
司会者:では、満足さん、ありがとうございました。拍手をお願いいたします。
満足:ありがとうございました。
(会場拍手)
司会者:ありがとうございます。ちなみに、ブロックチェーン・イーサリアムの鍵管理をする場合、AWS CloudHSMというものが使えたりします。みなさん、よろしくお願いします。
アマゾン ウェブ サービス ジャパン株式会社
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略