新規構築や移行時のリスクを軽減、「ストラングラーパターン」とは?:特集:マイクロサービス入門(5)
モノリシックなサービスをマイクロサービス化する際、どのように移行させればいいのか。オイシックス・ラ・大地の川上徹氏がOisixのマイクロサービス移行に当たって採用したアプローチと開発プロセスを紹介します。
今回は、ECサイトのOisixをマイクロサービスアーキテクチャへ移行するに当たって採用したアプローチを紹介する。OisixはJavaによるServletベースのWebアプリケーションで、画面表示にはJSP(JavaServer Pages)を用いている。このシステムをマイクロサービス化するに当たって、以下の構成になるよう目指した。
- バックエンドの業務ロジックを全てステートレスな「RESTful API」として実装する
- フロントエンドの実装をアプリケーションサーバから分離する
- 迅速にサービスを開発するため、アーキテクチャや開発プロセスを整備する
システム移行のアプローチ
まず前提として、別のシステムとして新規にスクラッチで構築するのではなく、既存のサイト、業務を回しながら段階的に移行するアプローチを採用した。
新しいアーキテクチャを採用するに当たって技術的なリスクがあることはもちろん、稼働していないシステムの開発のためにチームを長期間維持するコスト面のデメリットも大きく、事実上不可能と判断したためだ。
ストラングラーパターン
「システムを段階的に移行する」ためのアプローチとして採用したのがストラングラーパターンだ。既存のアプリケーションと新しいアプリケーションを振り分ける「ストラングラーファサード」というレイヤーを設け、機能の特定部分を新しいアプリケーションに徐々に置き換えながら機能を移行する手法だ。
Oisixでは、ストラングラーファサードに、以前より利用していたALB(Application Load Balancer)サービスとAPI Gatewayサービスを利用した。
ALBサービスを用いて新規アプリケーションに対するルーティングを制御し、API Gatewayサービスを用いてRESTful APIとして開発するアプリケーションに対するルーティングを実装した。
同一ドメインに対するリクエストをパスに応じて振り分けることで、フロントエンドのアプリケーションサーバからの分離と業務ロジックのAPI化を段階的に実施できるようにした。
パイプラインファースト
昨今「パイプラインファースト」という言葉を聞くことがある。アプリケーションを開発する際、まずCI/CD(継続的インテグレーション/継続的デリバリー)パイプラインを整備するというものだ。これはマイクロサービスアーキテクチャを用いて開発する際にも重要なアプローチだと言える。
マイクロサービスアーキテクチャを採用して変更に強いシステムを目指すのは、アプリケーションに対して何度もアップデートしたり新機能を追加したりする必要があるからだ。リリースするときの「手動テスト」や「手動デプロイ」といったものを極力減らさないと工数が増えてしまい、開発スピードを落としてしまう恐れもある。自動テストや自動デプロイを取り入れたCI/CDパイプラインを構築することで、マイクロサービスアーキテクチャのメリットを高められるわけだ。
どの企業でも、新しいアーキテクチャを採用する際にはPoC(Proof of Concept:概念実証)を行ってから導入を進めると思うが、その際にはぜひCI/CDパイプラインも検証項目に含めることを推奨したい。
開発者向けのアプローチ
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ダイソーが6年でIT内製化、マイクロサービス化、サーバレスに成功した理由
アイティメディアが開催した「ITmedia DX Summit 2019年秋・ITインフラ編」の特別講演にダイソーの丸本健二郎氏が登壇。内製化によって、データ管理基盤の最適化、高度化を図ったいきさつと結果について講演した。 - 「こんなのクラウドネイティブじゃない」と思うこと
本連載では、2019年7月の「Cloud Native Days Tokyo 2019」でCo-chairを務めた青山真也氏と草間一人氏に、クラウドネイティブに関してじっくり語ってもらった対談の内容を、4回に分けて掲載している。今回は最終回として、「『こんなのクラウドネイティブじゃない』と思うこと」をお届けする。 - DXも台無しにしかねない日本企業の「ソーシング問題」――「内製化が難しい」なら、どう戦うか?
デジタルトランスフォーメーション(DX)の潮流が高まる中、社会全体で「イノベーション」や「スピード」といった要素が注目されている。だが、いくら「新たな価値」を生み出したところで、それがビジネス/サービスである以上、信頼に足る品質を担保していなければ意味がない。特に内製が難しいトラディショナルな企業にとっては、一般的なIT活用でもDXにおける価値創出でも、社外の開発・運用パートナーと組むことが不可欠となる。そうした中でも、今のスタンスのままで本当に「ビジネス価値」を生み出すことができるのだろうか?