2020年10月13日

エンタープライズBaaS【Hexabase】のアーキテクチャーと技術的な特徴

カテゴリー:

タグ:, ,

エンタープライズBaaS【Hexabase】では、企業ユーザーや開発パートナーが、クラウド指向の企業システムを安心して開発・運用できるよう、高度な 独自の システム基盤を構築・提供しています。

HexabaseのCTO兼チーフエンジニアであるJeane Paul Banayat Soliva(ソリバ・ジェーン・ポール・バナヤット)が、Hexabaseのアーキテクチャと技術的な特徴について説明してくれました。

モダンなマイクロサービスアーキテクチャーを採用

Hexabaseのアーキテクチャは、コンテナ化、kubernetes、NoSQLといった多くのアーキテクチャ上の条件を念頭に置いており、そのほとんどはサービス指向アーキテクチャ(SOA:Service Oriented Architecture)の概念に基づいた、マイクロサービスアーキテクチャを採用しています。

ご存じのとおり「SOA」は、利用者側から見たソフトウェアの機能単位である「サービス」(Service)の組み合わせによってシステム全体を構築していく手法です(ただし、乱用され気味で、人によって意味合いが変わってくることがあります)。

Hexabaseでは、システムの信頼性・拡張性・パフォーマンス・費用対効果・保守性を高めるため、SOAという考え方により、サービスコンポーザビリティ・自律性・スケーラビリティ・サービスディスカバリー・ステートレス性などを実現しています。

Hexabase architecture
Hexabase archtecture diagram

Hexabaseの実装は、システム開発者にとって使い慣れたものになっており、お客様の既存システムとの連携や様々な機能を利用できます。

実装には、Go言語などシンプルかつ静的で、費用対効果の高いプログラミング言語を使用しています。そして、 通常は何年もかかるシステム開発を、 開発負荷の低いプログラミング言語やツールを使用することで、数ヶ月で実現しました。少ないコードでシステムを記述することで、 より多くのことを行えるようになっており、3~5年後でも安心して動作する安全な環境を提供しています。

実際に、中小規模から大企業までテスト済みのソリューションで課題を解決し、優れた結果を得ています。

Microsoft Azure上で稼働

Hexabaseは、Microsoft Azure上で稼働しています。これが、Hexabaseの安定性と成長をさらに支えてくれています。Hexabaseのシステムは、次のような技術的な特徴を持っています。

セキュリティ

Microsoft Azureプラットフォームのセキュリティはとても優れています。ネットワークのセキュリティを高めるために必要な構成は少なくなります。必要なポリシーを選択して、Azure Active Directoryでロールとグループを定義するだけで、あとはサービスが、すべての設定と定義を行います。

このおかげで、企業システムに不可欠な高度で信頼性の高いセキュリティ環境を実現できました。

NoSQL DB

私たちは、NoSQL時代にこのサービスを構築し、さまざまな役割と責任のために複数のデータベースを統合しています。 そして、 マイクロサービスの機能に合わせて、ツールを使い分けています。

ひとつは、グローバルなスケーラブルなドキュメント指向データベースMongoDBです。これには、Azure Cosmos DBを利用しています。Azure cosmos DBのmongodb APIを使用することで、サービスを素早く切り替えて、高可用性を実現できました。

キャッシュにはインメモリベースのRedis、リレーションにはArangoDB、ユーザー情報とトランザクションにはMySQLを採用しています。

データ処理の分離

Hexabaseでは、当初から、さまざまなモデルをさまざまなマイクロサービスに分離するようにしてきました。つまり、「process/import csv」と言うとき、それはインポーターで行われます。 通知の場合、notificatorがプロセスを処理します。そして、アプリが成長するにつれて、どの部分が処理を行うかが明確になっていきます。

Serverless Computing

成長する企業ではコストが大きな問題になります。Serverless Computingを実現するAzure Functionのおかげで、顧客向けAPIを低コスト、低メンテナンス、高性能、高可用性で実現できました。以前は、サーバーレス向けのカスタムビルドプラットフォームが必要でしたが、Azure Functionsを使用すると、これらの機能を簡単に移動でき、サーバーの起動と展開を再度実施する必要がありません。また、機能の呼び出しごとに課金されるため、コストを大幅に削減できます。

kubernetes

Azure Kubernetes Serviceにより、kubernetesを簡単に管理できるようになりました。 CLI、Infrastructure-as-a-codeツール、非常に使いやすいAzureポータルを使用することで、クラスターを簡単にプロビジョニングできます。自動化された監視・修復・スケーリングを使用して、インフラストラクチャのメンテナンスとアップグレードを最小限に抑えています。

さまざまなマイクロサービスに責任を分散

データ処理の分離とも関係しますが、kubernetesを使用しているおかげで、このツール/機能を別の場所/マイクロサービスに移動・配備できるという理想的な環境が実現できました。その結果、ダウンタイムを最小限にし、機能の向上を独立して実施できます。

私たちは、パートナーや顧客が安定した結果を得られるよう、エンタープライズ品質のAPIを開発し、一般の企業ユーザーやパートナーに提供しています。

このおかげで、システムを利用する企業は、その負荷やユーザー数の増加などを気にする必要がありません。たとえば、朝の業務開始時間や、月末などの締め切り時にシステムが遅くなる、重くなるといった弊害を避けることができます。ユーザー数も、当初は数10名から始めて、数十万人まで連続的に拡大することができるでしょう。

システム開発者は、信頼性・拡張性・パフォーマンス・費用対効果が高く、最上のAPIを備え、簡単に使うことのできる、今後何年にもわたって業界をリードする独自のスケーラブルな企業システムを構築できるでしょう。それが、システム開発企業に、新たな競争力をもたらします。

キーワード解説

役に立ったら、記事をシェアしてください

最新のコラム