マイクロサービスによる銀行インフラの構築 - QCon London Q&Aより

マイクロサービスによる銀行インフラの構築 - QCon London Q&Aより

Monzoのマイクロサービスの数は、この数年で100から1,600にまで増加し、さらに増え続けている。マイクロサービスは責務が増えると分割され、密結合すると統合される。エンジニアはコードジェネレーションを使って自身のサービスを生成し、デプロイし、スケールアップし、監視することができる。

Monzoのマイクロサービスの数は、この数年で100から1,600にまで増加し、さらに増え続けている。マイクロサービスは責務が増えると分割され、密結合すると統合される。エンジニアはコードジェネレーションを使って自身のサービスを生成し、デプロイし、スケールアップし、監視することができる。

Monzo(訳注:英国のオンライン銀行)のエンジニアであるMatt Heath、Suhail Patel両氏がQCon London 2020で、Monzoのバンキングインフラストラクチャの構築、運用、メンテナンスについて講演した。

その中でPatel氏は、新たなマイクロサービスを開発する時に、エンジニアがフィードバックを求める方法について説明した。

当行の文化は非常にフィードバック指向です。解決しようとする問題の概要に技術的ソリューションの提案を加えた提案書をエンジニアが作成し、提出します。提案書は社内全体に公開されます。これにより、提案されたインターフェースセットに対するフィードバックの提供と、広範なコンテキストによる賛同を獲得する機会を得るのです。将来的に入社する技術者に対して優れたドキュメントを提供する、という効果もあります。

マイクロサービスによってMonzoが獲得した最大のメリットは組織的な柔軟性だ、とPetel氏は言う。

当行のサービスは、理解の容易なサイズに細分化されています。サービスの所有権は明確に定義されていますが、企業の目標に基づいて流動的にもなります。過去2年間で、Monzoは大きく成長しました。その結果、既存チームの構造や新チームの編成に大きな変化が起きているのです。

InfoQは今回、MonzoのバックエンドエンジニアであるSuhail Patel氏にインタビューして、Monzoがマイクロサービスを使用する理由、マイクロサービスの形式、多数のマイクロサービスを伴うシステムの管理、マイクロサービスによって得たメリットなどについて聞くことができた。

InfoQ: Monzoがマイクロサービスの採用を決定した理由を教えてください。

Suhail Patel: 当行のミッションは、世界最高の企業銀行口座と当座銀行口座を構築し続けることです。設立当初より、当行のテクノロジ選択は、その目標を促進するものである必要がありました。他所で大規模システムのスケールアップを経験した後だったため、当行では最初からマイクロサービスを選択していました。

Monzo Betaがローンチされた時には、前払い口座(pre-paid account)をサポートする100近いマイクロサービスが存在していました。2017年に銀行免許を取得し、完全な当座預金サービスを構築しました。それ以来、多数のユーザ向け機能を開発し、さまざまな支払いネットワークとのインテグレーション(その多くは社内開発です)を行っています。この豊富な機能セットを提供するために、サービスの数は1,600以上にまで増えました。

InfoQ: Monzoでは、マイクロサービスをどのように利用しているのでしょう?

Patel: マイクロサービスにビジネスロジックの薄いレイヤを配置し、バックにあるコアライブラリと抽象化を各サービスが共有する、という形式です。サービスの99パーセントがGo言語で記述されており、当行のコアKubernetesプラットフォーム上で運用されています。

ツーリングでは、標準化を大きく取り入れています。サービスのエンジニアリング方法の違いを最小限にして、強化したトップレベルライブラリのセットを活用することがその目標です。エンジニアがサービスを記述する上で必要とするものはすべてツールによって生成し、潜在的なバグの原因をチェックする静的解析をコンパイル時に行っています。共有ライブラリにフックすることで、ほとんどの場合において、サービス特有のコードを1行も変更することなく、プラットフォームチームによる基盤実装の改善やマイグレーションの実施が可能になっています。

InfoQ: マイクロサービスが単一責務であることや、インターフェースが十分に定義されていることは、どのように保証しているのでしょうか?

Patel: プラットフォーム側としては、マイクロサービスのビルディングブロックがシームレスに相互接続できるように、ガイダンスやツールを提供しています。最終的なインターフェースバウンダリの判断は、サービスの実装と状態メンテナンスを担当するチーム内で行います。

当行のプロダクトは常に変わっているので、その時点で100パーセント正確なインターフェースというものはありません。責務が拡大したマイクロサービスが分割されたり、あるいは密結合や相互依存性のあるマイクロサービスの統合が提案がされることもよくあります。こういった変更を行う場合にも、技術的な問題はほとんどありません。

architecture code generation qcon ケーススタディ デベロップメント カルチャー&手法 ニュース

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

Static Code Analysis: What It Is? How to Use It?

Static code analysis is a method of debugging by examining source code before a program is run. It's done by analyzing a set of code against a set (or multiple sets) of coding rules. Static code analysis and static analysis are often used interchangeably, along with source code analysis.

Bar Code Generator In Laravel 7.x

Laravel 7.x, 6 QR/Bar code generate. Here you will learn, how you can generate QR/Bar codes in laravel projects. Also sent in it on mail/SMS.

How to Generate QR Code using PHP, QR Code generator

In this article, I will explain you to easily create QR code in any PHP application. Please follow the below steps to integrate it. You can view the demo and download the complete working scripts from our repository. How to Generate QR Code using PHP, QR Code generator

Building a Banking Infrastructure with Microservices: QCon London Q&A

In a few years, the number of microservices has grown from 100 to 1600 at Monzo, and it continues to grow. Microservices are split when responsibilities grow, or merged when services are tightly coupled. Engineers can generate, deploy, scale and monitor their own services using code generation.

How to Find the Stinky Parts of Your Code (Part II)

There are more code smells. Let’s keep changing the aromas. We see several symptoms and situations that make us doubt the quality of our development. Let's look at some possible solutions.