[検証実験]Webシステム開発の効率化を検証する
第3回 フレームワークの効果を検証
次なる課題はセキュリティと可用性 |
本記事では、Webアプリケーションの開発をスムーズに立ち上げる1つの方法として、
- 構築が手軽にできるWebコンテナとしてiWS
- iWSと連携し、ビジュアルに開発ができる統合開発環境(IDE)としてForte
- Webアプリケーションの開発フレームワークとしてWDC
を使った開発をご紹介しました。このようなやり方で、無理の少ないところからスタートし、Webアプリケーション開発が立ち上がってきたら、次にはどのような課題が出てくるのでしょうか。ここでもしつこく「軽やかカロリ〜」に活躍してもらって、考えてみましょう。
■プライバシーは丸裸のまま?
もうすっかりご存じでしょうが、現状の「軽やかカロリ〜」では身長、体重、食べたものまですべて他人にばれてしまいます。そこで必要となるのが、ユーザー認証とアクセス制御です。
手軽にできるユーザー認証としては、DBにユーザー情報のテーブルを持ち、ログイン画面やDB参照による認証処理、権限レベルに応じたサービス内容の制御など、すべてをアプリケーションで行うという方法があります。
企業内ではLDAP+プライベート認証局でユーザー管理を行っている、あるいはこれから行おうとしている、というところも多いでしょう。このような場合、JNDI(Java Naming and Directory Interface)を使ってアプリケーションサーバからLDAPサーバに認証を求め、認証されたユーザーの権限レベルに応じて、アプリケーションで実行できるメソッドを制限する、といった制御ができます。また、複数のアプリケーションサーバ間でシングルサインオンを実現することも可能です。
アクセス制御とは違いますが、ユーザーを識別することで、個々のユーザーごとに画面やサービス内容をカスタマイズできるようにしたい、というような要望も出てくるかもしれません。
■万が一、人気サイトになってしまったら
ユーザー認証とアクセス制御機能を備えてようやく世に出られるようになった「軽やかカロリ〜」が人気サイトになってしまい、アクセス数が極端に多くなったことでレスポンスが悪い、ときどき落ちる、という状況に陥ったとしたら、どうしたらよいでしょう(もちろん、こうなる前に手を打つべきですが)。
原因を調査したところ、特別重たい処理もしておらず、単純にアクセスを分散させればよいとなったとすると、サーバを複数台用意し、その前にロードバランサを置くことが考えられます(このとき、Webアプリケーションのセッション管理の仕組みと、ロードバランサのセッション対応機能を合わせる必要があります)。
しかし、一部に重たい処理があって、それを切り離せばパフォーマンスが改善できるといった場合は、重たい処理をEJBで実現し、Web層とEJB層を別マシンにして負荷分散を図る、ということも考えられます。この場合は、J2EE完全準拠のアプリケーションサーバを導入することになります(例としては、iPlanet Application Server(iAS)があります)。
また、アクセス数が多くなるとメモリの使用量が上がったままになって動作が不安定になるという場合も考えられます。原因を調べ、サーバのチューニングやアプリケーションを改善することも必要ですが、システムの堅牢性の向上という点からも、EJB環境への移行が考えられます(ちなみにWDCにはEJB版もあり、プログラミング上ほとんど意識することなくスムーズにEJB環境に移行することができます)。
■なぜか非常に重要な任務を任されたら
人気が出ても安定して動くようになった「軽やかカロリ〜」。それを見込んでか、非常に重要な任務を任されることになりました(あまりの重要さで内容はお伝えできません)。出された要求は、24時間、365日、一瞬たりともサービスをストップさせない、ということでした。
この場合、システムの堅牢性と耐障害性がキーになります。ここまでくると、運用や監視体制も含めてかなり大掛かりになりますが、アプリケーションサーバに限りますと、複数台のサーバをクラスタリングし、セッション情報を共有することで、1台が落ちてもほかのサーバがセッションを受け継ぐことができる、フェイルオーバーの機能を持たせることになります。現在では J2EE完全準拠のアプリケーションサーバはフェイルオーバー機能も持っていますので、これらアプリケーションサーバの導入と、アプリケーションのEJB環境への移行を行うことになります。iPlanet Application Server(iAS)の場合は、各サーバがメモリ上でセッション情報を共有してフェイルオーバーの機能を実現するのですが、アプリケーションから見ると、仮想的な1台のアプリケーションサーバ上で動いているように見えるため、基本的にはプログラミング上の特別な対応は必要ありません。
アプリケーションの作りとしては、トランザクションをより安全確実にするために、EntityBeanを使い、トランザクションをEJBコンテナに任せるようにすることも考えられます。
■ほかのシステムと連携することになったら
ますます重要な役割を担うようになった「軽やかカロリ〜」ですが、やはり1人だけでさまざまな業務をこなすことはできません。そこでほかのシステムとの連携が必要になりました。
レガシーシステムなどのエンタープライズシステムとの連携では、やはりEJB環境に移行し、JMS(Java Message Service)を使うことが考えられるでしょう(例えば、JMS準拠のiPlanet Message Queueを使うといった方法があります)。
また、ほかのWebアプリケーションとの連携ということでは、Webサービスでの実現を目指すことになるでしょう。
◆
この第3回では、Webアプリケーションを独自に開発する場合と、WDCを使う場合について比較しましたが、これは一から自前で開発することを否定しているわけではありません。基盤部分を含めて高い技術力を持つことで、ユーザーの要求を柔軟に実現するということもあれば、ビジネスロジックに特化して新たな価値を素早くユーザーに提供するということもあり、良質のシステムをユーザーに提供する方法は目的によっていろいろなのだろうと思います。
第1回の冒頭でも述べましたが、J2EEベースでのアプリケーション開発にこれから本格的に手を出そうという方々、手を付けてはいるが苦しんでいるという方々も多いと思います。今回の記事が、特にそのような方たちにとって、何らかの形で助けになったならば幸いです。
皆さんのWebアプリケーションが「軽やかカロリ〜」のように成功されることを祈りつつ、終わりにいたします。
3/3 |
INDEX |
||
[検証実験]Webシステム開発の効率化を検証 第3回 |
||
Page1 データベースからのデータの取得 |
||
Page2 DBから取得したデータをブラウザに送信 ユーザーが変更した値を受け取りビジネスロジックを実行 変更されたデータでDBを更新 |
||
Page3 次なる課題はセキュリティと可用性 |
||
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|