Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
津郷 晶也 and Growcite, Inc.

マイクロサービスとはどのようなもので、どのように設計、実装していくのか、そしてそのあるべき姿に対してどのように現状のモノリスから移行していけばよいのかについて学習します。

本講座は幅広い内容を含んでいます。まだマイクロサービスについて詳しくわからない方にとってザっと概要がつかめるコースとなっています。

ぜひ、本コースをマイクロサービス化の取り組みの足掛かりとしていただければと思います!

【講座概要】

マイクロサービスアーキテクチャ概要

  • モノリスの特徴(メリット、課題)

  • マイクロサービスの特徴(メリット、課題)

  • マイクロサービスとSOAの違い

  • 開発体制、開発サイクルの違い

マイクロサービスのあるべき姿

Read more

マイクロサービスとはどのようなもので、どのように設計、実装していくのか、そしてそのあるべき姿に対してどのように現状のモノリスから移行していけばよいのかについて学習します。

本講座は幅広い内容を含んでいます。まだマイクロサービスについて詳しくわからない方にとってザっと概要がつかめるコースとなっています。

ぜひ、本コースをマイクロサービス化の取り組みの足掛かりとしていただければと思います!

【講座概要】

マイクロサービスアーキテクチャ概要

  • モノリスの特徴(メリット、課題)

  • マイクロサービスの特徴(メリット、課題)

  • マイクロサービスとSOAの違い

  • 開発体制、開発サイクルの違い

マイクロサービスのあるべき姿

  • 設計・実装・テスト

    • サービス間通信の方法

    • 外部へ公開する方法

    • ドメイン駆動設計

    • データ整合性を担保する方法

    • 認証認可

    • マイクロサービスのテスト

  • ビルド/デプロイ/テスト

    • デプロイ方法

    • リリース方法

    • CI/CD

  • 運用監視

    • ヘルスチェック

    • ログ収集

    • メトリクス収集

    • 分散トレース

マイクロサービスへの移行

  • 組織体制の変革

  • 共通の仕組みづくり

  • アプリの分割

  • データベースの分割

【変更履歴】

v1.1.0 2025/02/21 振り返り追加v1.0.0 2021/10/12 初版リリース

Enroll now

What's inside

Learning objectives

  • モノリス、マイクロサービスそれぞれの特徴を学べます
  • マイクロサービス化した際に発生する課題と対策が学べます
  • マイクロサービス化する際に利用できるミドルウェアにどのようなものがあるのか学べます
  • モノリスからマイクロサービスへ移行する方法が学べます

Syllabus

はじめに

本講座でどんなことが学べるのか、対象はどのような人なのか、含まれていない内容は何なのか、といったことを学習します。

本語講座で学習する内容について概要を確認します。

  • マイクロサービスの概要

  • マイクロサービスのあるべき姿

  • マイクロサービスへの移行

Read more

モノリス(モノリシックなシステム)とは「すべてのコンポーネントが1つにまとまったシステム」のこと。

モノリスの特徴を振り返り、これまでの開発で発生してきた課題について確認します。

マイクロサービスとは「サービスを構成する要素を独立したサービス群へ分割、それらサービス群が全体として1つのアプリケーションとして動作するシステム」のことです。

本レクチャーではマイクロサービスのメリット、導入することによる課題について学習します。

マイクロサービス化すると新たに発生する課題について、どのようなものがあるのか概要を学習します。

よく比較されるSOAとの違いについて、アーキテクチャ、データ、通信といった視点から比較をします。

マイクロサービスの導入に伴って見直しが発生する「開発体制」と「開発サイクル」について、どのようなカタチに変わるのかモノリスのときと比較して学習します。

「マイクロサービス概要」セクション受講お疲れさまでした。

ここでは本セクションの振り返りとして確認テストを行っていきます。

「サービス間通信」のサブセクションで学習する内容を確認します。

マイクロサービス同士をつなげる通信方法として主要な方法について学習します。

マイクロサービス化すると必ず登場する「メッセージブローカー」について、その仕組みを学習します。

マイクロサービス同士の各種通信方法の特徴を整理し、使いどころを学習します。

マイクロサービス化した際、あるサービスが止まってしまった時の影響を最小限にする仕組みについて学習します。

マイクロサービス化した結果できあがる複数のサーバーに対し、アクセスしたいホストがどこにあるのかを確認する仕組みについて学習します。

「外部公開」のサブセクションで学習する内容を確認します。

マイクロサービス化すると、外部からみたとき複数サービスの内情を知る必要がなくて済むようファサードの仕組みを導入します。

サービス間通信、外部公開に関するテストです。

「アプリ設計」のサブセクションで学習する内容を確認します。

変化が激しい開発においてできるだけ変化に耐えられるような設計として「ドメイン駆動設計」の概要を学習します。

「データ整合性」のサブセクションで学習する内容を確認します。

マイクロサービス化した結果分散してしまったデータに対してどのようにデータ整合性を担保するのか、その実装方法について学習します。

データ整合性を担保する方法の1つ「サーガ」について、仕組みと実装時のポイントを学習します。

マイクロサービス化した結果、分散してしまったデータを再び集めて再構成する方法について学習します。

N+1問題について出題です。

N+1問題の例題に対する解答例です。

回答例に加えて実装時にどんな実装だと問題が起こるのかポイントを学習します。

マイクロサービス化して分散してしまったデータを再度結合する際、効率的に実行する仕組みについて学習します。

アプリ設計、データ整合性に関するテストです。

「セキュリティ」のサブセクションで学習する内容を確認します。

クッキーとセッションについてどのような仕組みなのか学習します。

OAuth と OpenIDConnect の仕組みについて学習します。

マイクロサービスにおける認証認可の仕組みの導入方法について学習します。

「テスト」のサブセクションで学習する内容を確認します。

マイクロサービス化したシステムをテストする方法について学習します。

セキュリティ、テストに関する小テストです。

ビルド、デプロイ、リリースの違いについて学習します。

「デプロイ/リリース」のサブセクションで学習する内容を確認します。

デプロイ手法としてどのような方法があるのか学習します。

リリース方法としてどのような方法があるのか学習します。

システム全体にわたって共通的に利用したい機能を導入する仕組みについて学習します。

自由に開発されたアプリを効率的に管理する仕組みについて学習します。

「CI/CDパイプライン」のサブセクションで学習する内容を確認します。

アプリを実際の本番環境へリリースするまでの流れについて学習します。

「ビルド/デプロイ/リリース」セクション受講お疲れさまでした。

ここでは本セクションの振り返りとして確認テストを行っていきます。

「サービス正常性確認」のサブセクションで学習する内容を確認します。

マイクロサービスにおける各サービスが利用可能な状態なのかどうか、確認するためにヘルスチェック用のAPIを準備します。

本レクチャーではヘルスチェックAPIがどのようなリクエスト、レスポンスで構成されるのか、学習します。

「可観測性」のサブセクションで学習する内容を確認します。

マイクロサービスの運用で大切になる可観測性には「ログ」「メトリクス」「トレース」の3つがあります。

本レクチャーでその概要を学習します。

可観測性の1つ「ログ」に関して、マイクロサービスにおけるログ収集をどのように実現するのか、その方法を学習します。

可観測性の1つ「メトリクス」に関して、マイクロサービスにおけるメトリクス収集をどのように実現するのか、その方法を学習します。

可観測性の1つ「トレース」に関して、マイクロサービスにおける障害箇所の特定をどのように実現するのか、その方法について学びます。

「運用監視」セクション受講お疲れさまでした。

ここでは本セクションの振り返りとして確認テストを行っていきます。

モノリスからマイクロサービスへ移行するときのポイントについて学習します。

改めてマイクロサービス化する目的について確認します。

モノリスな開発体制からマイクロサービス向けの開発体制に変革を行う際、どのように進めるのか、その方法を学びます。

モノリスからマイクロサービスへは段階的に分解、再構築を行っていきます。

完全なモノリスからマイクロサービスへ移行する大まかな手順について学習します。

マイクロサービス化したとしても必要となる共通的な仕組みや運用としてどのようなものがあるのか、学習します。

モノリスからマイクロサービスへ移行する手順のうち「モデル化」と「優先順位付け」について、例題を使って考えていきます。

「アプリ分割」のサブセクションで学習する内容を確認します。

プロキシを使ってアプリケーションをマイクロサービスへ分割するする手順について学習します。

I/F定義を使ってマイクロサービスへ分割する手順について学習します。

「データ分割」のサブセクションで学習する内容を確認します。

「データベース」「スキーマ」「テーブル」の用語の違いについて学習します。

マイクロサービスにおけるデータベースの分割方法として論理分割と物理分割を学習します。

データベース側からマイクロサービスへ分割する手順を学習します。

アプリケーション側からマイクロサービスへ分割する手順を学習します。

アプリケーションとデータベースを同時にマイクロサービスへ分割する手順について学習します。

「モノリスからマイクロサービスへ」セクション受講お疲れさまでした。

ここでは本セクションの振り返りとして確認テストを行っていきます。

本コースの振り返り

本講座全体を振り返り、今後どのようなことを学習したらよいかの指針を確認します。

ボーナスレクチャーです。

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores the differences between monoliths and microservices, which is essential knowledge for modern software design and helps learners understand the trade-offs involved
Covers various aspects of microservice architecture, including design, implementation, testing, deployment, and monitoring, providing a comprehensive overview for practitioners
Discusses the challenges and solutions related to data consistency in a microservices environment, which is a critical concern for maintaining data integrity
Examines the transformation of organizational structure and the creation of common mechanisms during the migration to microservices, highlighting the importance of aligning teams and processes
Requires learners to understand the differences between build, deploy, and release, which are essential concepts in software development and deployment pipelines

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

マイクロサービス概要と移行への入門

学生によると、この「マイクロサービスアーキテクチャ」コースは、マイクロサービスの幅広い概要を学ぶのに非常に役立つとのことです。特に、設計から運用、移行に至るまで、全体像を掴むための分かりやすい説明高く評価されています入門者にとって、最初のステップとして最適な構成だと感じたという声が多く聞かれます。一方で、理論的な解説が中心であり、実践的な詳細や具体的な実装例が少ない点は、一部の学習者にとっては物足りなさを感じる可能性があるとの指摘もあります。最近のアップデートで確認テストが追加され、学習内容の定着に役立っているという肯定的な意見も見られます。全体としては、マイクロサービスの概念を体系的に学びたいと考えている、主にプロフェッショナルな開発者にとって、確かな基礎を築くための良い選択肢と言えるでしょう。
マイクロサービス初心者におすすめ
"マイクロサービスについて全く知らなかった私にとって、最初のステップとして最適な講座でした。"
"ある程度経験のあるエンジニアには少し物足りないかもしれませんが、概念理解には良いでしょう。"
"まずはマイクロサービスの考え方に触れたいという人にはうってつけです。"
各セクションの理解度を確認できる
"v1.1.0で追加された確認テストが、各セクションのポイントを振り返るのに非常に役立ちました。"
"学習した内容を定着させる上で、確認テストがあるのはありがたいです。コースが改善されていると感じました。"
"振り返りのセクションがあることで、一方的な受講にならず、自分の理解度をチェックしながら進められました。"
マイクロサービスの全体像を学べる
"マイクロサービスの様々な側面について、網羅的に学ぶことができました。全体像を掴むのに最適です。"
"入門者にとって、広範囲のトピックをカバーしている点が非常に役立ちました。次に何を学ぶべきかが見えた。"
"設計から運用、移行まで、マイクロサービスに関わる主要な概念が整理されていて理解しやすかったです。"
複雑な概念も理解しやすい
"講師の説明が非常に丁寧で、マイクロサービス特有の難しい概念もスムーズに頭に入ってきました。"
"図解などを交えながら説明してくれる箇所があり、視覚的にも理解を助けられました。"
"モノリスとの比較から入るなど、導入が工夫されており、未経験者でもついていける構成だと感じました。"
理論的だが実践的な詳細が少ない
"概念的な説明が多く、実際のコードや具体的なツールを使ったデモが少ないため、実践に繋げるには別途学習が必要です。"
"マイクロサービスの概要は掴めたが、各論の深堀りが物足りない。例えば、特定のフレームワークでの実装例が欲しかった。"
"理論は理解できましたが、自分のプロジェクトにどう適用すれば良いか、具体的なステップが見えにくかったのが残念です。"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in マイクロサービスアーキテクチャ with these activities:
ドメイン駆動設計の基礎を復習する
コースで取り扱うドメイン駆動設計の概念を理解するために、事前に基礎知識を復習します。これにより、コース内容の理解が深まり、より実践的な応用が可能になります。
Browse courses on DDD
Show steps
  • ドメイン駆動設計に関する記事や書籍を読む
  • 簡単なドメインモデルを設計してみる
マイクロサービス関連のツールとリソースをまとめる
マイクロサービス開発に役立つツール、ライブラリ、記事、ドキュメントなどを収集し、整理します。これにより、効率的な開発環境を構築し、学習を加速することができます。
Show steps
  • マイクロサービス関連のツールを調査する
  • 有用なリソースを収集する
  • 収集した情報を整理し、ドキュメント化する
『Building Microservices』を読む
マイクロサービスアーキテクチャの理解を深めるために、専門的な書籍を読みます。この本は、コースで学ぶ概念を実践的な視点から補完し、より深い知識と洞察を提供します。
Show steps
  • 書籍の各章を読み進める
  • 重要な概念やパターンをノートにまとめる
  • 学んだ内容を実際のプロジェクトに適用する方法を検討する
Four other activities
Expand to see all activities and additional details
Show all seven activities
APIゲートウェイの実装を練習する
APIゲートウェイの実装スキルを向上させるために、繰り返し練習を行います。異なる技術スタックやフレームワークを使用して実装を試すことで、理解を深めることができます。
Show steps
  • APIゲートウェイの基本的な機能を理解する
  • 異なる技術スタックでAPIゲートウェイを実装する
  • 実装したAPIゲートウェイをテストする
マイクロサービスに関するブログ記事を書く
コースで学んだ内容を整理し、ブログ記事として公開します。これにより、知識の定着を促し、他の学習者との知識共有を通じて理解を深めることができます。
Show steps
  • 記事のテーマを決める
  • 記事の構成を考える
  • 記事を執筆し、校正する
  • ブログに記事を投稿する
シンプルなマイクロサービスを構築する
コースで学んだ知識を実践するために、簡単なマイクロサービスを構築します。これにより、設計、実装、デプロイの各段階で直面する課題を体験し、理解を深めることができます。
Show steps
  • 要件を定義し、サービスを設計する
  • 各サービスを実装する
  • サービス間の通信を実装する
  • デプロイ環境を構築し、サービスをデプロイする
『マイクロサービスパターン』を読む
マイクロサービスアーキテクチャのパターンを学ぶために、専門的な書籍を読みます。この本は、コースで学ぶ概念を具体的な実装に落とし込むための参考書として最適です。
View Melania on Amazon
Show steps
  • 書籍の各章を読み進める
  • 各パターンの適用例を検討する
  • 学んだパターンを実際のプロジェクトに適用する方法を検討する

Career center

Learners who complete マイクロサービスアーキテクチャ will develop knowledge and skills that may be useful to these careers:
マイクロサービスアーキテクト
マイクロサービスアーキテクトは、マイクロサービスアーキテクチャの設計、実装、および管理を専門とする役割です。このコースでは、マイクロサービスの概念、設計原則、およびベストプラクティスを学ぶことができます。マイクロサービスアーキテクトは、モノリスアプリケーションからマイクロサービスへの移行戦略を策定し、サービス間の通信、データ整合性、セキュリティ、および運用監視などの課題に対処します。このコースでモノリスからマイクロサービスへの移行方法を学ぶことで、マイクロサービスアーキテクトとして活躍するための基盤を築くことができます。特に、組織体制の変革、共通の仕組みづくり、アプリケーションとデータベースの分割に関する知識は、マイクロサービスアーキテクトにとって不可欠です。
ソフトウェアエンジニア
ソフトウェアエンジニアは、ソフトウェアの設計、開発、テスト、およびデプロイを担当します。このコースでは、マイクロサービスアーキテクチャの概要、設計、実装、テスト、およびデプロイ方法を学ぶことができます。ソフトウェアエンジニアは、マイクロサービスを構築し、サービス間の通信を実装し、データ整合性を確保し、アプリケーションを監視する必要があります。このコースでサービス間通信の方法、外部へ公開する方法、ドメイン駆動設計、データ整合性を担保する方法、認証認可、マイクロサービスのテストなどを学ぶことで、ソフトウェアエンジニアとしてのスキルを向上させることができます。
DevOpsエンジニア
DevOpsエンジニアは、開発と運用を連携させ、ソフトウェアのリリースサイクルを加速させる役割です。このコースでは、マイクロサービスのビルド、デプロイ、および運用監視に関する知識を学ぶことができます。DevOpsエンジニアは、CI/CDパイプラインを構築し、デプロイメント戦略を実装し、システムを監視し、パフォーマンスを最適化する必要があります。このコースでデプロイ方法、リリース方法、CI/CD、ヘルスチェック、ログ収集、メトリクス収集、分散トレースなどを学ぶことで、DevOpsエンジニアとしてのスキルを向上させることができます。
クラウドエンジニア
クラウドエンジニアは、クラウド環境でのアプリケーションの設計、デプロイ、および管理を担当します。このコースでは、マイクロサービスアーキテクチャをクラウド環境にデプロイする方法を学ぶことができます。クラウドエンジニアは、スケーラビリティ、可用性、およびセキュリティを考慮して、マイクロサービスを設計する必要があります。このコースでマイクロサービスのあるべき姿として、設計、実装、テストや、ビルド、デプロイ、テストを学ぶことで、クラウドエンジニアとしてクラウドネイティブなアプリケーションを構築するスキルを向上させることができます。
システムアーキテクト
システムアーキテクトは、システム全体の設計を担当します。マイクロサービスアーキテクチャのコースを受講することで、システムアーキテクトは、モノリシックなシステムからマイクロサービスアーキテクチャへの移行戦略を理解し、システム全体の柔軟性、スケーラビリティ、および保守性を向上させることができます。システムアーキテクトは、マイクロサービスの設計原則、サービス間の連携、データ管理、およびセキュリティに関する知識が必要です。このコースでマイクロサービスの特徴(メリット、課題)やマイクロサービスとSOAの違いを学ぶことで、システムアーキテクトとしてのスキルを向上させることができます。
テクニカルリード
テクニカルリードは、開発チームを技術的な面でリードする役割です。このコースでマイクロサービスアーキテクチャを学ぶことで、テクニカルリードは、チームがマイクロサービスを効果的に設計、実装、およびデプロイできるように指導することができます。テクニカルリードは、マイクロサービスの設計原則、サービス間の連携、およびベストプラクティスに関する知識が必要です。このコースでマイクロサービス化した際に発生する課題と対策を学ぶことで、チームを成功に導くことができます。
ソリューションアーキテクト
ソリューションアーキテクトは、特定のビジネス上の問題を解決するためのシステムソリューションを設計します。このコースは、ソリューションアーキテクトがマイクロサービスアーキテクチャを理解し、特定のビジネスニーズに合わせてカスタマイズされたマイクロサービスソリューションを設計するのに役立ちます。ソリューションアーキテクトは、マイクロサービスの設計パターン、サービス間の統合、およびスケーラビリティに関する知識が必要です。特に、マイクロサービスへの移行に関する知識は、現代の複雑なビジネス環境において非常に価値があります。
データエンジニア
データエンジニアは、データの収集、処理、および保存を担当します。このコースでマイクロサービスアーキテクチャを学ぶことで、データエンジニアは、マイクロサービス環境でのデータ管理戦略を理解し、データの整合性、可用性、およびパフォーマンスを確保することができます。データエンジニアは、分散データシステム、データパイプライン、およびデータモデリングに関する知識が必要です。本コースで学べるデータ整合性を担保する方法は、データエンジニアにとって非常に役立ちます。
セキュリティエンジニア
セキュリティエンジニアは、システムのセキュリティを保護する役割です。このコースでマイクロサービスアーキテクチャを学ぶことで、セキュリティエンジニアは、マイクロサービス環境でのセキュリティリスクを理解し、適切なセキュリティ対策を実装することができます。セキュリティエンジニアは、認証、認可、およびデータ保護に関する知識が必要です。特に、本コースで学べる認証認可の仕組みの導入方法は、マイクロサービス環境でのセキュリティを確保するために不可欠です。
プロジェクトマネージャー
プロジェクトマネージャーは、プロジェクトの計画、実行、および完了を担当します。このコースでマイクロサービスアーキテクチャを学ぶことで、プロジェクトマネージャーは、マイクロサービスプロジェクトの特性を理解し、適切なリソースを割り当て、スケジュールを管理することができます。プロジェクトマネージャーは、ソフトウェア開発ライフサイクル、リスク管理、およびコミュニケーションスキルが必要です。このコースはマイクロサービス化する際に利用できるミドルウェアについて学べるため、プロジェクトの成功に貢献できます。
プロダクトマネージャー
プロダクトマネージャーは、製品のビジョン、戦略、およびロードマップを定義します。このコースがプロダクトマネージャーにとって役立つのは、マイクロサービスアーキテクチャが製品のスケーラビリティ、柔軟性、および市場投入までの時間をどのように改善できるかを理解するのに役立つからです。プロダクトマネージャーは、顧客のニーズ、市場動向、および競合分析に関する知識が必要です。マイクロサービス概要について学ぶことは、プロダクトの改善に役立ちます。
品質保証エンジニア
品質保証エンジニアは、ソフトウェアの品質を保証する役割です。このコースでマイクロサービスアーキテクチャを学ぶことで、品質保証エンジニアは、マイクロサービス環境でのテスト戦略を理解し、適切なテストケースを作成し、テストを実行することができます。品質保証エンジニアは、テスト自動化、パフォーマンステスト、およびセキュリティテストに関する知識が必要です。このコースでマイクロサービスにおけるテストを学ぶことで、品質保証エンジニアとしてのスキルを向上させることができます。
コンサルタント
コンサルタントは、クライアントに専門的なアドバイスを提供します。このコースでマイクロサービスアーキテクチャを学ぶことで、コンサルタントは、クライアントがマイクロサービスアーキテクチャを採用し、ビジネス上の目標を達成するのを支援することができます。コンサルタントは、ビジネス分析、問題解決、およびコミュニケーションスキルが必要です。マイクロサービスへの移行方法を学ぶことで、クライアントに効果的なアドバイスを提供できます。
データベース管理者
データベース管理者は、データベースの管理と運用を担当します。このコースでマイクロサービスアーキテクチャを学ぶことは、データベース管理者がマイクロサービス環境でのデータ管理戦略を理解するのに役立つ可能性があります。データベース管理者は、データベースのパフォーマンス、セキュリティ、および可用性を確保する必要があります。本コースで学べるデータベースの分割は、データベース管理者に役立つ可能性があります。
ネットワークエンジニア
ネットワークエンジニアは、ネットワークインフラストラクチャの設計、実装、および管理を担当します。このコースでマイクロサービスアーキテクチャを学ぶことは、ネットワークエンジニアがマイクロサービス環境でのネットワーク要件を理解する上で役立つ可能性があります。ネットワークエンジニアは、ネットワークのパフォーマンス、セキュリティ、および可用性を確保する必要があります。このコースでサービス間通信の方法を学ぶことで、ネットワークエンジニアはマイクロサービス環境でのネットワーク設計を最適化できる可能性があります。

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in マイクロサービスアーキテクチャ.
この本は、マイクロサービスアーキテクチャの設計、実装、デプロイに関する包括的なガイドです。マイクロサービスの原則、パターン、ベストプラクティスについて詳しく解説されており、コースで学ぶ内容をより深く理解するのに役立ちます。特に、分散システムの複雑さに対処する方法や、マイクロサービス間の連携について学ぶ上で非常に有益です。業界の専門家にも広く読まれています。

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser