左から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を新たに採用しました。
クラウドサービスであるAWSを利用しているメリットを生かして、参照専用のデータベースサーバを設置したり、性能がよいサーバに変えてみたり、翻訳リクエストを一旦専用のキューに格納するようにアーキテクチャを変更したり、と様々なことを試してきました。
ところが、ある時大きなトラブルが発生してしました。
マスターデータベースの仮想サーバのイメージ(AMI)が、何かのきっかけで壊れてしまったようで、起動してしばらくすると停止してしまう現象が発生しました。
これにより一時的にサービスが利用できない状況になってしまいました。
このトラブル自体はすぐに解決したのですが、これをきっかけに、マスターデータベースにSPOF(Single Point of Failure)のリスクが明らかになりました。
この解決のために、pgpool-II を導入しようと考えたのです。
プロジェクト開始前のシステム構成
また、pgpool-II についてはわからないこともあるので、調べてから実装することになると、かなり時間がかかるだろうと考えました。
私たちは、日々の運用も担当していますので、日常業務への影響も考慮し、pgpool-II の導入は、PostgreSQLやpgpool-IIが得意な会社に支援を頼もうと考えました。
SRA OSS 以外にも何社か検討はしたのですが、pgpool-IIのコミッターがいらっしゃるということと、営業段階で技術的に詳しく納得性のあるご提案を頂けたというのが選択の理由です。
特に営業段階で、当社のいろいろな質問に対してスピーディー、かつ的確に回答していただけたので、とても助かりました。
少しテスト期間が短かったこともあり、リリースの数日前に予期しない現象が発生することなどがありましたが、SRA OSSにもオンサイトで対応していただき、助けて頂きまして、無事リリースすることができました。
今回のプロジェクトの作業は、とても複雑で難易度の高いものでしたので、それを考えると、非常に順調に進行したといえます。
納品物についても、ドキュメントだけでなく、実際の運用を考慮していただいたスクリプトなども用意していただきました。
手作業だと間違いも起きやすいですが、スクリプトを実行するだけですむので、とてもスムーズに作業を進めることができました。
結果、ステージング環境でテストをしてから、本番環境で実施する重要な部分も、とてもスムーズに作業をすることができました。
こういったところはSRA OSSのノウハウだと思うのですが、そういった事まで開示いただけたというところはとても感謝しています。
PostgreSQLもpgpool-IIも冗長化されたので運用担当者としては、非常に安心感があります。
導入してよかったと感じています。
pgpool-IIを導入し、SPOFを解消
そういったイベントに参加して、PostgreSQLコミュニティ-が非常に活発に機能追加等の活動をしていることに驚いています。
とても速い速度で進化しているので、とても興味深いです。
PostgreSQL 9.4から新しく使えるようになった「JSONB型(バイナリデータとしてJSON型のデータを扱えるデータ型)」にも注目しています。
「Gengo®」システムのデータ交換にはJSON形式を使っているので、データベースでもそのままハンドリングできればより効率的なシステムになるのではないかと考えています。
過去にも検討したことがありますが、NoSQLデータベースだとトランザクションへの対応など不安もあるということで見送った経緯があります。
PostgreSQL でJOSN形式が効率よく扱えるのであれば、大きな選択肢の一つになり得ます。
また、トランザクションやデータ量は今後ますます増えていくと思います。
性能が良いマシンを複数台使っても、どこかで限界を迎えるはずです。
その限界がきた時に、どのような手法を使ってスケールさせるのがよいか、今から検討しているところです。
最近ではクラウドサービスとしてデータベース機能が提供されることも多くなってきました。
AWS でいうとRDS for PostgreSQLなどがあります。
これらのサービスを使うととても簡単にデータベースを使うことができ、我々はアプリケーション開発に専念できます。
しかし、エンジニアとしてはデータベースの仕組みがまったくわからなくなってしまうのも問題ではないかと感じており、バランスが重要だと考えています。
今回、SRA OSS にお手伝い頂きましたが、当社のエンジニアもプロジェクトに参加することで、高信頼のシステムをどう実現するのか、というノウハウを習得することができました。
この経験は、今後のサービス品質の向上に役立てることができると思います。
![]() |
株式会社Gengo
本社所在地 : 〒150-0002 東京都渋谷区渋谷3-27-11 祐真ビル新館8F |
03-5979-2701 |