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

パート 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 までご連絡ください。
JVMは、Javaの「Write and、Run Anywhere」(Wora)機能にどのように貢献しますか?JVMは、Javaの「Write and、Run Anywhere」(Wora)機能にどのように貢献しますか?May 02, 2025 am 12:25 AM

JVMは、バイトコード解釈、プラットフォームに依存しないAPI、動的クラスの負荷を介してJavaのWORA機能を実装します。 2。標準API抽象オペレーティングシステムの違い。 3.クラスは、実行時に動的にロードされ、一貫性を確保します。

Javaの新しいバージョンは、プラットフォーム固有の問題にどのように対処しますか?Javaの新しいバージョンは、プラットフォーム固有の問題にどのように対処しますか?May 02, 2025 am 12:18 AM

Javaの最新バージョンは、JVMの最適化、標準的なライブラリの改善、サードパーティライブラリサポートを通じて、プラットフォーム固有の問題を効果的に解決します。 1)Java11のZGCなどのJVM最適化により、ガベージコレクションのパフォーマンスが向上します。 2)Java9のモジュールシステムなどの標準的なライブラリの改善は、プラットフォーム関連の問題を削減します。 3)サードパーティライブラリは、OpenCVなどのプラットフォーム最適化バージョンを提供します。

JVMによって実行されたバイトコード検証のプロセスを説明します。JVMによって実行されたバイトコード検証のプロセスを説明します。May 02, 2025 am 12:18 AM

JVMのバイトコード検証プロセスには、4つの重要な手順が含まれます。1)クラスファイル形式が仕様に準拠しているかどうかを確認し、2)バイトコード命令の有効性と正確性を確認し、3)データフロー分析を実行してタイプの安全性を確保し、検証の完全性とパフォーマンスのバランスをとる。これらの手順を通じて、JVMは、安全で正しいバイトコードのみが実行されることを保証し、それによりプログラムの完全性とセキュリティを保護します。

プラットフォームの独立性は、Javaアプリケーションの展開をどのように簡素化しますか?プラットフォームの独立性は、Javaアプリケーションの展開をどのように簡素化しますか?May 02, 2025 am 12:15 AM

java'splatformendencealLowsApplicationStorunOperatingSystemwithajvm.1)singlecodebase:writeandcompileonceforallplatforms.2)easyUpdates:updatebytecodeforsimultaneousdeployment.3)テストの実験効果:scalbortffortfforduniverbehaviol.4)

Javaのプラットフォームの独立性は、時間とともにどのように進化しましたか?Javaのプラットフォームの独立性は、時間とともにどのように進化しましたか?May 02, 2025 am 12:12 AM

Javaのプラットフォームの独立性は、JVM、JITコンピレーション、標準化、ジェネリック、ラムダ式、Projectpanamaなどのテクノロジーを通じて継続的に強化されています。 1990年代以来、Javaは基本的なJVMから高性能モダンJVMに進化し、さまざまなプラットフォームでのコードの一貫性と効率を確保しています。

Javaアプリケーションでプラットフォーム固有の問題を緩和するためのいくつかの戦略は何ですか?Javaアプリケーションでプラットフォーム固有の問題を緩和するためのいくつかの戦略は何ですか?May 01, 2025 am 12:20 AM

Javaはプラットフォーム固有の問題をどのように軽減しますか? Javaは、JVMおよび標準ライブラリを通じてプラットフォームに依存します。 1)bytecodeとjvmを使用して、オペレーティングシステムの違いを抽象化します。 2)標準のライブラリは、パスクラス処理ファイルパス、CHARSETクラス処理文字エンコードなど、クロスプラットフォームAPIを提供します。 3)最適化とデバッグのために、実際のプロジェクトで構成ファイルとマルチプラットフォームテストを使用します。

Javaのプラットフォームの独立性とマイクロサービスアーキテクチャの関係は何ですか?Javaのプラットフォームの独立性とマイクロサービスアーキテクチャの関係は何ですか?May 01, 2025 am 12:16 AM

java'splatformentencentenhancesmicroservicesecturectureby byofferingdeploymentflexability、一貫性、スケーラビリティ、およびポート可能性。1)展開の展開の展開は、AllosmicRoserviThajvm.2)deploymentflexibility lowsmicroserviceSjvm.2)一貫性のあるAcrossServicessimplisimpligiessdevelisementand

GraalvmはJavaのプラットフォーム独立目標とどのように関係していますか?GraalvmはJavaのプラットフォーム独立目標とどのように関係していますか?May 01, 2025 am 12:14 AM

Graalvmは、Javaのプラットフォームの独立性を3つの方法で強化します。1。言語間の相互運用性、Javaが他の言語とシームレスに相互運用できるようにします。 2。独立したランタイム環境、graalvmnativeimageを介してJavaプログラムをローカル実行可能ファイルにコンパイルします。 3.パフォーマンスの最適化、Graalコンパイラは、Javaプログラムのパフォーマンスと一貫性を改善するための効率的なマシンコードを生成します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター