
ヨーロッパ最大の食品プラットフォームであるChefkochは、開発者のワークフローを効率化し、プロジェクトの可視性を向上させ、制御されたデプロイを実現する方法を模索していました。
GitLabにより、毎月数百万人のユーザーにカスタマイズされたレシピを提供する人気のレシピプラットフォームは、より迅速なデプロイ、バグの早期発見、開発者の貴重な時間の確保を実現しました。これらすべてを、Chefkochの運用チームが必要としていたエンドツーエンドの可視性を提供しながら達成しました。
プロジェクト全体を俯瞰できる1つのツールがあります。すべてを簡単に確認できます。
Chefkochは、一緒に料理をして食事をすることで私たちはより幸せになれるという信念のもとに構築されました。レシピは物語を伝え、伝統を受け継ぐことができます。Chefkochは現在、ヨーロッパ最大の食品プラットフォームであり、35万以上のレシピを誇るモバイルアプリと、毎月2,200万人以上のユーザーを持つコミュニティを有しています。ユーザーはベジタリアン、パレオ、低炭水化物など、好みに合わせてChefkochをカスタマイズし、自分の好みに合った実績のあるレシピを見つけることができます。ユーザーはレシピを評価したり、友人と共有したり、ハウツー動画を視聴したり、新しいことに挑戦するインスピレーションを得たりすることができます。適切なレシピは幸せな瞬間を共有し、Chefkochは初心者からプロまで、誰もがパーソナライズして楽しめるユーザー中心のエクスペリエンスを提供したいと考えています。
Chefkochはあらゆる場面に対応するレシピを用意していますが、食品プラットフォームのエクスペリエンスを提供するための適切なソリューションを見つけることは、はるかに困難でした。「バージョン管理されたデプロイがなく、Gitもまったくありませんでした。手作業が多かったです」と、ChefkochのシニアシステムエンジニアであるRoman van Gemmeren氏は述べています。「インフラストラクチャがどのように機能しているか、パフォーマンスがどうなっているかについて、実際の洞察がありませんでした。」Van Gemmeren氏は、インフラストラクチャと開発者ツールを維持し、Kubernetesクラスター管理やモニタリングなどのサービスへのアクセスを提供する運用チームを率いています。
Chefkochの運用チームは、主に手動のプロセスで複雑なエコシステムを管理していました。ChefkochはGitLabに移行する前にBitBucketでGitを使用していましたが、彼らが持っていたAtlassianツールスタック(Bitbucket、Bamboo)はモニタリングに必要なメトリクスを提供せず、Kubernetesとも統合されていませんでした。開発チームを適切にサポートし、制御されたデプロイを提供するために、Van Gemmeren氏のチームには以下が必要でした:
まず、Van Gemmeren氏は、チームがより良い命名規則を持つGitリポジトリを望んでいることを知っていました。リポジトリパスのようなものでさえ、開発における多くの混乱を軽減できます。「より多くの可視性と、ある種のグローバルな管理の可能性を求めていました」とVan Gemmeren氏は述べています。「以前は、リポジトリ名がXYZで、DockerイメージがABCで、それらのツール間に関連性がありませんでした。」Van Gemmeren氏はGitHubも検討しましたが、パブリックソリューションよりもセルフマネージドのものを強く好みました。CI/CDについては、Van Gemmeren氏はBambooの代替としてJenkinsを検討しましたが、プラグイン環境は適切に維持するには複雑すぎると判断しました。
リポジトリとCI/CDが組み込まれたGitLabのDevOpsプラットフォームは、Chefkochの運用チームが求めていたエンドツーエンドの可視性を提供しました。GitLabはまた、シンプルなアクセス制御を備えたシームレスなインターフェースも提供しました。「Bambooでは、すべてのプロジェクトに認証情報を提供する必要がありました。別々の認証情報さえも。そしてGitLabでは、いくつかのクラスターを設定し、グループレベルで認証情報を提供するだけで済みます」とVan Gemmeren氏は述べています。
Van Gemmeren氏とそのチームにとって、プロジェクトで何が起こっているかを把握することは継続的な課題でした。多くのツールが分散し、互いに統合されていないため、イシューがいつ解決されたかを知ることが困難でした。GitLabのマージリクエストは、ディスカッションへの洞察を提供し、コミットを通じてアクションをログに記録することで、その問題を解決することができました。GitLabのリポジトリとスムーズなパイプラインにより、開発者はどのDockerイメージがどのリポジトリに属しているかを簡単に把握できるようになりました。アプリ開発チームはプロセスの最大の改善を経験し、デプロイが約80%高速化しました。「フロントエンド向けバックエンドサービスは、アプリ開発者によって非常にシンプルな方法でビルドおよびデプロイできるようになりました。これはBambooでは不可能でした」と、ChefkochのリードデベロッパーAndroid/iOSであるIngo Reinhart氏は述べています。マージリクエストはコード品質も向上させ、より良いコラボレーションを可能にしました。「CIインターフェースによる障壁がなくなりました。アプリチームはGitLabに非常に満足しています」とReinhart氏は述べています。
GitLabのKubernetes、JIRA、Grafanaとのインテグレーションにより、運用チームは以前は不可能だったプロジェクトへの監視が可能になりました。「現在、プロジェクト固有のメトリクスをGitLabで、より全体的な概要を私たちが維持しているGrafanaスタックで確認しています」とVan Gemmeren氏は述べています。運用チームは特定のGitLabコミットを参照し、パフォーマンスがいつ低下または向上したかを確認できます。Androidアプリは、開発者のコンピューター上でローカルにビルドされ、手動でPlay Storeにアップロードされることがなくなったことは注目に値します。開発者はマージ後に自動的にこれを行うことができるようになりました。これにより、コンプライアンスと信頼性が0%から80%に向上しました。
ChefkochはGitLab Runnerで必要なスケーラビリティを手に入れ、ビルドを待つことなく、Van Gemmeren氏はチームが本番環境へのデプロイを30%高速化していると推定しています。GitLabのTerraformインテグレーションにより、デプロイはCI/CDパイプラインから管理されます。GitLabにより、パイプラインからインフラストラクチャまで、すべてをコードとして採用し、手動の負荷を軽減することができました。効率化された開発者ワークフローにより、開発から運用まで、すべての人がプロジェクトへの可視性を高めています。「APIゲートウェイなどのバックエンドサービスは、モバイルアプリケーション開発者によって維持およびデプロイできるようになりました」とVan Gemmeren氏は述べています。「全員が同じツールを使用し、同じUIエクスペリエンスを持っています。」
GitLabを信頼できる唯一の情報源として持つことは、Chefkochチームにとって有益でした。アプリケーション開発におけるテスト失敗を管理する単一のソースを特定できるからです。新しいワークフローにより、チームはシフトレフトを実現し、ソフトウェアデリバリーライフサイクルの30%早い段階で脆弱性やバグを検出しています。GitLabを採用する前はほとんどのテストが手動でしたが、現在、運用チームはTrivyを使用したコンテナスキャンと組み合わせて、CI/CDパイプラインで自動テストを使用しています。
GitLabの予期せぬメリットの1つは、新しい開発者のオンボーディングエクスペリエンスが改善され、オンボーディングが2日からわずか2時間に短縮されたことです。GitLabの豊富なドキュメントにより、新しい開発者はよりセルフサービスモデルを採用し、迅速に習熟できます。Van Gemmeren氏は、メンテナンスに集中する必要がなくなったため、開発者は約20%の時間を確保できたと推定しています。開発者はツールの維持ではなく、コードの開発に集中できるようになりました。「はるかに時間がかからなくなりました」とVan Gemmeren氏は述べています。
ケーススタディに記載されている情報や関係者はすべて、発表時点のものです。