こんにちは。Yakumo チーム*1の品田です。 今年は Yakumo チームでサマーインターンシップ(プラットフォームAWSコース)を開催しました。 本記事ではインターンの内容について紹介したいと思います。
概要
プラットフォームAWSコースのインターンは9/9~9/13の5日間開催し、2名のインターン生の方にフルリモートで参加していただきました。 インターンではYakumoチームの普段の業務を体験していただけるようなタスクを用意し体験していただきました。
日程
インターンは下記のような日程で実施しました。
雑談イベントや成果報告会以外はインターン生2名メンター2名の計4人のモブプログラミングで作業を進めていきました。
また、各種スクラムイベントについても参加していただき普段の業務の雰囲気を体験していただきました。
- 毎日 10:00~: デイリースクラム
- 毎日 16:00~: 夕会、バックログリファインメント
- 水曜日 13:30~: スプリントレビュー
前提知識のインプット
Yakumo 基盤はグローバル向けのkinotneを動かす基盤であり、複数のマイクロサービスから構成される複雑な環境となっています。 そのため、手をいれてもらうためにも様々な前提知識が必要となります。 今回は短期のインターンではありましたが説明をする時間を作り、基盤やタスクに対する理解を深めていただきました。
- 国内基盤と海外基盤の違い
- kintone のアプリケーションは同一で、バックエンドのマイクロサービスやインフラレイヤーで利用されるものが異なる点など
- 運用におけるシステムの状態を把握するためのメトリクスの重要性の説明
- 根本原因調査やリソース増強などの意思決定時に有用であるという話
- どこに問題があるか適当に推測して変更を加える手法だと無駄が多いのでメトリクスから根本原因を特定しやすくしよう的な話
- Yakumo 基盤全体のアーキテクチャ
- メトリクスを収集する仕組み
- メトリクス実装対象のコンポーネントの役割解説
等
アーキテクチャ説明
Yakumo 基盤全体のアーキテクチャ/メトリクスを収集する仕組み/メトリクス実装対象のコンポーネントの役割解説については、チーム内で整備しているドキュメントを一緒に見ながら説明を行いました。
説明中もインターン生の方から色々と質問をいただき、基盤の理解を深めてもらえたかなと思います。
取り組んでもらったタスク
今回のインターンでは、Yakumo 基盤の可観測性の向上を目的としたメトリクスの追加を実施してもらいました。
今回追加してもらったメトリクスは controller と呼ばれる非同期処理を実行するマイクロサービスのジョブの実行時間の情報です。ログファイルとしては出力されているのですが、可視化の手間があるため、モニタリングシステムに転送して簡単に見れるようにしていきます。
メトリクスの取得方法
Yakumo 環境では監視に主に Datadog というモニタリングシステムを利用しており、Yakumo の主要マイクロサービスでは下記のような方法でメトリクスを転送しています。
- アプリケーション側では Spring Boot + Micrometer でメトリクスを公開
- Deployment の annotations でメトリクスを取得するためのエンドポイントや取得するメトリクスを指定
- DaemonSet として各ノードで動作する Datadog Agent がメトリクスを収集して送信
実装
非同期ジョブの実行時間についてはいくつか計測方法がありますが、今回は実行時間を計測/ロギングする処理は既に存在したため、その実行時間を計測する処理の中にメトリクスを公開するための処理を追加してもらいました。
Datadog で可視化
Datadog にログインしてもらい、実際に転送されているメトリクスを一緒に確認しました。 また、取得したメトリクスを Datadog のダッシュボードで表示するところまで実施してもらいました。
インターン生からのフィードバック
参加していただいたインターン生の感想を紹介します。
- リモートインターンで雰囲気が分かるか不安だったが、ランチや青野社長との雑談で解像度がかなり上がった
- 入社後の働くイメージが湧いた
- 公明正大のもと資料を自由に閲覧でき、貪欲に学べた
- 様々な方との交流会が設けられており会社の雰囲気やビジョンを会話を通してより深く知ることができてよかった
おわりに
サイボウズ内でも少し珍しいAWSを利用したプラットフォームの開発や運用の雰囲気を感じていただける良い機会になったかなと思います。 サイボウズでは開発職の募集をしておりますので、ご興味を持っていただけた方はぜひご応募ください。
*1:Yakumo とはグローバル向けのkintoneを動作させる基盤の名称であり、また基盤の開発/運用をしているチームの名称でもあります 参考: https://blog.cybozu.io/entry/2020/02/12/080000