アプリケーション開発でもToilをなくそう!スリーシェイクのトヨタ事例で学ぶ、モダンな開発環境への道
【D-2】お客様のToilをなくすためのアプリケーション開発支援を始めました
フロントエンドツールの整備とアプリケーション改修
2つめは、開発速度向上に向けたツールの導入だ。ここでは、フロントエンドのツールを整備することとした。佐藤氏いわく、JavaScriptの処理が多いのにグローバル空間に配置されており、ファイル間の依存関係も分かりづらく、ライブラリのバージョン管理もされていないので修正コストが大きく、新任のエンジニアの認知負担を上げてしまっている状況だった。だが、フロントエンドの機能は多く、一気に変更するのは危険だ。
佐藤氏たちが考えたのは、開発生産向上に主軸を置いた、フロントエンド機能のモジュール化と依存関係の整理だ。
フロントエンドツールには、JavaScriptのライブラリの依存関係を明確にするためのpnpmと、JavaScriptバージョンの変換とRollup機能による段階的な導入を実現するViteを導入した。その後、実装をモジュール構文に変更し、コード上からライブラリの依存関係が分かるように改修。認知負担を減らし、保守性を高める構成に変えた。「まだフロントエンド関係のスキルが弱いので、TypeScriptまで一気に変換をかけずに、JavaScriptのままで分かりやすく整理した」(佐藤氏)
そして3つめは、アプリケーションの修正だ。ここでは主に、監視アラートでのメトリクス取得やログの抑制を実施した。
「KubernetesのProbeリクエストがアプリケーションのアクセスログに混ざっており、デバッグがしづらく、アプリケーションのメトリクスを取得できなかった。Google CloudのLoggerでフィルタすることも考えたが、デバッグ時はアプリケーションのログを直接参照するので、選択肢から外すことにした」(佐藤氏)
最終的には、アプリケーションのヘルスチェックログを抑制してデバッグしやすく変更し、Prometheus用エンドポイントを作成してメトリクスを取得できるようにしたという。「Prometheusのメトリクスを取得するミドルウェアがDjangoにあるので、それを追加。ログの抑制については、Gunicornを使っていたので、デフォルトのLoggerに対してヘルスチェックを除外するフィルタを追加し、KubernetesのProbeのアクセスがあったときは表示しないように設定した」(佐藤氏)
その他、Gunicornのチューニングや認証認可機能の作成、Kubernetes APIを扱うアプリケーションの実装サポートなど、細かい支援を実施。トヨタ自動車は自走に向けて、一歩ずつ前進を始めた。
特に同社が効果を痛感しているのは、スキルトランスファーの支援だ。
「どう動かそうかではなく、ログをどうやって取ろうか、メモリやCPU、レプリカのバランスをどうするかといった会話ができるまでメンバーのレベルが上がったと評価いただいた」。そう明かす佐藤氏は、今後はメンバーのスキルアップを継続するほか、CI/CDの整備、ユニットテストやE2Eテストの文化の醸成、Monorepoにおけるモジュールの共通化など、より深い開発支援を行う予定と述べる。
SREの導入や開発体制の改善を検討中の人に参考になればと述べる佐藤氏。「トヨタ自動車とスリーシェイクはともに、エンジニアを絶賛募集中。トヨタ自動車については、モダンなアプリケーション構成でSREベースの開発にチャレンジできる。興味があれば、ぜひ問い合わせてほしい」と語り、講演を終えた。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Developers Summit 2023 Summer セッションレポート連載記事一覧
- この記事の著者
-
谷崎 朋子(タニザキ トモコ)
エンタープライズIT向け雑誌の編集を経てフリーランスに。IT系ニュースサイトを中心に記事を執筆。セキュリティ、DevOpsあたりが最近は多めですが、基本は雑食。テクノロジーを楽しいエクスペリエンスに変えるような話が好きです。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
提供:株式会社スリーシェイク
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
