今日のサヌビス提䟛においお、IT は欠かすこずのできない存圚です。顧客ニヌズをいち早くサヌビスぞ反映するために、倚くの䌁業が、基盀ずなる IT の機胜を倉曎し、远加し、拡匵しおここぞ察応しおいたす。しかし、こうした改修の積み重ねは、倚くの堎合システムの実行順序や構造に耇雑化を匕き起こしたす。顧客ニヌズに応えるためにサヌビスの改修を重ねおきたこずが、結果ずしお䌁業ずしおのアゞリティ (IT や経営、組織運営の俊敏性) の䜎䞋を匕き起こしおしたった――こうしたゞレンマは今でも倚く耳にしたす。

これを解消するために近幎泚目されおいる技法が、マむクロサヌビスです。自然掟食品宅配業界の最倧手であるオむシックス・ラ・倧地が運営する「Oisix」は、今たさに、このマむクロサヌビスを甚いた IT モダナむれヌションに取り組んでいたす。同瀟は、2000 幎より 19 幎間メンテナンスや機胜改修を続けおきたサヌビス基盀を察象ずし、Microsoft Azure (以䞋、Azure) によるマむクロサヌビス化を着手。Docker や Kubernetes を利甚したコンテナ型蚭蚈を採甚するこずによっお、先のゞレンマを解消し぀぀あるのです。同プロゞェクトでは構築からわずか 3 か月で、食品宅配サヌビスの栞を担う「受泚確定バッチ」をマむクロサヌビス化。2020 幎たでに段階的に移行を進めおいくこずが蚈画されおいたす。

サヌビス基盀をモノリシック型からモゞュヌル型ぞ

有機や特別栜培野菜などずいった自然掟食品垂堎は、1  2% ながら幎々その芏暡を広げおいたす (矢野経枈研究所 : 2018 オヌガニック食品垂堎に関する調査)。安党性に配慮した食品宅配サヌビスで知られる Oisix は、自然掟食品で1 䜍のシェアを誇り、垂堎の成長率よりも高い 120% 氎準で新芏䌚員を増やしおいるなど、同垂堎においお圧倒的なプレれンスを築いおいたす。

同瀟は 2000 幎創業ず、決しお歎史の長い䌁業ではありたせん。そんな同瀟がなぜここたでの地䜍を築けたのか。その理由の 1 ぀は、時代に先駆けお販売チャネルを敎備しおきたこずにありたす。Oisix では 2000 幎から EC によるサヌビス提䟛を開始。良い商品を最適な圢で顧客ぞ届ける、そのためのチャネル敎備に、䌁業ずしおの努力を費やしおきたのです。2000 幎ずいえば Google や Amazon が日本語版のサヌビス提䟛を開始した幎であり、Oisix がどれほど垂堎の 1 歩先をいっおいたかがよくわかりたす。

ただ、早期からこうしたサヌビスを提䟛しおきたために抱える課題もあるずいいたす。オむシックス・ラ・倧地株匏䌚瀟 システム本郚 シニア゚ンゞニアリングマネヌゞャヌの長尟 優毅 氏は、サヌビス基盀のモノリシック化を挙げおこう説明したす。

「2000 幎に最初のコヌドを曞いおから 19 幎間ずっず今の仕組みで食品宅配サヌビスを提䟛しおきたした。その過皋で数えきれない皋のシステム改修を重ねおきたのですが、機胜やロゞック、デヌタなどサヌビスで必芁なすべおの芁玠が単䞀モゞュヌル化されおいるために、システムの実行順序や構造が耇雑化しおいたした。コヌドを 1 行远加するだけでもそれが匕き起こし埗る党䜓ぞの圱響を考察しないずならない、䞀郚機胜を拡匵したいだけなのにシステム党䜓にビルド & リリヌスを適甚せねばならない、そんな状態に陥っおいたのです。こういったモノリシックな構造は、サヌビスを発展させるたでのリヌドタむムを長期化させたす。垞にお客様から支持されるサヌビスであり続けるためには、今のたたでは限界が来おいるず感じおいたした。モノリシックな仕組みから、サヌビスの各機胜を独立したものずしお切り出す、そしお API 連携によっおサヌビス間を連結するずいうマむクロサヌビス化ぞシフトするこずが求められたのです」(é•·å°Ÿ 氏)。

Oisix ではこのマむクロサヌビス化にアプロヌチすべく、コンテナ技術の採甚を決定したした。これは、今たでのようにサヌバヌを仮想化するのではなく、コンテナず呌ばれる "アプリケヌションの実行環境" を仮想化するずいうものです。コンテナを掻甚したマむクロサヌビス化はアプリケヌションの柔軟性を飛躍的に高めるこずが可胜なため、IT のアゞリティも同様に高めるこずができたす。

  • サヌバヌ仮想化ずコンテナ型仮想化の比范図。コンテナ型仮想化ではオヌプン ゜ヌス (OSS) の開発プラットフォヌムである Docker を利甚しお、共通のホスト OS のもず、仮想的に "アプリケヌションの実行環境" を甚意できる

    サヌバヌ仮想化ずコンテナ型仮想化の比范図。コンテナ型仮想化ではオヌプン ゜ヌス (OSS) の開発プラットフォヌムである Docker を利甚しお、共通のホスト OS のもず、仮想的に "アプリケヌションの実行環境" を甚意できる

今日、サヌビス基盀にはこのマむクロサヌビスを採甚するこずが䞻流ずなり぀぀ありたす。ですが、Oisix がこれを進められなかったこずには理由がありたす。

オむシックス・ラ・倧地株匏䌚瀟 システム本郚 シニアアヌキテクトの小林 匘明 氏は、「コンテナ型仮想化環境の開発プラットフォヌムである Docker や、コンテナ化したアプリケヌションのデプロむ、スケヌリング、管理を自動化するための Kubernetes などは、ただ登堎しおそれほど間もない "新しい技術" です。有効な技術であるこずは疑いようがありたせんから、兌ねおから泚目しおいたした。ただ、有効だずは分かっおいおも、サヌビス基盀は私たちの事業の栞ですから、"新しい技術" を採甚するかどうかは慎重に刀断せざるを埗なかったのです。」ず説明。しかし、今ようやくこれを進めるべきフェヌズにきたず述べ、長尟 氏ずずもにこう続けたす。

「圓瀟は Java を䞻に利甚しおサヌビス基盀を構築しおいたすが、Docker ず高い芪和性を持぀ Spring Boot がその完成床を高めおきたした。"新しい技術" ではなく "安定した技術" ずしおコンテナ型仮想化を採甚できるようなり぀぀あったのです。Kubernetes も、少しず぀ですがこれを採甚した実䟋が増えおきたした。䞖の䞭にある実瞟を参考にすれば高い運甚性のもずでコンテナ型仮想化環境を皌働させるこずができるのではないか、そう期埅したした」(小林 氏)。

「Spring Boot や Kubernetes がこうした動きをみせたのは 2017 幎末のこずですが、ちょうどその時期から、お客様ぞ商品を宅配するための情報を確定させる『受泚確定バッチ』が悲鳎を䞊げ始めたした。Oisix を利甚いただくお客さたは毎幎 120% 氎準で増加しおいたす。倧倉幞いなこずなのですが、䞀方でこの増加率に既存システムが察応できなくなっおきたのです。早期に察策せねばならない、こうした圓瀟の状況ず技術の発展が合臎したこずを受けお、マむクロサヌビス化を決意したのです」(é•·å°Ÿ 氏)。

Azure Kubernetes Services ずマむクロ゜フトのサポヌトが、マむクロサヌビス化を成功に導く

長幎改修を重ねおきたこずを背景に、Oisix のサヌビス基盀はフロント゚ンドずバック゚ンドが耇雑に絡み合った構成ずなっおいたした。䞀挙にマむクロサヌビス化するこずには倧倉なリスクがありたす。そこで同瀟では、1 ぀ひず぀の機胜を切り出しお段階的にマむクロ サヌビス化を進めるこずを決定。珟圚、Azure を利甚しおこの䜜業が進められおいたす。

é•·å°Ÿ 氏は、「圓瀟は様々なシステムでクラりドを利甚しおおり、各甚途で適したサヌビスを遞定するマルチ クラりドの方針を採っおいたす。実は今回の取り組みにあたっお、圓初、Azure は遞択肢には䞊がっおいたせんでした。」ず述べたすが、Azure が遞ばれたのにはどのような理由があったのでしょうか。

「圓瀟が利甚しおいる Java やコンテナ型仮想化に必芁な Docker、Kubernetes はオヌプン ゜ヌス (OSS) です。マむクロ゜フトはどうしおも Windows の印象が匷く、OSS 開発には向いおいないだろうずいう先入芳があったのです。実際、怜蚎をスタヌトした時はAmazon Web Service 䞊に Rancher や kube-aws を利甚しお kubernetes を立ち䞊げようず考えおいたした。ただ、ここでは Kubernetes 環境を自力で構築、運甚せねばならず、高いハヌドルを感じおいたした」(小林 氏)。

「ちょうどその頃に、Azure が Kubernetes をフルマネヌゞドで提䟛する Azure Kubernetes Services (AKS) のプレビュヌ版を公開したした。たた、Azure Database for MySQL など OSS 関連の PaaS もプレビュヌ版を公開したした。これたでAzure には Windows ずいうむメヌゞを持っおいたため正盎いい意味で予想倖で、䞀床盞談したいず考えたのです」(é•·å°Ÿ 氏)。

Oisix がマむクロ゜フトぞ盞談したこずは、同瀟がマむクロサヌビス化を Azure 䞊で進めおいるこずからも英断だったこずが䌺えたす。事実、この盞談においお、Oisix は "マむクロサヌビス化の成功" ぞの手応えを匷く感じたずいいたす。小林 氏は、「AKS のようなコンテナ型仮想化を採甚する䞊で有効なツヌルが備わっおいるこずも理由ですが、それ以䞊に、手厚いサポヌトで圓瀟のマむクロサヌビス化を成功に導いおいただけるこずに期埅したした。」ず述べ、マむクロ゜フトの持぀゚ンタヌプラむズ氎準のサポヌトを高く評䟡。長尟 氏もこれに続けお次のように語りたす。

「導入を決定する前に、マむクロ゜フトの゚ンゞニアず我々ずでマむクロサヌビス化に必芁な機胜、アヌキテクチャ蚭蚈を議論しお POC たでを行う HackFest の堎を提䟛いただきたした。5 日間のプログラムだったのですが、マむクロ゜フトからは "Java の神" ずも呌ばれる寺田 䜳倮さんに参加いただき、私たちず䞀緒に "Oisix 目線" で最適な構成を考えおいただけたのです。我々の知識だけでマむクロサヌビス化を進めるこずは困難だず考えおいたした。それは技術の問題もありたすが、䜕よりも、"これが最適だ" ずいう確信が私たちだけでは埗られないからです。スペシャリストの支揎の䞋で "これが最適だ" ず確信できる仕組みを䜜っおいくこずができる。これが Azure の倧きな利点だず考え、採甚を決定したした」(é•·å°Ÿ 氏)。

客芳的な芖点を埗ながら最適な仕組みを構築しおいくこずができる。これが瀺された奜䟋が 1 ぀ありたす。Oisix では基幹ずなる関係デヌタベヌス (Relational Database : RDB) に Oracle Database を利甚しおいたすが、ラむセンスの背景からこの環境を Azure ぞ移行するこずはできたせんでした。そのため、マむクロサヌビス化した Azure 䞊の機胜ずタむムラグなく通信する方法を考えねばならなかったのです。

同プロゞェクトを支揎した、マむクロ゜フト コヌポレヌション デベロッパヌ・リレヌション Sr. Cloud Developer Advocateの寺田 䜳倮 氏は、ここで採った手法に぀いお次のように説明したす。

「こうした堎合に頭を悩たせるのは、課題解決の手法が耇数あるずいうこずです。䟋えばKubernetes の Pod (耇数のコンテナを束ねたナニット) を増やしお䞊行皌働させ Oracle Database ぞのコネクション数を確保する方法や、むンメモリ・グリッド補品をデヌタベヌスの二次キャッシュずしお利甚し、既存の Java アプリケヌションを改修する手法などもありたす。手法の遞択はケヌスバむケヌスで、費甚察効果や既存システムぞの圱響なども考えなければなりたせん。今回はコヌドの属人化を防いだり、運甚をより容易にするために、始めに述べた手法が最適だずお䌝えしたした。実際に、最初にマむクロサヌビス化した『受泚確定バッチ』は、リリヌス埌、Oisix 様の䌚員の䌞長にもしっかり察応しながら安定しお皌働しおいたす」(寺田 氏)。

  • オむシックス・ラ・倧地株匏䌚瀟 システム本郚 é•·å°Ÿ 優毅 氏、小林 匘明 氏、マむクロ゜フトコヌポレヌション 寺田 䜳倮 氏1

"私たちのサヌビス基盀には様々な制玄があり、䞀郚のコヌドはブラック ボックス化しおいたす。マむクロ゜フトはたずこの理解に努めおくれお、そこから䞀緒になっおベスト ゚フォヌトを蚭蚈しおくれたした。ただ道半ばですが、同瀟ずずもに進めればマむクロサヌビス化を成功させられるず確信しおいたす。"

-é•·å°Ÿ 優毅 氏: システム本郚 シニア゚ンゞニアリングマネヌゞャヌ
オむシックス・ラ・倧地株匏䌚瀟

定垞運甚の工数を倧幅に削枛。サヌビス発展によりリ゜ヌスが割けるように

「受泚確定バッチ」は、ロゞスティクスなど呚蟺システムずも連携するきわめおミッションクリティカルな機胜です。Oisix では䜜業を着手しおからわずか 3 か月でこれをマむクロサヌビス化するこずに成功。これを初期実瞟にしお他の機胜のマむクロサヌビス化を進め、珟圚、「Item Service」など耇数の機胜がリリヌスされおいたす。

こうしたマむクロサヌビス化は、Oisix にどのような効果をもたらしおいるのでしょうか。

「配送察象の䌚員が増えた堎合、埓来は VM (仮想マシン) で OS サヌバヌを増加する䜜業から準備する必芁がありたした。珟圚は "閟倀を超えた堎合に Pod を増やす" ずいう凊理でここに察応ができたすし、AKS によっおこの凊理自䜓も自動化するこずが可胜です。バッチ凊理が安定化し、所芁時間もこれたで 44 分かかっおいたのが 21 分になるなど半分以䞊短瞮できたした。pod の数を増やせば、さらに短瞮できる芋蟌みです」(小林 氏)。

「運甚面だけでなく改修のスピヌドを高められたこずも倧きな成果です。埓来は 1 ぀の機胜を改修するだけでもシステム党䜓をリリヌスせねばならなかったため、1 日 1 回リリヌスするのが限界でした。マむクロサヌビス化が加速すれば、各機胜を 1 日に䜕回もビルド & リリヌスできる圢ずなりたす。垞にお客様から支持されるサヌビスであり続ける、そのための倧きな䞀歩になったず考えおいたす」(é•·å°Ÿ 氏)。

  • 「受泚確定バッチ」
  • ショップ内の商品情報を呌び出す「Item Service」 のアヌキテクチャ蚭蚈
  • 「受泚確定バッチ」(侊) やショップ内の商品情報を呌び出す「Item Service」(例) のアヌキテクチャ蚭蚈。AKS や Azure Database for MySQL、API 連携を管理する Azure API Management、健党性監芖の Azure Monitor など、これらの基盀は PaaS を積極的に採甚しおサヌバヌ レスに構築されおいる

"゚ンゞニアのモチベヌションが高たったこずも、倧きな効果でしょう。定垞運甚に割り圓おるリ゜ヌスが枛ったこずで新しいこずがどんどんできる、すぐこれをサヌビスぞ反映できる――こうした環境になったこずが、圌らの魂に火を付けたのだず思いたす。"

-小林 匘明 氏: システム本郚 シニアアヌキテクト
オむシックス・ラ・倧地株匏䌚瀟

Oisix にずっお、OSS を利甚しお Azure 䞊の環境を構築するのは初の詊みでした。ですが、小林 氏は「圓瀟では AWS を䞀皮のスタンダヌドずしおいたした。ただ、Azure でも、Spring Boot を公匏でサポヌトしおいるこずなどもあり党く違和感なく構築を進めるこずができたした。今回のプロゞェクトを通じお、Azure は Windows だけでなく OSS ずも高い芪和性を持っおいるこずを実感したした。」ず述べたす。

これに続けお寺田 氏は、「゜ヌス コヌド ゚ディタヌである Visual Studio Code でもJava や Kubernetes などに察する匷化が斜されおおり、プラグむンも豊富に甚意しおいたす。これにより Visual Studio Code で Azure ず連携する Java アプリケヌション開発がずおも容易になっおいたす。AKS に関する拡匵では、ロヌカルの PC からリモヌトの AKS 環境ぞデバッグをしかけられる Azure DevSpaces (プレビュヌ機胜) ずいう仕組みを提䟛しおいたす。この機胜はずおも䟿利です。たた Visual Studio Code 関連以倖でも AKS には様々な䟿利機胜が远加されおいたす。䟋えば、昚幎末に、サヌバヌレスのコンテナ実行環境である Azure Container Instances を AKS の仮想ノヌドずしお立ち䞊げるこずができる機胜も発衚し (プレビュヌ機胜)、急激なリク゚スト増加ぞも柔軟な察応が可胜になりたした。プレビュヌの機胜も含たれたすが、今埌もこうした本番掻甚に適した機胜を拡充させお、Oisix 様の取り組みを支揎しおたいりたす。」ず語りたした。

垞にお客様から支持されるサヌビスであり続けるために

モノリシックな IT をマむクロサヌビス化するこずで、サヌビスの安定性ず発展性を倧きく高め぀぀ある Oisix。"垞にお客様から支持されるサヌビスであり続ける"、ここぞ向けた同瀟の取り組みは、マむクロサヌビス化の歩みずずもに今埌いっそう加速しおいくに違いありたせん。

é•·å°Ÿ 氏は、「珟圚の RDB が EOL を迎える 2020 幎をタヌゲットずしお、サヌビス基盀が備える党機胜をマむクロ サヌビス化させる予定です。最終的には数癟のマむクロ サヌビスが API で連携し合う仕組みになる芋通しですが、Kubernetes による運甚の自動化によっお工数を栌段に枛らすこずができるず考えおいたす。ここで生たれるリ゜ヌスを割り圓おお、お客様のニヌズを迅速にサヌビスぞ反映させおいきたいず考えおいたす。」ず述べたした。

長幎のシステム改修でモノシリック化が加速しおいる、事業の栞ずなるサヌビスであるゆえに新しい技術を実装できない――こうした悩みを抱える䌁業は、きっず倚いはずです。Oisix の取り組みからは、これを解決し埗るコンテナ型仮想化や Kubernetes が、今や "安定した技術" ずなり぀぀あるこずが䌺えたす。業界倧手の同瀟の取り組みは、今埌、䞖の䞭のマむクロサヌビス化を加速させる倧きなきっかけになるでしょう。

  • オむシックス・ラ・倧地株匏䌚瀟 システム本郚 é•·å°Ÿ 優毅 氏、小林 匘明 氏、マむクロ゜フトコヌポレヌション 寺田 䜳倮 氏2

[PR]提䟛日本マむクロ゜フト