Sansan のインフラ(http://rriifftt.hatenablog.com/ )さんによる法人向けサービスSansanのインフラセッション。
基本的な構成
アプリケーション、バッチなどは.NETでIISで動いています。Linux側では、Nginxとか使ってます。
Web/APIは、IIS8.5で、.Net Framework 4.5.2で、Chef(PowerShell、chocolety)使って、ログ収集はFluentdを使ってます。バッチは、70以上のタスクが動いていて、タスクスケジューラーで頑張ってます。
DBは、PostgreSQL 9.3で自前の水平分散システムを使用していて、すべてのデータをオンメモリで保持して、20強のDBインスタンスが稼働。pgpool+heartbeaを使ってます。
Cacheは、Redis 2.6を叱っていて、検索結果やSessionをキャッシュしている。自前で冗長化している。
名刺画像は、S#+Reverse Proxy(Nginx+Lua)で実装していて、S3 Uploadエラー時にはGlusterFS使っている。
監視には、icinga、munin、CloudWatchを使っている。mackerelかZabbixへの移行を計画中。
課題解決はCodeで。
Infrastructure as Codeを推進していて、chef、terraform、serverspecを使ってます。terraformでインフラ構築して、Chefでプロビジョニングして、Serverspecでテストしてます。
Terraformで、EC2/ELB/Route53/Security Groupなどを管理しています。
Chefは、30role/200nodeを管理。cookbookを自前で書いています。
serverspecは、カバー率をそこそこ。テストファーストまではまだまだ。他ツールとの連携を強化してみたい。
幸せにはなったかというと微妙なライン。周辺言語の学習コストが高く、役割が異なるリポジトリが乱立してしまっている。