Gengoエンジニアリングの強化
昨年Gengoに入社して以来、様々なエンジニアリングプロセスの改善を図ってきました。当時、当社のインフラは構成管理がされておらず、自動テストやサービス状態のモニタリングも十分ではありませんでした。バグがユーザーから報告されたり、アップデート後何日も経ってから発見されたりしました。しかし、チームの拡大と共に、これらの問題に対応するためにもいくつかの基本的な改良を行うことにしました。
インフラ
まずはじめに、インフラをより確実にするためにChefを使い始めました。Chefは、「Recipe(レシピ)」を使ってサーバーの状態 (インストールしたいアプリケーション、実行したいサービス、書き込みたいファイル) を伝え、サーバーアプリケーションを管理します。
またレシピを使うと、Vagrantという別のツールで仮想マシンを設定することもできます。Vagrant はマシン仮想化ツール (例:VirtualBox) にとっては大変便利なラッパーで、2~3のコマンドだけで開発環境を立ち上げることができます。Vagrant 以前は、全エンジニアでひとつのマシンを共有しており、新しい開発環境を作り上げるのは、複雑なうえ手作業によるプロセスとなっていました。私達は、新しいエンジニアたちができるだけ早くコードをコミットできるようにしたいと思っており、Vagrantがその実現を手助けしてくれました。
コード
また、コードの書き方も修正しました。一度にコードベース全体をリファクタリングしようとするのではなく(骨の折れる作業)、新機能の追加に合わせて該当部分を少しずつ確実にリファクタリングしています。また、Backbone.js, Coffeescript, Sass そしてGruntのような、様々なフロントエンド技術を使用しており、これにより冗長性を減らし、コードを簡素化することができました。
テスト
テストに関しては、Travis-CIというツールを使い始めました。これは、あらゆるプルリクエストやマージにおけるテストの実行を可能にします。当社では、ビルドが通った場合のみプルリクエストをマージします: ビルドに失敗した場合は、その原因を探り修正します。これにより、不具合の再発やバグの量を大幅に防止することができるようになりました。
全体として、これらの変更によりGengoの開発者にとってさらに安定したコーディング環境を提供すると同時に、ユーザーの皆様にはスピードや使い易さの改善をもたらしました。継続的インテグレーションやサービス指向アーキテクチャの徹底ができる環境に徐々に近づきつつあります。
今後も、さらに当社のインフラやソフトウェア開発プロセスを改善するためのあらゆる計画を予定しています。Seleniumを使った自動テストや、より簡単で頻繁なデプロイのため Etsy’s Deployinatorのようなツールを使ったり、Goのような新しいプログラミング言語を試してみたりなど、他にもさらなる新しい試みを予定しています。
当社では、サービスの品質やスケーラビリティ、そして信頼性を向上するための取り組みを絶えず行っています。そしてこれらの取り組みにより、当サイトをご利用頂く上でユーザーの皆様に楽しく快適な体験を提供することができればと思っています。