ようこそゲストさん

  • 会員限定
  • 2018/10/29 掲載

メルカリが「マイクロサービス」に本気で取り組む理由

(前編)

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
会員になると、いいね!でマイページに保存できます。
メルカリは現在300人程度の開発者を1000人規模にする目標を掲げており、それに合わせてパフォーマンスを発揮させるためにマイクロサービスアーキテクチャを1年前から採用し始めました。同社がこの1年、マイクロサービスアーキテクチャにどう取り組み、実現のためになにをしてきたのか。技術面と組織面の双方に関する興味深い取り組みが、10月4日に都内で行われた同社主催の技術カンファレンス「Mercari Tech Conf 2018」のセッション「Microservices Platform at Mercari」で紹介されました。この記事はその内容をダイジェストでまとめたものです(本記事は前編と後編に分かれています)。

Microservices Platform at Mercari

 マイクロサービスプラットフォームチームでTech Leadを務めています、中島です。

photo

 この1年でメルカリに起きた大きな変化のひとつは、モノリシックなアーキテクチャからマイクロサービスアーキテクチャへの移行です。

 このセッションではメルカリのインフラや組織のデザインをどのように行っているかを紹介していきたいと思います。

 メルカリがマイクロサービスに舵を切った大きな理由は組織をどんどん拡大していくためです。現時点でのメルカリのエンジニアは300人程度ですが、われわれはその3倍程度の1000人規模の組織を目指しています。

 そしていままで以上のスピードとパフォーマンスで開発をし、お客様によりよいサービスを提供することを目指しています。

 これは今年の3月に発売された「Accelerate」という本です。

photo
「Accelerate」日本語版は11月22日に発刊予定

 2013年から2017年のあいだ、スタートアップを含む2000以上の組織に対して、いかに組織のパフォーマンスを加速するかという聞き取り調査を行い、その調査結果をまとめたものです。

 その調査結果のひとつにこのグラフがあります。

 これは組織のエンジニアの人数とそのパフォーマンスを、組織の違いによって示したものです。

 横軸がエンジニアの人数、縦軸はエンジニアあたりの1日のデプロイ数を指標としたパフォーマンスです。

photo

 これによると、パフォーマンスの低い組織はエンジニアが増えるとデプロイ数も減少しています。普通のパフォーマンスの組織はエンジニアが増えてもデプロイ数に変化はありません。

 一方でパフォーマンスの高い組織はエンジニアが増えるほど指数関数的にデプロイ数が増えていきます。メルカリが目指しているのはここです。

 これは単純にアーキテクチャをモノリシックからマイクロサービスへ移行するだけでは実現できません。アーキテクチャに合わせて、そのアーキテクチャにあわせてもっともパフォーマンスが発揮できるチーム構成や組織のデザインをすることが大切です。

 そこで、私たちがどのようにチーム構成や組織をデザインしているかを、まずお話します。

専門性でチームを分けるとサイロ化が進む

 ソフトウェアのライフサイクルは大きく4つに分かれています。開発し、テストし、デプロイし、運用する、これを繰り返します。

 モノリシックなアーキテクチャでよく見られるのは、専門性でチームを分けるやり方です。

 開発を行うバックエンドチーム、テストを行うQAチーム、そしてデプロイや運用を行うSREチームもしくはオペレーションチームに分けられます。

photo

 この組織のことを考えずにアーキテクチャのみをマイクロサービスに変えると、マイクロサービスの利点を失ってしまいます。

 例えば、バックエンドチームをそのままにすると、マイクロサービスのサービスごとのオーナーが不明瞭になってしまいいます。その結果、誰が責任者か分からない、誰にもさわれないサービスができてしまいます。

 また、QAチームやSREチームをそのままにすると、サービスが増えれば増えるほど、これらのチームの作業が追いつかず、ボトルネックになってしまいかねません。するとマイクロサービスの開発のスピードを失ってしまいます。

 専門性でチームを分けることを続けていると、チーム間のコミュニケーションや知識の共有が薄くなってなサイロ化が進み、サイロ化はチーム間のコラボレーションを妨げてしまって、効率的に開発効率を改善することができなくなってしまいます。

サービスごとにチームを構成し、開発から運用までをそこで行う

 これらの課題を解決する、マイクロサービスアーキテクチャにおける理想の組織構造は、サービスAのためのチーム、サービスBのためのチームのように、サービスごとにチームを構成して、チーム内で開発、テストからデプロイ、オペレーションまでを行うことです。こうすると、先ほど挙げたようなボトルネックは存在しません。

photo

 各チームは自律的に独立して意思決定を行って、効率的な開発を自分たちで回すことができるようになります。

 またチーム内でソフトウェアライフサイクルのすべてを担うことで、チーム内で各領域、開発やデプロイやオペレーションなどの知識共有もできます。

 よって、よりよいサービスの開発や問題の解決をチーム内でできることになります。

 これが、われわれの考える、マイクロサービスに対応した理想的な組織構造です。

開発者が開発だけでなくさまざななスペシャリストにならなくては

 一方でこの組織は、新しい課題も生み出しています。

 これまでは開発のみに集中していればよかった開発者が、自分たちでデプロイや運用までやらなくてはならなくなった。

 つまりマイクロサービスアーキテクチャにおける開発者の役割というのは、開発だけでなくソフトウェアのテストのスペシャリストとして、運用のスペシャリストとしても行動する必要があります。

 これをいきなりやれといわれて、すぐできる人はいないと思いまし、これはなかなか難しい要求だと思います。

 そこで、これを助けるために設立されたのが「Microservices Platform Team」(マイクロサービスプラットフォームチーム)です。

photo

 マイクロサービスプラットフォームチームは、開発者が自分たちでマイクロサービスの開発からデプロイ、運用を行うことを助けます。

 mercari.jpがマイクロサービスへの移行を始めたのは、ちょうど1年前でした。このグラフは、マイクロサービスの数を示していて、赤い線がすでに本番で動いているサービス、青い線が開発中のサービスを示しています。

 1年前はひとつしかありませんでしたが、今日本番で動いているのは19、開発中は73あります。

photo

 ここに至るまでにマイクロサービスプラットフォームチームがなにをしてきたかについて、紹介していきます。

【次ページ】 一言で言うと「なにもないところにベースとなる道を整えた」

関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報が
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

「」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報が
お相手に公開されます