10年続くサービスを、インフラ技術で支える

Webオペレーションエンジニア座談会

はてなの各サービスの裏側には、そのインフラを担うWebオペレーションエンジニアの存在があります。大規模で複雑なシステムを支えるはてなのインフラチームは、日頃どんなふうに仕事をしているのでしょうか。入社のきっかけ、はてなでの働き方、チームが目指すものなどについて、id:wtatsuru、id:y_uuki、id:dekokun、id:taketo957の4人に聞きました。
Webオペレーションエンジニア集合写真
  • y_uuki

    id:y_uuki

  • taketo957

    id:taketo957

  • wtatsuru

    id:wtatsuru

  • dekokun

    id:dekokun

はてなのインフラチームであるシステムプラットフォーム部から、4人の皆さんに集まっていただきました。まずは自己紹介をお願いします。

wtatsuru システムプラットフォーム部 部長のwtatsuruです。2011年に新卒で入社しました。システムプラットフォーム部は2016年8月から、主に各サービスの構築・運用を行う「サービス運用チーム」と、サービスを支える基盤部分の構築・運用を担う「基盤開発チーム」の2チーム体制で運用しています。私は部長として、その全体を見ています。

y_uuki 基盤開発チーム リーダーのy_uukiです。2013年に新卒で入社して、当初からMackerelの開発に携わっていました。今もMackerelの次世代の基盤を開発中です。

dekokun サービス運用チーム リーダーのdekokunです。システムプラットフォーム部の中では唯一の東京勤務で、今日のように時々京都オフィスにも来ています。前職ではソーシャルゲームの開発をしていて、2015年にはてなに入社しました。はてなブログを中心に全サービスの様子を見つつ、KADOKAWAさんとのカクヨムなど、共同開発サービスも担当しています。

taketo957 サービス運用チームのtaketo957です。はてなでは2014年にアルバイトを始めて、2016年に新卒として入社しました。人力検索はてななど、はてなの中でも特に歴史のあるサービスや、広告周りのシステムを担当しています。

2チーム体制になった理由は?

wtatsuru チームの人数も、担当するサービスの数も増えてきたという背景があります。規模が大きくなる中で、各サービスの構築・運用だけでなく、サービスの共通基盤に責任を持つ役割が必要になってきました。

新しい体制になって、変化はありましたか?

dekokun 「基盤をどうにかしたい」というときに、相談できる対象が明確になりましたね。

y_uuki 以前は、他のサービスにも影響するような修正を加えたいとき、誰に相談すればいいのか分からない状況がありました。今はそういう相談を基盤開発チームでまとめて受けて、方針を決めています。

はてなを選んだきっかけ

皆さんがはてなに入社したきっかけについてお聞きします。wtatsuruさん、y_uukiさん、taketo957さんの3人は新卒入社ですね。

wtatsuru

id:wtatsuru

wtatsuru そうですね。私の場合は修士課程の頃に、東京オフィスでアルバイトを始めたのが最初です。昔から計算機が好きで自宅でもいじっていたんですが、もっと大きなシステムを触ってみたいなと。アルバイト初日から、多くのサーバを触れる環境でいろいろやらせてもらいました。

y_uuki 僕は2011年のはてなインターンに参加しました。当時のインターンにはWebオペレーションエンジニア向けのコースはなくて、Webアプリケーションを書いていました。その後アルバイトにも応募したんですが、Webアプリケーションエンジニアのつもりが、なぜかWebオペレーションエンジニアとして採用されて(笑)。

wtatsuru 人が足りていなかったからね(笑)。ただ、アルバイトに関しては応募の時点でWebアプリケーションエンジニアかWebオペレーションエンジニアかの区別はせず、実際に働く中で適正を見ています。

y_uuki 大学ではCPU、GPU、TCP/IP、ネットワーク周りなども研究していたので、もともと下のレイヤーには興味があったんです。アルバイトとして入社してからは、現在のMackerelの前身になった、社内向けMackerelの開発を担当しました。インフラというと手作業で高速にサーバを構築する“職人の勘”みたいなイメージがあったんですが、Mackerelにはインフラをプログラマブルに扱える可能性を感じて面白いなと思い、新卒応募を決めました。

taketo957 僕ももともとはWebアプリケーションをメインで書いたり、大学では推薦など応用系の研究をしたりしていました。はてなでアルバイトを始めてインフラを触るようになって、Webアプリケーションだけを書いていた頃よりも見える範囲がぐっと広がったんです。はてなのエンジニアの技術に対する向き合い方を見て、ここなら面白いことができそうだなと思いました。

dekokunさんは、はてなに転職を決めたきっかけは何ですか?

dekokun 前職はソーシャルゲームの会社で、転職前の1年間はインフラとは対極のフロントエンドを担当していました。当時はJavaScriptを書きまくっていたんですが、一通りやった後、まだ経験がなかったインフラの領域に興味が出てきて。自分がよく使うサービスを運営している会社ということで、はてなを受けました。面接はとにかく技術の話題で持ち切りで。技術を大切にする会社として、本人の技術との向き合い方にも目を向けて、すごくしっかりした採用をしているなと思いました。

taketo957 僕も新卒で何社か受けていたんですが、面接中あんなに技術の話題で盛り上がった会社は初めてでしたね。白熱しすぎて、終わった後フラフラになるくらいでした(笑)。

若手が中心のインフラチーム

はてなのシステムプラットフォーム部は、全体的にとても若いメンバーで構成されています。先ほど入社のきっかけについてお聞きしましたが「はてなに来て初めてインフラの領域に触れた」という人も多いですね。

wtatsuru そうですね。もともとはWebアプリケーションを書いていたメンバーも多いです。2016年はWebオペレーションエンジニアとして2人の新卒が入社したんですが、それに合わせて初めてWebオペレーションエンジニア向けの新卒研修を実施しました。

新卒研修はどんな内容だったんですか?

y_uuki

id:y_uuki

y_uuki 先ほど面接についての話がありましたが、新卒の場合も基本的な技術について多少の知識はあるという前提で入社しています。なので、新卒研修では「はてなのインフラ」の基礎知識を学んでもらいました。はてなのインフラの全体像を知らないまま部分的な仕事だけをしていくと、全体を意識した効率化ができないし、気付かないうちに技術的負債を蓄積してしまうこともあります。研修自体は凝ったことはやっていなくて、はてなのインフラの基礎となるいくつかの項目について自分たちで調べてもらい、こちらからフィードバックするという形で進めました。

2016年ウェブオペレーションエンジニアの新卒研修 - Hatena Developer Blog

実際に研修を受けたtaketo957さんはいかがでしたか?

taketo957 研修は知識課題・設計課題・実践課題という3つに分かれていたんですが、特に知識課題が後々すごく効きました。知識がないまま実践投入されていたら、見えなかった部分があったと思います。自分がサービスを運用する中で見える部分だけでなく、他のメンバーがやっている部分についても理解できました。

taketo957さんはつい先日、入社して初めての大きなリリースを終えたところなんですよね。

taketo957 はい! ここ半年くらい取り組んでいた、はてな独自の社内向け広告配信システムのリリースがありました。従来の運用工数を削減しつつ、今後のために開発しやすい基盤を作ることができました。

半年ということは、入社直後からもう動き出していたんですね。

wtatsuru はてなのシステムプラットフォーム部では、新卒にも入社直後からサービスを任せています。今回は5月くらいに新しい社内向け広告配信システムの話があったので、早い段階からtaketo957さんに開発側とコミュニケーションを取って進めてもらいました。設計や技術面についてはメンターが責任を持ちますが、本人にも実際に作業しながら覚えてもらいました。

taketo957 y_uukiさんにメンターになってもらって、設計段階では一緒に開発チームのミーティングに参加しました。その後は徐々に1人で任される範囲が大きくなって、構築段階では相談はできるけど基本的には1人で回さないといけなくて……。他社に新卒で入った友達にこの話をすると「もうそんなに任されてるの!?」と驚かれます。

y_uuki 僕も入社2ヶ月でMackerelを任されました(笑)。

wtatsuru 昔は今以上に「じゃ、後はよろしく!」という感じでしたね(笑)。インフラの場合、サービスを丸ごと任されることになるので、開発側よりも裁量は大きいと思います。

初めてのリモートワーク体制

前職でWebアプリケーションエンジニアだったdekokunさんは、Webオペレーションエンジニアとしてはてなに来て、どう感じましたか?

dekokun

id:dekokun

dekokun 入社して2、3ヶ月ではてなブログの運用を引き継いで、同時期にカクヨムの開発も始まったので、最初は正直かなりプレッシャーを感じました。いきなりメインサービスの1つと、新規サービスを任されたので……。ただ、はてなに来て驚いたのはエンジニア全員のレベルが高くて、それぞれが技術についてちゃんと考えているということです。以前は困ったことがあっても「全部自分で何とかしないと!」という場面が多くて。はてなでは必ず誰かが助けてくれるので、何とか乗り越えられました。あと一番の変化は、Webオペレーションエンジニアになったことよりも、東京・京都間のリモートワーク体制になったことですね。

リモートワークは初めてですか?

dekokun 初めてです。入社して1ヶ月間は研修のために京都にいて、その後東京に戻りました。システムプラットフォーム部の他のメンバーも、一緒に仕事する開発メンバーも全員京都なので、最初はとにかくつらかったです……。朝会では画面越しに顔を見ながら会話するんですが、コミュニケーションは基本Slackで。もともとWebアプリケーションエンジニアだったので自信がない部分もあるし、最初はノリもつかめなくて。Slackではみんな「いけるいける!」って言ってくれるけど「本当に!? 信じていいの!?」みたいな(笑)。気軽に雑談もできないし……。

なるほど……その状況はどうやって解消されていったんですか?

dekokun 一番最初のブレイクスルーは、社内で使っているはてなグループの日記やGitHub Enterprise(GHE)などの非同期なコミュニケーション手段を見つけたことですね。「すぐ答えてほしいわけではないけど、気になっていること」を書いておくと、自然とみんなが答えやヒントをくれるんです。もう1つの転機は、y_uukiさん発案のSlack Callを使った雑談タイムの導入ですね。

y_uuki チームの規模が大きくなって相談しないといけない場面が増えてきたので、何かいいコミュニケーション手段はないかなと考えていました。いろいろなボイスチャット・ビデオチャットサービスを試す中で、Slack Callが一番使いやすかったです。毎日、終業前の日報を書くタイミングに合わせて、Slack Callで自由に雑談できるようにしています。昨日行った勉強会の感想とか、「お腹すいた」みたいなこととか。

リモートワークにおけるSlack Call活用と終業15分前の雑談 - Hatena Developer Blog

dekokun 気軽に雑談できるようになったのは本当にうれしかったです!

wtatsuru チームとしてもリモートワーク体制は初めてだったので、最初は不安もあったし、いろいろ試行錯誤していました。今ではdekokunが一番楽しそうに雑談しています。東京オフィスでは、雑談タイムにdekokunの笑い声が響くのがおなじみの光景になっているという(笑)。

y_uuki 他のチームにも「雑談タイムいいよ」って勧めているんですが、一番長く続いているのはシステムプラットフォーム部ですね(笑)。

他のチームは普段から一緒にいることが多いし、口頭でコミュニケーションしやすいですもんね。

y_uuki そうですね。あと自分たちの場合は、異なるサービスでもシステムの基盤が同じなので、互いの担当サービスにも関心が高い。話題が尽きないんです。

dekokun そうやってコミュニケーションがうまくできるようになって、カクヨムのαリリースを終えて自信がついたこともあって、当初感じていたような不安はなくなりました。

ミーティングの際は、東京・京都間をテレビ会議システムでつなぐ

インフラ技術・サービス開発間の密な連携と、それを支えるMackerelの存在

開発メンバーとのコミュニケーションはどんなふうにしていますか?

wtatsuru リリースを終えたばかりのtaketo957さん、どうでしたか?

taketo957

id:taketo957

taketo957 今回リリースした社内向け広告配信システムの場合は、週1回のミーティングと毎朝の朝会がありました。ミーティングでは、今後の方針、実装方法、ビジネス側の要件などについて話しました。進めていくうちにさまざまな問題が出てくるので、朝会で前日に起きた問題点を共有し、どうやって解決するかを話し合いました。

wtatsuru サービスの構築段階では、インフラ側も開発チームにがっつり入っていくようにしています。

taketo957 構築段階では、システムプラットフォーム部以外にもう1つ所属チームが増えたような感じでした。あと、インフラ側と開発側で担当範囲が明確に分かれているわけではないんです。僕がアプリケーション側の設定をいじることもあるし、開発チームのエンジニアはミドルウェアの設定なども考慮して実装してくれる。お互いに気に掛けながら構築が進んでいくんだなと思いました。

dekokun はてなに来て、Webアプリケーションエンジニアがミドルウェアに高い関心を持っていることに驚きました。

wtatsuru お互いの領域について知っておくことは、自分のキャリアにとってもプラスになりますね。インフラ側と開発側がコミュニケーションする場としては、サービスごとに「Performance Working Group(PWG)」という定期的なミーティングがあります。サービスのレスポンススピードやエラー率などをグラフでチェックし、問題点があれば、インフラ側・開発側の双方から考えられる原因について共有します。例えば「このタイミングでサーバの故障があった」とか「このリリースが影響していそうだ」といった具合ですね。こういう場を設けることで、長期的に運用していくサービスの問題点を洗い出しやすくしています。

y_uuki パフォーマンスのチェックにはもちろんMackerelを使っているんですが、最近は開発側のエンジニアが先にグラフを見て問題を見つけてくれることが増えました。Mackerel自体の性能がすごく良くなっているので、みんな使ってくれているんです。昔はインフラ側のエンジニアにしか分からないような、とっつきにくいUIのツールしかなかったんですが、Mackerelができてから変わりましたね。

もともと社内向けに作られたサーバ管理ツールに改良を重ねて、現在のMackerelが誕生したんですよね。

wtatsuru Mackerelに関しては、ずっとインフラで運用してきた知見を生かして、使いやすいものができたと思います。

taketo957 僕もアルバイト時代にMackerelの前身を担当していたので、どんどん使いやすく進化しているなという実感がありました。

y_uuki はてなのようなWeb企業が、サービスを支える基盤をサービスとして提供しているのは珍しくて。自分たちで使うツールを自分たちで作っているというのは、とてもやりやすいです。

“10年戦える技術”のために

入社前・入社後のエピソードの中で、はてなのエンジニアの技術に対する姿勢に感心や共感をしたという話が何度か出てきました。技術との向き合い方で、意識していることはありますか?

y_uuki はてなのエンジニアリングには「10年戦える技術で攻める」というテーマがあります。最近は特にインフラ自動化のための概念やツールがどんどん出てきていて、それらをすべてキャッチアップしていくのも1つのやり方ではあります。でもはてなの場合は10年以上使われるような息の長いサービスを目指しているので、「とりあえず新しいものを取り入れてみて、合わなければやめよう」みたいなやり方は向かないんです。

新しい技術などを取り入れるときは、それがサービスにとって本当に有用なのかどうかをよく検討する、ということですね。

y_uuki そうですね。ただ、そう言うと技術に対して保守的なように見えるかもしれないんですが、一方で思い切って新しいものを取り入れることもあります。ちょうど最近、Mackerelのさらなる成長を目指して、最近流行りのサーバレスアーキテクチャの導入を検討しています。サービスに要求されるレベルがどんどん高くなってきているので、そのスピードに対応するためには新しいものを取り入れる必要があるんです。

wtatsuru その必要があると判断したときは、思い切って振り切ります。そのためには、普段から個々の技術をしっかり磨いていく必要がありますね。気になる技術やアイデアがあれば、チームの定例ミーティングや雑談タイムなどで気軽に相談できるようにしています。

チームの将来像は?

はてなのWebオペレーションエンジニアとして、どんな人に来てほしいですか?

wtatsuru 経験よりもまず、技術に対する姿勢を重視しています。サービスを支える裏方として、必要な技術を自ら考えて学び、自身を高めていく姿勢があるかどうか。そういう人にとっては、とても働きやすい環境です。

y_uuki 新しい何かを学ぶとき、基本的な部分からきちんと押さえていこうとする人がいいですね。例えばDockerについて知りたいなら、まずLinuxのコンテナの仕組みを理解しておく必要があります。入社時点ですべてを理解している必要はないので、そういう部分をちゃんと追い掛けていける人がいいです。それから、僕自身がブログを書いたりカンファレンスで発表したりするのが好きなので、同じように外に向けて発信するのが好きな人だとうれしいです。

y_uukiさんのブログから、実際に応募や入社につながった事例がたくさんあるんですよね。

dekokun 私も入社前にy_uukiさんのブログを読んで影響を受けた1人です! 私としては、東京でもやっていけることを身をもって示してきたので、東京のメンバーももっと増やしたいですね。私の雑談相手になってくれる人が欲しいです(笑)。

東京でも大丈夫!というのを伝えたいですね。最後に「今後はこんなチームにしていきたい」というイメージがあれば教えてください。

wtatsuru 人数の割にはハイペースに新サービスを作っているので、それに耐えられるチームとシステムにしたいと思っています。昔は共通のシステムの上に各サービスを乗せてやっていくという感じでしたが、最近は複雑化して、異なるサービスを扱うチーム間で差異が出てきたり、システム自体が難しくなってきたり。それらをしっかりと、技術で支えていきたいです。

y_uuki 10年続くサービスを支える上で、最近「はてなシステム」というのを考えています。Webオペレーション技術においては、個々の要素技術自体はいろいろな会社で使われていて、それらが組み合わさった結果がその組織特有のものになります。はてなシステムは、“はてな特有のシステムとはどんなものか”というのを先に考えて、そこから必要な要素を組んでいくというやり方です。そういう発想の仕方でシステムを作っていけるチームになりたいなと思います。

dekokun 最終的には、人がやりたいことだけを伝えれば、後は機械が考えていい感じにしてくれるようなシステムを作りたいですね。

一同 うんうん。

taketo957 システムの運用を自動化するときに、ロジックを人が書くのは限界があると思っています。僕はもともと最適化とかに興味があって自分でも取り組んできたんですが、インフラの領域で自動化を目指すときに、そういうノウハウも生かせるんじゃないかなと。これからインフラの技術を磨くのと同時に、もっと理論的な話や、最適化みたいな応用寄りの話もうまく生かしていきたいです。

wtatsuru 技術でやりたいことができる状態を保っていきたいですね。面白いのが一番なので!

ありがとうございました!

このエントリーをはてなブックマークに追加