강의

멘토링

로드맵

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

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

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

こんにちは
です。

2,727

受講生

187

受講レビュー

76

回答

4.5

講座評価

14

講座

자기 소개

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

 

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

 

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

 

지식공유자 경력

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

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

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

 

인터뷰 이력

カリキュラム

全体

28件 ∙ (4時間 55分)

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

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

受講レビュー

全体

15件

4.7

15件の受講レビュー

  • ks ju님의 프로필 이미지
    ks ju

    受講レビュー 8

    平均評価 5.0

    5

    100% 受講後に作成

    현실적인 좋은 내용으로 강의 잘 봤습니다. 감사합니다.

    • Hong
      知識共有者

      안녕하세요 ks ju님 평 남겨주셔서 감사합니다. 실제 운영환겅에서는 더 다양한 기능이 들어갈 수 있는 형태고 이런형태를 위한 구조라고 봐주시면 될꺼같아요 ㅎㅎ 앞으로 더 유익한 강의를 제공해드리겠습니다. 좋은 하루 보내세요 :)

  • 텐버거!님의 프로필 이미지
    텐버거!

    受講レビュー 4

    平均評価 5.0

    修正済み

    5

    96% 受講後に作成

    취업을 준비하고, 실무에서 일을 하면서 강사분 강의를 많이 참고하고 토대로 학습을 진행하였는데, 정말 너무 많은 도움이 되는 양질의 주제인거 같습니다. 함께 코드를 작성하는 과정도 너무 유익하고 옆에서 같이 코딩을 하는 느낌이 들다보니 그만큼 더 학습 효과가 좋아지는거 같아요!! 앞으로 더 자주보고 좋은 강의가 만들어지면 좋겠습니다. 감사합니다!

    • Hong
      知識共有者

      안녕하세요 텐버거님! 취업을 준비하시다니!! 이 강의가 많은 도움이 되었으면 좋겠습니다 추후에 취업도 성공하신다면 소식 전해주세요 ㅎㅎ 감사합니다!

  • 우당탕탕님의 프로필 이미지
    우당탕탕

    受講レビュー 3

    平均評価 5.0

    5

    100% 受講後に作成

    강의 잘 보았습니다. 딱히 보는데에 큰 불편함도 없었고 내용 자체도 너무 유익하네요 앞으로 좋은 강의 부탁드립니다!

    • Hong
      知識共有者

      안녕하세요 우당탕탕님 좋은 평 남겨주셔서 감사합니다!! 앞으로 더 유익하고 재미있는 실무에 접합한 강의를 제공해 드리기 위해서 노력하겠습니다! 좋은 하루 보내세요!

  • 8번이 좋아님의 프로필 이미지
    8번이 좋아

    受講レビュー 4

    平均評価 5.0

    5

    93% 受講後に作成

    너무 잘 배웠습니다. 좋은 강의라고 생각하네요. 다른 강의도 수강 예정입니다.

    • Hong
      知識共有者

      안녕하세요 8번이 좋아님!! 다른강의에서도 뵙으면 좋겠네요 ㅎㅎ 좋은 평 감사합니다!

  • tasd os님의 프로필 이미지
    tasd os

    受講レビュー 4

    平均評価 5.0

    5

    100% 受講後に作成

    백엔드 개발자로써.. 진짜 많은 도움 되었습니다. 감사합니다.

    • Hong
      知識共有者

      안녕하세요 tasd os님 같은 직무인데 도움이 많이 된거같아서 너무 뿌듯하네요 감사합니다!

期間限定セール

¥66,000

20%

¥9,706

Hongの他の講座

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

似ている講座

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