
Quản lý log cần thiết cho nhà phát triển
foo
Từ việc nên ghi lại loại log nào, đến khi thu thập và tận dụng log, bao quát toàn bộ chu trình.
초급
Elasticsearch, logback, Logstash
障害に強いシステムを構築する方法を扱う実践的な講座です。サービス安定性のための設計の基礎から障害伝播を防ぐさまざまなパターン、そしてメッセージキューを活用した非同期処理と分散データの一貫性維持戦略まで、安定したバックエンドシステムに必要なコア技術と概念を学習します。
耐障害性の堅牢なシステム設計
カフカ(Kafka)を活用したイベント駆動アーキテクチャ構築の基礎
分散環境におけるトランザクションの扱い方 基礎
開発者なら誰もが一度はこのような途方に暮れる瞬間に直面したことがあるでしょう。明らかにロジックには問題がないように見えるのに、小さな変更一つがバタフライ効果のように広がって、システム全体の安定性を脅かす経験のことです。多くの開発者が最初はこのような可用性(Availability)の問題、つまり「サーバーがダウンしないようにすること」に集中します。この講義では、まずこの根本的な問題から出発し、障害の原因を診断し、サーバーの冗長化、リトライ(Retry)、サーキットブレーカー(Circuit Breaker)などの必須パターンを通じて堅牢なシステムの基盤を築く方法を学びます。
しかし、現代的なシステム設計の悩みはここで終わりません。システムの規模が大きくなり複雑になるにつれて、私たちはサービスをより小さな単位に分割し、その間をKafkaのようなメッセージングシステムで接続するイベント駆動アーキテクチャを導入することになります。これはサービス間の依存性を下げて柔軟性を確保する強力な方法ですが、同時に新しい種類の問題を生み出します。
ここで私たちは、より巧妙で困難な質問に直面することになります。
「注文リクエストメッセージがネットワークエラーで失われたらどうしよう?」
「決済完了メッセージが重複送信されて、お客様に料金が二重請求されたらどうしよう?」
「注文処理は成功したのに、在庫処理で失敗したらデータはどうやって合わせるの?」
このようにシステムが分散されることで、単純にサーバーが停止する「障害」を超えてデータの一貫性(Consistency)というより巧妙で困難な問題に直面することになります。この講義はここからさらに一歩進んで、分散環境での信頼性問題を正面から扱います。Kafkaを安定的に運用してメッセージの損失と重複を防ぐ技術を学び、トランザクショナルアウトボックス、補償トランザクション、冪等性処理のような高度なパターンを通じて分散されたサービス間のデータ一貫性を保証する方法を深く探求します。
この講義を通じて皆さんは、単純に「機能が動作する」コードを超えて、どのような例外的な状況でもシステムが「信頼性を持って」動作するように作る設計の全体的な視野を持つことになるでしょう。障害対応から分散データ処理まで、現代的なバックエンドシステムが要求する本当の「安定性」を確保する旅を始めてみましょう。
📌 障害に対する観点の転換: この講義は単純にエラーを解決する技術を羅列するものではありません。障害をシステムの避けられない属性として捉え、障害が発生した際にシステム全体の安定性をどのように守ることができるかという設計観点を一緒に考えます。
📌 安定性のための核心原理とパターン: 堅牢なシステムの基盤となるサーバー冗長化、拡張性の概念から始まり、実務でよく使用されるリトライ(Retry)、サーキットブレーカー(Circuit Breaker)などの安定性パターンの動作原理を理解し、適用することに重点を置いています。
📌 理論と実践のバランス: 各概念がなぜ必要なのかをまず理解し、学んだ内容をすぐに実習に適用します。直接障害状況を作り出して解決する過程を通じて、実際の問題解決能力を身につけられるよう構成しました。
障害はなぜ発生するのでしょうか?サービス内部でアプリケーションを分割する理由、冗長化と複製、拡張性の概念を学び、例外およびレスポンスステータスコード処理、Retry、Timeout、サーキットブレーカー、Fallback、Graceful Degradation、Rate Limit、Bulkheadなど、障害の連鎖的な伝播を防ぐ核心パターンを学習します。
サービス間の結合度を下げ、トラフィック急増に柔軟に対処する方法は何でしょうか?Kafka(カフカ)の基本概念と非同期通信の実装、メッセージ消失および送信保証レベル、DLQ(Dead Letter Queue)と順序保証、コンシューマーで発生する可能性のあるメッセージ重複処理、バックエンド開発者が知っておくべきKafkaの主要設定など、実務的なトピックを深く扱います。
マイクロサービス環境でデータはどのように一貫性を保つことができるでしょうか?データ一貫性が破綻する原因、トランザクションと@Transactional
の役割、データベース同時実行問題と分離レベルなど、データ整合性を保証する高度なパターンを学習します。
オペレーティングシステムおよびバージョン(OS):Windows 10
使用ツール:Intellij Community 2023.2、Google Chrome、Docker Desktop
上記のリポジトリのREADME.mdに関連する実習リポジトリのリンクをまとめておきました。
この講義は、Java、Spring Bootアプリケーションを基準に進行されます。ただし、講義の主要内容はコードレベルよりも概念中心であるため、この講義でJava、Spring Bootで実習した後、他の言語、フレームワークに適用するのに大きな困難はないでしょう。(一部機能はライブラリ自体でサポートされていない場合もあります)
サーバーにアップロードして実習を進めるのではなく、ローカル開発環境でのみ実習を進めます。Kafka、Databaseなど必要な要素はDocker Desktopを通じて実行します。
受講中に気になることがあれば、質問を残してください。アップデートすべき内容があれば、アップデートいたします。
学習対象は
誰でしょう?
Retry, Timeout, Circuit Breaker などを活用し、障害の伝播を防ぎ、堅牢なシステムを設計したい方
Kafkaを初めて扱う方、あるいはメッセージングキューの基本を超え、安定した非同期通信アーキテクチャを構築したい方
分散環境でトランザクションとべき等性を理解し、データ一貫性を保証する方法を学習したいバックエンド開発者
前提知識、
必要でしょうか?
Spring Bootを活用したバックエンドアプリケーション開発経験
5,206
受講生
220
受講レビュー
104
回答
4.9
講座評価
9
講座
안녕하세요.
멘토링을 하면서 주니어 개발자들이 어려워 하는 개념들에 대해 어떻게 하면 쉽게 전달할 수 있을지에 대해서 많은 고민을 하고 있는 푸(Foo)라고 합니다.
잘 부탁 드리겠습니다.
이력
2019. 08 ~ 현재 : 카카오 자바 백엔드 개발자
2021. 08 ~ 현재 : programmers 백엔드 데브코스 멘토
2021. 12 ~ 현재 : F-Lab 자바 백엔드 멘토
책
이것이 취업을 위한 백엔드 개발이다 with 자바(링크)
기타 이력 및 타 플랫폼 강의들은 아래 GitHub 링크에서 확인할 수 있습니다.
GitHub - https://github.com/lleellee0
全体
32件 ∙ (8時間 45分)
講座資料(こうぎしりょう):
全体
8件
4.9
8件の受講レビュー
受講レビュー 2
∙
平均評価 5.0
受講レビュー 2
∙
平均評価 5.0
受講レビュー 8
∙
平均評価 5.0
受講レビュー 4
∙
平均評価 4.0
受講レビュー 3
∙
平均評価 5.0
¥6,566
知識共有者の他の講座を見てみましょう!
同じ分野の他の講座を見てみましょう!