導入事例

株式会社Gengo様
SPOF(Single Point of Failure)を解消するため、pgpool-IIを導入


  左から Lead Operations Developer の Derek Szydlowski 様、VP of Engineering の Andrea Belvedere 様、ソフトウェア・エンジニアの 冨田洋介 様

「Gengo®」は、ワンクリックで言語の壁をこえ、全ての人が世界中の情報を理解・発信できる翻訳プラットフォームです。

全ての人に良質な翻訳を提供すべく、WebもしくはAPI経由で翻訳依頼を行い、合格率7% という厳しいテストに合格した翻訳者のみが翻訳を担当しています。翻訳者は114カ国に在住する1万3千人以上おり、37以上の言語で翻訳サービスを提供しています。 どの言語に翻訳する場合でも、一定の料金プランで翻訳を提供しており、API経由であれば、よりリーズナブルに利用することが可能です。
個人ユーザの利用の他、トリップアドバイザーや楽天などのユーザレビューの翻訳や、YouTube の字幕の翻訳など、ビジネスベースでも活用されています。

株式会社Gengo様では、「Gengo®」システムを Amazon Web Service (以下、AWS) 上で稼働させており、サービスを支える基幹システムのデータベースとして、早い時期から PostgreSQL を活用しています。今回、利用者の増加に対応するための負荷分散と、信頼性向上のための冗長化構成を実現するために、pgpool-II を新たに採用しました。

■ PostgreSQL は早い時期から既に基幹データベースとして活用されていた

Q: 「Gengo®」のサービスは2008年にサービスの提供を始めたとのことでしたが、その頃からPostgreSQLは使われていたのですか?

A:

当初はMySQLを使っていたと聞いていますが、我々が参画する前に既に PostgreSQL に変わっていました。 PostgreSQL の機能がとても速いスピードで改良されていたのと、スキーマ分割などの機能が使えたというのが、MySQLから PostgreSQL への変更の理由だと聞いています。我々も、PostgreSQL は良い選択だったと感じています。

Q: 現在、「Gengo®」サービスでは、どのくらいの量のデータベース処理が行われているのでしょうか。

A:

1日で、INSERT や UPDATE など合わせて約3万トランザクション程度を処理しています。 特定のピーク時間というのはありませんが、大手のお客様からAPI経由で大量に翻訳依頼が来た時にシステムの負荷が上がります。 また、アメリカに翻訳者が多いので、彼らが朝起きたタイミングで翻訳依頼(ジョブ)をチェックするので、その時にも負荷が上がる傾向にあります。

■ トラブルをきっかけに、pgpool-II の導入を検討

Q: pgpool-II はどういうきっかけで採用することになったのですか?

A:

サービス開始してからこれまで、トランザクションの増加に対応するために、様々な対策をしてきました。 クラウドサービスである AWS を利用しているメリットを生かして、参照専用のデータベースサーバを設置したり、性能がよいサーバに変えてみたり、翻訳リクエストを一旦専用のキューに格納するようにアーキテクチャを変更したり、と様々なことを試してきました。

ところが、ある時大きなトラブルが発生してしました。 マスターデータベースの仮想サーバのイメージ(AMI)が、何かのきっかけで壊れてしまったようで、起動してしばらくすると停止してしまう現象が発生しました。 これにより一時的にサービスが利用できない状況になってしまいました。 このトラブル自体はすぐに解決したのですが、これをきっかけに、マスターデータベースにSPOF(Single Point of Failure)のリスクが明らかになりました。この解決のために、pgpool-II を導入しようと考えたのです。


プロジェクト開始前のシステム構成

■ pgpool-II に詳しい、SRA OSSにコンサルティングを委託

Q: 今回の pgpool-II の導入にあたり、SRA OSS に委託された理由は何でしょうか?

A:

これまでは全て自社のエンジニアで対応していたのですが、今回の作業はある程度工数がかかるだろうと考えていました。 また、pgpool-II についてはわからないこともあるので、調べてから実装することになると、かなり時間がかかるだろうと考えました。私たちは、日々の運用も担当していますので、日常業務への影響も考慮し、pgpool-II の導入は、PostgreSQL や pgpool-II が得意な会社に支援を頼もうと考えました。

SRA OSS 以外にも何社か検討はしたのですが、pgpool-II のコミッターがいらっしゃるということと、営業段階で技術的に詳しく納得性のあるご提案を頂けたというのが選択の理由です。 特に営業段階で、当社のいろいろな質問に対してスピーディー、かつ的確に回答していただけたので、とても助かりました。

Q: pgpool-II の導入プロジェクトは順調に進みましたか?

A:

そうですね。少しテスト期間が短かったこともあり、リリースの数日前に予期しない現象が発生することなどがありましたが、SRA OSSにもオンサイトで対応していただき、助けて頂きまして、無事リリースすることができました。 今回のプロジェクトの作業は、とても複雑で難易度の高いものでしたので、それを考えると、非常に順調に進行したといえます。

納品物についても、ドキュメントだけでなく、実際の運用を考慮していただいたスクリプトなども用意していただきました。 手作業だと間違いも起きやすいですが、スクリプトを実行するだけですむので、とてもスムーズに作業を進めることができました。 結果、ステージング環境でテストをしてから、本番環境で実施する重要な部分も、とてもスムーズに作業をすることができました。 こういったところは SRA OSS のノウハウだと思うのですが、そういった事まで開示いただけたというところはとても感謝しています。

Q: pgpool-II 導入後は、順調に稼働していますか?

A:

はい、おかげさまで順調に稼働しています。 PostgreSQL も pgpool-II も冗長化されたので運用担当者としては、非常に安心感があります。導入してよかったと感じています。


pgpool-IIを導入し、SPOFを解消

■ PostgreSQL の最新バージョン「9. 4」にも注目

Q: PostgreSQL については、どのようなご評価ですか?

A:

今回委託したことがきっかけで、SRA OSS から様々な PostgreSQL のイベントにご招待いただくようになりました。 そういったイベントに参加して、PostgreSQLコミュニティ−が非常に活発に機能追加等の活動をしていることに驚いています。 とても速い速度で進化しているので、とても興味深いです。

PostgreSQL 9.4 から新しく使えるようになった「JSONB型(バイナリデータとしてJSON型のデータを扱えるデータ型)」にも注目しています。

「Gengo®」システムのデータ交換にはJSON形式を使っているので、データベースでもそのままハンドリングできればより効率的なシステムになるのではないかと考えています。 過去にも検討したことがありますが、NoSQLデータベースだとトランザクションへの対応など不安もあるということで見送った経緯があります。PostgreSQL でJOSN形式が効率よく扱えるのであれば、大きな選択肢の一つになり得ます。

■ 今後は運用の自動化を検討

Q: システムとしての、今後の展望を教えてください。

A:

運用の自動化を検討していきたいと思います。負荷が上がってきたときのサーバ追加作業などを自動化していきたいです。
また、トランザクションやデータ量は今後ますます増えていくと思います。 性能が良いマシンを複数台使っても、どこかで限界を迎えるはずです。その限界がきた時に、どのような手法を使ってスケールさせるのがよいか、今から検討しているところです。

最近ではクラウドサービスとしてデータベース機能が提供されることも多くなってきました。 AWS でいうと RDS for PostgreSQL などがあります。これらのサービスを使うととても簡単にデータベースを使うことができ、我々はアプリケーション開発に専念できます。 しかし、エンジニアとしてはデータベースの仕組みがまったくわからなくなってしまうのも問題ではないかと感じており、バランスが重要だと考えています。 今回、SRA OSS にお手伝い頂きましたが、当社のエンジニアもプロジェクトに参加することで、高信頼のシステムをどう実現するのか、というノウハウを習得することができました。この経験は、今後のサービス品質の向上に役立てることができると思います。



株式会社Gengo

http://www.gengo.com
本社所在地:
〒150-0002 東京都渋谷区渋谷3-27-11 祐真ビル新館8F