[OCI]Micronautによるメッセージドリブン マイクロサービス&モノリス - Part 3:Oracle Streaming Serviceへの切り替え (2021/02/01)
Micronautによるメッセージドリブン マイクロサービス&モノリス - Part 3:Oracle Streaming Serviceへの切り替え (2021/02/01)
https://blogs.oracle.com/developers/message-driven-microservices-monoliths-with-micronaut-part-3%3a-switching-to-oracle-streaming-service
投稿者:Todd Sharp
これまでのシリーズ(パート 1、パート 2)では、最新の Web アプリケーションにおける
メッセージングに関連する「方法」と「理由」の両方を取り上げてきました。
E コマースの例を使ってメッセージングの必要性を説明し、ローカルの Kafka ブローカーを起動して、
Kafka ブローカーを介して通信する「Order」サービスと「Shipping」サービスの両方を作成することについて詳しく見てきました。
もしまだこの2つの記事を読んでいないのであれば、ここに進む前に読んでおくことを強くお勧めします。
読み終わった?よかった、これでスピードアップできましたね!
このシリーズの自然な次のステップは、このアプローチをクラウドベースのマイクロサービス(またはモノリシック)の
デプロイメントにどのように適用するかということだと思います。いつものように、アプローチはチームの好みに大きく依存します。
もしあなたのチームに強力なDevOpsがあり、手を汚すことを恐れていないのであれば、
適切なVMリソースを用意して、それをインストールして保守することで、クラウド上で独自のKafkaブローカを展開することを選択してもいいでしょう。
他のチームはこのアプローチを敬遠するかもしれませんが、メンテナンスのためのリソースが増えることを意味するので、
それは完全に理解できます(有料であることは言うまでもありません)。
独自のブローカーを実行しないようにすることを選択した人のために、利用可能な素晴らしいオプションがあります。
Oracle Streaming Service(OSS)です。OSSは、メッセージを消費し、生産するための完全に管理され、
スケーラブルで、耐久性があり、安全なサービスです。
これはマーケティングの話のように聞こえるかもしれませんが(たぶん私たちのマーケティングページからコピーしたものだから)、
本質的には、ここで話しているのは、セットアップやメンテナンスの手間をほとんどかけずに、
Kafkaメッセージングブローカーのすべての利点を提供するマネージドサービスです。
もちろん、この時点での最初の反対意見は、通常、アプリケーションコードをプロプライエタリなSDKにしっかりと結合することで、
「ベンダーロックイン」を恐れている人たちからのものです。
これは完全に有効な懸念ですが、サードパーティ製のAPIを使用したり、独自のRDBMSシステムを使用したりするときには、常にこのようなことをしていることを主張したいと思います。
OSS は Kafka API との互換性を提供しているので、設定を少し変更するだけで OSS を利用するようにOrderやShippingサービスを変更することができます。
OSS は Kafka API との互換性を提供しているからです。
注: このトピックについては以前の記事で詳しく書いています。
したがって、私はあなたのストリームやトピックを設定する方法については、あまり詳細に行くことはありません。
それらの詳細については、以前の記事をお読みください。
Oracle Streaming Serviceを使用するためにサービスを切り替える
この上のメモを見逃した場合は、ストリームとトピックの設定についての情報はこちらのブログ記事を参照してください。
これらのステップを経て、KAFKA_SASL_JAAS_CONFIGに環境変数を設定したら、次の変更を加えた新しい設定ファイルを
resources/application-oss.ymlに作成する準備ができました (必要に応じてサーバURLのリージョンを更新してください)。
kafka: bootstrap: servers: streaming.us-phoenix-1.oci.oraclecloud.com:9092 security: protocol: SASL_SSL sasl: mechanism: PLAIN jaas: config: ${KAFKA_SASL_JAAS_CONFIG} |
サービスを実行できるようになりました。
$ ./gradlew run -Dmicronaut.environments=oss
あなたのサービスは、ローカルのKafkaブローカーの代わりにOSSを利用するようになりました!
いや、本当に、それだけでいいのです。ローカルでいくつかの「Order」を行った後、
サービスが以前と同じように動作することを確認できます。
必要であれば、Oracle Cloud コンソールを介してメッセージを確認することもできます。
order-topic
shipping-topic
まとめ
この記事では、クラウドでのメッセージングのオプションについて説明し、
Oracle Streaming Serviceを使用することが有効で賢い選択である理由を見てみました。
次に、以前のEコマースのOrder・Shippingマイクロサービスでは、ローカルのKafkaブローカーをOSSに置き換えました。
この記事で使用したコードをGitHubでチェックしてみてください。
- https://github.com/recursivecodes/shipping-svc-kafka
- https://github.com/recursivecodes/order-svc-kafka
コメント
コメントを投稿