강의

멘토링

커뮤니티

Programming

/

Back-end

最も簡単な並行性問題 - Race Condition

代表的な並行性問題である競合状態(Race Condition)をテーマに学習します。 並行性問題を発生させる単一サーバー環境と分散環境を比較しながら実習します。 トランザクション境界と分離レベルを理解できます。 楽観的ロック、悲観的ロック、分散ロックの違いを学ぶことができます。

難易度 初級

受講期間 無制限

  • joyopi
Docker
Docker
Spring Boot
Spring Boot
DBMS/RDBMS
DBMS/RDBMS
Redis
Redis
k6
k6
Docker
Docker
Spring Boot
Spring Boot
DBMS/RDBMS
DBMS/RDBMS
Redis
Redis
k6
k6

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

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

5.0

5.0

하나의묵

100% 受講後に作成

並行性の問題をいつも難しく感じていましたが、この講義で概念を一つずつ丁寧に解説していただき、ようやく感覚がつかめた気がします。理論だけを扱うのではなく、直接実習環境を構築しながら、単一サーバーと分散サーバーで並行性の問題がどのように異なって現れるのかを自然に理解することができました。 また、並行性の問題が実際にどのような過程で発生するのかを直接確認できる構造なので、単に概念を暗記するのではなく、なぜこのような問題が起こるのかを体感できた点が特に良かったですし、実務ですぐに活用できる内容が多くて大変役立ちました。 楽観的ロック・悲観的ロック・分散ロックなどの概念が混乱したり、並行性の問題をどのように解決すべきか悩んでいる方におすすめできる講義だと思います。

5.0

이달팽

100% 受講後に作成

並行性の問題を理論的にしか知らなかったのですが、講師の方に従ってrace conditionをコードレベルで直接再現し解決してみることで、感覚を確実に身につけることができたと思います。共有DB、分散環境など様々な環境を想定して実習するのもとても役に立ちました。😊😊 私のように並行性の問題に入門する方々に良い講義だと思います。ありがとうございました~

受講後に得られること

  • 並行性問題の根本的な原因と解決方法

  • 単一サーバー環境と分散サーバー環境で同時性問題を解決する方法

  • 楽観的ロック、悲観的ロック、分散ロックを正しく理解して使用する

  • トランザクション境界と分離レベルの理解

  • IntelliJ IDEA、Docker、k6の活用方法

並行性の問題、まだ混乱していますか?

この講義で楽観的ロック、悲観的ロック、分散ロックなど同時性問題の概念と解決方法を正確に理解しましょう。

  • 並行性問題を発生させる環境を作って、実際に並行性問題を体験します。

  • 単一サーバー環境と分散サーバー環境での同時性問題の違いを確認してください。

  • 正確に知らずに使用していた@Transactionalアノテーションの使用方法を理解することができます。

  • 並行性の問題は一つなのに、なぜ解決方法は複数あるのでしょうか?理由を確認してみてください。

こんな方におすすめです

この講義を受講すべき方 (1)

並行性の問題、実はまだよく分からないんです。😅

この講義を受講すべき方 (2)

楽観的ロック、悲観的ロック、分散ロックの違いを正確に理解できていません。🌧️

この講義を受講すべき方(3)

並行性の問題はどのようにテストすべきでしょうか?📜

受講後には

  • 実務で最も多く発生する同時性問題である競合状態(Race Condition)について理解することができます。

  • よく分からずに使っていた@Transcationalアノテーションを正しく使用できるようになります。

  • 単一サーバー環境と分散サーバー環境における同時性問題を理解し、正確に解決することができます。

  • トランザクション分離レベルと境界について理解し、実務に適用することができます。

この講義の特徴

便利な実習のためのIntelliJ IDEAの活用とNotion、Githubを活用した講義資料提供

この講義の核心的な強み (1)

IntelliJにこんな機能があったんですね。😲

実行されたAPIアプリケーションにテストリクエストを送信し、DBに接続してデータを管理し、Redisに保存されたデータを確認する作業をIntelliJですべて一度に進行します。

この講義の核心的な強み (2)

リアルタイムで更新が反映されるNotionの講義資料を提供します。

実習をしっかりと進められるよう、プロジェクトコードをGitHubリンクで提供いたします。

こんな内容を学びます

並行性問題の根本的な理由と解決方法

並行性問題の根本的な理由をご存知ですか?

根本的な原因から理解して解決方法を学べば、より正確に問題を理解し解決することができます。

講義では並行性問題の概念から把握して始めます。

分散環境で実習する様々な解決方法

同時性の問題は、単一サーバー環境と分散サーバー環境で異なって発生します。同じ解決方法を適用しても、環境によって問題が解決されない場合があります。

どのような環境でどのように使用すべきかを知っていてこそ、実務にすぐに適用することができます。

2つのアプリケーションを同時に実行して分散環境を構成します。

この講義を作った人

  • (現)AhnLab バックエンド開発者


ご質問はありますか?

Q. 並行性の問題というテーマがとても難しく感じられます。🫥

並行性の問題が難しく感じられる理由は、概念が複雑だからではなく、実務で直接経験するまで感覚が掴めないからです。
講義では核心概念だけを厳選し、実習中心で説明します。
コードですぐに確認できるため、素早く理解していただけます。

Q. Spring BootやJPAについてまだよく分からない状態です。🤦‍♀️

Spring BootとJPAを深く知る必要はありません。
並行性の概念はフレームワークとは別に理解できます。
講義では必要な部分だけを最小限に説明し、すぐに実習に適用します。
実習で使用したプロジェクトコードもGitHubで提供しているので、すぐについてこられます。

Q. 並行性の問題は実務でよく発生するのでしょうか❓

はい、実際のサービスでは頻繁に発生します。
トラフィックが多かったり共有リソースへのアクセスがある構造では、ほぼ必然的に現れます。
特に在庫減少、決済、予約のような状態変更ロジックで頻繁です。
そのため初期設計段階から同時性制御戦略を考慮することが実務では推奨されます。

受講前の参考事項

講師の実習環境

  • オペレーティングシステムおよびバージョン:Windows 11

  • 使用ツール:IntelliJ IDEA Ultimate Edition、Docker、k6、Spring Boot、DBMS/RDBMS、Redis


前提知識および注意事項

  • Spring Boot、JPA、RDBMS

  • この講義は同時性問題を実習するために瞬間的に多くのリクエストを作る環境で実習していますが、大量のリクエストを問題なく処理する方法についての講義ではありません。

  • 大量のリクエストを処理する方法と同時性問題を処理する方法は、互いに異なるトピックであることをお知らせします。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • 同時性の問題と解決方法に悩み続ける開発者

  • 同時性問題に関連するトランザクションを理解したい開発者

  • 楽観的ロック、悲観的ロック、分散ロックの違いを理解し適用したい開発者

前提知識、
必要でしょうか?

  • 簡単なAPIバックエンドサーバー開発経験(Spring Boot)

  • データベース(RDBMS、NoSQL)に関する基礎知識

こんにちは
です。

50

受講生

5

受講レビュー

5.0

講座評価

1

講座

(現) AhnLab バックエンド開発者

カリキュラム

全体

25件 ∙ (3時間 54分)

講座掲載日: 
最終更新日: 

受講レビュー

全体

5件

5.0

5件の受講レビュー

  • heejaykong2906님의 프로필 이미지
    heejaykong2906

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    並行性の問題を理論的にしか知らなかったのですが、講師の方に従ってrace conditionをコードレベルで直接再現し解決してみることで、感覚を確実に身につけることができたと思います。共有DB、分散環境など様々な環境を想定して実習するのもとても役に立ちました。😊😊 私のように並行性の問題に入門する方々に良い講義だと思います。ありがとうございました~

    • joyopi
      知識共有者

      理論だけで知っていた同時性問題を直接コードで再現して解決しながら、確実に感覚をつかまれたというフィードバックが私にはとても重要な部分だと思います。実際に講義を企画する際、この部分が最も大きな目標だったんです。共有DBや分散環境のような実務的な環境を想定して練習されたことが、実務で多くの助けになればと思います。 同時性入門者の方々に良い講義になりそうだというお言葉も私に大きな力になります。 良いレビューを残していただき、ありがとうございます! 🙇

  • zepettoworld님의 프로필 이미지
    zepettoworld

    受講レビュー 4

    平均評価 5.0

    5

    60% 受講後に作成

    • paulmoon008308님의 프로필 이미지
      paulmoon008308

      受講レビュー 111

      平均評価 4.9

      5

      20% 受講後に作成

      • hyunwoochoi4034님의 프로필 이미지
        hyunwoochoi4034

        受講レビュー 1

        平均評価 5.0

        修正済み

        5

        100% 受講後に作成

        並行性の問題をいつも難しく感じていましたが、この講義で概念を一つずつ丁寧に解説していただき、ようやく感覚がつかめた気がします。理論だけを扱うのではなく、直接実習環境を構築しながら、単一サーバーと分散サーバーで並行性の問題がどのように異なって現れるのかを自然に理解することができました。 また、並行性の問題が実際にどのような過程で発生するのかを直接確認できる構造なので、単に概念を暗記するのではなく、なぜこのような問題が起こるのかを体感できた点が特に良かったですし、実務ですぐに活用できる内容が多くて大変役立ちました。 楽観的ロック・悲観的ロック・分散ロックなどの概念が混乱したり、並行性の問題をどのように解決すべきか悩んでいる方におすすめできる講義だと思います。

        • joyopi
          知識共有者

          心のこもった受講レビューを残していただき、本当にありがとうございます。 実は同時性というのは目に見えないので、いざ理解しようとすると難しく感じるテーマなのですが、講義を通じて感覚をつかんでいただけたとのことで講師として嬉しく思いますし、私が意図していた「理論より実習で直接体感する」ことをよく理解していただけたようで嬉しいです。 完走お疲れ様でした。 ありがとうございます! 🙇‍♀️

      • abcd123123님의 프로필 이미지
        abcd123123

        受講レビュー 327

        平均評価 5.0

        5

        100% 受講後に作成

        期間限定セール、あと05:03:30日で終了

        ¥4,714

        22%

        ¥6,111

        似ている講座

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