ちまたでは、LAMP(Linux, Apache, MySQL, PHP)といったオープンソースで固めた環境でWebを提供することが増えているようです。ですが、私の会社の仕事ではあまりありません。Linux, Apacheくらいならありますが、MySQL, PHPはほとんど使っていないの現状です。(私の周りでは、業務系の仕事でオープンソースDBというのは、まだ少ないように見えます。)
Microsoftよりのサーバー群が多い中で、Javaを使うということが多いです。(Lだけ変えたMAMPというのもあるみたい。)
無理やり例えてみれば、MWOJ(Microsoft Windows, WebSphere, Oracle, J2EE)って感じでしょうか(よめねー)。この開発環境をウチの開発メンバーは、ああなるほどねって感じで受け止めると思います。(LAMPなんて言葉も知らない)
流行りのLAMP環境では、小さなサーバーを複数ってことが多いのですけど、高性能サーバーを1,2台というのが多いです。ほんと幾ら掛かっているのでしょうか。
私は、LAMPに次のようなイメージがあります。
- 軽快
- ローコスト
- いかにすばやくサービスを提供するか
一方、MWOJでは、こんな感じ。
- 重厚
- 高コスト
- ブランド・安定志向
MWOJのように、ハイスペックでなければシステムが成り立たないわけではないです。LAMPを扱えるような技術者がいないんです。
でも、顧客はそろそろ言うかもしれないです。LAMPという言葉を知り始めて、「そんなにハイスペックである必要はない」と。
そんなわけで、重厚系のJava開発環境でも、さくっとサービスを提供できるような、スタックを考えてみました。
- LJMJ
- Linux, Jetty, MySQL, JSPです(よめねー)。
JettyじゃなくてTomcatでもよいと思います。ApacheなどのWebサーバーと連携するかどうかは、サービスの規模次第で。(1Apache-1Tomcatで連携し、静的ページがないのならばTomcat単体でも別に構わないと思う)
JはJ2EEよりもJSP2.0ベース + JSTLで行い、ビジネスロジックはJavaBeanで作成。軽量を目指すからフレームワークはあえて使わないでみる。
JSP 2.0から追加されたタグファイルを使用する。(存在は知っていたかが、使ったことはなかった)
ロジックとしての効率はあがりそうだけど、デザイン性は落ちるので使わないほうがよい?HTMLデザインが重視されていない(デザイン変更に、Webデザイナーを使ったりしないケース)場合なら、使ったほうがよいと思う。 - LJMJi
- Linux, Jetty, MySQL, JSP, iBATISです。(どうやった読みやすい略称を付けられるのでしょうか?)
iBATISである必要はないんですが、O/Rマッピングを知らない人でも比較的とっつきやすいかと思います。
だんだん重厚になってきました。 - LJMSi
- Linux, Jetty, MySQL, Struts, iBATISです。
ついにStrutsを入れてしまいました。もうかなり重厚です。購入コストが掛からないというだけで、製造に関してはMWOJと一緒のような。
で、でも、すばやく開発することを重視するためにこうする。(スペルミスや型チェックによる実行時例外が多数発生するかな?)- JSPへのDTOは全てMap。
- ActionFormは作成せずに、すべてHTTPServletRequestで扱う!!(どうせ全部Stringにするんでしょ?)
- Strutsのカスタムタグはstruts-htmlのみ使用。他はJSTLで代用。
- ActionFormを使わないので、struts-htmlタグは少し記述量が増える(name属性)
しまった。ActionFormを使わないと、Validatorが使えない。でも開発者がValidator使いこなせないから、自作JavaScriptでなんとかしてもらう。
Javaは技術ばかり先行してしまって、実際の現場の開発者がついていけてない気がするんです。
(私の会社の開発者のレベルが低いのかも。そういえば、製造は外注やオフショアへ向かっていて、社員はプロジェクト管理ができるようになる方向性だった。このせいか)
だから、J2EEやフレームワークはなるべく排除して、直感的得られる最大の結果を考えてみました。
考えてみたスタックをLinuxより上のレイヤーから作ってみたいなぁと思った。