1
/
5

マイクロサービスアーキテクチャにおけるサービス分割の難しさ

大阪オフィスの移転を機に、生活リズムも絶賛見直し中の @kawanamiyuu です。

今回は昨年度から取り組んでいる、通称「かみせんプロジェクト」の今期の成果(の一部)についてご紹介します。

かみせんプロジェクトとは

かみせんプロジェクトとは「開発の未来に先手を打つプロジェクト」の略称で、2017 年度に取り組みが始まりました。

ミッション

『継続的に新しいことに取り組み、組織要望に対して迅速にトレンド技術で応えることができるようになる』

目標

具体的には以下の実現のための技術検証や知見獲得を、社内システムのマイクロサービス化を題材に行っています。

  1. ソフトウェア規模に比例した開発効率低下の軽減
  2. 無停止デプロイ、不具合発生率低下などの高可用性の実現
  3. 現行ソフトウェアからの段階的な移行の実現

社内システムのマイクロサービス化

社内システムの概要

  • LAMP (PHP) で構築されたモノリシックな Web アプリケーション
  • エンジニア、経理担当者などが、社内からのみアクセスして利用する
  • プロジェクト管理機能、開発稼働集計機能などを提供する

かみせんプロジェクト開始前

  • すべての機能がモノリシックなアプリケーションとして提供されている


2018 年 9 月現在

  • モノリシックなアプリケーションから、一部の機能をマイクロサービスとして切り出した
  • マイクロサービスは AWS 上でコンテナとして動作している


マイクロサービスの結果整合性

マイクロサービス化を進めるとバックエンドで複数のサービスが協調して動作することになり、これまではデータベースのトランザクション機能により担保されていたデータの一貫性について別のアプローチが必要になります。

かみせんプロジェクトの今期の取り組みの 1 つとして、マイクロサービスの結果整合性について調査や技術検証を行いました。

課題感

  • 複数に分割されたサービス間のデータの一貫性をどのように保てばよいか
  • データ不整合が生じた場合、どのようにリカバリーすればよいか

検証内容

  • ある機能を 2 つのサービス (図中の project-service
    function-service
    ) として切り出す
    • モノリシックなアプリケーションを、複数(社内での利用実績がない、あるいは少ない)の言語やフレームワークを利用して分割することも技術検証の一環
  • あるリソースを新規登録する際に、従来 1 トランザクションで行っていた処理 (SQL) の一部を、今回切り出したサービスの API 呼び出しに置き換える
  • データの整合性はリトライ処理で担保する

検証結果(得られた知見)

サービスの分割は難しい

  • 大前提としてサービスをまたぐトランザクションが発生しないようにサービスを分割すべき
  • 今回のように同一トランザクションでデータ更新をしたい処理であれば、サービス同士が疎結合ではないということであり、そもそもサービス分割の粒度が正しくない可能性が高い
  • ドメインの知識が乏しい状態では適切なドメイン境界を認識することはきわめて難しい
  • ドメインの知識が増えた中盤になってから分割し直すことも、別の意味で難易度が高そう
    • 自動テストなど品質担保の仕組みや、作り直しに対する組織の理解の度合いで実現可能性が大きく変わる

結果整合性の担保は難しい

  • 今回のようにリトライ(有限回数)で整合性を担保する場合、すべて失敗する可能性もゼロではなく、最終的にログなどから手動リカバリーできる仕組みを考えておく必要がある
  • 今回は時間の都合で検証していないが、メッセージキューを利用したイベントソーシングなアーキテクチャも検討したい
  • 分散トランザクション(二相コミットなど)の手法を使う選択肢もあるが、システムの複雑さや難易度が一気に増加しそうで現実的ではなさそう

最後に

  • マイクロサービスの分割や結果整合性に関する知見は、情報としては世の中にありますが、実際に自分の手を動かして検証することで、改めてその課題感を実感するとともに、現実のサービス開発にマイクロサービスアーキテクチャを適用する難しさも明らかになりました
  • ラクスでは現在、HR(人事労務)領域を対象した新サービスの開発に取り組んでおり、この「かみせんプロジェクト」で得られた知見が現実のプロジェクトで活かされようとしています。例えば

ラクスでは現状に満足せず開発の未来に先手を打っていける仲間、HRTech に興味があるエンジニアを募集しています!


Webエンジニア
業務効率化システムで、中小企業にITの力を注ぐ開発エンジニアを募集!
株式会社ラクスは、クラウド事業(ASP)を展開するIT企業です。 延べ42,000社以上のお客様に、業務効率化システムやソリューションを提供しています。 開発サービス: ・楽楽精算 ・楽楽明細 ・メールディーラー ・チャットディーラー ・働くDB ・配配メール ・クルメル など 「IT技術で中小企業を強くします。」というミッションを掲げ、 資金面や人材面で制約を抱える多くの中小企業に対して、システムやクラウドといったITの力を使い、その可能性を100%発揮してもらえるよう、貢献していきたいと考えています。 メール共有・管理システムのメールディーラーや経費精算システムの楽楽精算から始まり、中小企業で必要なシステムをワンストップで提供できるよう様々なラインナップを開発。 導入後も適切なクオリティー・セキュリティー・サポートを維持し、システムを導入いただいた企業から高い評価を獲得しています。 2014年にはベトナムに、クラウドサービスの開発拠点「Rakus Vietnam Co.,Ltd.」を設立。開発体制をワールドワイドに展開しています。
株式会社ラクス
株式会社ラクスでは一緒に働く仲間を募集しています
今週のランキング
株式会社ラクスからお誘い
この話題に共感したら、メンバーと話してみませんか?