Tweetどうも、mrtskaです。クリスマスに前々からやりたいと思っていたブログの再構築作業なんかをやっています。3.1に変更すると共にあまり気に入っていなかった機能を作り変えたり足りていなかった機能を足したりしました。今回の改修を本格的に初めたのは今年(2020年)の4月からでした。Coreをほぼ初めて触ったということもあり、コードがそもそもイケてなかったため1から作り直すことは確定していました。その結果、削除が18000行、追加が30000行の大規模な改修(というか作り直し)になりました。そんなこんなで地道に作り直し作業を進めていてほぼ完成にたどり着いたのがクリスマスで、約8ヶ月ほど掛けてやっと完成したのでした。(正直めっちゃしんどかった)この記事では、作り直してどこが変わったのかなどを説明できればと思います。(見える部分)今回の見える部分の改修で一番大変だったのは下記の2つです。逆にこれ以外にはほとんど変更はありません。(言語切替ボタンがフッターからヘッダーに移動したくらい)そもそもの話、個人ブログに全文検索機能が必要か?という話はありますがElasticsearchを使ってみたかった&勉強したかったというのが実装した理由の99%です。仕事でも使う可能性全然ありますし、覚えておいて損はないですね。現時点でレートリミットが厳し目に設定されているのであんまり使い物にならないかもしれません。緩和してくれ!という声があれば緩和しようと思います。レスポンシブ対応も今回の改修で初めて追加した機能です。そもそも私がスマホでもPC版サイトを見るので正直実装するか迷ったのですが、昨今のエンジニア界隈を見ているとレスポンシブ対応くらい出来ないとダメだよなと思ったのとGoogle先生がなかなかうるさかったので実装することにしました。検索もレスポンシブも作り終わった後にはそこそこ学びがあったので良かったなと思っています。(見えない部分)技術的な部分やインフラ面はかなり変更を加えました。Coreを2.1から3.1に変更データベースをSQLiteからMariaDBに変更Elasticsearch、Redisを追加postfixが無くなったAzure依存をやめた2.1時代のコードはお作法的なものをあまり良く分かっていない状態で書いていたので、3.1に更新した時にゴッソリ書き換えました。データベースがMariaDBになりましたが、なぜMariaDBなのかは特に理由はありません。構成としてはこんな感じです。(デプロイ周りは省略)今回の改修で、VPSを2台に変更しました。Webサーバとデータベースサーバで分けたようなイメージです。基本的にはDockerで動かしていますが、nginxだけホストOSで動かしています。いうのも、Docker内にnginxを持たせるとIPv6でリクエストが飛んできた際にリモートIPアドレスがDockerコンテナのIPアドレスになってしまう不具合のようなものが発生したためです。Coreに対してX-Forwared-Forヘッダ経由でクライアントのIPアドレスを取れるようにしています。ElasticsearchやRedis、MariaDBとはVPS同士をLANで接続してローカルネットワーク内で通信させるようにしています。外に出ないのでとても良い感じです。利用するにはさくらのVPSのコントロールパネルで諸々ネットワークの設定をする必要があります。旧構成ではメール送信のためにpostfixが居ましたが、今回の改修でメール通知をSlackのWebhookに置き換えたのでpostfixは無くしました。Insightsを使っていましたが、これも特に要らないなと思ったので無くしました。Azureから毎月数百円落ちるのが面倒というのもあります。今回の改修でインフラ部分はかなりスッキリしたなという思いがあります。5がリリースされてしまいました。5はLTSが無いので対応しなくても良いかなという気はしていますが、気が向いたらあげようかなと思います。そんな大変そうじゃ無さそうですし。(年額)まとめ失ったものも結構多いですが、得られたものは今後役立つと思っているのでそんなに悪くないかなと思いました。証明書が安くて非常に助かりました。DVの証明書はもうこの値段じゃないとやっていけないのでしょうかね。