강의

멘토링

로드맵

Programming

/

Back-end

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

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

  • Hong
실습 중심
서버
백엔드
백엔드개발자
아키텍처
Spring
Kotlin
Spring Boot
websocket

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

こんなことが学べます

  • 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に関する基本的な知識があると良いです。

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

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

こんにちは
です。

3,795

受講生

287

受講レビュー

104

回答

4.6

講座評価

18

講座

자기 소개

집에서 빈둥대다 개발에 흥미를 느껴 개발 공부를 시작하였고 현재는 판교에서 플랫폼 서버 개발을 담당하여 진행하고 있습니다.

 

제가 공부를 했던 방법과 실무에서 접하실 수 있는 여러가지 문제점들과 해결책을 여러분들에게 제공하고 싶어 지식공유자 활동을 이어나가고 있습니다.

 

강의는 오로지 저만의 지식을 통해 만들어지지 않습니다. 모든 강의는 함께하시는 분들이 계십니다.

 

지식공유자 경력

[前] 샌드박스 블록체인 개발자

[前] 넥슨 자회사 백엔드 개발자

[] 판교에서 고여가는 서버 개발자

 

인터뷰 이력

カリキュラム

全体

28件 ∙ (4時間 55分)

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

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

受講レビュー

全体

23件

4.8

23件の受講レビュー

  • kju626095386님의 프로필 이미지
    kju626095386

    受講レビュー 8

    平均評価 5.0

    5

    100% 受講後に作成

    Tôi đã xem bài giảng rất hay với nội dung tốt và thực tế. Cảm ơn bạn.

    • jhong
      知識共有者

      Xin chào ks ju, cảm ơn bạn đã để lại đánh giá. Trong môi trường vận hành thực tế, có thể thêm vào nhiều tính năng đa dạng hơn và bạn có thể coi đây là cấu trúc dành cho dạng thức như vậy 😊😊 Chúng tôi sẽ cung cấp những bài giảng hữu ích hơn nữa trong tương lai. Chúc bạn có một ngày tốt lành :)

  • youngba8935643님의 프로필 이미지
    youngba8935643

    受講レビュー 6

    平均評価 5.0

    修正済み

    5

    96% 受講後に作成

    Tôi đã chuẩn bị việc làm và trong quá trình làm việc thực tế, tôi đã tham khảo rất nhiều bài giảng của giảng viên và học tập dựa trên đó, thực sự đây là một chủ đề chất lượng cao rất hữu ích. Quá trình cùng nhau viết code cũng rất bổ ích và có cảm giác như đang cùng ngồi bên cạnh coding, nhờ đó mà hiệu quả học tập càng tốt hơn!! Hy vọng sẽ xem thường xuyên hơn và có thêm nhiều bài giảng hay được tạo ra. Cảm ơn!

    • jhong
      知識共有者

      Xin chào bạn Tenburger! Nghe nói bạn đang chuẩn bị tìm việc!! Mình hy vọng khóa học này sẽ giúp ích rất nhiều cho bạn. Nếu sau này bạn tìm được việc thành công thì hãy chia sẻ tin tức nhé 😊😊 Cảm ơn bạn!

  • kask814587762님의 프로필 이미지
    kask814587762

    受講レビュー 3

    平均評価 5.0

    5

    100% 受講後に作成

    Tôi đã xem bài giảng rất hay. Không có gì bất tiện khi xem và nội dung cũng rất bổ ích. Mong rằng sẽ có những bài giảng tốt hơn nữa trong tương lai!

    • jhong
      知識共有者

      Xin chào bạn 우당탕탕, cảm ơn bạn đã để lại đánh giá tốt!! Tôi sẽ cố gắng cung cấp những khóa học phù hợp với thực tế công việc, bổ ích và thú vị hơn nữa! Chúc bạn có một ngày tốt lành!

  • eightee724277님의 프로필 이미지
    eightee724277

    受講レビュー 5

    平均評価 5.0

    5

    93% 受講後に作成

    Tôi đã học rất tốt. Tôi nghĩ đây là một khóa học hay. Tôi dự định sẽ tham gia các khóa học khác nữa.

    • jhong
      知識共有者

      Xin chào, tôi thích số 8!! Hy vọng sẽ gặp lại bạn ở các khóa học khác nữa 😊😊 Cảm ơn bạn đã đánh giá tốt!

  • tasdo4797187님의 프로필 이미지
    tasdo4797187

    受講レビュー 5

    平均評価 5.0

    5

    100% 受講後に作成

    Là một lập trình viên backend.. thực sự đã giúp ích rất nhiều. Cảm ơn bạn.

    • jhong
      知識共有者

      Xin chào tasd os, chúng ta cùng làm công việc giống nhau mà có thể giúp đỡ được nhiều như vậy nên tôi cảm thấy rất tự hào. Cảm ơn bạn!

¥10,056

Hongの他の講座

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

似ている講座

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