Tsuru CapitalでOpsとして働く

Tsuru Capitalでは、新たに一人、東京オフィスで働くopsを募集しています。外部への露出があまり多くない会社なので、このポジションがどういうものなのか、会社はどんな雰囲気なのかを書いてみたいと思います。

このポジションの主たる目標は

  • 取引所のコロケーションスペースに設置している本番サーバで高効率・高可用性を実現・維持する
  • 取引のシミュレーション(バックテスト)サーバ群や業務に必要な種々のサーバ・開発環境の構築・維持を少ない人手で実現する

です。主に技術面と働き方についてもう少し詳しく書いてみます。

技術面

Tsuruは東京とバンクーバーにオフィスがあります。更にバンクーバーのホスティングサービス内、日本と韓国の取引所のコロケーションスペースにもサーバを設置しています。サーバ台数は各拠点・物理・仮想合わせて80台程度で、それぞれの拠点はVPNで接続されています。

全サーバ台数のうち大きな割合を占めるシミュレーション用サーバは、シミュレーション結果の正確さを確保するため専有サーバである必要があり、半数がホスティングサービス、残りがオフィスのPCとして稼働しています。PCの方は手間を減らすためにホスティングサービスに移行させる予定です。

本番サーバは取引所のコロケーションスペースに設置してあり、2ソケット10コア高クロックXeonで10GbEなど、ハードウェアマニアにはたまらない感じの構成です。さらなる低レイテンシネットワークの実現のため、現在Solarflare OpenOnloadを試しています。このようなハードウェアの選定、検証、チューニングもこのポジションの仕事です。

個人が使うワークステーションを含むほぼすべてがUbuntuで、構成管理にはChef + Berkshelfを使っています。ChefのレシピはGitLabでホストしていて、主要cookbookはpushするとGitLab CIがテストを走らせます。テストが通ってレビューも済んだものはChef Serverにuploadして、各サーバのChef Clientが自動的に適用します。ただし本番サーバは台数が少なく、かつ重要度が非常に高いので手動で適用します。

サーバ監視はSensu + Grafanaを使っています。SensuはChefと相性がよく、設定の自動化が簡単にできます。

僕が入社するまでは職人のぬくもりのあるシェルスクリプトで構成管理が行われ、サーバ監視は本番サーバに対してのみNagiosが使われていました。当然、他のサーバは落ちても何が起きているのか、すぐにはわかりません。サーバ構成に関するドキュメントもほとんどなく、いつどのような目的でどのような変更が行われたかもわかりません。前職でChefの経験があったので、Chefを導入してシェルスクリプトを置き換え、空いていたマシンにVMを作ってGitLabを導入し様々なものを可視化しました。このように現状の問題を把握し、少ない人的リソースで回せるように技術を選択し、実装するのもこのポジションの大切な仕事です。

働き方

各オフィスを合わせて10名強の人が働いていて、社長と各オフィスの事務を除くすべてがHaskellerです。出身国も様々で、コミュニケーションはすべて英語で行われます。組織はフラットで上司・部下という関係はありません。

オフィス間はGoogle Hangoutsで繋いでいつでも話しかけられるようになっています。テキストコミュニケーションはSlackを使っています。

開発は2週間を一区切りとするイテレーションで、各イテレーションの最後に何をしたか、次に何をするか、その他議題をTrelloにまとめてミーティングをします。これ以外に定例のミーティングはありません。

頻繁にはありませんが、時折ブローカー側でシステムの変更があったり、こちら側で本番サーバに何か変更を加える場合、ブローカーとメールやチャットでやりとりすることがあります。それ以外には外部とのやりとりも殆どありません。

勤務時間の大体の目安は7:30–18:00の間で実働8hくらいでしょうか。取引時間に合わせて、一般的なweb企業などと比べると早めの時間帯になっています。業務の性質上、取引時間に問題が起きた時に即座に反応できることが重要(遅刻厳禁)ですが、それ以外での時間的拘束はありません。残業する文化もありません。

リモートワークに関しては、風邪気味・用事があるなどの個人的な理由で部分的に導入されていますが、完全リモートは推奨されていません。特にopsとなると物理的な障害も起きうるので、基本的にオンサイトとなります。

FAQ

Haskellを書けなければいけないの?

書けなくても仕事をしながら学んでいけば問題ありません。

先述の通り構成管理にChefを使っているので一番良く書くのはRubyです。一部のcron jobなどはHaskellで書かれていますが、どれも小さいコードなので理解するのはそれほど難しくないと思います。

英語が話せないといけないの?

話せなくても仕事をしながら学んでいけば問題ありません。

Tsuruは英語で人材募集しているので世界各地から応募が来ます。しかしオフィスが東京にあるにも関わらず、日本人からの応募は非常に少ないと言えます。

日本人にとっては英語が大きな心理的障壁となっているかもしれません。僕もそうでした。転職前に前職で働きながら英会話学校に通い、付け焼き刃な英会話を頭に入れ、面接ではとても緊張してメチャクチャな英語を話した記憶があります。

心配ありません。この職種で重要なのは英会話ではありません。

Tsuruの人たちは日本で暮らしたことがある人ばかりで、broken Englishに対する耐性が高いようです。また幸いなことに現在メインのコミュニケーションチャネルはSlackやGitLab Issuesなどテキストベースです。ランチタイムの会話は最初は辛いかもしれませんが、いずれ慣れます。

最後に

このポジションに興味を持った方はぜひ応募してください。すでに応募が来始めているので、素早く動くことをオススメします。さらに細かい話を聞きたい方はコメント/Twitter/メールで僕までご連絡ください。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.