PHPでWeb個人開発するときの構成。20xx年...?と言われても致し方ないやつ。
開発環境
MacBook Air(M2 2022) : Mac大好き人間なので。最近はWindowsに回帰する人もいるのでここはお好みで。
PhpStorm : MacとJebBrainsのIDEがあれば大抵のものは開発できる。PhpStorm単体よりもAll Products Packがいい。1年目は4万強/年とお高いが継続すると3年目で25000円/年とお安くなるので。多趣味な人ほどおすすめ。直近1年でちょっとでも起動したもので言えばPhpStorm, RubyMine, Rider(C#), goland, DataGrip(DB) がある。他 RustRoverなどなど買わない手はない。Gitクライアントも昔はSourceTree使っていたけどIDEのに変えた。
アプリケーション
PHP : PHP大好き人間なので。サーバーサイドだけならGoもいい。 PHPで業務開発すると他人のコードを信用できなくなりGoを信奉したくなるものの、個人開発はカジュアルなPHPが好き。 昨今のWebアプリケーションのフロントエンドはTypeScriptでクライアントとサーバーを両方書くスタイルが気になり少し心が揺れている。
Symfony : 手慣れているのでLaravelよりもSymfony派。ORMは人間には早い技術なのでDoctrine ORMでなくDBAL Connectionを多用したい派。
ミドルウェア
nginx : とりあえずのnginx。
DB
MySQL : MySQL以外よくわからないマン。PostgresQLと2大勢力だが、最初に見た方を親と認識してMySQL派。個人開発ではDBが高いので、今のところ安VPSで1000円で
ストレージ
Cloudflare R2 : S3互換のオブジェクトストレージ。エグレス料金がゼロでS3よりも安い?
インフラ
さくらのVPS : 古き良きVPS大好き人間なので(従量課金が落ち着かない..)。Vultrの方が使い勝手がいいけど円高と応援目的でさくらインターネットをチョイス。最低使用期間2ヶ月が作っては捨て..のマイスタイルと相性がよくないのでそこだけ悩ましい。
Ubuntu : 少し前までは何も考えずCent OS派だったが、8サポート終了後のAlmaとRockyの選択を迫られてUbuntu派となった。macだとmultipassを使うと簡単に環境を用意できる。コンテナよりvmが好き。
Tailscale : マシンとVPSをtailscaleでVPN接続しておくと開発時にネットワークについてほとんど考えずに済むので非常に楽。スマホも繋げられる。個人だと100デバイスまで無料で本当に太っ腹。
監視
Grafana : グラフを眺めるマン
Grafana Loki / Promtail : ログを蓄えるマン。Elasticsearch+kibanaの方が好きだけど動作要件がVPSマンからするとリッチなのでひとまずLokiを使ってみている。あとでELKスタックにするかも。
Prometheus : VMにNode Exporterを入れてGrafanaで見るところまで一旦。MySQL、Redisなど外部のストレージ系は専用のexporterを入れて眺めている。
Sentry : PHPのエラートラッキングで利用。今のところ無料枠。
構成管理
Ansible : Dockerがあればいらないけどvmが好きだから使っちゃう...。
選ばなかったリスト
アプリケーション
go : golangで書き始めて諦めてPHPで移行することが多い。まだgo力が足りておらずWebアプリケーションで使っていないだけで内部的なAPIを作るときは普通に使う。例えばgrpcを使いたいときはgo+Connnect。
Ruby : Ruby+Sinatraは本当に手っ取り早くWebアプリケーションが作れる。DBのライブラリにいつも悩む。Railsは好みの問題で避けがち。
DB
Cloud SQL / PlanetScale: 利益目的のサービスを立ち上げるなら最初はCloudSQLかPlanetScaleにするかも。個人開発のコストではDBが大きく占める。。
インフラ
k8s : マニフェストを書いて楽しくなって1日が終わってしまうので今は使っていない。Vultrでk8sクラスタが簡単に作れるのでk8sの練習はvultrがよき。
Cloud Run : おそらくアプリケーションを一番手取り早く動作させられるので副業的にやるならCloud Runが良さそう。
監視
ELK Stack(elasticsearch+logstash+kibana) : VPSでメモリ4G積むほどリッチではなかった。Lokiを試してるけどそのうちこちらに移行するかも。