システム統括部マネジャー2名

CI/CD自動化にコンテナ導入。新サービスを契機に、モダンな環境へ進化していく。

interviewee

栗生 和明
システム統括部 システム開発部 グロースエンジニアリング課 テックリード ▼詳細

石川 大祐
システム統括部 システム開発部 グロースエンジニアリング課 マネジャー ▼詳細

author

秋山 美優
商品開発本部 クリエイティブ統括部 広告制作部 首都圏制作2課 ▼詳細

いわゆる”モダン”な技術を取り入れ、『バイトル』『はたらこねっと』とは異なる技術で構築した『バイトルPRO』。開発をけん引したテックリード2名に、dipエンジニアの今までとこれからの展望を伺った。

より効率的な運用を実現させた新サイト『バイトルPRO』

秋山:2021年5月にリリースされた『バイトルPRO』ですが、今までのサイトとは異なる開発技術を使ったとお聞きしています。どんな違いがあるのでしょうか?

石川:とてもざっくり言うと、今までサブシステムのインフラで導入していたCI/CDの自動化、コンテナサービス導入、メッセージング処理などを、コアプロダクトへ還元しました

栗生:今までの課題としては、何か新しい機能の追加や機能修正をしたりするたびに、該当項目の追加・修正に加えて、周辺の機能がきちんと動くか?悪影響を及ぼしていないか?まで手動で確認する必要があったんです。本番環境へのリリースについても、一部はまだ手作業で行っていました。『バイトル』も『はたらこねっと』も大きなサイトなので、手動でそれをやるには時間がかかります。それで今回の『バイトルPRO』では、CI/CDの仕組みを整え、テストコードを比較的キッチリと書きました。つまり、人がやらなくても自動でやってくれるという環境を作ったんです。

秋山:と言いますと?

栗生:『バイトルPRO』には、プログラムの追加や修正をしたときに自動でテストプログラムが走って「問題ないか?」を確認する仕組みを綺麗に導入しました。それがCI。CDは自動リリースというイメージのもので、まず行ったのはTerraform(テラフォーム)を使った構成管理、つまりインフラのコード化です。今まではインフラ担当チームに時間をかけてサーバーの用意をしてもらい、その後でプログラムコードを僕らが確認しながらリリースしていたのですが、「どういうサーバー構成にするか」という部分をコード化しました。例えば新しく機能を追加するとき、サーバーに新たな設定が必要であればコードで追加する。そうすることでリリースの際に新たな設定も含めたインフラ構成の作成からプログラムコードの配置までを、自動で進めてくれるんです。

秋山:賢い子ですね。

栗生:リリースの部分では、GitHub上にコードを出せば自動でAWS CodeBuild、CodePipeline、CodeDeployを使ってプログラムが本番環境にアップロードされて動くように整えました。

秋山:なるほど。今まではけっこう手動の割合が多かったということでしょうか?

石川:手動と言いますか、半自動だったものがほぼ自動になったという感じです。今まではいつも本番に出すための手順書を準備する必要があったのですが、CI/CDの自動化によってそれらを用意しなくてもいい状態が多くなっています。モノによっては手順書が必要になることもありますが、大多数は必要なくなったという感触です。手順書作成にかかっていた1時間程度が削れるので、ちりつもで考えると全体としてはかなりの工数削減になると思っています。

栗生:今までは毎回リリースのたびにそのような工数がかかっていたので、ある程度ためてから一気に出したりしていたのですが、数分でできるならどんどん出しちゃおう!のような感じで企画からリリースまでのリードタイム短縮も期待できますね。

秋山:サーバーレス技術やコンテナサービス導入、メッセージング処理に関してはいかがでしょう?

栗生:バイトルPRO』は最初からクラウド上に作るという話でスタートしていたので、それに適した作り方をしています。

石川:サーバーレスだと少々行きすぎな感じもあったので、今回はコンテナ技術を採用しました。これはWebシステムの中でかなり使いやすい方だと感じていて、例えば システムを動かすために必要な道具のバージョンアップをするようなときに、仮想サーバーだと前後比較や細かい変更をするのに大きな手間がかかります。でもコンテナだと、 作り直しが非常に手早くできてすごく楽なんですよ。

秋山:手間が減るのは大きな利点ですね。

石川:メッセージング処理については、バイトルIDという、『バイトル』のユーザーや『バイトルPRO』のユーザーがログインするためのサービスがあって、そこの通知管理をどうするか?という話でメンバーから出た案でした。ユーザーから『バイトル』『バイトルPRO』からの退会申請を受けたときに送る通知があるのですが、それぞれのサービスに対して直接APIを叩くというやり方だと、何かの拍子で一瞬でもサービスが停止してしまったときに通知ができなくなってしまう。でももAWS SNSとSQSを組み合わせたメッセージング処理を使えば、仮にサービスが止まってしまってもキューに溜めておけて、サービスが再開したら中のものを処理すればいいという状態になって効率的だったんです。

秋山:メンバーからの声も反映しながら作り上げられていったと。

石川:メインは僕のやりたいことをやらせてもらった感じが強いですけどね(笑)あと、冒頭にはお伝えしていなかったのですが、ログトレースやモニタリングにも力を入れました。今まではオオカミ少年になりやすかった、小さい改修なども含めたリリース後のエラー通知に対するより正確なキャッチアップだとか、サーバーの負荷状況の可視化がかなり進んでいます。

栗生:これらの開発技術をひとつの軸として、他のサービスにも展開していきたいですね。

パソコンに向かう大石さん

まだまだやれることがある。チャレンジングな精神、歓迎

秋山:dipの中で、『バイトルPRO』は最先端のサービスなんですね。

石川:とはいえ『バイトルPRO』は今までトライ&エラーを繰り返してきた集大成でもあるんですよね。なので、これまで試行錯誤してきたサブシステムについては継ぎ接ぎになっているものが多いのが現状です。『バイトルPRO』で得た知見を、今度はそれらのサブシステム群へフィードバックして、地盤を固めていきたいと考えています。

栗生:開発環境や本番環境のコンテナ化、インフラアーキテクチャ構成管理、デプロイの自動化と効率化に加え、適切な単位でのシステム分解なども取り組んでいきたいですね。

秋山:すでにいろいろな構想があるのですね。

栗生:技術の横展開も大事なところです。何でもできる人が1人いるだけだとその人が抜けてしまった瞬間にサービスが止まってしまうので、新しいことをするときは皆ができるようになって、きちんと運用できる体制を整える必要がある。今で言えばクラウドへの移行中なので、今後はクラウドに適した技術構成を考えて実現していかねばなりません。

秋山:確かに。そういえばエンジニアの皆さんは、スキル面はどのように伸ばしているのでしょうか?

栗生:新しいこと、ものにはできるだけ多くの人に関わってもらうようにしています。システムの更新が発生したときに、まだやったことがない人にメインで担当してもらい、経験済みのメンバーがサポートするようなイメージです。Goを書ける人を増やしていた時期にも同じように育ててきたので踏襲するつもりでいます。

秋山:なるほど。実現していきたいことがたくさんある中で、どんな方がdipエンジニアの仲間になってくれたら嬉しいですか?

石川:やはりチャレンジングな人は合うんじゃないかと感じます。dipの社風に合うというのはもちろん、僕らのチームはバックエンドの開発中心ですが、とはいえインフラとの境目がどんどん曖昧になってきている。なので、自分の領域をスパッと決めるのではなく、視野を広くいろいろなものに興味を持ってアンテナを張っていてほしい。新人かベテランかなどは関係なしに、dipのプロダクトへのフィードバックだって大歓迎です。そういう視点で見てくれる人、それを変えたいと思ってくれる人と一緒に進みたい。もらったフィードバックや「やってみたい」に対して、じゃあやってみようか!と言える下地はできつつあると感じています。

栗生:そうですね。『バイトルPRO』のリリースはモダンな開発環境の集大成という意味ではゴールでもあり、これを軸に他のプロダクトをどうするか再考案していくという意味ではスタート地点でもある。だからこそ、与えられるのを待つのではなく、自ら手を挙げてくれるスタンスを持っている方だと嬉しいです。

「やりたい」に、できるだけ応えられる環境がある

秋山:最後に、お二人が考えるdipでエンジニアを続ける楽しさって何ですか?

石川:バランスを見ながらコストをかけすぎないようにという留意点はあるにせよ、サービスの中の仕組みを考えるという部分に関しては、自由に意見を出しながら楽しんでやっているという雰囲気はあります。

栗生:確かに。例えば『はたらこねっと』のスマートフォンアプリから呼ばれるAPIのプログラムなどの開発を通して、メンバー内で「こっちのやり方の方が良かったよね」とか「このやり方なら良いかもね」とか言いながら小さいプロダクトを作らせてもらったりしているのですが、そうやって学んでいける環境はまさに、意見を出し合いながら楽しんでいる感じがあります。

石川:システム開発部内で、部長や本部長クラスに直接「こんな構成・工数でやろうと思っています、理由はこう」のような話をすることもありますね。

栗生:だからですかね、ユーザー数が数百万人といる大きなサイトなのに、より良い技術への置き換えなどは実行しやすいなと感じます。あとは中期経営戦略『DIP2025』でも示されましたが、「いいものを早く作ろう」という流れになっているので、今までよりもスピード感を持って、世の中に求められるものを適切なタイミングで出していくための仕組みづくりをしていくことに対し、追い風が吹いているタイミングかなとは思います。新しく入った方がいきなり希望通り自由にやれるかと言うと、それなりのサービスや社内の現状理解がないと難しいかもしれませんが、新しいチャレンジをしたいという声に対し適切なサイズの課題みたいなものは作れるように動いていきたいと思っています。

秋山:今のdipだからこそ、より大変ながらも楽しめる、挑戦していけるという雰囲気なのかもしれませんね。これからも弊社のサービスをよろしくお願いします!

新しい仲間を待つ栗生さんと大石さん

関連記事一覧

interviewee

栗生 和明

システム統括部 システム開発部 グロースエンジニアリング課 テックリード 2021年、Laravelに関する書籍を執筆。新卒ではWindows上で動くGISのパッケージを開発・販売する会社に所属。ドライブ好きで現在は珍しいMT免許の所持者。(写真左)

石川 大祐

システム統括部 システム開発部 グロースエンジニアリング課 マネジャー 新卒でSIerに入社。いろいろな現場での仕事を経験後、dip入社前にはWebマーケティングの情報システム部に所属していた。トランペットが吹けるという隠し技を持つ。(写真右)

author

秋山 美優

商品開発本部 クリエイティブ統括部 広告制作部 首都圏制作2課 ライター・ディレクターを担う人。感化されやすく占いは9割信じるが、1割の猜疑心が根深い。最近の生活に欠かせないものはYoutubeとアマプラ。