inflearn logo
inflearn logo

大容量チャットTPSに対するstatefulサービスの構築

statefulサービスに対してどのようにサーバーを構築し、無停止デプロイが進行されるのか、すべてをお教えします。

難易度 初級

受講期間 無制限

Node.js
Node.js
MySQL
MySQL
Go
Go
Kafka
Kafka
websockets
websockets
Node.js
Node.js
MySQL
MySQL
Go
Go
Kafka
Kafka
websockets
websockets
날개 달린 동전

講座 を紹介して、成長と収益を得ましょう!

날개 달린 동전

マーケティングパートナーズ

講座 を紹介して、成長と収益を得ましょう!

学習した受講者のレビュー

学習した受講者のレビュー

4.4

5.0

ssez

29% 受講後に作成

ORMを使用するときの欠点について言及してくれたときはすっきりしました。それでも最近のクエリチューニング時にロギングしてみました。 今回も楽しく見ています。 goが慣れていないので、第1弾に比べて進度がちょっとダディですが、こう書いてるな~ってまた違う楽しみがありますね! 私たちの会社は私を含めて2人だけ働いていて(私はフルスタック、ひとりは代表ですが、devopsまで頑張ってください。😅)どうしても小さなサービスを運営しているので…受講し始めましたが、再び勉強する時のようにときめきですね。 最近未来について悩みも多かったのですが、やはり悩むよりも頭を空にして勉強するのが最高のようです。頑張れば別の講義に行きます:)

5.0

DAN

100% 受講後に作成

go langを書いたサーバーを見ることができてよかったです。

5.0

rnxogud123

100% 受講後に作成

良い講義ありがとうございます。

受講後に得られること

  • Kafkaを通じた発行/購読パターン

  • MySQLを通じたデータ管理

  • WSS通信による大容量チャットTPS処理

  • イベントストリーミングによるサーバー管理

Kafka、MySQLを活用してStatefulなサービスを作る 😘


本講義ではストリーミングプラットフォームで使用されるチャットTPSについて、Statefulなサービスがどのように管理され、開発されるのかについて学ぶことができます。


この講義は2つの言語を使用しています。

Golangを優先的に使用してすべて実装する方法について学び

その後受講される方のためにより馴染みのあるNode.JSでKafkaを活用する方法など、様々な言語を通じて講義を構成しました。


さらにKafkaを通じた発行/購読パターン、MySQLを通じたデータ管理など、多様で既存に経験したことのないテーマで講義を構成しました。


講義を受講すると、皆さんはKafka、MySQLに対する深い理解Statefulなサービスに対するZero-downtime Deploymentを学習することができます。

Stateful vs Statelessの違いは何ですか?? 🫣

皆さん!!単純にMVC、Service-Repositoryのようなサーバーの構造ではなく、サーバーの基本形態について考えたことはありますか?


実務ではサーバーの形態によってZero-downtime Deploymentを実行するか、それともある程度のretryを許容するかが決まります。

皆さんが開発するサーバーは、この2つの概念のうち1つが必ず適用されて開発が始まります。

一般的なHTTPサーバーを考えていただければと思います。

状態を保持しないため、拡張に非常に有利であり、皆さんが一般的にサーバーを開発するなら

基本的にStatelessなサーバーで構成されます。


最も代表的なサーバーの形態だと見ていただければと思います。

なかなか触れることのないサーバーの形態です。


このようなサーバーの構造では、wsプロトコルを活用して開発が進められ

状態を維持するため、拡張には非常に不利ですが、コネクションを維持するため、リソースの節約に役立ちます。


この講義で主に扱うサーバーの形態です。

この講義では、StatefulとStatelessの両方のケースについて扱います。💁

この講義は簡単には接することのできない講義だと断言できます。


2つの形態のサーバー開発を通じて、皆さんはMySQL、Socketを活用した大容量チャットTPSに対する処理と、Kafkaを活用したZero-downtime Deploymentがどのように動作できるのかについて学習することができます。

Zero-downtime Deploymentとは何ですか??🙋‍♂

先ほどの紹介文で、私は頻繁にこの用語を使用しました。

直訳すると、無中断デプロイを意味します。


皆さんはストリーミングプラットフォームで突然サイトが使えなくなったり、中断された経験はありますか?

ユーザー側では、デプロイが進行しているのか、していないのかも分からないほど、サイトに影響を与えずにデプロイが進行することをZero-downtime Deploymentと言います。

この方式はStatelessなサービスでは非常に簡単に実装できます。

しかし、サーバーの状態を維持するStatefulなサービスでは非常に難しく、多くのリソースを消費する作業です。


この講義ではStatefulなサービスに対してKafkaを活用し、Zero-downtime Deploymentを実装する方法について扱います。

Why Kafka 😯

Kafkaはイベント駆動型Streamツールとして、パブリッシュ/サブスクライブパターンを使用する際に非常に頻繁に使われるサービスです。


実際にLinkedInで開発し、導入したサービスであり、様々な企業がKafkaを導入してイベントに対するメッセージの損失なくデータを処理しています。

  • 受講生の皆さんが最も重要視すべき点は、ネカラクベ多数の大企業ではKafkaを必須で使用しているため、大いに役立つはずです。


この講義では、自らlocal環境にKafka環境を設定及び構築する方法についてお伝えし、実際に使用する方法までお伝えしています。

  • Kafkaに関する内容は、実際のLinkedInの開発者であるGwen ShapiraKafka: The Definitive Guideの内容を基にカリキュラムが構成されました。

こんな内容を学びます。🤔

1⃣Kafkaを活用したPub/Sub Modeling

kafkaのconfig環境設定およびBroker、zookeeperの起動まで扱います。これを通じて皆さんは実際にKafkaを活用したサービスを開発する方法と注意点について学ぶことができます。

2⃣MySQL Schemaの設計によるサービスデータ管理

socket通信に関するデータ管理及びチャットルームに関するデータ管理を、サービス構築に適したMySQLを活用して管理する方法について学習し、ORDER BY、Pagingなどのクエリを直接作成しながら、サーバーを構築する方法を学ぶことができます。

3⃣4つのサーバーを構築して行われるサーバー間通信

単に1つのサーバーを構築するのではなく、様々なサーバーを構成し、それらのサーバーを管理するControllerサーバーを構築するなど、多くのサーバー作業を通じてLoad Balancerを間接的に経験することができ、KafkaのPub/Sub Modelingを活用したサーバー間の通信方法について経験することができます。

こんなものを実装してみます。🤔

ローカル環境でのKafka起動方法

MySQLを通じたチャットルーム及びチャットデータ管理

websockets通信を通じたDBデータの取り扱い

Node.js、Goを活用したKafka活用及びサーバー管理

受講前の参考事項

実習環境

  • オペレーティングシステムおよびバージョン(OS):Windows、macOS、Linuxなど、すべてのOSが可能です。


  • PCスペック: インターネット接続が可能な基本スペックのPC

必ず無料で公開されている動画をご確認ください!! 皆さんがこの講義で学ぶことができ、実際に実装するサービスに関する情報が含まれています。

この部分はとても重要です! 😯

この講座は前回の1弾講座に続き、追加的なサービス構築及びデータ管理と配布について扱う講座です。

ですので、前回の講義を基に講義が続けて進行されます。

簡単に前回の講義で扱ったソースコードの説明は行われますが、初めて聞く方は非常に戸惑う可能性があります。


ですので、もしwss通信やチャットサーバーに関する知識がない場合は、この講義を先に受講していただければ、講義を受ける上で大きな困難はないと思います。

この講義の目標はFE開発ではなく、ws protocolに関するZero-downtime Deploymentアーキテクチャ及びサーバー開発を中心としています。


なぜなら、私はFEを専門とする開発者ではなく、BEを専門とする開発者だからです。そのため、FE開発において誤った知識が伝わる懸念があるため、FE開発は単一サーバーに対するAPI処理のみ進行しています。


ですので、追加的なZero-downtime DeploymentのためのReact State管理は講義では行いません。この部分は講義でも継続的に言及しておりますので、ご参考いただければ幸いです。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • パブリッシュ/サブスクライブパターンに興味がある方

  • ストリーミングプラットフォーム構築に興味のある方

  • チャットデータ管理について気になる方

  • 無難な開発方式ではなく、新しくて面白い開発をしてみたい方

  • MySQL、Kafkaを実務者から学びたい方

前提知識、
必要でしょうか?

  • Golang [ 講義の基本言語です。知らなくても大丈夫です。 ]

  • Node.js [受講生のための言語です。知らなくても大丈夫です。]

こんにちは
Julyです。

3,782

受講生

187

受講レビュー

88

回答

4.4

講座評価

15

講座

自己紹介

非専攻出身で、現在は板橋(パンギョ)でプラットフォームサーバーの開発を担当しています。

サーバーの最適化や様々なクエリチューニングを好み、簡単な機能を皆さんに分かりやすく、かつ迅速にお伝えできるよう努めています。

経歴

[前] サンドボックス ブロックチェーン開発者

[前] ネクソン子会社 バックエンド開発者

[前] 板橋(パンギョ)大企業プラットフォームサーバー開発者

[] 板橋(パンギョ)親会社サーバー開発者

もっと見る

カリキュラム

全体

31件 ∙ (3時間 46分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

16件

4.4

16件の受講レビュー

  • koosco님의 프로필 이미지
    koosco

    受講レビュー 11

    平均評価 5.0

    5

    100% 受講後に作成

    良い講義ありがとうございます。

    • kimdh86274님의 프로필 이미지
      kimdh86274

      受講レビュー 5

      平均評価 4.6

      5

      100% 受講後に作成

      go langを書いたサーバーを見ることができてよかったです。

      • ssez13님의 프로필 이미지
        ssez13

        受講レビュー 7

        平均評価 5.0

        5

        29% 受講後に作成

        ORMを使用するときの欠点について言及してくれたときはすっきりしました。それでも最近のクエリチューニング時にロギングしてみました。 今回も楽しく見ています。 goが慣れていないので、第1弾に比べて進度がちょっとダディですが、こう書いてるな~ってまた違う楽しみがありますね! 私たちの会社は私を含めて2人だけ働いていて(私はフルスタック、ひとりは代表ですが、devopsまで頑張ってください。😅)どうしても小さなサービスを運営しているので…受講し始めましたが、再び勉強する時のようにときめきですね。 最近未来について悩みも多かったのですが、やはり悩むよりも頭を空にして勉強するのが最高のようです。頑張れば別の講義に行きます:)

        • july
          知識共有者

          2人開発という本当に簡単ではありません。応援します! どうやら簡単に触れられない様々な概念を提供していただきながら、見方を広げたいと思いました。だからこういう講義をたくさん準備したのですが、役に立ったと思い、とても嬉しいですね。 常に実力に対する疑いが行くのは良い姿のようです。自慢するよりは低い姿勢で取り組むのが私は正しいと思います 私もそうですよㅎㅎ 講義内容のほか、悩みのある部分や質問がありましたら、気軽に質問してください。あの考えよりなるように人間的な人なのでㅎㅎ いろいろ会話しながらお互いに解決していくのもいいと思います。 講義聞いてくれてありがとう!

      • hojikas1237295님의 프로필 이미지
        hojikas1237295

        受講レビュー 4

        平均評価 5.0

        5

        61% 受講後に作成

        今回の講義も第1弾に続き、有益によく見ました。

        • july
          知識共有者

          2弾はもう少しアーキテクチャな部分を扱ったのに有益だったのかわかりませんね。 良い評価ありがとうございます!

      • dkskhy327884님의 프로필 이미지
        dkskhy327884

        受講レビュー 3

        平均評価 5.0

        5

        77% 受講後に作成

        1編と2編とも見ました。チャットサーバーの構成をある程度理解できたし、一般的に触れられない話題で構成された良い講義だと思います。

        • july
          知識共有者

          身体を知らないという…。これから良い講義でお返事いたします!

      Julyの他の講座

      知識共有者の他の講座を見てみましょう!

      似ている講座

      同じ分野の他の講座を見てみましょう!

      ¥5,941