はじめまして。
シナプスの技術部システム開発課の小園と申します。
シナプスでは、先日コーポレートサイト(https://corp.synapse.jp/)を公開しました。
お客様にサービスとして提供する場合には、普段利用している実績のある技術を採用する事が多いのですが、今回はこれまでシナプスでは採用してこなかった技術を積極的に使って開発しました。
この記事では、コーポレートサイトのサーバ構成やOS/アプリケーション構成などの情報と、その中で使われている技術の候補と選定された理由、されなかった理由を書きたいと思います。
記事に先立って、それぞれの製品は素晴らしいものであり、選定されなかったのはシナプス側に起因する理由であり、その製品に問題がある訳では無い事は申し上げておきます。
サーバ構成
サーバは自社にデータセンターがあり、そこでの運用です。
弊社データセンターを運用監視しているネットワーク課の方に用意していただきました。
サーバ構成は以下のようになります。
- CPU 2Core (Xeon E3120)
- Mem 2GB (DDR2, ECC)
- HDD 500GB (RAID1)
ある程度詳しい方は判るかもしれませんが、結構古いサーバです。
データセンターで第二の人生を待っていた余っていたサーバです。
仮想マシンでは無く、物理マシンなのは逆に新鮮に感じました。
OS/アプリケーション構成
OS/アプリケーションは以下を利用しています。
- OS
Ubuntu 19.04 - WEBサーバ
H2O - Node.js プロセスマネージャ
PM2 - Webアプリケーションフレームワーク
Nuxt.js - Headless CMS
WordPress - TLS証明書
Let’s Encrypt
アプリケーション構成
簡単なアプリケーション構成を説明します。
概要図
シーケンス図
- H2Oは2個のドメインをホストしています。
- corp.synapse.jp
- corp-resource.synapse.jp
- corp.synapse.jp
- リバースプロキシになっており、同一サーバ内の Node.js(Nuxt.js)へ流れていきます。
- Nuxt.jsはSSR(Server Side Rendering)で動いています。
- コンテンツは、corp-resource.synapse.jp より WP REST API で取得しています。
- corp-resource.synapse.jp
- WordPress を Headless CMS として使っています。
- Contentful を使うという案もありましたが、自分たちでやってみようという事で、WordPress での運用となりました。
技術選定について
OSとWEBサーバの技術選定について
OS
Ubuntu 19.04、CentOS 7、Arch Linux が候補でした。
シナプスでは、標準的なLinux OSとしてCentOS 7を採用しています。
選定結果
採用
- Ubuntu 19.04
- 今まであまり利用してこなかったが、将来の事を考慮してDebian系のOSも扱いたいと考えたため。
- Debianでは無く、Ubuntuを選択した理由はサーバOSとしてのシェアより選択されました。
- Ubuntu 19.04
不採用
- CentOS 7
- 既に利用しているため、今、採用をしてもチャレンジが少ないと判断したため。
- CentOS 8楽しみですね。
- Arch Linux
- 面白いOSとは思ったが、今後、シナプスが扱う見込みが無かったため。
- ローリングアップデートは安定運用できるか不安があったため。
- 個人的に気になるLinux OS 1位です。
- CentOS 7
WEBサーバ
H2O、nginx が候補でした。
WEBサーバの提供条件としては、以下がありました。
- HTTP/2, TLS1.3を提供する。
- Qualys SSL Labs の SSL Server Test でA+の評価を取得する。
選定結果
- 採用
- H2O
- 今まで触ってみた事が無く、面白そうだったため。
- ほとんどの設定がデフォルトで適切なものが選択されていると感じました。そのため、設定が少なく済んだと思います。
- Zabbixからの監視をどうすれば良いのか検討中。(statusの設定をすれば出来そう。)
- H2O
- 不採用
- nginx
- 候補にH2Oがいたから。(H2Oへの興味が勝ったとしか言いようがない。)
- シナプス内ではApache HTTP Serverの利用が多いですが、個人的には好きです。
- nginx
最後に
運用が始まったばかりで、まだまだ改善すべき項目があります。
(監視の強化、CSP導入、Qualys SSL Labs オール100など…)
少しづつですが、改善して良いサイトにしていければと思います。