CLOSE

パネルディスカッション(全4記事)

技術的負債とどう向き合っているか? ITベンチャー4社が語る、開発チームのリアルな裏側 Part3

2019年7月3日、Qiitaが主催するイベント「開発チームのリアルな裏側、全部話しちゃいます!」が開催されました。「自分に最適のチームで、最高の仕事をしよう」というコンセプトを掲げ、エンジニアとチームをつなぐ転職サービスを提供する「Qiita Jobs」。Qiita Jobsを実際に導入する株式会社オープンロジ・株式会社プレイド・マイケル株式会社・freee株式会社の4社が集い、モデレーターに株式会社レクターの広木大地氏を迎え、開発チームの知られざる裏側を赤裸々に語ります。

技術的負債とどう向き合う?

広木:では次のテーマにいきましょう。弊社の技術的負債について。デプロイパイプラインの自慢をさせてくださいってやつですね。どうでしょう?

横路:マイクロサービスって「最初からマイクロサービスにするな」って言われるでしょ? うちには育ち切ったモノリスがあります!

広木:すばらしい!

横路:ぜんぜん自慢できることじゃないんですけど。サービスが8個くらいあるんですが、最初の会計サービスは丸々と太っていて、もうフォアグラですね。だいたいRailsなんですが、クックパッドのコアの部分も相当じゃないですか。あれの半分くらいはあると思います。

なので、モデルもコントローラーの数もだいたい数千ですね。フロントエンドのコードも数十万から100万行くらいですね。それをこれからしっかりマイクロサービス化していけるのがうちの強みだと思ってます。

マイクロサービスが役立つのはだいたいあれですね。エンジニアが100人を超えて、しかも500人、1000人を目指す企業がしっかり使うべきだと思います。まさにうちはそれにぴったり当てはまります。

今、DevOpsをつよつよなエンジニアでやろうとしているので、その人たちと働けるのはすごく魅力的かなと思います。たとえばGoogleでGoogleマップを作っていたメンバーがマイクロサービス基盤を作っています。

あとは、自動テストやDevOpsのパイプライン、継続的デリバリーなどは、ヤフーのテスト基盤を牽引していた人や、あとはソフトウェアエンジニアリングテストで超有名な人が、今月から続々入社されています。

今、ヤフーや楽天のようなITの大企業がここから誕生するということで、チャレンジしたい人がいればぜひ今のうちにチャレンジしてもらえればいいかなと思っています!

広木:きれいに自慢されてしまいました。

(会場笑)

横路:自慢しろって書いてあったから(笑)。

広木:すばらしいですね。テストカバレッジとかどのくらいなんですか?

横路:テストカバレッジは二大モノリスがだいたい70-80くらい。

広木:お! すごい。すばらしい。

横路:最近上がってきてます。だいたいCircleCIで、30並列で15分くらいです。

広木:お~すばらしい!

横路:札束で殴れる時代が来たのが本当に嬉しくてですね。ありがたいことです。

(会場笑)

気づいたら負債を返していく

広木:どうでしょう?

上田:うちは社長が作った最初のアプリを全部1回捨てたと話しましたが、そのあと僕が作ったやつもさらに1回捨てて、アーキテクチャを更新したりしました。僕がエンジニアでそういうことが気になるので、気がついたら負債を返していくという感じです。

ただ、デプロイパイプラインというか、CI、CDはすごく弱くて。エンジニアの人数が少ないし、最初のころからずっと1人でやっているので、自動化しないでも自分のところでAPIを叩けば終わり、みたいな感じでした。

今、人数を増やすにあたって少しずつCircleCIを導入しているのですが、テストもアプリ側はほぼないですし、サーバー側もちょっとしかないので、そこが弱いです。デプロイ周りは自慢できないというか、昨日もバグを出しました。

(会場笑)

広木:すばらしい。赤裸々! こういうコーナーです。これは伸びしろしかない(笑)。

巨大なリポジトリを分割する

徳永:うちの技術的負債は似たような話なんですが、もう4年くらいやっているサービスなので、かなり大きいモノリシックなのが1リポジトリでありまして。

かなり大きくなってしまっています。クローンすると8分とか。

横路:やばい!(笑)。

徳永:けっこうやばいんですけど。

横路:それうちも負けてる。

徳永:リポジトリのサイズが大きいのは些細な理由なんですけど、それを分けにかかっています。セルフコンテインドシステムみたいな思想のもとでやっていまして。

マイクロサービスといえばマイクロサービスなんですが、どちらかと言うとコンポーネントごとに切るよりも、チームごとに、チームありきで分けるみたいな思想でやっています。

おもしろいなと思うのが、エンジニアが入ってやるんですが、フロントで最近めっちゃつよつよな人たちがガンガン入って来ていまして。Vue.jsの日本人コミッターのkazuponさんが入ったりとか。

その同じのレイヤーの人があと2、3人入っていて、フロントの分割は進んでいますそして、これからうちのKARTEのコアであるトラッキングやアナライジングの部分を同じように分割して行きます。

それを数ヶ月でやるロードマップになっていて、ずれる可能性はとてもありますが、うちに来てもらえると、そのあたりの負債を最強のメンバーで返す、みたいなことができてすごくおもしろいかなと思います。

あとはデプロイパイプライン自慢なんですが、Spinnakerというツールをいち早く導入しています。去年のbuildersconで僕と同じチームの松井が登壇してSpinnakerの話をしているのですが、そういった新しいツールを使って大規模なデプロイを最初期からやっています。

うちは開発環境にかなり力を入れていて、エンジニア組織なので良くなってきている感じです。ただDevOpsのように専門の人がいるというよりも、気づいた人が解きにいく、やりたい人がやる、みたいなかたちです。ストレスドリブンでやる感じですね。

自慢なんですけど、先週フロントエンドビルドがめちゃめちゃ遅いという問題がありまして、40分くらいかかっちゃうんですよ。それがデプロイのたびに走るのでやってられないということで、17分くらいまで短縮しました。

広木:すばらしい。

徳永:それまではストレスドリブンみたいな感じで、やりたいやつがやる、みたいな感じで保たれていました。

広木:いいですね。Node Modulesもめっちゃ重い感じですか?

徳永:Node Modulesもけっこう重いですし、なんやかんやの負債というか、いらないものが入っていたりとか(笑)。

広木:あ~ありますよね。

徳永:やはり歴史はかなり長いので、そういったことがある感じですね。

広木:なるほど、ありがとうございます。個性が出てきましたね。

モブデプロイを行う理由

五十嵐:あまり個性的な話はありませんが、我々も4年くらいサービスを続けている中で、まだモノリシック中心なサービスになっています。

ですが技術的負債かと言うとまだ負債とは感じるほどボトルネックにはなっていません。

初期から強いエンジニアがいたので、社長が書いたコードが残ったりするといったこともなく、1回大きくチェンジしたことはありましたが、比較的コンスタントに解消してきました。いまいまはそこらへんの重さはないんですが、将来的にはそういう問題が出るんだろうなとは感じています。

ですが、マイクロサービス化なのか、早すぎる最適化もよくないと思いつつ、模索しているところではあります。ほかに技術的な負債を感じるところってありましたっけ?

原田:う~ん? いっぱいありますけど。

五十嵐:あ、いっぱいあります?(笑)。あとはデプロイパイプラインのところで言うと、比較的初期から普通にCIを通して自動デプロイみたいなものを構築していたのでスタンダードなところはできていました。

開発のフローで言うとgit-flowで2週間に1回のペースで大きめなリリースをしていて、hotfixは日々リリースするようなデプロイフローにしています。

「2週間に1回くらいはみんなで盛り上がろうぜ」みたいなノリを大切にしています。モブプロじゃなくてモブデプロイみたいな感じで(笑)、巨大なディスプレイに写して、エンターを押して「お~」みたいな(笑)。

一部マニュアルなオペレーションがある中で各担当者に任せるのではなく、間違えないようにみんなでオペレーションを見ながら、「無事リリースしましたね」みたいな感じでやっています。

盛り上げる目的もありますが、それより事故防止とか、リリースデプロイのノウハウを共通化しようという目的ではあります。自動化しすぎないというかちゃんと温かみみたいなところをあえて残したいと思っています。

モブデプロイは何時から?

広木:ちなみにオープンロジさんの場合、24/365じゃなきゃいけない部分はどのくらいありますか?

五十嵐:そういう意味だと、現状、倉庫さんや荷主さんが主に稼働するのは、だいたい朝の6時過ぎから18時か19時。12時間くらいがマストで稼働していなければいけません。

それ以外はある程度融通が利いていて、リリースでは瞬断も発生しています。日々のリリースはなるべく瞬断がないようにしていますが、2週間に1回のリリースではメンテナンス時間を設けて、ある程度停止が許されるようなかたちで安全性を保ちつつ、リリースすることはできています。

ですが、今後より海外で使われるようになっていくとそれも難しくなってくるとは思うので、現状はそういったバランス感ですかね。

広木:今、モブデプロイは何時に当てていますか?

五十嵐:夜の19時から20時くらいですね。配送会社さんの集荷がだいたい15時から17時とかなので。それをやるとあとは締めの業務で、遅くとも18時には倉庫業務が終わるので、その後からですね。

広木:なるほどなるほど。

横路:リアルな裏側を(笑)。

(会場笑)

続きを読むには会員登録
(無料)が必要です。

会員登録していただくと、すべての記事が制限なく閲覧でき、
著者フォローや記事の保存機能など、便利な機能がご利用いただけます。

無料会員登録

会員の方はこちら

関連タグ:

この記事のスピーカー

同じログの記事

コミュニティ情報

Brand Topics

Brand Topics

  • 今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは

人気の記事

新着イベント

ログミーBusinessに
記事掲載しませんか?

イベント・インタビュー・対談 etc.

“編集しない編集”で、
スピーカーの「意図をそのまま」お届け!