Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Programming

/

Back-end

障害を許容する堅牢なシステム作り

障害に強いシステムを構築する方法を扱う実践的な講座です。サービス安定性のための設計の基礎から障害伝播を防ぐさまざまなパターン、そしてメッセージキューを活用した非同期処理と分散データの一貫性維持戦略まで、安定したバックエンドシステムに必要なコア技術と概念を学習します。

  • foo
장애
이론 실습 모두
resilience4j
예외처리
Spring Boot
transaction
Kafka
data-consistency

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

こんなことが学べます

  • 耐障害性の堅牢なシステム設計

  • カフカ(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


学習資料

前提知識および注意事項

  • この講義は、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件の受講レビュー

  • s9285s님의 프로필 이미지
    s9285s

    受講レビュー 2

    平均評価 5.0

    5

    32% 受講後に作成

    • jsl님의 프로필 이미지
      jsl

      受講レビュー 2

      平均評価 5.0

      5

      100% 受講後に作成

      Tôi nghĩ đây là khóa học bắt buộc đối với các nhà phát triển backend.

      • tails님의 프로필 이미지
        tails

        受講レビュー 8

        平均評価 5.0

        5

        63% 受講後に作成

        • brunobi9004님의 프로필 이미지
          brunobi9004

          受講レビュー 4

          平均評価 4.0

          5

          100% 受講後に作成

          Bài giảng tuyệt vời

          • dongbinyoon3448님의 프로필 이미지
            dongbinyoon3448

            受講レビュー 3

            平均評価 5.0

            5

            78% 受講後に作成

            Mã thực hành được viết rất tỉ mỉ và chi tiết nên rất tốt. Phần giải thích cũng rất rõ ràng và gọn gàng nữa~

            ¥6,566

            fooの他の講座

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

            似ている講座

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