見出し画像

Garoonを支えるSiriusチームってどんなチーム?

Garoon開発 Siriusチームの酒井(@sakay_y)です。爬虫類が好きで、現在6匹飼ってます。

今回は、SiriusチームというGaroon開発の中で主にテクニカルサポートを担当しているチームの紹介をします。大変なチームではありますが、お客様のために絶対に必要なチームですし、前向きにやっていきたいこともたくさんあります。長くなってしまいましたが、この記事を読んで、少しでも興味を持ってもらえると嬉しいです。

Garoonとは

Garoonは企業や自治体、教育機関など様々なチームのコミュニケーションを促進するための中堅・大規模組織向けグループウェアです。6000社(2021年7月現在)のお客様にご利用いただいており、2002年から長きに亘ってサイボウズの主力製品となっています。 

Garoon開発チームとSiriusチームについて

Garoonの開発チームは複数のサブチームで構成されています。拠点としては、日本(東京、大阪、松山)、ベトナムに分かれています。今はリモートワーク主体なので、あまり拠点を感じることは無いです。東京オフィスでメンバーの手作りお菓子が配られてた時なんかは、他拠点メンバーとして悔しい思いをしました。それくらいです。

Garoon開発チームについては、2020年6月にCybozu Tech Meetupにて説明した資料/動画があります。Garoon開発チーム全体の雰囲気などを感じ取っていただけると幸いです。
一言でGaroonチームの雰囲気を伝えると、歴史ある巨大な製品(※個人の主観です)担当ですが、とてもにぎやかな感じ(※個人の主観です)です。

開発チームのミッションは、おおまかに3つに分けられます。Garoonでは、優先順位を上から順に設定しています。

1. お客様が被る不利益に対して即時対応すること
2. お客様が安心して使い続けるために改善すること
    a. 安定運用のための改善や監視
    b. 継続的に効率良く開発/リリースするための基盤改善
3. お客様に新しい価値を届けること

Siriusチームは、サブチームの中で主に1と2を担当しているチームになります。

以下は、2020年の12月にCybozu Tech MeetupでSiriusチームについて説明した資料/動画です。

2020年までは「お客様が被る不利益に対して即時対応すること」のみがSiriusチームのミッションでした。2021年に入ってから、チームメンバーが6名となり、チームでやれることが増え、「安定運用のための改善や監視」もSiriusチームのミッションとしています。

1. お客様が被る不利益に対して即時対応すること

Garoonをご利用中のお客様の環境で発生する問題を、サポートにお問い合わせいただくことがあります。その中から、技術的に調査すべき案件に対して、Siriusチームが状況確認や原因調査を行います。不具合と判断して改修すべき事項としたり、回避策をお伝えしたり、復旧手順のご案内をしたり、サポートチームと協力してお客様の不利益を解消すべく対応します。

2. お客様が安心して使い続けるために改善すること

お客様が不利益を被る前に、Garoonの問題を発見し、解消するために、監視や改善をおこなっています。cybozu.com版では、メトリクスを取得できますので、一早く異常を検知して、問題を調査するようにしています。パッケージ版では、メトリクスはお客様環境にしかありませんので、何か問題が発生したときの調査が効率よくおこなえるように、ログの改善などをします。

また、そもそも問題が起きにくい製品にしていく活動も、このチームで今後力を入れてやっていきたいことになります。

Siriusチームのスキル

繰り返しになりますが、Siriusチームの業務はお問い合わせ対応や安定運用のための改善です。そのため、Garoon開発チームの募集要項と比べたときに、歓迎するスキルや条件が少し異なります。

募集要項と同じように書くならば、以下のような感じでしょうか。

■ 必須スキル

- お客様のためを思って取り組むことができるマインド、モチベーション
- 調査結果を他者に分かりやすく伝える説明スキル

■ 歓迎スキル

- Webアプリケーションの運用と障害対応の経験
- Windows/Linuxなど多様な環境でのトラブルシューティングの経験
- コードを読むスキル
- MySQLの深い知識
- 英語の基本的なリーディング/ライティング

■ これから必要になりそうな歓迎スキル

- Kubernetesを利用した開発/運用経験

それぞれ少し詳しく解説していきます。

モチベーション

Siriusチームで続けていくために、お客様のために活動できる方というのが必須となります。調査や改善が主な業務になりますので、ソースコードをたくさん書いていきたい方には向いていません。ただ、お問い合わせ対応/障害対応だけだった時代に比べると、安定運用の改善のために開発することも増えてきています。

なんにしても、困っているお客様を助けたい、お客様に安心して利用してもらいたい、という気持ちが大事です。

説明スキル

私達は、技術的な調査内容を非エンジニアであるメンバーやお客様にお伝えしなければなりません。お問い合わせで聞きたいことや解決したいことは何なのか?納得していただくにはどのようにお伝えすればよいのか?そういった点を考慮し、分かりやすく誰かに伝えるスキルが必須になります。

運用と障害対応の経験

障害対応やお問い合わせ対応は、基本的にログやメトリクスを見て原因を調査して対応することになります。取り扱うログやメトリクスは、主に以下のようなものがあります。

- PHPのログ
- Garoonのログ
- Webサーバーのログ
- cybozu.comのログやメトリクス
- OS(Windows/Linux)のログ
- MySQLのログ
- 周辺システムのログ
    - ロードバランサー
    - メールサーバー

こういったログを読んで、現象を究明する経験をお持ちで、なおかつ、苦にならないことが大事だと思います。また、安定運用への積極的な提案ができるような経験をお持ちであれば、とても助かります。

多様な環境でのトラブルシューティングの経験

また、パッケージ版でのお問い合わせは、お客様/パートナー様が構築した環境でのトラブル調査になります。OSもWindowsとLinuxをサポートしていますし、サーバースペックや、周辺システムの有無も案件ごとに異なります。
広い知識が必要となりますので、過去に様々な環境を扱ったことがある経験はありがたいです。

コードを読むスキル

Garoonのソースコードは巨大です。また、製品としての機能も多種多様です。Garoonの全てを知ることは非常に困難で、多大な経験が必要になってしまいます。つまり、今まで見たことがないコードを読んで、お問い合わせの現象が何故起こったのか調査することが多々あります。また、Garoonは19年開発が続いている製品なので、レガシーな部分も未だに残っています。そういったコードでも怯むことなく読めると望ましいです。

MySQLの知識

GaroonはMySQLを利用した製品なので、MySQLの運用上のトラブルに対応することがあります。特に、お客様の環境で運用されているパッケージ版では、さまざまなトラブルと遭遇することになります。起こりうるトラブルの例としては、InnoDBのレプリケーションの不整合やデータ破損や全体的な性能劣化などです。これらはログやメトリクスからどのような現象が起こっているか読み取るスキルがあると、とても重宝されます。

社内にはエキスパートなメンバーもいますので、相談しながら対応していくこともできます。

英語

Garoon開発チームはベトナムと共同で作業をするので、社内文書でも英語が必要になることがあります。代表的なものだと、仕様書はすべて英語で記載するルールになっていますし、コミットログやコード中のコメントなども英語が求められます。もちろん、外部のドキュメントを読むときも、英語であることが多いですしね。

どうしても苦手だという人でも、社内に翻訳や相談をしてくれる専門のコミュニケーターが居たり、チーム内の希望者に機械翻訳ツールのDeepL Proを契約したり、負担が少なくするための対応はおこなっています。私も英語は得意ではないので、日々ツールやコミュニケーターに助けられています…。

Kubernetes

cybozu.comでは、Neco基盤への移行を進めています。詳しくは、Necoチームが公開したブログなどを御覧ください。

Neco基盤はKubernetesで運用されており、今後GaroonチームでもKubernetes運用の知識が必要です。既存の環境では必要なかった知識ですので、Kubernetesでの開発/運用経験をお持ちの方はありがたいです。

現在はチーム全体で専門家にハンズオン形式で教えてもらったり、影響の少ないところから扱ってみたりしている状況です。

Siriusチームではあまり使わないスキル

募集要項の歓迎スキルにはありますが、Agile(スクラム)での開発を行ったり、APIを開発したり、ということは今のところおこなっていません。

抱えている課題

では、Siriusチームがどんな課題を解決しようとしているかお話したいと思います。私達は、日々のお客様対応の業務に加えて、以下のような課題の改善に取り組んでいます。

お問い合わせ対応の改善について

お問い合わせ対応業務は、基本的にサービスを提供している限り無くなることはありません。ありがたいことに、Garoonのお客様は増えていますので、何もしなければお問い合わせは増えていく可能性が高いです。結果として、お問い合わせ対応以外の改善に使う工数が無くなってしまいます。お問い合わせにあがりやすい現象の改善や、お問い合わせを迅速に解決するための効率化も並行しておこなっていく必要があります。

監視・アラートの改善について

cybozu.comでは、さまざまなメトリクスを取得できますが、それを活用していく必要があります。これまでは、SREチームからの連絡や、お客様からのお問い合わせが来てから初めてGaroonチームで現象を認識する状態でした。
ここ1年くらいで、ようやくGaroonチームでアプリケーションのメトリクスを監視し、アラームを受け取り、お客様が被った不利益にすばやく気づく体制ができてきました。また、受け取ったアラートや注視すべきデータを社内に共有することで、開発以外のメンバーも、Garoonの今の状況を把握し、そのデータをもとにコミュニケーションを取るようになりました。

とはいえ、まだまだ監視している項目は多くなく、改善の余地があります。
cybozu.comがNeco基盤に移行したときには、Kubernetes上での監視が必要になります。監視やアラートはサービスの成長とともに改善しながら運用する必要がありますので、終わりがくることはありません。

性能問題の改善について

速さとは、それだけで価値となります。極端に遅いことは、障害として扱うことになります。データ量が膨らむと性能は劣化します。また、新しい機能を追加すれば、処理が増えることとなり、性能へ影響を与えます。継続的に安定したサービスを提供する上で、正確な性能検証と継続的な性能改善は必須です。

データ量やリクエスト量を適切に制限する、といった方向性も検討していくべきだと考えています。

一緒にSiriusチームで働く仲間を募集中です!

Siriusチームのスキルと課題について紹介しましたが、いかがでしたでしょうか?ここまでのご紹介で、Siriusチームについて、少しでも興味を持っていただけたら幸いです。

ちなみに、これらのスキルをすべて持っている必要は、もちろんありません。逆に言うと、Siriusチームにいるとこれらのスキルを学ぶ経験があると言えます。

こういったサポートや安定運用というミッションは、BtoBというビジネスモデルかつ、大規模サービスという特性によるものです。国内で同じようなチャレンジができる環境はそう多くないと思います。安定したサービスの提供ができれば、Garoonはこれからも、また、もっと多くのお客様にご利用いただけると信じています。

Garoon開発チームはビジネスメンバーやサポートメンバーとも良好なコミュニケーションを取りながら開発を進められるようになったチームで、本当にみんなが一丸となっていると実感できます。その中でも、私達Siriusチームは、Garoonを選んでくださったユーザーに最高の体験をしていただけるように、「縁の下の力持ち」として頑張っていきたいです。

もし、「一緒に働いてみたいな」と感じてくださった方がいらっしゃいましたら、以下からご応募いただけると幸いです。よろしくお願いします。