シリコンバレーのAI開発者によるLLMサービスのためのRAG
Hong
LLMの限界? シリコンバレーの現場で経験したRAGの試行錯誤と運用ノウハウをもとに、実践的な問題解決法をお伝えします。
入門
JavaScript, Python, AI
Spring Boot 3.x + Kotlinで3つのインスタンスによるクラスターを構築し、Redis Pub/Sub分散メッセージングとNginxロードバランサーを活用して、大量のトラフィック処理が可能な拡張性のあるWebSocketリアルタイムチャットサーバーを開発します。
受講生 286名
難易度 入門
受講期間 無制限


学習した受講者のレビュー
5.0
Jlos Ho
この講義も本当にGoatです。他の講義も受講しましたが、これほど現実的で隣で教えてくれるような講義は、このInflearnプラットフォームで唯一のもののようですね。とても役に立ちました。ありがとうございます。
5.0
Hoos
こんなアーキテクチャもあるんですね...Kotlinからプラットフォームに関するアーキテクチャ及び実際のコードを通じて、チャットプラットフォームについて多くの方々が理解できる良い講義だと思います。
5.0
미래 1인 개발자
講義を撮影するにあたり、サーバーアーキテクチャの支援とメッセージ処理の設計を行った、Tossで少しずつ経験を積んでいるサーバー開発者です。これまでステートレスプロトコルを通じた通信をテーマとしてのみ進めてきましたが、このように新しいテーマで講義を撮影することになり、かなり嬉しく、興味深い時間でした。質問もご自由にどうぞ。私も時間を割いて興味深く拝見しており、質問に対しても私の見解を述べる時間を持ちたいと思っています。講義に多くの関心をお寄せください。
Redis Pub/Subを活用して、複数のサーバーインスタンス間でリアルタイムメッセージを同期する分散メッセージングシステム
Docker Composeで3つのインスタンスクラスターを構成し、Nginxロードバランサーでトラフィックを分散処理する方法
Spring WebSocketを利用して双方向リアルタイム通信を実装
マルチモジュール構造でドメイン駆動設計(DDD)を適用し、拡張可能なサーバーアーキテクチャを設計する方法
Redisを活用したメッセージシーケンス管理により、分散環境でもメッセージの順序を保証する手法
Dockerコンテナベースのデプロイとヘルスチェック、ログモニタリングを通じたサービス運用方法
Spring Boot 3.x + Kotlinの最新機能を活用したモダンバックエンド開発手法
メッセージの重複処理防止、セッション整理、リソース解放など、安定的なサービス運用のための防御的コーディング手法
実際のサービス環境で数万人のユーザーに対応できる拡張可能なサーバーアーキテクチャを直接設計し、構築することになります。
🏗。単に機能を実装するだけでなく、大規模なトラフィックでも安定して動作する分散システムの核心原理を体得することができます。
まず、複数のサーバーが一つのシステムのように動作するようにNginxロードバランサーでトラフィックを分散し🌐、Redis Pub/Subを利用してサーバー間のメッセージをリアルタイムで同期する方法を学びます。この過程で、C10K(1万同時接続)問題を解決するノウハウを自然に習得することになります。
また、⚡データベースコネクションプールをチューニングし、JPAバッチ処理とカーソルベースのページネーションを適用することで、レスポンス速度をミリ秒単位まで改善する経験をすることになります。
最後に、Dockerコンテナ🐳を通じて開発からデプロイまで一貫した環境を維持し、Health Checkとモニタリングシステム🩺を構築してサービス障害を未然に防ぐ安定的な運用手法まで学習します。これらすべての過程を最新スタックであるKotlinとSpring Boot 3.x、websocketを活用し、洗練された効率的なコードで実装します✨。
コマンド一つでシステム全体(サーバー、データベース、キャッシュなど)を一度に実行できる、完全な形のアプリケーションパッケージを手に入れることができます。単なるコードの断片の集まりではなく、すぐにデプロイ可能なサービスです。
ユーザーのリクエストからデータ保存までの全体の流れを盛り込んだシステムアーキテクチャ設計図を、自ら構築し理解することになります。この設計図は、あなたの技術的な深さを証明する素晴らしいポートフォリオの資産になります。
ユーザーがログインし、チャットルームを作成し、多様なメッセージをリアルタイムでやり取りする核心的なチャット機能が完璧に実装された成果物を手にすることになります。
n台のSpring BootサーバーがNginxロードバランサーの下で動作するサーバークラスターを構築します。これにより、トラフィックが増加した際にサーバーインスタンスを追加するだけで、簡単にシステムを拡張する方法を学ぶことができます。
一つのサーバーに障害が発生したり、ユーザーが異なるサーバーに接続したりしても、Redis Pub/Subを通じてすべてのメッセージが漏れなく配信される安定したメッセージングシステムを構築します。
PostgreSQLにチャットデータを永続的に保存し、Redisにセッション情報やキャッシュデータを保存することで、データの安定性と高速なレスポンスを両立させたハイブリッドデータシステムを完成させます。
複数のサーバーインスタンス間でリアルタイムメッセージを同期するために、Redisのパブリッシュ/サブスクライブ(Pub/Sub)パターンを実装します。重複メッセージの防止、メッセージ順序の保証、サーバー別の隔離処理など、プロダクションレベルの分散メッセージングシステムを構築し、拡張可能なリアルタイム通信の基盤を整えます。
Spring WebSocketを活用し、HTTPよりもはるかに効率的な双方向リアルタイム通信を実装します。セッション管理、接続状態の追跡、エラーハンドリングなどを通じて安定したリアルタイムチャット機能を提供し、問題解決のための最適化手法も適用します。
Domain-driven Design(ドメイン駆動設計)の原則に従い、API、Domain、Persistence、WebSocketレイヤーを独立したモジュールに分離します。各モジュールの責任を明確に区分し、依存関係の方向を制御することで、保守性とテストの容易性を極大化した拡張可能なサーバーアーキテクチャを構築します。
n個のSpring Bootインスタンスにトラフィックを均等に分散するNginxロードバランサーを構成します。HTTPリクエストだけでなくWebSocket接続も安定的にプロキシし、プロダクションレベルのリバースプロキシ設定で高可用なサービス環境を構築します。




Springと100%互換性があると言われており、JetBrainsが開発したKotlinという言語は、Springにおいて不向きな並行プログラミングに最適化されています。
Kotlinは簡潔で直感的な文法を提供する形式であるため、開発者はより少ないコードでより多くの作業を遂行できます。これは可読性向上の効果があり、保守をより容易にします。Kotlinは標準でNull安全をサポートしており、NullPointerExceptionを減らすことができます。また、関数型プログラミングをサポートしているため、より機能的で宣言的な方法でコードを記述できます。これらの機能は開発の生産性を高め、バグの発生の可能性を低減させます。Kotlinは100% Javaと互換性があるため、既存のJavaプロジェクトに簡単に統合できます。これは、Java開発者がKotlinを学ぶ上で大きな障壁がなく、既存のコードを維持しながらも新しいKotlinの機能を使用できることを意味します。📌可能です。不可能な開発方式ではありません。
📌しかし、サーバー開発者は一般的に、サーバーのリソースを最大限に節約しなければなりません。
📌 そのため、チャットサーバーのように継続的な接続(Connection)を維持する必要がある通信の場合は、WebSocketを使用するのが非常に適しています。
専門性が低く見えたとしても、見せかけだけの講義は講義ではないと考えています。デバッグを行う時間もまた、講義の一部です。
開発は言葉でするものではありません。実際に実装を行い、動作する過程を共に体験することができます。
企画者の方々… 助けてください…
私が実務で適用して効果を実感した概念を盛り込もうと努めました。この過程を通じて、実務を間接的に体験したり、現職の方であれば実務環境でより優れたパフォーマンスを発揮したりすることができます。
講義を進めながら、ぜひ積極的に質疑応答を残してください。この講義は私一人の知識だけで作られたものではありません。様々な大手企業の開発者の方々の意見も集約されています。
講義の完成にご協力いただいた方々の簡単な経歴は以下の通りです。
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に関する基本的な知識があると望ましいです。
ウェブソケット通信に関する基本的な知識があると望ましいです。
これらの知識がすべてなくても大丈夫です。プロジェクトを直接実装するため、一緒に学習が可能です。
インフラン認証
キャリア認証
9,243
受講生
590
受講レビュー
165
回答
4.8
講座評価
31
講座
家でだらだら過ごしていたところ、開発に興味を持ち勉強を始め、現在は板橋(パンギョ)でプラットフォームサーバーの開発を担当しています。私が勉強してきた方法や、実務で直面する可能性のある様々な問題点とその解決策を皆さんに提供したいと思い、知識共有者としての活動を続けています。
講義は私一人の知識だけで作られるものではありません。すべての講義には、共に作り上げてくださる方々がいます。
Tossの開発者からの推薦で合流されたシリコンバレーの開発者 Waddy, người đã tham gia theo lời giới thiệu của một nhà phát triển từ Toss
[知識共有者の経歴]
[前] サンドボックスIP関連ブロックチェーン開発者
[前] メタバースバックエンドエンジニア
[現] 板橋(パンギョ)でベテランになりつつあるサーバー開発者
[インタビュー履歴]
[その他のお問い合わせ]
[公式サイト]
全体
28件 ∙ (4時間 55分)
講座資料(こうぎしりょう):
全体
30件
4.9
30件の受講レビュー
受講レビュー 8
∙
平均評価 5.0
5
現実的で良い内容の講義をよく拝見しました。ありがとうございます。
こんにちは、ks juさん、レビューを残していただきありがとうございます。 実際の運用環境では、より多様な機能が入る形になっており、このような形態のための構造だと思っていただければと思います😊😊今後もより有益な講義を提供いたします。良い一日をお過ごしください :)
受講レビュー 10
∙
平均評価 5.0
修正済み
5
就職準備をして、実務で働きながら講師の方の講義をたくさん参考にして基盤として学習を進めましたが、本当にとても役に立つ良質なテーマだと思います。一緒にコードを書く過程もとても有益で、隣で一緒にコーディングをしている感じがするので、それだけ学習効果が良くなるようです!!今後もっと頻繁に見て、良い講義が作られればいいなと思います。ありがとうございます!
こんにちは、テンバーガーさん!就職準備をされているのですね!!この講義がたくさんお役に立てればと思います。今後就職も成功されましたら、お知らせください😊😊ありがとうございます!
受講レビュー 6
∙
平均評価 5.0
5
とても良く学ぶことができました。良い講義だと思います。他の講義も受講予定です。
こんにちは、8番が気に入っていただけて嬉しいです!!他の講義でもお会いできればいいですね😊😊良いレビューをありがとうございます!
受講レビュー 3
∙
平均評価 5.0
5
講義よく見させていただきました。特に見るのに大きな不便もなく、内容自体もとても有益ですね。今後ともよい講義をお願いします!
こんにちは、ウダンタンタン様、良いレビューを残していただきありがとうございます!!今後もより有益で面白い実務に適した講義を提供できるよう努力いたします!良い一日をお過ごしください!
受講レビュー 5
∙
平均評価 5.0
5
バックエンド開発者として...本当にとても役に立ちました。ありがとうございます。
こんにちは、tasd osさんと同じ職務なのですが、とても参考になったようで、すごく嬉しいですね。ありがとうございます!
知識共有者の他の講座を見てみましょう!
同じ分野の他の講座を見てみましょう!