LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログ

開発者ブログ始めました

はじめに

はじめまして、LCLでエンジニアをしている森脇です。

弊社では、「夜行バス比較なび」という高速バス・夜行バスの情報を比較できるサービスを運営しています。 夜行バス比較なびは、月間 150万人以上のユーザにご利用いただいており、夜行バスの比較サイトとしては業界トップクラスの規模で成長を続けています。

www.bushikaku.net

また、2015年末にはバス・飛行機・新幹線をまとめて比較可能な「格安移動」というサービスもリリースしています。

idou.me

本ブログでは、これらのサービスを運用していく中で得たものを、多少なりとも皆様にお役に立てる形で、発信していきたいと考えています。

まずは、初回の記事として、システムの構成や採用技術・利用ツールなどを紹介します。

システム構成

サーバ

全てAWSで構成しています。 ELB、EC2、S3、CloudFront、ElastiCacheといったサービスを利用しており、WEBサービスとしてはごくごく一般的な構成です。

WEBアプリケーション

全てのサービスで Ruby On Rails を採用しています。 元々、PHP ( Symfony2 ) で構築されていたのですが、長い年月をかけて色々な人が修正を加えており、メンテナンスするのが辛くなってきたので、2015年にRailsに全面リプレースをしました。

WEBのミドルウェアとしては、Nginx + Unicorn を利用しています。

データベース

PostgresSQLを利用しています。 RDSは利用しておらず、複数のEC2上にPostgreSQLを導入し、ストリーミング・レプリケーションを利用して、Master-Slave構成にしています。 Master-Slaveへのクエリの振り分けは、pgpool-IIを利用して行っています。

サイトの性質上、リアルタイムでの集計処理を頻繁に行っているため、DBサーバには高いCPU性能が必要となっています。 そのため、RDSではなく通常のEC2のc4系のインスタンスを選択しています。 ( 2016年1月時点では、RDSでc4系のインスタンスタイプは選択できない)

利用しているサービス

バージョン管理

GitHubのOrganization plansを利用しています。

デプロイ・リリース

EC2上でJenkinsを導入しています

テスト環境へは、GitHubへのpushで自動的にデプロイするようにしており、本番環境へは、Pull Requestをマージするとデプロイするようにしています。 リリースのタイミングは特に決めておらず、バグ・改善に関わらず可能な限り速くリリースすることを心がけています。

パフォーマンス監視・サーバ監視

NewRelic + Zabbixを利用しています。

NewRelicは、EC2の監視であれば、無償で過去7日間のデータを閲覧できるため、そのプランをずっと使っています。 大きな改修のリリース直後は、NewRelicをモニタリングしてサーバ負荷の増加やパフォーマンス劣化が発生していないかを確認しています。

Zabbixは、あまり活用できておらず、URL外形監視と主要項目の監視程度にしか使っていません。 Zabbixで障害を検知するとメール・チャットで通知するようにしており、その後の問題特定は、NewRelicのサーバモニタリングで行っています。 役割分担としては、Zabbixで早期検知し、NewRelicで深追いという感じになってます。

アプリケーションエラー検知

Bugsnagというツールを利用して、Railsのアプリケーションエラーを検知するようにしています。

500エラー発生時だけではなく、404エラー発生時なども検知するようにしかけているので、予期してない箇所でのリンク切れなども早期に検知できています。

NewRelicと同じくリリース直後は、Bugsnagからエラー通知がこないかをウォッチしています。

分析系

サイトの改善に利用するためのレポートも自動化を進めており、ログデータなどは Google BigQueryへ登録するようにしています。 そこから、Redashを利用してのグラフ化や、チャットへの通知などを行い、問題発生時にはすぐにアクションを起こせるようにしていますが、

最後に

簡単ではありますが、弊社のシステム構成と利用サービスを紹介致しました。

弊社では、現行サービスの改善・新サービスの立ち上げをさらに行っていくため、エンジニアを募集しています。

現在は、エンジニア数名と少ない人数で運営をしているので、かなりの裁量を持って仕事を進めることが可能です。 少しでも興味をお持ちいただけた方は、弊社サイトから是非ご応募お願いします。

株式会社LCL(エルシーエル)