
Spring Cloudで開発するマイクロサービスアプリケーション(MSA)
Dowon Lee
Spring FrameworkのSpring Cloudファミリーを利用してマイクロサービスアプリケーションを開発してみる過程です。Cloud Native ApplicationとしてのSpring Cloudをどのように使うか、構成をどのように行うかについて学べる講座です。
初級
Spring Cloud, MSA, Spring Boot
このコースは、マイクロサービスアプリケーション開発のためのMSAデザインパターンと実装戦略に必要な様々な内容、パターン、および設計について学ぶコースです。既存のモノリシックアプリケーションをMSA方式で成功裏に移行するために必要な中核知識と実践的な方法論について学習します。マイクロサービスアーキテクチャの根幹をなす様々なデザインパターンについて分析し、各パターンがどのような状況に適しており、どのように適用されるかを学習できます。
受講生 466名
難易度 初級
受講期間 無制限
学習した受講者のレビュー
5.0
하비하
アーキテクチャの勉強に良かったです。
5.0
무명펭 (힐링펭)
とても役に立ちました。
5.0
dududu88
これまで出たMSA講義の中で、雲をつかむような話ではなく最も実務的な視点からアプローチした講義だと思います。実習例題がもう少しだけ詳細に構成されていたらもっと良かったでしょうが、この程度で素晴らしいです。そういう意味でドウォンさんバージョンの詳細な実務中心のMSA上級編講義が出るなら迷わず受講したいですね。
マイクロサービス アーキテクチャの理解
マイクロサービスアーキテクチャパターンの理解
マイクロサービス設計に基づくパターンの適用
基本的なマイクロサービスアーキテクチャの概念と構成を理解したら、現在はアプリケーション構築に必要なサービス決定とMSAのパターンを利用して、マイクロサービスアプリケーションを設計し構築してみることができます。
複雑なシステムを柔軟でスケーラブルでメンテナンスしやすいマイクロサービスアーキテクチャに変革したいすべての開発者とアーキテクトにとって不可欠なプロセスです。今回の講義を通じて、アプリケーション開発の重要な能力を強化しましょう!
モノリシックとマイクロサービスアーキテクチャの理解、大規模モノリシックアーキテクチャとマイクロサービスの違いを理解し、各アプローチの長所と短所を学ぶことができます。
基本的なモノリシック方式のアプリケーションをマイクロサービスアーキテクチャの構造に変換するために必要な過程と悩むべき重要なポイントについて説明しています。
MSA設計原則:スケーラビリティと信頼性を向上させるためのマイクロサービスアーキテクチャ(MSA)設計原則をカバーします。ドメイン分割、疎結合、独立展開などの重要な概念について学ぶことができます。
このレッスンでは、サービスの種類に合ったマイクロサービスアーキテクチャのパターンを理解し、MSAパターンを適用するために必要な概念を理解することができます。
MSAコアパターン学習: APIゲートウェイ、サービスディスカバリー、佐賀パターンなど、主要なMSAデザインパターンを実際のケースで勉強できます。
仮想MSAの例を実装し、実行プロセスに必要なすべてのコースを一緒に練習することができます。
MSAの主なパターンによる使用率のグラフは次のとおりです。
この講義を聞かなければならない方(1)
MSAの概念と理解を持って、マイクロサービスの導入を検討中の組織でアプリケーション構築のためのアーキテクチャと適用可能なパターンを実習例を通じて学習したい方
この講義を聞かなければならない方(2)
MSA の Inner/Outer Architecture を構成する際に、適用可能なさまざまな MSA パターン、処理メカニズムを通じて大規模なサービスの開発および保守を試みるバックエンド開発者
この講義を聞かなければならない方(3)
Spring Boot + Spring Cloudを使用したマイクロサービスアプリケーションを開発しながら、データ管理と分散トランザクションについて少し深くなったことを知りたい人
モノリスアプリケーションをMSAアプリケーションに移行するために必要な構成とアーキテクチャとパターンについて理解することができます。
MSAに必要なデータ同期方法と分散トランザクションでのデータ処理方法について理解できます。
マイクロサービスアプリケーションの開発に考慮する必要があるアーキテクチャとパターン、およびさまざまなパターンに適用する方法を理解できます。
MSAのさまざまなデザインパターンを状況に合わせて適用することで、問題解決能力を向上させることができます。
既存のプロジェクトやサービスにMSAを導入する際に明確なロードマップを描画できるようになり、 DevOps文化とクラウドインフラストラクチャの理解に基づいて展開環境を設計できるようになります。
サービスタイプ別MSAパターンの理解
本講義では、モノリシック方式のアプリケーションとマイクロサービスで開発されたアプリケーションとのアーキテクチャとサービスの観点の違いと長所と短所を理解し、シナリオやテーマ別にマイクロサービスの分解パターンから、データ通信、テスト戦略に至るまで、さまざまなMSAパターンを区分して学習することができます。
MSAパターンを適用したサンプル例を直接実装
モノリス方式とマイクロサービス方式で構成された30の実習例をもとに、サービスに適用してみられるMSAパターンを段階的に適用してみることができ、クラウドサービスに展開する過程についても学習してみることができます。
マイクロサービスアーキテクチャの形でサービスを構成するために考慮する必要がある構造的な状況とさまざまなパターンを、サービス間の通信、非同期データ処理方法、データ管理の視点に分類して段階的に学習することができます。
マイクロサービスアーキテクチャでのデータ管理方法と、分散トランザクション処理のために考慮しなければならないCQRS、Event Sourcing、SAGA、Event Driven Architectureの理解だけでなく、実習例を通じて、実装に必要な過程について学習できます。
API Gateway(API Gateway):クライアントからのすべての要求を単一のエントリポイントで受け取り、認証、ロギング、ルーティングなどを処理するパターン。複数のマイクロサービスを1か所で管理できます。
サービスディスカバリ:動的に変化するサービスインスタンスの場所を中央レジストリに登録して検索するパターン。これにより、サービス間通信時にアドレスを自動的に探索します。
同期および非同期通信:同期通信は、要求を送信したサービスが応答を受信するのを待つように、応答が来るまでスレッドがブロックされます。 REST/gRPC/GraphQL API 方式で同期通信を実装できます。非同期通信は、要求を送信したサービスが応答を待たずに直ちに次の作業を進める方法で、Kafkaなどのメッセージブローカーを介してイベントを発行して購読する方法で通信します。
サーキットブレーカー(Circuit Breaker):あるサービスの障害が連鎖的に広がるのを防ぐために通話を短絡するパターン。外部サービスが無効になっていると、一定時間の呼び出しを中止し、迅速な失敗を引き起こします。
フォールバック処理:サーキットブレーカーなどが作動したときの対策として、代替応答や再試行ロジックを提供するパターンです。部分障害時にシステムの弾力性を高めます。
佐賀パターン:分散サービスでデータの一貫性を維持するための分散トランザクションパターン。各サービスのローカルトランザクションをイベント/メッセージにリンクして、最終的な一貫性を確保します。
CQRS&イベントソース: CQRS(Command Query Responsibility Segregation)は読み取りと書き込みモデルを分離してスケーラビリティを高めるパターンであり、イベントソース(Event Sourcing)はステータス変更をイベントログに保存して履歴に基づいて状態を復元するパターンです。一緒に使用され、複雑なビジネスのデータを管理します。
EDA: Event Driven Architectureは、イベントの生成、検出、消費、および使用を中心にシステムを設計するソフトウェアアーキテクチャパターンです。マイクロサービスアプリケーションのコンポーネントが「イベント」を介して互いに通信して相互作用する方法です。
BFF(Backend for Frontend): Web、モバイルなど、プラットフォーム固有のバックエンドを提供するパターンです。各フロントエンドのニーズに合った専用APIレイヤーを作成し、効率性と開発生産性を高めます。
IT キャリア 25 年間の講義、コンサルティング、開発経験をもとに、実務的な経験とノウハウを理解するための説明で講義を進めています。
MSAの基本的な理解と紹介に基づいて、MSAの理解を一段階アップグレードできるマイクロサービスパターンの理解と適用について取り上げています。
「Spring Bootを利用したRESTful Web Servicesの開発」、「Spring Cloudで開発するマイクロサービスアプリケーション(MSA)」、「Jenkinsを利用したCI/CD Pipelineの構築、「DevOpsのためのDocker仮想化技術(Private Harbor Registry)」講義に続くMSAの実装とパターンについて説明しています。
「頭の中の知識は知識ではない」という考えで、私が持っている小さな経験と知識をよく包装し、より理解しやすく説明するために努力しています。 JavaとSpring Frameworkへの関心が、Cloud NativeやMicrsoervice Architectureまで続く方だとすれば、より簡単に理解できる講義になると思います。
Q. レッスンで扱うソースコードを実装または実行するために必要なインフラストラクチャの構成と実践環境はどうなりますか?
講義で使用しているサンプルコードの合計30個になっており、各セクションが進むにつれて、セクションで紹介している内容に基づくコードに変換して実行してみることができます。すべてのソースコードは、Java言語ベースのSpring framework + Spring Bootを使用して作成されました。簡単なオンラインショッピングモールというテーマを持ち、商品リストの表示、購入などの基本的な機能を持つサンプルプロジェクトです。オンラインショッピングモールのソースを実行するには、WindowsやMacOS環境で、JDKやEclipseやIntelliJなどのIDEを使用すればデバッグと一緒に簡単に実行でき、Docker Desktopなどのコンテナ仮想化環境を構築して使用できるなら、パッケージされているコンテナイメージを元に実行してみることができます。ただし、MSAパターンを適用してプロジェクトの一部を修正しながら、テストを行う必要があるため、IDEを利用する実践環境をお勧めします。最後に、練習に必要な環境とSWをまとめると以下のようになります。
Windows 10 or 11 または MacOS Intel chip バージョン or Apple chip バージョン
JDK 17+
IntelliJ IDEA (CommunityまたはUltimateバージョンは関係ありません)
Visual Studio Code
Postman
Chromeウェブブラウザ
Docker Desktop
Q.マイクロサービスアーキテクチャでアプリケーションやサービスを設定しようとしていますが、デザインパターンを必ず適用する必要がありますか?
IT関連のアプリケーションやサービスを開発しながら、使用したプログラミング言語またはデータベースを選択できます。そして、仕事に必要なDomain Knowledgeに基づいて、開発者のアルゴリズムに応じてさまざまな形で開発することができます。実装したい業務ロジックは、決められたプロセスやプロセスがあるというよりは、実装する開発者が考える最善の方法と効率的なアルゴリズムを通じて実装すれば良いと思います。ただし、同じタイプのDomainサービスで既存開発されていた多数のアプリケーションですでに検証されている開発方式やプロセスや開発タイプは存在しています。従来開発されているこのような方法を参考にすれば、効率的かつ検証された方法でサービスを実装してみることができると考えられます。デザインパターン(Desigin Pattern)はこのように、過去のソフトウェア開発過程で発見された設計のノウハウを蓄積し、その方法に名前をつけて以後、再利用しやすい形で特定の規約を作ってまとめたものであり、これらのデザインパターンはソフトウェア設計における共通の問題に対する標準的な解決策と記述法を提案しています。つまり「効率的なコードを作るための方法論」だと思えばいいようです。マイクロサービスアーキテクチャでも、サービスの分割でも分散トランザクションに対する処理まで、さまざまな形態のデザインパターンが提示されており、これらのMSAデザインパターンを適用すると、より効率的で信頼性の高いサービスを実現するのに役立ちます。結論として、MSAだけでなく、他のSW開発時、デザインパターンの適用はオプションですが、正しく適用されたデザインパターンは効率的で安定したシステム開発に役立つと考えられます。
Q. Spring Boot、Spring Cloudに関する知識がないのですが、講義を受講できますか?
このレッスンでは、Spring Boot + Spring CloudをベースにしたMSAの基本的な知識を持っているという前提の下で、MSAパターンの一部について説明します。 MSAで語っているOuter Architecutreの概念や、JPAを利用して基本的なCRUD(Create、Read、Update、Delete)に対する作業を処理するのにどのようなプロセスで動作するのか程度だけ理解していても、MSAパターンに関する部分を勉強するのに十分だと考えられます。ただし、既存に作成されたモノリス方式のアプリケーションと新しく構成されるMSA方式のアプリケーションがどのような構造に変更され、適用されたかをよく理解するには、Spring BootやSpring Cloudに対する基本的な理解を備えている状態で授業を進めれば学習効果が倍になると考えられます。
オペレーティングシステムとバージョン(OS):Windows 10+、macOS Intell chip、macOS Apple chip、CentOS7+、Ubuntu 16.04+
使用ツール: JDK 17+, Spring Boot, Spring Cloud, Visual Studio Code, Postman, Docker Desktop, IntelliJ Commnity (Ultimate 推奨)
PC仕様:CPU i5+、RAM 16G+、Storage 50G+、Internet対応環境
講義で使用されるサンプルコードの提供
講義で使用される教案の提供
各講義紹介セクションからダウンロード可能
講義で扱う内容に加え、コンテナ仮想化やIntelliJなどの使い方のための別途無料講義を提供
Javaプログラミングの理解とSpring Frameworkの記念的な概念を理解すると、講義を受講するのに役立ちます。
講義に使用されるサンプルコードはそのまま実行してみることができますが、受講生の方の環境によっては一部修正しなければならない部分がある場合があります。
講義に関する質問は掲示板を通じて残していただければ、確認するのに回答させていただきます。
講義に関連する教案およびソースコードの著作権は講師にありますが、使用が必要な場合は出所を残していただきありがとうございます。
学習対象は
誰でしょう?
マイクロサービスアプリケーションを開発しようとする開発者
マイクロサービスアーキテクチャを設計しようとするエンジニア
MSAへの理解を基にMSAパターンを適用しようとする開発者
前提知識、
必要でしょうか?
Java + Spring framework
Spring Boot
スプリングクラウド
インフラン認証
30,841
受講生
1,755
受講レビュー
1,381
回答
4.8
講座評価
8
講座
私はITエンジニアです。いつか職業欄に「会社員?」「開発者?」「講師?」どの言葉を選ぶべきか悩んだ時期がありました。そんな中、ITエンジニアという表現が自分にしっくりくる職業名だと思い、今でも職業欄には「ITエンジニア」と書いています。
職業とは自分の仕事を表すものであり、仕事とは楽しくて、誰かの役に立つものであってほしいと考えています。誰もが望み通りに仕事をしながら生きていけるわけではありませんが、私は今自分がしているこの仕事が好きで、もっと上手くなりたいと思っている人間です。開発者として、講師として、コンサルタントとしての役割を果たしながら、次々と新しく登場し変化するIT新技術を追いかけるのに精一杯ではありますが、それでも他の誰よりも少しでも早く触れ、広め、活用したいと願う一人です。
最近関心を持っている分野はオンライン教育コンサルティングです。そして、興味のある技術は Cloud Native Architecture、Blockchain、Machine Learning、Kafka、Kubernetes などです。これらの技術は実際に講義も行っていますし、実務に適用して使用もしています。しかし、あまりにも膨大なテーマであるため、今でも継続して勉強しています。
頭の中にあるだけでは、真の知識とは言えません。私は自分が持つ知識と経験を、さまざまな方法を通じて共有しようと考えています。そして、新しい分野や新しい技術に挑戦し続けるITエンジニアであり続けます。
現) エンジェイワンカンパニー代表
現) 東国大学校 国際情報大学院 情報保護学科 客員教授
前) JP Morgan Chase AMJ Tech consultant (日本)
前) サムスンSDS CMS事業本部 責任エンジニア
全体
118件 ∙ (26時間 38分)
講座資料(こうぎしりょう):
全体
20件
4.8
20件の受講レビュー
受講レビュー 45
∙
平均評価 5.0
受講レビュー 29
∙
平均評価 5.0
受講レビュー 1
∙
平均評価 5.0
受講レビュー 10
∙
平均評価 4.6
受講レビュー 8
∙
平均評価 5.0
知識共有者の他の講座を見てみましょう!
同じ分野の他の講座を見てみましょう!