ホームページ >Java >&#&チュートリアル >Java Spring Boot と Angular を使用したスケーラブルなマイクロサービス アプリケーションの構築

Java Spring Boot と Angular を使用したスケーラブルなマイクロサービス アプリケーションの構築

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 03:04:01901ブラウズ

パート 1 - 最初の相談


ほら、私は他の人たちと同じくらいマイクロサービスを楽しんでいますが、マイクロサービスの処理とデバッグは非常に頭の痛い問題だと思いますか?はい。しかし、マイクロサービス アーキテクチャは、開発者や人材採用担当者の間で非常にホットなトピックなので、コストを低く抑えたり、存在しない状態に保ちながら本番環境に対応できる、自分自身の大規模でスケーラブルなプロジェクトをサンドボックス化しないのはもったいないです。 


シナリオ:

おめでとうございます!あなたは IceToMeetYou Inc. にコンサルタントとして採用され、現在の出荷管理ソフトウェアをよりカスタム ソリューションにアップグレードすることを検討しています。 IceToMeetYou Inc. は、砂漠で立ち往生している 1 人の男性に輸入氷を販売する自社製品に約 30 億ドルの資金を調達したばかりのスタートアップ企業です。現在のタスク管理ソフトウェアは小さすぎて機能が限られているため、この男 (デニスと呼びましょう) がスムージーを冷たく保つ必要があるすべての入荷荷物を処理できません。彼らは、デニスからの複数の注文を完了まで処理し、氷を届ける働きペンギンに注文を割り当て、ペンギンの進捗状況を追跡し、ステータス更新のリアルタイム通知を受け取ることができるタスク管理システムを構築したいと考えています。 CEO は、このプロジェクトの構築に役立つ質問があれば、お気軽に質問してくださいと述べています。プロジェクトの構築について考え始めるときに、まさにそれを行うつもりです…


技術スタック:

このプロジェクトでは、次の技術スタックを使用します:

バックエンド: Java Spring Boot は、REST API とマイクロサービスを構築するための強力なフレームワークであり、サービス検出、クラウド デプロイメント、イベント駆動型システム用の Kafka などの幅広いツールを提供します。
フロントエンド: グローバル状態管理のための NgRx を使用した堅牢なフロントエンド フレームワークにより角度が付いています
データベース: MySQL/PostgreSQL (リレーショナル データ用)、MongoDB (タスク データ用)
リアルタイム更新: Kafka (イベント ストリーミング用) および WebSocket
デプロイ: オーケストレーションのための Docker と Kubernetes
テスト: JUnit、Jest、および K6 (負荷およびパフォーマンスのテスト用)


全体像:

ここでの主な目的は、Web アプリケーションを考えるときにすべての可動部分を示すことです。このリストがすべてを網羅しているわけではありませんが、目標は、多くの基本を平易な英語でカバーして、このプロセスが再現可能であり、エンタープライズ アプリケーションについて考えるときに簡単に行えるようにすることです。各セクションでは、V1 MVP に合格するための設計から展開までの各ステップを、詳細なブログ、コードのデモンストレーション、図、思考プロセスを通じて紹介します。そして最も重要なことは、常に問題を解決していることを確認することです。

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

設計原則: サービスの独立性、スケーラビリティ、耐障害性などのマイクロサービス原則の理解と実装
 → サービスの分離: 独自の懸念領域に分離する方法、
 → サービス間通信: 通信戦略 (REST API、Kafka、WebSocket) の選択とサービス間のデータ一貫性の処理。

Spring Boot を使用したバックエンド開発:

サービス開発: Spring Boot を使用して個々のサービスを実装し、RESTful エンドポイントを処理し、懸念事項を適切に分離します。
 → 認証とセキュリティ: JWT、OAuth、Spring Security を使用して安全なユーザー認証とロールベースのアクセス制御を行います。
 → データベース管理: リレーショナル (MySQL/PostgreSQL) および NoSQL (MongoDB) データベースのセットアップ、マイクロサービスのデータ ストレージの最適化、データ移行の処理。

Angular を使用したフロントエンド開発:

ユーザー インターフェイスのデザイン: Angular を使用したシームレスなユーザー エクスペリエンスの作成
 → 状態管理: 一貫した反応的なユーザー インタラクションのために、NgRx を使用してアプリケーションの状態を処理します。
 → API 統合: RESTful API を介して Angular フロントエンドを Spring Boot バックエンド サービスに接続し、データ転送を安全に管理します。

リアルタイムのデータ通信と通知:

WebSocket とイベント ストリーミング: 即時更新用に WebSocket を実装し、サービス間の信頼性の高いイベント ストリーミング用に Kafka を実装します。
 → プッシュ通知: リアルタイムの更新情報をユーザーに配信し、サービスに過負荷をかけることなく効率的なメッセージ配信を保証します。

パフォーマンスのテストと監視:

負荷テスト: K6 を使用して、負荷がかかっているシステムを評価し、ボトルネックを特定し、マイクロサービスのパフォーマンスを最適化します。
 → ロギングとモニタリング: ELK または代替ツールを使用したロギングの実装、アプリケーションの健全性の追跡、重大な障害に対するアラートの設定。

導入とスケーリング:

Docker によるコンテナ化: 各サービスの Docker イメージを構築し、スケーリングを容易にする一貫したランタイム環境を確立します。
 → Kubernetes を使用したオーケストレーション: Kubernetes を使用して、デプロイメント、自動スケーリング、負荷分散、復元力を管理します。
 → クラウド ホスティング: コスト効率、セキュリティ、信頼性などの側面をカバーするクラウド プラットフォーム (AWS、Azure、GCP) 上のサービスをホスティングします。

ショータイムの前に最終的な考えをいくつか...

Building a Scalable Microservices Application with Java Spring Boot and Angular

まず第一に、これはサンドボックスであるため、このプロジェクトは学習とデモンストレーションのために構築されています。ここで重要な点: これは、地下室に座っている一人の男によってゼロから構築された、100% 過剰に設計されたソリューションです。そんなに深刻なものではありません。 

私はこのプロジェクトを毎日更新して取り組んでいくので、頻繁な更新を期待してください! 

これは、チーム環境内での開発がどのようなものであるかを示す演習でもあります。そのため、何がうまくいったのか、何がうまくいったのかを確認するために、振り返り (私自身も含めて?) をしながら目標を達成するために「スプリント」内で作業します。問題が発生したのか、どのような障害が発生したのか、どのように解決できるのか。 5 件程度の投稿ごとに簡単なレトロを更新します。

もう 1 つ…私は常にフィードバックを求めています。何か意味がわからない場合、または十分に明確でない場合は、コメントでお知らせください。 

それでは、遅くなりました。明日からスプリント 1 が始まります。しっかりしてください。長い一日になるでしょう…

以上がJava Spring Boot と Angular を使用したスケーラブルなマイクロサービス アプリケーションの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。