BUYMAのシステム的なはなし

メインサービスであるBUYMAのシステム的な話がいままでなかったので書きます。 (2014/09 現在)

PHP, Ruby, Java

主に使う言語は PHP, Ruby, Java です。

BUYMAのほとんどの部分は PHP/Zend Framework/Smarty で書かれています。なかなか年季の入っているもので、見通しが悪く保守性がアレなコードがあったり、誰もPHPが好きではないなどの理由で、絶賛 Ruby on Rails で書き換え中です。

"絶賛" と書いてしまいましたが、既存のPHPへの機能追加・変更もしながらなので苦労もありますが、新しいものは Ruby で、古いものも手を入れるときにはできればRubyで書き換えたい、みたいな感じでやってます。そうはいっても既存機能に少し手を加えるくらいならPHPでやってしまっています。

BUYMAのメイン機能とは別に、レコメンドシステムがあります。 こちらは Java/Struts2/Spring/Hibernate な構成でできています。レコメンドは独自ロジックで行っています。 また、社内で使う管理画面も同じフレームワークでできています。 この2つのシステムは同じ頃にできているので、その時のエンジニアの判断だったのだと思います。

MSSQL, MySQL, Percona

歴史的経緯により、メインのデータベースはSQL Serverです。 その他、MySQLもあったり最近ではPerconaも使っています。 最近 Percona を入れるときには、「MySQLじゃだめなのか? PostgreSQLじゃだめなのか?」といった話し合いをしつつ、最終的には担当エンジニアが Percona がいいというならそれで。みたいな感じで決まりました。

Memcached, Redis

当たり前ですが Memcached もあります。当たり前ですね。 Redis は Rails から Resque でつかったり、キャッシュサーバとして使ったりもしています。

Apache Solr

検索エンジンとしてApache Solrを利用しています。 いまは 3.2 をつかっていますが、そろそろ 4 にしたいですね。 Solr使ってるんですが、あまりうまく使えている感じがしないので、ノウハウを蓄積していきたいところです。

CentOS, Windows Server

SQL Serverがあるので Windows Server もありますが、それ以外はCentOSです。5と6が混在しております。

Subversion, Git

古いものはまだまだ Subversion にはいっています。 Rails は Git/GitLab に入っています。 Subversion を使っているのがエンジニアだけじゃないこともあったり、履歴が膨大にあったりなどで、なかなかエイヤッと Git に移行できないでいますが、そのうちやりたいと思っています。

Virtual Box, Vagrant, Chef

開発環境は Vagrant を使って簡単に作れるようになりました。( 栗山さんの記事参照 ) それまではMacPHP, Apache, ・・・・ って1日かかっていたものが30分寝ているだけで出来上がるようになりました。神様仏様栗山様です。

またこれに触発されてインフラエンジニアも Chef レシピを積極的に書くようになりました。Chef や Chef サーバは結構前からあったのにうまく活用できていないなぁと思っていたのでグッドバイブスですな。

その他

その他 Jenkins さんがいたり、情報共有には Slack や Qiita:Team を使ってたりします。

採用情報の中にも利用している技術 & ツールが載っていますのでご確認ください。

まとめ

このようにさまざまな歴史的経緯があり、日々、技術的負債を返したり、新たな負債を生み出したり楽しい日々を送っています。環境整備は一朝一夕には行かないので、少しずつですがモダンな環境を目指して改善して行きたいと思いつつ、人手不足で改善できていないところもたくさんあります。

サービス開発にも環境整備にも興味のある方がいましたら、お声がけいただければと思います。