2018年5月25日、東京都内で開催されたIT Leadersフォーラム「アジャイル経営を支えるDX時代のインフラ戦略―クラウドネイティブ企業へ進化するためのロードマップ―」。同フォーラムの事例セッションで、即戦力人材と企業をつなぐ転職サイトで知られるビズリーチのDocker/コンテナ活用事例が紹介された。講演内容をレポートする。
採用管理サービスHRMOS(ハーモス)の基盤をDockerコンテナ化
管理職や専門職、次世代リーダー、グローバル人材などの即戦力・ハイクラス人材に特化した国内最大級の会員制転職サイトで知られるビズリーチ。「インターネットの力で、世の中の選択肢と可能性を広げていく」をミッションに2009年に事業を開始、創業から9年で「BIZREACH(ビズリーチ)」、若手向け転職サービス「キャリトレ」、戦略人事クラウド「HRMOS(ハーモス)」といった17のサービスを展開するなど急成長を続けている。
拠点は現在、東京、大阪、名古屋、福岡、シンガポールにあり、従業員は1,238名を数える。執行役員でHRMOS採用管理プロダクト開発部長の園田剛史氏(写真1)は「あまりTechのイメージはないと思いますが、創業から一貫して、全サービスを社内開発・社内運用しています。エンジニア、デザイナー、プロダクトマネージャーなどプロダクト系チームは300名を超える規模です」と、ITの力をビジネスに生かしていることを明かす。
そんな同社がさらなる事業インパクトを得るために取り組んでいるのが、Dockerコンテナ技術を使ったクラウドネイティブ化だ。例えば、「HRMOS採用管理」では、すべてのインスタンスがDockerコンテナ化されている。このHRMOS採用管理事業部のプロダクト開発部部長として、また全社のセントラル組織である横断プラットフォーム室室長としてビズリーチにおけるクラウドネイティブ化をリードしているのが園田氏だ。
園田氏によると、ビズリーチの事業に求められるIT要件は下記のようなものになる。
- スケールアップ・スケールアウト/ダウンができること
- 高速リリースサイクルに耐えられること
- 運用負荷軽減/生産性の向上
- 継続的インテグレーション(CI)/継続的デリバリー(CD)
- 可用性の高さ(Availability)
これらを満たすITプラットフォームとして採用したのがDockerというわけだ。
このクラウドネイティブ化の取り組みにより、プロダクト開発部では、運用負荷の軽減、リリースサイクルの改善、開発の高速化、インフラとアプリケーションエンジニアでのDevOpsの推進などといった成果を上げた。現在は、このノウハウを他部門に展開すべく積極的に取り組みを推進しているところだ。
IaaSからPaaS、FaaSにシフト。そしてコンテナへ
ビズリーチのクラウド活用は2012年からスタートした。当時は既存のオンプレ構成をクラウドに乗せ換えた単純にIaaSを利用するという環境だったが、スケールアップ・スケールアウト/ダウンが容易になるなど、物理的なインフラ管理にくらべ運用負荷が軽減された。
2013年からは、AWS(Amazon Web Services)のPaaSやマネージドサービスの利用を開始した。具体的には、データベースのRDS、キューイングのSQS、メール送信のSES、プッシュ通知のSNS、バッチ処理のAWS Batchなどだ。
「アプリ開発側もクラウドの機能を利用することを前提に設計を行うようになりました。経営観点で見てもフルマネージドで提供されるPaaSやFaaSには、エンジニアの運用工数を軽減し、本質的な業務にエンジニアを投下できるメリットがあります」(園田氏)
サーバーレスアーキテクチャ/FaaS(Function as a Service)は、サーバを常時起動せず、必要なときにだけ呼び出す方式で課金もリクエスト単位なので、使い方によってはコストメリットがあり、また運用負荷も軽減できる。
拡大画像表示
このようにして、IaaSからPaaS、FaaSとそれぞれの利点を活かしてクラウド活用を推進してきたビズリーチだが、そのなかで新しい変化や課題も生まれるようになったという。
「1アプリケーション1サーバの構成になり、マイクロサービス的思想のアプリケーション開発が行われるといった変化が生まれました。そこで課題になったのは、管理インスタンス数の増大と運用負荷の増大です。また、サーバ構成を個別に管理する必要も生まれていました」(園田氏)
コンテナ化は、こうしたインスタンスの管理や運用負荷増大という課題に対処するものでもあった。
「クラウドネイティブ」の意味とビジネスインパクト
単に基盤をコンテナ化するだけでビジネスインパクトが得られるわけではない。そこでカギになるのが「クラウドネイティブ」という考え方だ。クラウドネイティブは主要なクラウドベンダーが参加する団体「CNCF」(Cloud Native Computing Foundation、図1)が提唱する概念だ。OSSを使って、コンテナ化、オーケストレーション、マイクロサービス化などを実現する。
「クラウドネイティブを説明するときに私がよく使う喩えは、『固定電話がオンプレ、携帯電話がクラウド、スマホがクラウドネイティブ 』です。電話ができるという意味ではどれも変わりませんが、携帯電話は外でも電話ができるようになり、スマホになってメールも地図も他のアプリも外で使えるようになってより便利になった。そんなイメージです。周りがスマホを使っているのに携帯電話のままだと生産性は負けてしまいます」(園田氏)
HRMOS採用管理の開発環境では、クラウドネイティブの構成要素の1つであるコンテナ化から着手した(図2)。当時の直面していたIT課題は、検証環境と本番環境の設定が違うこと、リリース後のロールバックが手間だったこと、同様の環境を構築するのが手間だったことなどだ。そこで、まずローカルでの開発に必要なデータベースやメッセージ、キューなどの開発環境をDocker化。その後、検証・本番環境をDocker化しAWSのコンテナ管理を代行するサービスECSを用いて運用するといった流れでアプリケーションのコンテナ化を実施していった。
拡大画像表示
こうした作業は、2016年12月から調査を開始し、2017年4月に検証環境へ、2017年6月に本番環境へと順次適用するスケジュールで進められた。
「コンテナ化によって、本番環境と検証環境、さらにローカルの開発環境が同じコンテナイメージで動かせるようになりました。開発・検証と同じ状態でリリースできるので、リリース品質が向上し、顧客価値を担保できるようになりました。またトラブル時も切り戻し対応も迅速になりました。Blue-Green Deploymentという2つの環境を用意し切り替えるバージョンアップ方法を採用したことで、障害時切り戻しに20分かかっていたのが1分に短縮、不具合の時間が最小化できました」(園田氏)
アーキテクチャに合わせてチームと組織構造を変化させる
このほか、ECSによるオートスケーリングで運用コストやエンジニアのリソースを削減したり、簡単にテスト環境を用意できるようになり複数プロジェクトを同時進行させ開発効率を向上したりといったメリットも得られた。また、Dockerの設定ファイルを開発者が管理することで、開発者がインフラの構成を管理・運用できるようになるなど、DevOpsが推進された。
とはいえ、新たな課題にも直面した。コンテナ化により運用コストは下がったものの、インフラコストは逆に増加した。運用コストが下がるのである程度コスト増は許容するもののDockerを前提とした運用やアプリケーション構成にするなどコストをできるだけ下げる対応を検討している。
現在クラウドネイティブの推進に当たり参考にしているのが、CNCFが提唱する「Cloud Native Trail Map」という活用の推奨プロセスだ。具体的には、コンテナ管理ツールKubernetesを活用したオーケストレーションを部分的に導入し、運用負荷を削減し特定のクラウドサービスにロックインされない体制に移行しようとしている。Kubernetesは、主要なクラウドベンダーがサポートしており、DockerとKubernetesを組み合わせることで、ほぼあらゆる環境でコンテナの管理を自動化できるようになる。
園田氏はクラウドネイティブ化の目的を「技術が古いとメンテナンスコストは増大していきます。コンテナは今後プラットフォームの主流となりマルチクラウド運用の足がかりになるものです。新しい技術は次々に登場しますが、追従していかなければ開発生産性などで負けてしまいます。もちろん新しい技術ですべてやればいいわけではなく、その見極めが重要です。また新しい技術に積極的であることは、エンジニア採用の面でもプラスに働きます」と解説。こうした取り組みを推進するうえでは、望ましいアーキテクチャを促進するためにチームと組織構造を進化させる「逆コンウェイの戦略」もポイントだと指摘した。
最後に園田氏は「インフラ・プラットフォーム界隈のここ数年の進歩は凄まじいものがあります。最新動向をキャッチアップするだけでも大変ですが、その中で適切なものを選びながら取り組みを進めてください」とアドバイスし、講演を締めくくった。