2020年に習得しなければならない29のマイクロサービス知識ポイントの分析?あなたが私のところに来るのがわかりません!

オープニング紹介

マイクロサービス(またはマイクロサービスアーキテクチャ)は、クラウドネイティブのアーキテクチャアプローチであり、単一のアプリケーションは、疎結合で独立してデプロイ可能な多数の小さなコンポーネントまたはサービスで構成されます。これらのサービスは通常
、データベースやデータモデルを含む独自のスタックを持っています
。RESTAPI、イベントストリーム、メッセージブローカーの組み合わせを介して相互
通信します。これらはビジネス機能によって編成され、サービスを区切る線は通常、境界コンテキストと呼ばれます。
マイクロサービスに関する多くの議論は、アーキテクチャの定義と特性を中心に展開されてきましたが、その価値は、かなり単純なビジネスと組織の利点を通じてより一般的に理解できます。

  • コードをより簡単に更新できます。
  • チームは、コンポーネントごとに異なるスタックを使用できます。
  • 単一の機能が過剰な負荷に直面する可能性があるため、コンポーネントを互いに独立してスケーリングできるため、アプリケーション全体をスケーリングする必要があるという無駄とコストを削減できます。

マイクロサービスは、そうでないものでも理解できます。マイクロサービスアーキテクチャの最も頻繁に描かれる2つの比較は、全体的なアーキテクチャとサービス指向アーキテクチャ(SOA)です。
マイクロサービスと全体的なアーキテクチャの違いは、マイクロサービスは、大きくて密結合したアプリケーションの全体的なアプローチとは対照的に、アプリケーションを形成するための多くのより小さな疎結合のサービスで構成されていることです。
マイクロサービスとSOAの違いは明確でない場合があります。マイクロサービスとSOAの間で、特にエンタープライズサービスバス(ESB)の役割に関して技術的な対比を形成することは可能ですが、違いをスコープの1つとして扱う方が簡単です。SOAは、マイクロサービスアーキテクチャがアプリケーション固有である一方で、すべてのサービスが互いに通信して統合する方法を標準化することを目的とした企業全体の作業です。
ここに画像の説明を挿入

テキスト

1. Spring Cloudとは何ですか?

マイクロサービスでは、SpringCloudは外部システムとの統合を提供するシステムです。これは、迅速かつ簡単にアプリケーションを構築できるアジャイルフレームワークです。限られた量のデータ処理に関連して、マイクロサービスアーキテクチャで非常に重要な役割を果たします。
Spring Cloudのコア機能は次のとおりです。

  • バージョン管理/分散構成。
  • サービスの登録と発見。
  • サービスとサービス間の呼び出し。
  • ルーティング。
  • 回路ブレーカーと負荷分散。
  • 分散メッセージング。

2. Spring Bootとは何ですか?

スプリングブートは、マイクロサービスのインタビューの質問の主なトピックです。
新しい機能が追加されると、Springはますます複雑になります。新しいプロジェクトを開始するたびに、新しいビルドパスまたはMaven依存関係を追加する必要があります。つまり、最初からすべてを行う必要があります。Spring Bootは、すべてのコード構成を回避するのに役立つソリューションです。

3. Spring Bootプロジェクトのデフォルトプロパティを上書きするにはどうすればよいですか?

これは、application.propertiesファイルでプロパティを指定することで実行できます。
例えば、

  • Spring MVCアプリケーションでは、サフィックスとプレフィックスを指定する必要があります。これは、application.propertiesファイルに以下のプロパティを入力することで実行できます。
  • suffix-spring.mvc.view.suffixの場合:.jsp
  • prefix-spring.mvc.view.prefixの場合:/ WEB-INF /

第4に、Spring Bootでのアクチュエータの役割

これは、運用環境で実行されているアプリケーションの現在の状態にアクセスするのに役立つ最も重要な機能の1つです。現在のステータスを確認するために使用できる複数のインジケータがあります。また、RESTful Webサービスのエンドポイントも提供します。これを使用して、さまざまなメトリックをチェックできます。

5. Spring BootアプリケーションにSpringセキュリティを実装するにはどうすればよいですか?

実装には最小限の構成が必要です。必要なのは、pom.xmlファイルにスターターを追加するためのspring-boot-starter-securityだけです。また、WebSecurityConfigurerAdapterアプリケーションでセキュリティを拡張しながら、必要なメソッドをオーバーライドするSpring構成クラスを作成する必要もあります。これはいくつかのサンプルコードです:

package com.gkatzioura.security.securityendpoints.config; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
         
@Override    
protected void configure(HttpSecurity http) throws Exception {
    
             
http.authorizeRequests()             
.antMatchers("/welcome").permitAll()             
.anyRequest().authenticated()             
.and()             
.formLogin()             
.permitAll()             
.and()             
.logout()             
.permitAll();     
} 
}

6. Spring Bootはどの埋め込みコンテナーをサポートしていますか?

Javaアプリケーションを作成するときは常に、2つの方法でデプロイでき
ます。外部アプリケーションコンテナーを使用する方法です
コンテナーをjarファイルに埋め込みます。
Spring Bootには、Jetty、Tomcat、およびUndertowサーバーが含まれており、それらすべてが組み込まれています。
Jettyは多数のプロジェクトで使用されており、フレームワーク、アプリケーションサーバー、ツール、クラスターに組み込むことができます。
Tomcat-Apache Tomcatは、組み込みシステムで適切に使用できるオープンソースのJavaServer Pages実装です。
Undertow-柔軟で目立つWebサーバーで、小さな単一の処理プログラムを使用してWebサーバーを開発します。

7.マイクロサービスのエンドツーエンドのテストはどういう意味ですか?

エンドツーエンドのテストでは、ワークフローのすべてのプロセスを検証して、すべてが期待どおりに機能していることを確認します。また、システムがビジネスニーズを満たすために統一された方法で機能することも保証します。

8.セマンティックモニタリングとは何ですか?

アプリケーション全体の監視と自動テストを組み合わせています。セマンティックモニタリングの主な利点は、ビジネスにとってより収益性の高い要因を見つけることです。
ビジネスの観点からは、セマンティックモニタリングとサービスレイヤーモニタリングでマイクロサービスをモニタリングできます。問題が検出されると、より迅速な分離と誤分類を実現できるため、修理に必要な主な時間を短縮できます。サービス層とトランザクション層を分類して、可用性またはパフォーマンスの低下の影響を受けるトランザクションを特定します。

9.サービス検出を設定するにはどうすればよいですか?

サービスディスカバリを設定するには複数の方法があります。私は、最も効率的だと思うもの、NetflixのEurekaを選択します。これは単純なプログラムであり、アプリケーションにはあまり影響しません。さらに、複数のタイプのWebアプリケーションをサポートします。
Eureka構成は、クライアント構成とサーバー構成の2つのステップで構成されます。

プロパティファイルを使用して、クライアントの設定を簡単に行うことができます。clas spathで、Eurekaはeureka-client.propertiesファイルを検索します。また、環境固有のプロパティファイルで、環境によって引き起こされたカバレッジを検索します。

サーバー構成の場合、最初にクライアントを構成する必要があります。完了後、サーバーはクライアントを起動します。クライアントは、他のサーバーを見つけるために使用されます。デフォルトでは、Eurekaサーバーはクライアント構成を使用してピアサーバーを検索します。

10.マイクロサービスアーキテクチャを選択する理由

これは非常に一般的なマイクロサービスインタビューの質問です。準備ができているはずです!マイクロサービスアーキテクチャには多くの利点があります。ここにいくつかあります:

  • マイクロサービスは、他のフレームワークやテクノロジーに簡単に適応できます。
  • 単一プロセスの障害はシステム全体に影響を与えません。
  • 大企業や小規模チームをサポートします。
  • 比較的短時間で独立して展開できます。

11.マイクロサービスでレポートとダッシュボードが必要なのはなぜですか?

レポートとダッシュボードは、主にマイクロサービスの監視と保守に使用されます。この目標を達成するのに役立つ複数のツールがあります。レポートとダッシュボードは次の目的で使用できます。

  • どのマイクロサービスがどのリソースを公開するかを調べます。
  • コンポーネントが変更されたときに影響を受けるサービスを見つけます。
  • 簡単なポイントを提供してください。ドキュメントが必要な限り、ドキュメントにアクセスできます。
  • デプロイされたコンポーネントのバージョン。

12.なぜ人々はマイクロサービスをためらうのですか?

多くの開発者がこの問題を模索しているのを見てきました。結局のところ、マイクロサービスアーキテクトの役割について面接するときに彼らはこの質問をされるので、その欠点を認めることは少し難しいかもしれません。ここにいくつかの良い答えがあります:

  • 多くのコラボレーションが必要です。マイクロサービスには多くのコラボレーションが必要です。異なるマイクロサービスモジュールが異なるチームに分散している場合があり、チームは常に適切な同期を維持する必要があります。
  • 彼らは重いアーキテクチャを構築する必要があります。システムは分散されており、多くのアーキテクチャが関係しています。
  • 運用のオーバーヘッドに対処するには、あまりにも多くの計画が必要です。マイクロサービスアーキテクチャを使用する場合は、運用のオーバーヘッドに備える必要があります。
  • 異種混合のマイクロサービスをサポートできる熟練した専門家が必要です。

13. PACTはどのように機能しますか?

PACTはオープンソースのツールです。これは、消費者とサービスプロバイダー間の相互作用をテストするのに役立ちます。コンシューマーサービスの開発者は、まずサービスプロバイダーとのやり取りのモードを定義するテストを記述します。テストには、プロバイダーのステータス、リクエストの本文、予想される応答が含まれます。これに基づいて、PACTはそれに対してテストを実行するスタブを作成しました。出力はJSONファイルに保存されます。

14.ドメイン駆動設計について話す

主にコアドメインロジックに焦点を当てます。ドメインベースのモデルは、複雑な設計をチェックします。これには、ドメイン関連の問題を解決し、アプリケーションモデルを改善するために、ドメインレベルの専門家と会社レベルで定期的に協力することが含まれます。このマイクロサービスのインタビューの質問に答えるときは、DDDの中核的な基本についても言及する必要があります。彼らです:

  • DDDは主にドメインロジックとドメイン自体に焦点を当てています。
  • 複雑な設計は完全にドメインモデルに基づいています。
  • モデルの設計を改善し、新たな問題を解決するために、DDDは会社の分野の専門家と継続的に協力しています。

15.結合と凝集とは何ですか?

コンポーネント間の依存関係の強さの尺度は、結合と見なされます。優れた設計は、常に凝集度が高く、結合が低いと見なされます。
インタビュアーはしばしば団結について尋ねます。また、測定の別の単位です。それは、モジュール内の要素が統合されたままである程度に似ています。
マイクロサービスを設計するための重要な鍵は、低カップリングと高凝集度の組み合わせであることを覚えておく必要があります。カップリングが低い場合、サービスは他のサービスにほとんど依存しません。これにより、サービスの整合性が維持されます。凝集度が高いと、関連するすべてのロジックをサービスに格納することが可能になります。そうしないと、サービスが互いに通信しようとし、全体的なパフォーマンスに影響します。

16. Oauthとは何ですか?

HTTPサービスでクライアントアプリケーション(サードパーティプロバイダーのFacebook、GitHubなど)を有効にすることにより、リソース所有者のリソースへのアクセスを可能にするオープン認証プロトコル。したがって、あるサイトに格納されているリソースを、資格情報を使用せずに別のサイトと共有できます。

OAuthを使用すると、Facebookなどのサードパーティは、エンドユーザーのアカウント情報を安全に保ちながら(ユーザーのパスワードを使用または公開せずに)使用できます。必要な情報にアクセスするためのトークンをサーバーに提供する一方で、ユーザーに代わる仲介者のようなものです。

17.なぜマイクロサービスコンテナーが必要なのですか?

マイクロサービスベースのアプリケーションを管理するには、コンテナーが最も簡単な選択です。ユーザーが個別に展開および開発するのに役立ちます。Dockerを使用して、マイクロサービスをコンテナイメージにパッケージ化することもできます。追加の依存関係や作業がなければ、マイクロサービスはこれらの要素を使用できます。

18. RESTfulマイクロサービスにアクセスする方法は何ですか?

よく尋ねられるもう1つのマイクロサービスインタビューの質問は、RESTfulマイクロサービスにアクセスする方法です。これは、次の2つの方法で実行できます。

  • 負荷分散されたRESTテンプレートを使用します。
  • 複数のマイクロサービスを使用します。

19.マイクロサービステストの主な障害は何ですか?

欠点と言えば、マイクロサービスをテストするときに直面する課題を中心に展開する別のマイクロサービスインタビューの質問です。

統合テストのテストケースの記述を開始する前に、テスターはすべてのインバウンドプロセスとアウトバウンドプロセスを完全に理解している必要があります。独立したチームがさまざまな機能を開発している場合、コラボレーションは非常に困難な作業になる場合があります。完全な回帰テストを実行するための自由時間のウィンドウを見つけることは困難です。マイクロサービスの数が増えると、システムも複雑になります。モノリシックアーキテクチャからの移行中、テスターはコンポーネント間の内部通信が中断されないようにする必要があります。

マイクロサービスへの移行時によくある20の間違い

エラーは、開発だけでなく、プロセスの側面でも発生することがよくあります。一般的なエラーは次のとおりです。

  • 多くの場合、開発者は現在の課題の概要を説明できません。
  • 既存のプログラムを書き換えます。
  • 責任、スケジュール、境界は明確に定義されていません。
  • 最初から自動化のスコープを実装して決定することに失敗しました。

21.マイクロサービス設計の基礎は何ですか?

これはおそらく、最も一般的なマイクロサービスインタビューの質問の1つです。この質問に答えるときは、次のことを覚えておく必要があります。

  • スコープを定義します。
  • 低結合と高凝集性を組み合わせます。
  • 一意のIDを持つサービスを作成します。一意のIDは、データベーステーブルの一意のキーと同様に、識別のソースとして機能します。
  • 適切なAPIを作成し、統合プロセス中に特別な注意を払います。
  • データへのアクセスを制限し、必要なレベルに制限します。
  • リクエストとレスポンスの間のスムーズなフローを維持します。
  • ほとんどのプロセスを自動化して、時間の複雑さを軽減します。
  • スペースの複雑さを減らすには、テーブルの数を最小限に抑えます。
  • アーキテクチャを継続的に監視し、時間内に欠陥を修正します。
  • 各マイクロサービスのデータストレージは分離する必要があります。
  • マイクロサービスごとに、独立したビルドが必要です。
  • マイクロサービスをコンテナにデプロイします。
  • サーバーはステートレスと見なされます。

22. Spring MVCアプリケーションでのWebMvcTestアノテーションの用途は何ですか?

WebMvcTestアノテーションは、Spring MVCアプリケーションの単体テストに使用されます。ToTestControllerを起動したいだけです。この単体テストを実行すると、他のすべてのコントローラーとマップは開始されません。

@WebMvcTest(value = ToTestController.class, secure = false):

23.境界コンテキストとは何ですか?

境界付きコンテキストは、ドメイン駆動設計のコアモードです。DDD戦略設計部門の焦点は、大規模なモデルとチームを扱うことです。DDDは、大きなモデルをさまざまな境界コンテキストに分割し、それらの相互関係を明確にすることで、モデルを扱います。

24. 2要素認証にはどのような種類がありますか?

2要素認証を実行するには、3種類の資格情報が必要です。

  • パスワード、パスワード、画面ロックモードなど、知っていることが1つあります。
  • OTP、電話、ATMカードなどの物理的な資格情報、つまり、外部またはサードパーティのデバイスにあるあらゆる種類の資格情報。
  • 音声認証や指紋やアイスキャナーなどの生体認証などの物理的なアイデンティティ。

25.クライアント証明書とは何ですか?

認証された要求をリモートサーバーに送信するためにクライアントシステムで使用されるデジタル証明書は、クライアント証明書と呼ばれます。クライアント証明書は、多くの相互認証設計で非常に重要な役割を果たし、要求者の身元を強力に保証します。

26.コンウェイの法則とは何ですか?

コンウェイの法は、「設計システムの組織の設計は、組織内および組織間のコミュニケーション構造と同等である」と述べています。
面接担当者は、コンウェイの法とマイクロサービスの関係など、反マイクロサービスのインタビュー質問をするかもしれません。一部の疎結合APIはマイクロサービスアーキテクチャを形成します。この構造は、小さなチームが自律コンポーネントを実装するのに非常に適しています。このアーキテクチャにより、組織は作業プロセスを再編成するときに、より柔軟になります。

27. Spring Bootアプリケーションのロギングを設定するにはどうすればよいですか?

Spring Bootは、Log4J2、Java Util Logging、およびLogbackをサポートしています。通常、コンソール出力用に事前構成されています。これらは、application.propertiesファイルでlogging.levelを指定するだけで構成できます。

logging.level.spring.framework=Debug

28.マイクロサービスでセキュリティテストをどのように実行しますか?

各パーツを個別にテストする必要があります。3つの一般的な手順があります。

  • コードスキャン-コードのどの行にもエラーがなく、コピーできることを確認します。
  • 柔軟性-システムの要件に合わせて調整できるように、セキュリティソリューションは柔軟でなければなりません。
  • 適応性-セキュリティプロトコルは、ハッカーやセキュリティ侵害からの新しい脅威に対処するために柔軟で更新する必要があります。

29.べき等とは何ですか?それはどのように使用されますか?

べき等性とは、タスクを繰り返し実行しても、最終結果が同じまたは類似したシナリオを指します。
べき等性は主にデータソースまたはリモートサービスとして使用され、複数の命令セットを受信した場合は、1つの命令セットのみを処理します。

オフトピック

これで、マイクロサービスに関するこの共有の終わりです。スペースの制限により、コンテンツのほんの一部しかリリースされていません。最近では、仕事を見つけるのに最適な時期です。主要なベンダーからマイクロサービス関連の質問とインタビューの質問をもっと受けたいです。ここをクリックして、情報、コードを取得できます。qf
以下は、一部の情報のスクリーンショットです(すべての情報はドキュメントに統合されており、pdfは圧縮およびパッケージ化されています)。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/S11035762/article/details/108597794