小規模開発における本番環境の技術選定
この記事では小規模開発における本番環境の技術選定について紹介します。
はじめに
最近、開発環境構築手順の記事を2つ書きました。
今回は私が小規模開発で利用している本番環境の技術選定について紹介しようと思います。
開発環境のまとめ
開発環境の詳細は上記の記事を見てもらえたらと思いますが、主なものだけまとめると次のような感じです。
| 項目 | 名称 |
|---|---|
| OS | Windows |
| ブラウザ | Google Chrome |
| メールクライアント | Mozilla Thunderbird |
| テキストエディタ | Visual Studio Code |
| 仮想マシン | WSL + Ubuntu |
| 言語環境管理 | mise |
| プログラミング言語 | Ruby |
| Webフレームワーク | Ruby on Rails |
本番環境の技術選定
本番環境の技術選定を下表にまとめました。以降で私なりの選定理由について説明します。
| 項目 | 名称 |
|---|---|
| OS | Rocky Linux |
| Webサーバー | Apache |
| Webサイト | WordPress |
| Webアプリ(フレームワーク) | Ruby on Rails |
| メールサーバー | Postfix + Dovecot |
| DBサーバー | MySQL |
| 認証基盤 | OpenLDAP |
Rocky Linux
本番環境のOSは、Red Hat Enterprise Linux(以下 RHEL と略記)系の Rocky Linux です。これは Shibboleth で公式サポートされていること、RHEL系で長期間のソフトウェア・アップデートが期待できること、安定して動くことなどが理由になります。
Shibboleth
Shibbolethは、SAMLを使ってSSOを実現するソフトウェア実装の一つです。
私の開発するWebアプリは、本番環境の認証・認可で Shibboleth SP を利用することが多いです。このShibboleth SPの System Requirements に次の記述があるため、同じRHEL系でも AlmaLinux は選ばなくてもいいかなと判断しています。
We officially support the following Linux distributions (x86_64 and aarch64):
- Red Hat Enterprise 8/9/10
- Rocky Linux 8/9/10
- Amazon Linux 2
- Amazon Linux 2023
Apache
Webサーバーは Apache です。これもRocky Linuxと同じく、Shibboleth SPの System Requirements に次の記述があるため使っています。
Officially we support the use of Apache 2.4 and FastCGI.
長年の実績、ドキュメントの多さ、安定性なども魅力ですし、RailsのWebアプリにリクエストを振り向けるリバースプロキシとして問題なく利用できるのも良いです。
WordPress
Webサイトはなるべく WordPress で作ります。(なので必然的にサーバーに PHP をインストールすることになります)
場合によっては HTML と CSS または Tailwind CSS で作ることもあるのですが、Webサイトを作った後、誰かに運用を任せることまで考えると、WordPressの方が手離れが良いので好きです。なので、できるだけクライアントには「WordPressで作りましょう」とおすすめしています。
Ruby on Rails
Webアプリは原則 Ruby on Rails で開発します。
Ruby で書くのが楽しいこと、Gemのライブラリなどが充実していて早く開発できること、フレームワーク側で決めてくれる部分が大きくてあまり悩まなくて済むことが理由です。ちなみにDHHの The One Person Framework というブログにはかなり共感しています。
あとは Railsチュートリアル や Railsガイド といったオンラインリソースや プロを目指す人のためのRuby入門 や たのしいRuby など書籍の存在も大きいです。
Postfix + Dovecot
メールサーバーを構築しないといけない時は Postfix と Dovecot を使います。
おそらく最も実績のある組み合わせですし、何かしら障害が起きた時のトラブルシューティング情報もネットに大量にあります。初期設定はちょっと面倒ですが、最初だけがんばって構築すれば、あとはあまり手をかけなくても大丈夫なのでおすすめです。
MySQL
WordPressでWebサイトを作ることから、DBサーバーは必然的に MySQL です。
互換性を考えれば MariaDB もアリですが、なんとなく DB-Engines Ranking を見た感じ、MySQLの方が使っている人も多そうだし、MySQLから離れずにいます。MySQLはRails(のActive Record)でも特に問題なく使えますし、良いんじゃないでしょうか。
OpenLDAP
認証基盤を構築しないといけない時は OpenLDAP を使います。
認証基盤の定番だと思いますし、Rocky Linuxとの相性も良いです。また、SSSDと連携させることでLinuxアカウントの管理が統一的にできるようになって便利です。設定がちょっと分かりにくいのは難点ですが、PostfixおよびDovecotと同じで、一度構築すれば長く安定して動きます。
その他
あとは細かいところになりますが、次に挙げるものも長く使っています。
| 項目 | 名称 |
|---|---|
| バージョン管理 | Git |
| 設定管理 | etckeeper |
| ログ監視 | Logwatch |
| テキストエディタ | Vim |
| シェル | bash |
定番ですね。
おわりに
この記事では小規模開発における本番環境の技術選定について紹介しました。
ここで挙げたソフトウェアはどれも枯れた技術でかなり安定していると思いますし、キャッチアップを最小限に抑えたい場合にはおすすめです。
Discussion