Node.jsとSpringBootを実際に使ってみて分かった違い
今週は技術的にも学びを振り返るために2つ投稿します!
私のホームページはNode.js(JavaScript)でサーバーを動かしています。
Node.jsでは制作中に必要なミドルウェアをインストールし、その度コードを追加するという
悪く言うと行き当たりばったりな開発過程でしたが、それでも特に問題なく進められました。
今回ホームページの制作受注に当たり、同じ技術をSpringBoot(Java)でもできるように勉強しています。
ところが、SpringBootで同じような開発をやると、まあ問題だらけ!
Node.jsに比べると、依存関係の追加によってディレクトリ構成やファイルの役割など
今まで作ったものを大きく作り変える羽目になりました・・・
つまり、SpringBootではある程度知識を持った上で
完成に必要な依存関係、ディレクトリ構造、ファイルの役割が最初から想像できてないと
効率的な開発はできないと実感しました。
要するに経験がある方が有利ということです!
Node.jsとSpringBootのそれぞれの良さと悪さをまとめてみました。
Node.jsの良さ
・すべてapp.jsにサーバーの動きをまとめられる。1000行程度で1人で作るならこの方が管理しやすい。
・ミドルウェアがいつ起動しているのかなど、すべて自分で書く。何が起きてるか分かりやすい。
Node.jsの悪さ
・規模が大きくなるとapp.jsが大量になる。app.jsだけだと複数人の開発で障害がある。
・エラー監視やログ表示も自分で用意しないといけない。一応それ用のミドルウェアあり。
SpringBootの良さ
・ファイルごとに役割を細かく持たせられ連携できる。これによって開発者が複数いても、他者が作ったファイルに依存することなく開発ができる。
・ある程度自動で動いてくれる部分があり、エラー監視、セキュリティ、SQLにおいて実装が簡単になってる。
SpringBootの悪さ
・「なんでこれで動くの?」となる。最初は「とりあえずそういうものらしい」と理解するしかない。
・機能を追加しながらの開発も可能ではあるが、初めから必要な依存関係を決めておかないと効率が良くない。
ということで、私なりの結論は
1人で開発する→Node.js
複数で開発する→SpringBoot
これで住み分けするのがいいと思います!
SESで外注してる会社が作るシステムはほぼ中~大規模開発、チーム開発だと思うので
案件を受けるにはSpringBootを使える方が圧倒的に有利でしょうね!
これから学ぶ人の参考になればうれしいです!
