Kafkaとルールエンジンを活用した決済システム構築の紹介 | 株式会社IM Digital Lab(アイムデジタルラボ)
こんにちは!アイムデジタルラボの採用広報担当です。今回は、最近リリースされた決済システムについて、エンジニアメンバーに記事を書いてもらいました。ぜひ最後までご覧ください!プロジェクトの背景三越伊...
https://www.wantedly.com/companies/company_129530/post_articles/530789
こんにちは! アイムデジタルラボの採用広報担当です。三越伊勢丹では社内のシステム間連携をApache Kafka(以下Kafka)による非同期ストリーミングで行っています。Kafkaの運用を効率化するために、どのようなツールを使っているのか、について記事にまとめました。ぜひ最後までご覧ください!
以前、Kafkaを使った決済システムリリースについて記事をまとめていますのでそちらも併せてご覧いただけると嬉しいです。
▼前回の記事はこちら
三越伊勢丹では、一部のデータ連携では非同期ストリーミングを利用しており、その実現のためにKafkaを導入しています。Kafkaは、リアルタイムのイベント駆動型アプリケーションの開発を可能にするオープンソースの分散ストリーミング・プラットフォームです。
非同期ストリーミングの導入目的としては2点です。1点目はデータをリアルタイムに処理することができる点と、システム間の結合度を疎に保つことができる点です。社内で使われている各システムは稼働状況や処理能力が異なりますが、Kafkaをデータ連携に利用することで、見通しの良い仕組みを実現できる環境を作ることができます。Kafaで連携をしていたメッセージは当初10トピック(Topic)から開始され、現在では50トピック以上になっており、今後さらに数が増えることが予想されます。
Kafkaを使いこなすのは適切なパラメータ設定が必要です。ところが、Kafkaに付属している管理ツールでは、専用のコマンドを覚えるところから始める必要があり非効率でした。そこで、開発者にとっての運用負担を下げ、本来の開発に集中できるよう、Kafkaの操作や設定変更を容易に行える管理ツールの選定、導入を行いました。
選定にあたって注意したのがセキュリティとガバナンスです。三越伊勢丹は小売業なので売上データや会員データには個人情報が含まれている。そうしたデータの扱いには慎重になる必要があります。そこでユーザー単位で権限制御が可能であることが必須でした。
管理ツールを考えるためにも、あらためてKafkaのマネージドサービスから再検討しました。Kafkaの場合、管理ツールも含めて、エンタープライズグレードの運用に耐えられるマネージドサービスも存在しています。しかし、三越伊勢丹では、これからKafkaに取り組もうとしている状況なので、あまり、大きな投資は避けたいという思いがありました。
その点で、AWSのAmazon MSK Serverless (Amazon Managed Streaming for Apache Kafka)であれば、完全な従量課金制で小規模のスタートには最適でした。また、MSKの認証とTopicなど各種リソースへのアクセス制御にAWSのIAMが利用可能なのも大きなメリットでした。ただし、MSKではKafkaの管理ツールが提供されていません。そこで、Kafkaのマネージドサービスは MSK Serverless を選択し、管理ツールはオープンソースの管理ツールを導入することにしました。
管理ツールとして、初期はAKHQを試用しましたが、必要な権限制御ができないことから、途中でKafka-UI(UI for Apache Kafka)に変更しました。実はKafka-UIは、初期検討時には未成熟で候補から外れていたのですが、次の見直し時期には非常に洗練されていました。
ただし、MSK Serverlessの導入時期が一般提供(2022/4/28)の直後になったこともあり、各種周辺ツールの対応が間に合っていませんでした。
具体的なところでは、IaCツールTerraformのAWS Provider( https://github.com/hashicorp/terraform-provider-aws )がMSK Serverless に未対応だったためリソースの作成が自動化できませんでした。
そのため、MSK Serverless をサポート可能にするための修正案として、Pull Requestを作成しました。
実際にはメンテナの対応方針と齟齬があったため修正自体を直されてしまいましたが、Terraform での MSK Serverless 対応を後押しするための一助となったのではないかと考えています。
初期にAKHQを導入検討していた際も、いくつかのPull Requestを作成しました。例えばAmazon MSKへのアクセスをするための依存ライブラリの追加と、接続のためのドキュメントを整備するPull Requestを作成し、採用されました。
また、MSK Serverless に接続するとうまく動かない点がいくつかありましたので、ソースコードを読みながら該当箇所の修正を行い、Pull Requestを作成し、採用されました。
さらに、AKHQでGithub( github.com )認証をサポートするための修正を作成し、採用されました。
Kafka-UIでも、バグを見つけたため、修正のPullRequestを作成し、採用されました。
オープンソースの良い点は、コードが公開されており、問題が発生したときなどに自分たちで直すチャンスが与えられている部分なので、積極的に活用し、かつ貢献する姿勢で取り組んでいます。
MSK Serverlessの場合はでき上がったばかりのサービスだったため、公式ドキュメントにも書かれていないような小さなことを、ひとつひとつ確認しながら疑問を解消していく必要がありました。運用で問題が発生したときにオープンソースの管理ツールの問題なのか、MSK Serverless側の問題なのか、粘り強く検証したことで双方について知識が深まったと思います。
現在、社内でKafka-UIを利用する際には権限付与の申請をして、設定反映後に使用してもらう流れになっていますが、申請からKafka-UIを使うまでのフローを自動化し、さらなる運用負荷の軽減を目指しています。また、ツールは常に新しいものが出てきているので、Kafka-UIよりも使いやすいものがあった場合は、より良いツールの検討も必要になると思います。選定したツールで満足することなく、常に最新情報をキャッチアップしながら最適化を進め、開発者にとってより使いやすく、よりモダンな環境を引き続き目指していきたいと考えています。
三越伊勢丹のDXを推進する組織として、テクノロジーを積極的に活用するアイムデジタルラボ。現場の状況を俯瞰し、OSSも積極的に活用しながらシステムのモダン化を進め、三越伊勢丹らしい未来の買い物体験を提供することに挑戦しています。上記でお伝えしたようなOSSへの変更要求に時間を割くことも業務内で認められていますし、何よりも膨大データを扱う環境を整備することは大きなやりがいにつながります。
Kafka導入から2年が経ち、培われてきたナレッジを定型化することでグループ内での横展開も進み、先日はグループ会社IMSの新卒メンバーに対してKafkaの研修を行いました。OSSに関わりながら仕事をしたい、エンジニアとして開発に携わりながらOSSの開発に貢献する仕事に興味がある、という方は是非一緒にお仕事しましょう。
いかがでしたでしょうか? アイムデジタルラボでは、新しい技術を活用したDXの推進をしています。ご興味のある方は、ぜひお気軽にご応募ください!