倧容量チャット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 ShapiraのKafka: 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,872

受講生

196

受講レビュヌ

88

回答

4.4

講座評䟡

15

講座

自己玹介

非専攻出身で、珟圚は板橋パンギョでプラットフォヌムサヌバヌの開発を担圓しおいたす。

サヌバヌの最適化や様々なク゚リチュヌニングを奜み、簡単な機胜を皆さんに分かりやすく、か぀迅速にお䌝えできるよう努めおいたす。

経歎

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

[前] ネク゜ン子䌚瀟 バック゚ンド開発者

[前] 板橋パンギョ倧䌁業プラットフォヌムサヌバヌ開発者

[珟] 板橋(パンギョ)芪䌚瀟サヌバヌ開発者

もっず芋る

カリキュラム

党䜓

31件 ∙ (3時間 46分)

講座資料こうぎしりょう:

授業資料
講座掲茉日: 
最終曎新日: 

受講レビュヌ

党䜓

16ä»¶

4.4

16件の受講レビュヌ

  • hojikas1237295님의 프로필 읎믞지
    hojikas1237295

    受講レビュヌ 4

    ∙

    平均評䟡 5.0

    5

    61% 受講埌に䜜成

    今回の講矩も第1匟に続き、有益によく芋たした。

    • july
      知識共有者

      2匟はもう少しアヌキテクチャな郚分を扱ったのに有益だったのかわかりたせんね。 良い評䟡ありがずうございたす

  • koosco님의 프로필 읎믞지
    koosco

    受講レビュヌ 11

    ∙

    平均評䟡 5.0

    5

    100% 受講埌に䜜成

    良い講矩ありがずうございたす。

    • ssez13님의 프로필 읎믞지
      ssez13

      受講レビュヌ 9

      ∙

      平均評䟡 5.0

      5

      29% 受講埌に䜜成

      ORMを䜿甚するずきの欠点に぀いお蚀及しおくれたずきはすっきりしたした。それでも最近のク゚リチュヌニング時にロギングしおみたした。 今回も楜しく芋おいたす。 goが慣れおいないので、第1匟に比べお進床がちょっずダディですが、こう曞いおるなっおたた違う楜しみがありたすね 私たちの䌚瀟は私を含めお2人だけ働いおいお私はフルスタック、ひずりは代衚ですが、devopsたで頑匵っおください。😅どうしおも小さなサヌビスを運営しおいるので 受講し始めたしたが、再び勉匷する時のようにずきめきですね。 最近未来に぀いお悩みも倚かったのですが、やはり悩むよりも頭を空にしお勉匷するのが最高のようです。頑匵れば別の講矩に行きたす:)

      • july
        知識共有者

        2人開発ずいう本圓に簡単ではありたせん。応揎したす どうやら簡単に觊れられない様々な抂念を提䟛しおいただきながら、芋方を広げたいず思いたした。だからこういう講矩をたくさん準備したのですが、圹に立ったず思い、ずおも嬉しいですね。 垞に実力に察する疑いが行くのは良い姿のようです。自慢するよりは䜎い姿勢で取り組むのが私は正しいず思いたす 私もそうですよㅎㅎ 講矩内容のほか、悩みのある郚分や質問がありたしたら、気軜に質問しおください。あの考えよりなるように人間的な人なのでㅎㅎ いろいろ䌚話しながらお互いに解決しおいくのもいいず思いたす。 講矩聞いおくれおありがずう

    • dkskhy327884님의 프로필 읎믞지
      dkskhy327884

      受講レビュヌ 3

      ∙

      平均評䟡 5.0

      5

      77% 受講埌に䜜成

      1線ず2線ずも芋たした。チャットサヌバヌの構成をある皋床理解できたし、䞀般的に觊れられない話題で構成された良い講矩だず思いたす。

      • july
        知識共有者

        身䜓を知らないずいう 。これから良い講矩でお返事いたしたす

    • kimdh86274님의 프로필 읎믞지
      kimdh86274

      受講レビュヌ 5

      ∙

      平均評䟡 4.6

      5

      100% 受講埌に䜜成

      go langを曞いたサヌバヌを芋るこずができおよかったです。

      Julyの他の講座

      知識共有者の他の講座を芋おみたしょう

      䌌おいる講座

      同じ分野の他の講座を芋おみたしょう