フルリモート!チーム対抗パフォーマンス改善合宿 結果編

MF KESSAI開発合宿運営のgarsueです。 前回に引き続き、チーム対抗パフォーマンス改善合宿の様子をお送りします。

今回は結果編として、実際にどういう改善が行われたかをお伝えします。

パフォーマンス改善サイクル

合宿でパフォーマンス改善に取り組む前日、GoogleでCloud Profilerをご担当なさってる山口(ymotongpoo)さんのご協力のもと、Cloud Profilerのハンズオンを実施していただきました。 ハンズオンの概要についてはチーム対抗パフォーマンス改善合宿 準備編をご覧ください。

そのおかげで「プロファイルを取る」「ボトルネックを見つける」「改善に向けて改修する」「実際に改善できたか再度プロファイラーで確認する」というパフォーマンス改善サイクルを各メンバーが身についていました。

このサイクルのなかで見つけたボトルネックと、実際に効果のあった改善について紹介していきます。

フルリモート!チーム対抗パフォーマンス改善合宿 仕組み編

MF KESSAI開発合宿運営(CTO)の@shinofaraです。 前回に引き続き、チーム対抗パフォーマンス改善合宿の様子をお送りします。

今回は仕組み編です。チームで競い合えるような仕組みをどのようにしてつくっていったかをお伝えします。

チーム対抗の課題

タイトルの通り、今回の合宿はチームごとにパフォーマンス改善を競い合う内容としました。そのためには各チームが行ったパフォーマンス改善の効果を測定し、チーム間で比較できるようにする指標が必要です。

また、リモートでの開催であったため、各チームの改善状況がすぐに分かるように継可視化の仕組みもほしいところです。

これらをある程度自動化して合宿当日はスムーズに取り組めるようにすることが課題でした。目標は当日に運営として何もしない!です。

フルリモート!チーム対抗パフォーマンス改善合宿 準備編

MF KESSAI開発合宿運営(CTO)の@shinofaraです。 2019年6月13日の開発合宿@箱根から1年以上ぶりに合宿を開催しました。

今回は新型コロナウイルス感染防止のためフルリモート開催とし、そんな中でも全員で楽しく取り組めるようにチームごとに競い合う形式としました。 開発合宿としては珍しい(?)スタイルなので、合宿内容・それを支える仕組み・実際の成果を何回かに渡ってご紹介したいと思います。

今回は準備編として、合宿の内容決定や合宿前日にやったGoogle Cloud Profilerのハンズオンについてお伝えします。

cert-managerをWorkload Identityに対応させる

MF KESSAIでは、一部社内で、cert-managerを利用しており、利用中のGKE(Google Kubernetes Engine)でWorkload Identity化をすすめるにあたってぶつかった壁があり暫定的ではあるものの解決したため、その方法を残しておきたいと思います。

社内で記事を温めてる間に、Documentを更新するPRが生まれてマージされました。 そのため公開するか悩みましたが日本語記事として読んでもらえればと思います。

NestJSでBFFをつくった話

MF KESSAIでバックエンドのエンジニアをやっているgarsueです。 先日当社のnoteのインタビュー企画NestJSを使ったBackend For Frontend(以下BFF)について「ブログお待ちしてます!」と言われてしまったので、重い腰を上げて書くことにしました。

当社ではNestJSをGraphQLをしゃべるBFFとして使っているので、そのあたりの勘所や知見を少し紹介します。

なぜBFFとしてNestJSを採用したか

まず、フロントエンドのフレームワークはNuxtJSで決まっていました。当社での2年以上の実績もあり、もはや定番となっています。 また、NuxtJSと合わせてGraphQLを使うのも定番となっており、今回もGraphQLを使うことが決まっていました。

NuxtJSから呼び出すBFFは今までGoでgqlgenを使ったGraphQLサーバーとして実装していました。 これはこれで悪くないのですが、やりたいことはバックエンドのサービス群を呼び出してフロントエンドの都合のいい形に加工して返すことぐらいなので、もっと軽く開発できる何かにしたいなとも思っていました。

そこで高い抽象度で記述量も少なく抑えられ、フロントエンドエンジニアも触りやすいTypeScript製のフレームワークであるNestJSを採用しました。 GraphQLもサポートされていて、NestJS自体がマイクロサービスアーキテクチャを前提にしてるフレームワークでもあり、今回の要件にマッチしていました。