강의

멘토링

커뮤니티

BEST
Programming

/

Back-end

プロダクションレベルリアルタイムチャットサーバー構築:分散処理から性能最適化まで(Kotlin & Spring)

Spring Boot 3.x + Kotlinで3つのインスタンスクラスターを構築し、Redis Pub/Sub 分散メッセージングとNginx ロードバランサーを活用して、大容量トラフィック処理が可能な拡張可能なWebSocketリアルタイムチャットサーバーを開発します。

難易度 入門

受講期間 無制限

  • Hong
Spring
Spring
Kotlin
Kotlin
Spring Boot
Spring Boot
websocket
websocket
Spring
Spring
Kotlin
Kotlin
Spring Boot
Spring Boot
websocket
websocket

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

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

4.9

5.0

Jlos Ho

100% 受講後に作成

この講義も本当にGoatです。他の講義も受講しましたが、これほど現実的で隣で教えてくれるような講義は、このInflearnプラットフォームで唯一のもののようですね。とても役に立ちました。ありがとうございます。

5.0

Hoos

96% 受講後に作成

こんなアーキテクチャもあるんですね...Kotlinからプラットフォームに関するアーキテクチャ及び実際のコードを通じて、チャットプラットフォームについて多くの方々が理解できる良い講義だと思います。

5.0

미래 1인 개발자

32% 受講後に作成

講義を撮影するにあたり、サーバーアーキテクチャの支援とメッセージ処理の設計を行った、Tossで少しずつ経験を積んでいるサーバー開発者です。これまでステートレスプロトコルを通じた通信をテーマとしてのみ進めてきましたが、このように新しいテーマで講義を撮影することになり、かなり嬉しく、興味深い時間でした。質問もご自由にどうぞ。私も時間を割いて興味深く拝見しており、質問に対しても私の見解を述べる時間を持ちたいと思っています。講義に多くの関心をお寄せください。

受講後に得られること

  • Redis Pub/Sub を活用し、複数サーバーインスタンス間でリアルタイムメッセージを同期する分散メッセージングシステム

  • Docker Composeで3つのインスタンスでクラスターを構築しNginx ロードバランサーでトラフィックを分散処理する方法

  • Spring WebSocketを利用して双方向リアルタイム通信を実現

  • マルチモジュール構造でドメイン駆動設計を適用してスケーラブルなサーバーアーキテクチャを設計する方法

  • Redisを活用したメッセージシーケンス管理で、分散環境でもメッセージ順序を保証する技法

  • Docker コンテナベースのデプロイとヘルスチェック、ログモニタリングを通じたサービス運用方法

  • Spring Boot 3.x + Kotlinの最新機能を活用したモダンバックエンド開発方法

  • メッセージ重複処理防止、セッション整理、リソース解放など、安定したサービス運用のための防御コーディング手法

この講義を通して、あなたは...

実際のサービス環境で数万人のユーザーを手に入れることができるスケーラブルなサーバーアーキテクチャを直接設計して構築します。


🏗 。単に機能を実装することを超えて、大規模なトラフィックにも安定して動作する分散システムの重要な原理を体験できます。

まず、複数のサーバーが単一のシステムのように動作するようにNginxロードバランサートラフィックを分散し、 Redis Pub / Subを使用してサーバー間のメッセージをリアルタイムで同期する方法を学びます。この過程で、C10K(1万同時接続)問題を解決するノウハウを自然に身につけることになります。


また、 データベースコネクションプールをチューニングし、JPAバッチ処理とカーソルベースのページネーションを適用して応答速度をミリ秒単位まで改善する経験をすることになります。

最後に、 Dockerコンテナ🐳を通じて開発から展開まで一貫した環境を維持し、 Health Checkと監視システム🩺を構築し、サービス障害を事前に防止する安定した運用技術まで学習します。このすべてのプロセスを最新のスタックであるKotlinとSpring Boot 3.x、websocketを活用して、スタイリッシュで効率的なコードで実装します

📦講義を聞いたら、このような結果を作ることができます。

1つの完全な分散チャットアプリケーション📦

命令でシステム全体(サーバー、データベース、キャッシュなど)を一度に実行できる、完全な形式のアプリケーションパッケージが得られます。単にコードスニペットのセットではなく、すぐに配布可能なサービスです。

本番レベルのシステムアーキテクチャの設計図🗺

ユーザーの要求からデータの保存まで、全体の流れを含むシステムアーキテクチャの設計図を直接構築し理解することができます。この設計図は、あなたの技術的深さを証明する優れたポートフォリオ資産になります。

リアルタイム双方向チャット機能💬

ユーザーがログインし、チャットルームを作成し、さまざまなメッセージをリアルタイムでやり取りするためのコアチャット機能が完全に実装された結果をもたらします。

水平拡張が可能なサーバークラスター

n個のSpring BootサーバーがNginxロードバランサーの下で動作するサーバークラスターを構築します。これにより、トラフィックが増加したときにサーバーインスタンスを追加するだけで、システムを簡単に拡張する方法を学びます。

高可用性メッセージングシステム📡

あるサーバーに障害が発生したり、ユーザーが別のサーバーに接続しても、Redis Pub / Subを介してすべてのメッセージが不足なく配信される安定したメッセージングシステムを構築します。

最適化されたデータ管理システム

PostgreSQLにチャットデータを永久に保存し、Redisにセッション情報やキャッシュデータを保存し、データの安定性と高速応答速度の両方を満たすハイブリッドデータシステムを完成します。

📚川の主な内容!

Redis Pub/Sub 分散メッセージング

複数のサーバーインスタンス間のリアルタイムメッセージ同期のためにRedisの発行 - 購読パターンを実装します。冗長メッセージの防止、メッセージの順序の保証、サーバー固有の分離処理など、本番レベルの分散メッセージングシステムを構築し、スケーラブルなリアルタイム通信基盤を構築します。

WebSocketベースのリアルタイム通信

Spring WebSocketを活用して、HTTPよりもはるかに効率的な双方向リアルタイム通信を実現します。セッション管理、接続状態追跡、エラー処理などにより、安定したリアルタイムチャット機能を提供し、解決のための最適化手法も適用します。

マルチモジュールDDDアーキテクチャ

Domain-driven Designの原則に基づいて、API、Domain、Persistence、およびWebSocketレイヤーを独立したモジュールに分割します。各モジュールの責任を明確に区別し、依存性の方向を制御して、メンテナンス性とテストの容易さを最大限に高めるスケーラブルなサーバーアーキテクチャを構築します。

Nginxロードバランサー+ WebSocketプロキシ

n個のSpring Bootインスタンスにトラフィックを均等に分散するNginxロードバランサーを設定します。 HTTPリクエストだけでなくWebSocket接続も確実にプロキシし、本番レベルのリバースプロキシ設定で高可用性サービス環境を構築します。

📚プロジェクト機能アーキテクチャの適合

Redis Pub/Sub

メッセージ処理プロセス

📚川の味を見る!

📚 WebSocketセッション管理クラスを作成



📚自動化されたスクリプトを利用したサーバーの展開中



📚環境展開のためのDocker- Compose



📚 Nginxパフォーマンス指標を設定



Kotlin なぜ学ばなければならない..?

Springと100%の混同になると言います。

📚簡潔で直感的な文法


Kotlinは簡潔で直感的な文法を提供するため、開発者はより少ないコードでより多くの作業を行うことができます。

📚高い生産性と安全性


Kotlinはヌルの安定性をネイティブにサポートし、ヌルポインタ例外(NullPointerException)を減らすことができます。

📚高い互換性


Kotlinは100%Javaと互換性があるため、既存のJavaプロジェクトに簡単に統合できます。これは、Java開発者がKotlinを学ぶのに大きな障壁がなく、既存のコードを維持しながら新しいKotlin機能を使用できることを意味します。

websocketHTTPで実装するだけではありませんか

📌可能ですが、不可能な開発方法ではありません。

📌しかし、サーバー開発者は通常、サーバーのリソースをできるだけ節約する必要があります。

📌だから、チャットサーバーのような継続的なConnectionが維持されるべき通信のような場合にはWebSocketを使うのが非常に適しています。

重要な4つの価値観

1. 講義は人間的でなければならない。

専門性が落ちる姿と思われても、見やすくした講義は講義ではないと思います。

2. 実務に特化しなければならない

開発は言葉ではありません。

  • 企画者の方々…生かしてください。

3. 受講生の方々に役立たなければならない。

私が実務で適用して効果を見た概念を溶かしたいと思いました。

4. 講義が終わりではない。

講義を進めながら質疑応答をたくさん残してください。この講義はその一人だけの知識を通して作られませんでした。様々な大企業開発者の方々の意見も取り入れられています。

  • 講義を完了するのに役立つ人の簡単な履歴は次のとおりです。


private val supported_one = "カカオペイプラットフォームバックエンド開発者" private val supported_two = "トス証券APIサーバー開発者" private val supported_three = "秘密にしてほしいユニコーンスタートアップサーバー開発者"

受講前の注意

練習環境

  • Macos M3を使って撮影しました。

  • Dockerをデフォルトで使用します。

  • java --version : 17.0.12 2024-07-16 LTS

  • JetBrainシリーズのIDEを使用します。

  • Gradleを使用してビルドします。

    • ソースコードは、あなたが知らないバージョンの競合を防ぐためにビルドファイルまですべて含まれています。

😍のように見れば良いトピック

こんな方に
おすすめです

学習対象は
誰でしょう?

  • ジュニア→ミドルレベル成長を求めるバックエンド開発者

  • リアルタイムサービス開発経験を積みたい開発者

  • 分散システムアーキテクチャに興味がある開発者

  • シニア開発者へ成長したいミドルレベル開発者

  • Dockerの基本知識がある開発者 または 学びたい開発者

  • ゲーム/チャット/ソーシャルサービス開発者

  • ポートフォリオを強化したい就職活動をしている人

  • 技術スタックの拡張を通して転職を計画中の開発者

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

  • Springに関する基本的な知識があると良いです。

  • ウェブソケット通信についての基本的な知識があると良いです。

  • これらすべての知識は必要ありません。 プロジェクトを直接実装しますので、一緒に学習が可能です。

こんにちは
です。

5,966

受講生

391

受講レビュー

127

回答

4.7

講座評価

22

講座

自己紹介

家でゴロゴロしていた時に開発に興味を持ち、独学を始め、現在は板橋(パンギョ)でプラットフォームサーバーの開発を担当しています。私が学んできた方法や、実務で直面しうる様々な問題とその解決策を皆さんに提供したいという思いから、知識共有者としての活動を続けています。

 

講義は私一人の知識だけで作られるものではありません。すべての講義には、共に作り上げてくださる方々がいます。

知識共有者の経歴

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

[前] メタバースバックエンド開発者

[] 板橋(パンギョ)でベテランになりつつあるサーバー開発者

NAVERで開発を担当しているAnde知識共有者の経歴 [前] サンドボックスIP関連ブロックチェーン開発者 [前] メタバース・バックエンド開発者 [現] パンギョ(板橋)で経験を積んでいるサーバー開発者

インタビュー履歴

その他のお問い合わせ

  • unduck2022@gmail.com

カリキュラム

全体

28件 ∙ (4時間 55分)

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

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

受講レビュー

全体

29件

4.9

29件の受講レビュー

  • kju626095386님의 프로필 이미지
    kju626095386

    受講レビュー 8

    平均評価 5.0

    5

    100% 受講後に作成

    現実的で良い内容の講義をよく拝見しました。ありがとうございます。

    • jhong
      知識共有者

      こんにちは、ks juさん、レビューを残していただきありがとうございます。 実際の運用環境では、より多様な機能が入る形になっており、このような形態のための構造だと思っていただければと思います😊😊今後もより有益な講義を提供いたします。良い一日をお過ごしください :)

  • youngba8935643님의 프로필 이미지
    youngba8935643

    受講レビュー 7

    平均評価 5.0

    修正済み

    5

    96% 受講後に作成

    就職準備をして、実務で働きながら講師の方の講義をたくさん参考にして基盤として学習を進めましたが、本当にとても役に立つ良質なテーマだと思います。一緒にコードを書く過程もとても有益で、隣で一緒にコーディングをしている感じがするので、それだけ学習効果が良くなるようです!!今後もっと頻繁に見て、良い講義が作られればいいなと思います。ありがとうございます!

    • jhong
      知識共有者

      こんにちは、テンバーガーさん!就職準備をされているのですね!!この講義がたくさんお役に立てればと思います。今後就職も成功されましたら、お知らせください😊😊ありがとうございます!

  • kask814587762님의 프로필 이미지
    kask814587762

    受講レビュー 3

    平均評価 5.0

    5

    100% 受講後に作成

    講義よく見させていただきました。特に見るのに大きな不便もなく、内容自体もとても有益ですね。今後ともよい講義をお願いします!

    • jhong
      知識共有者

      こんにちは、ウダンタンタン様、良いレビューを残していただきありがとうございます!!今後もより有益で面白い実務に適した講義を提供できるよう努力いたします!良い一日をお過ごしください!

  • eightee724277님의 프로필 이미지
    eightee724277

    受講レビュー 6

    平均評価 5.0

    5

    93% 受講後に作成

    とても良く学ぶことができました。良い講義だと思います。他の講義も受講予定です。

    • jhong
      知識共有者

      こんにちは、8番が気に入っていただけて嬉しいです!!他の講義でもお会いできればいいですね😊😊良いレビューをありがとうございます!

  • tasdo4797187님의 프로필 이미지
    tasdo4797187

    受講レビュー 5

    平均評価 5.0

    5

    100% 受講後に作成

    バックエンド開発者として...本当にとても役に立ちました。ありがとうございます。

    • jhong
      知識共有者

      こんにちは、tasd osさんと同じ職務なのですが、とても参考になったようで、すごく嬉しいですね。ありがとうございます!

¥10,115

Hongの他の講座

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

似ている講座

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