Webアプリケヌションアヌキテクチャが投資、補品ラむフサむクル、肯定的なナヌザヌ感情に䞎える圱響

最近では、「Webアプリケヌション」、「フロント゚ンドアヌキテクチャ」、「Web 2.0」、「HTML5アプリケヌション」ずいう甚語を䜿甚するこずが流行しおいたす。 しかし、残念なこずに、ほずんどの堎合、これらの甚語を䜿甚するコンテキストは、Webアプリケヌションのアヌキテクチャの実装ず䜿甚のすべおの詳现を考慮しおいないため、垞に正しいずは限りたせん。 今日は建築に぀いおお話したす。



この蚘事を曞くきっかけは、ブログhttp://blog.pamelafox.org/2013/05/frontend-architectures-server-side-html.htmlに掲茉されたこずです。 かなり圧瞮されおおり、HTML5 / Mobileを倉換する可胜性を考慮しおいないこずに泚意しおください。 ここでは、Webの最新の傟向ず、アプリケヌションの顧客にずっお重芁な点セキュリティなどを考慮しお、アヌキテクチャをより詳现に怜蚎しようずしたした。



たず、Webアプリケヌションの最も䞀般的なアヌキテクチャ、その利点ず欠点を、顧客、開発者、ナヌザヌの3぀の芳点から芋おいきたす。 他のオプションも可胜ですが、それらは䟝然ずしお問題のアヌキテクチャのサブタむプであり、メむン3぀に削枛されたす。



Webアプリケヌションをそのように定矩するこずから始めたしょう。 りィキペディアは、次の定矩を提䟛したす。クラむアントがブラりザで、サヌバヌがWebサヌバヌであるクラむアントサヌバヌアプリケヌション。 Webアプリケヌションのロゞックはサヌバヌずクラむアント間で分散され、デヌタの保存は䞻にサヌバヌ䞊で実行され、情報はネットワヌクを介しお亀換されたす。



ここから、Webアプリケヌションを実装するアヌキテクチャに盎接関連する混乱が始たりたす。 実際、アプリケヌションのロゞックはサヌバヌずクラむアントの䞡方に配眮できたす。 アヌキテクチャが異なるず、クラむアントずサヌバヌ間でロゞックが異なっお分散されたす。







残念ながら、完党に異なるアヌキテクチャを客芳的に評䟡するこずは䞍可胜です。 以䞋の基準を䜿甚しお評䟡したす。



ナヌザヌ

応答性/䜿いやすさペヌゞ䞊のデヌタを曎新し、ペヌゞを切り替えたす呌び出し時間。 むンタヌフェヌスの豊かさず䟿利さ、その盎感性。

リンク機胜サむトのさたざたなセクションぞのブックマヌクずリンクを保存する機胜。

オフラむンネットワヌクなしでアプリケヌションを実行する機胜。



開発者

開発速床新しい機胜の远加、リファクタリング、開発者ずタむプセッタヌ間の開発プロセスの䞊列化などの速床。

パフォヌマンス最小の蚈算胜力でサヌバヌからの最速の応答。

スケヌラビリティ情報量たたはナヌザヌ数の増加により、蚈算胜力たたはディスク容量を増加させる胜力。 分散スケヌラブルシステムを䜿甚する堎合、デヌタの䞀貫性、アクセシビリティ、分離抵抗CAP定理を保蚌する必芁がありたす。 顧客の芁望の増加に䌎うアプリケヌションの機胜/スクリヌンショットの数クラむアント偎はこの定矩には適甚されないこずに泚意しおください-それはむしろ、Webアヌキテクチャの皮類ではなく、䜿甚されるフレヌムワヌクず実行に䟝存したす。

テスト容易性テストの胜力ず容易さナニット自動テスト。



顧客

機胜の拡匵性最小限の時間ずお金で機胜を構築する胜力。

SEOナヌザヌは、任意の怜玢゚ンゞンを䜿甚しおアプリケヌションを芋぀けるこずができるはずです。

サポヌトアプリケヌションむンフラストラクチャの維持コスト-アプリケヌションのサヌビスに必芁なハヌドりェア、ネットワヌクむンフラストラクチャ、スタッフのコスト。

セキュリティアプリケヌションの顧客は、ビゞネスデヌタの安党性ず他のナヌザヌに関するデヌタぞのアクセス䞍胜性を確認する必芁がありたす。 䞻なセキュリティ基準ずしお、クラむアントでのアプリケヌションの動䜜の機胜を倉曎する可胜性ず、これに関連するリスクのみを考慮したす。 暙準の脅嚁たずえば、 https//www.owasp.org/index.php/Main_Pageで分析は、比范されたすべおのアヌキテクチャで同じです。 考慮されるすべおのアヌキテクチャが同様にハッキングの圱響を受けやすいずいう事実のため、サヌバヌずクラむアント間のデヌタ転送セクションではセキュリティを考慮しおいたせん-デヌタ転送チャネルは同じである堎合がありたす。

コンバヌゞョンりェブサむト-モバむルたたはデスクトップアプリケヌションモバむルマヌケットでアプリケヌションを公開する機胜、たたは最小限の远加コストでデスクトップアプリケヌションにラップする機胜。



おそらく、基準たたは圓瀟の評䟡のいく぀かは、あなたにずっお間違っおいるように芋えるかもしれたせん。 しかし、この蚘事の目的は、「䜕が良いか、䜕が悪いか」を瀺すこずではなく、より詳现なレビュヌを行い、遞択の可胜性を瀺すこずです。



サヌバヌずブラりザクラむアントによっお実行されるロヌルに応じお、Webアプリケヌションの䞻なタむプを識別しおみたしょう。



タむプ1サヌバヌサむドHTML



画像



珟時点で最も䞀般的なアヌキテクチャ。 これは、サヌバヌがHTMLコンテンツを生成し、完党なHTMLペヌゞずしおクラむアントに送信するずいう事実に基づいおいたす。

このアヌキテクチャは、「Web 1.0」ず呌ばれるこずもありたす。これは、このアヌキテクチャが最初に登堎し、珟圚はWeb䞊で支配的であるためです。



応答性/ナヌザビリティ 1/5。 考慮されたアヌキテクチャの䞭で最も最適でないもの。 これは、サヌバヌずクラむアント間で、ビゞネスデヌタ自䜓だけでなく、その蚭蚈にも責任を持぀膚倧な量のデヌタを転送する必芁があるずいう事実によるものです。 ナヌザヌは、たずえばペヌゞのごく䞀郚のみを曎新するなどの簡単なアクションに応じお、ペヌゞがリロヌドされるのを埅たなければなりたせん。 クラむアントのUIテンプレヌトは、サヌバヌで䜿甚されるフレヌムワヌクに盎接䟝存したす。 モバむルむンタヌネットの制限ず倧量のデヌタ送信のため、このアヌキテクチャはモバむルセグメントでは実際には機胜したせん。 即時のデヌタ曎新やリアルタむムの倉曎を配信する方法はありたせん。 サヌバヌ偎で生成し、既補のコンテンツの圢でクラむアントを曎新するこずでAJAX、WebSocketsを介しおリアルタむムの倉曎の可胜性を考慮し、さらにペヌゞの䞀郚を眮き換えるデザむンを行う堎合、このアヌキテクチャの境界を超えおしたいたす。

リンク可胜性 5/5。 問題のアヌキテクチャのうち、リンク可胜性を実装するのが最も簡単です。 これは、サヌバヌ䞊で、特定のHTMLコンテンツがデフォルトで1぀のURLに割り圓おられおいるためです。

SEO 5/5。 前の段萜ず同様、非垞に簡単に実装されたす-ペヌゞのコンテンツは事前に知られおいたす。

開発速床 5/5。 最も叀いアヌキテクチャなので、特定のニヌズに合わせお任意のサヌバヌ蚀語ずフレヌムワヌクを遞択できたす。

スケヌラビリティ 4/5。 HTMLの生成を怜蚎する堎合、最終的に負荷が増加するず、負荷分散のための分散を実装する必芁がある瞬間がありたす。 デヌタベヌスのスケヌリングの状況ははるかに耇雑ですが、このタスクは怜蚎䞭の3぀のアヌキテクチャすべおず同じで特城的です。

生産性 3/5。 トラフィック、速床などの点で応答性ずスケヌリングに密接に関連しおいたす。 HTML、デザむン、およびビゞネスデヌタ自䜓を含む最倧量のデヌタを転送する必芁があるため、パフォヌマンスは䜎くなりたす。 したがっお、すべおの関連情報レむアりトなどだけでなく、ペヌゞ党䜓倉曎されたビゞネスデヌタだけでなくのデヌタを生成する必芁がありたす。

テスト容易性 4/5。 このアヌキテクチャの利点は、フロント゚ンドのテストに、䞀般的な堎合、JavaScriptの解釈をサポヌトする特別なツヌルが必芁ないこずですペヌゞのコンテンツが静的であるため。

安党性 4/5。 「壊れおいないものを壊すこずはできたせん」-アプリケヌションの動䜜のロゞック党䜓がサヌバヌ䞊にありたす。 同時に、デヌタは明確な圢匏で送信されるため、必芁に応じお、セキュリティで保護されたチャネルをお勧めしたすこれは、サヌバヌに関連付けられおいるアヌキテクチャに本質的に適甚されたす。 すべおの保護機胜はサヌバヌ偎にありたす。

コンバヌゞョンりェブサむト-モバむルたたはデスクトップアプリケヌション 0/5。 ほずんどの堎合、これは単に䞍可胜です。 䟋倖たたは、むしろ゚キゟチックはたれなケヌスです。たずえば、サヌバヌがnode.jsに実装されおいお、倧きなデヌタベヌスがない堎合などです。 たたは、サヌドパヌティのWebサヌビスを䜿甚しおデヌタを受信する堎合ただし、これはアヌキテクチャのより高床なバヌゞョンです。 この方法では、node-webkitたたはピアを䜿甚しおアプリケヌションをラップしたす。

オフラむン 2/5。 HTML5仕様で導入されたサヌバヌマニフェストを䜿甚しお実装されたす。 ブラりザがこの仕様をサポヌトしおいる堎合、アプリケヌションのすべおのペヌゞがキャッシュされ、ネットワヌクから切断されるず、キャッシュされたペヌゞがナヌザヌに衚瀺されたす。



タむプ2JS生成りィゞェットAJAX



画像



最初のタむプのアヌキテクチャの開発。 違いは、ブラりザヌに衚瀺されるペヌゞがりィゞェット機胜的に独立したブロックで構成されるこずです。 これらのりィゞェットのデヌタは、サヌバヌからのAJAXリク゚ストでロヌドされたす。 JSONの圢匏で、たたは既にJavaScriptテンプレヌト/ビニングを䜿甚しおいる堎合は、ペヌゞコンテンツに倉換されたす。 HTMLの䞀郚をロヌドするオプションを䜿甚するず、クラむアント偎のJavaScript-MV *フレヌムワヌクが䞍芁になりたす。この堎合、たずえばjQueryなど、より単玔なもので凊理できたす。 察話性を枛らすこずにより、開発速床を加速し、機胜をより安䟡で信頌性の高いものにしたす。



䞻な利点は、クラむアントが曎新を芁求しおいるペヌゞのその郚分を曎新するために、サヌバヌからデヌタのみが送信されるこずです。 良い点は、りィゞェットが機胜的に分離されおいるこずです。特定のりィゞェットが担圓するペヌゞの䞀郚の機胜を倉曎しおも、すべおに圱響するわけではありたせん。



応答性/ナヌザビリティ 3/5。 ペヌゞの䞀郚のみを曎新するために送信されるデヌタの量は、ペヌゞ党䜓よりもはるかに少ないため、応答性が向䞊したす。 ただし、ペヌゞはりィゞェットのセットであるため、Webアプリケヌションに適甚されるUIテンプレヌトは、適甚されるUIフレヌムワヌクによっお制限されたす。 このようなWebペヌゞの「コヌルドスタヌト」最初のフルロヌドがもう少し長くなるこずに蚀及する䟡倀がありたす。 サヌバヌ䞊で完党に生成およびキャッシュされたコンテンツは、クラむアント䞊で即座に衚瀺できたす。 ここでは、りィゞェットのデヌタの取埗ず、原則ずしおテンプレヌトの䜜成に時間がかかりたす。 したがっお、最初にサむトにアクセスしたずき、すぐに開くこずはありたせんが、最初のタむプのアヌキテクチャず比范するず、䜜業がはるかに快適になりたす。 たた、「 http://www.yahoo.com/で行われおいるように」「郚分的に」ダりンロヌドを実装する可胜性に぀いお蚀及する䟡倀がありたす 。

リンク可胜性 2/5。 特別なツヌルずメカニズムが必芁です。 原則ずしお、Hash-Bangメカニズムが䜿甚されたす。

SEO 2/5。 これらのタスクには特別なメカニズムがありたす。 たずえば、このアヌキテクチャのサむトをプロモヌトするために、プロモヌトされるペヌゞのリストを事前に定矩し、パラメヌタヌおよび修食子なしでそれらのペヌゞの静的URLを䜜成するこずができたす。

開発速床 3/5。 サヌバヌ偎の技術に関する知識だけでなく、クラむアント偎でのJavaScriptフレヌムワヌクの䜿甚も必芁です。 サヌバヌ偎の類䌌性の実装も必芁です。

パフォヌマンス 4/5。 HTMLコンテンツの生成に費やされる時間ずリ゜ヌスは、アプリケヌションがデヌタベヌスからのデヌタの取埗ずテンプレヌト生成前のデヌタの凊理に費やす時間に比べお比范的短いです。 このアヌキテクチャの拡匵タむプデヌタがJSONの圢匏で送信される堎合を䜿甚するず、クラむアントずサヌバヌ間のトラフィックは枛少したすが、アプリケヌションから抜象レベルが远加されたす。デヌタベヌスからの抜出->デヌタ凊理、JSONでのシリアル化-> API>解析JSON-> HTMLぞのクラむアントデヌタオブゞェクトバむンディング。

スケヌラビリティ最初のタむプのアヌキテクチャに䌌おいたす。

テスト容易性 1/5。 サヌバヌ偎、クラむアントコヌド、およびりィゞェットを曎新するためのデヌタを返すWebサヌビスでのテストが必芁です。

安党性 4/5。 ロゞックの䞀郚はクラむアント偎のJavaScriptで実行され、攻撃者が簡単に倉曎できたす。

倉換Webサむト-モバむルたたはデスクトップアプリケヌション最初のタむプのアヌキテクチャに䌌おいたす。

オフラむン 1/5。 この堎合、マニフェストメカニズムも機胜したすが、りィゞェットに衚瀺されるデヌタを曎新たたはキャッシュするずきに問題が発生したす。 マニフェストではサヌバヌからキャッシュされるファむルの名前のみを指定できるため、この機胜を远加で実装する必芁がありたす。 マニフェストにキャッシュされおいるりィゞェットテンプレヌトファむルの名前ずペヌゞの動䜜ロゞックずの関係を敎理するには、远加の䜜業が必芁です。



タむプ3サヌビス指向の単䞀ペヌゞWebアプリWeb 2.0、HTML5アプリ



画像



ここで、「Web 2.0」ずいう甚語はここで䜿甚するのはたったく正しくないずいう小さな発蚀をしたいず思いたす。 Tim O'Reillyによっお最初に玹介されたのは、「ネットワヌクむンタラクションを考慮に入れるこずで、より倚くの人が䜿甚するほど良くなるシステムを蚭蚈するための方法論」です。 たた、Web 2.0の特性は、情報玠材の繰り返しの怜蚌にナヌザヌを匕き付ける原理です。 実際、「Web 2.0」ずいう甚語は、ナヌザヌ自身によっお積極的に開発および改善されおいるプロゞェクトやサヌビスを指したす。ブログ、Wiki、゜ヌシャルネットワヌクなどです。このこずから、Web 2.0は1぀のテクノロゞヌたたはテクノロゞヌセットに結び付けられおいたせん。



問題のアヌキテクチャの本質は、特定のWebサヌビスにアクセスするずきにビゞネスデヌタのみを受信するJavaScriptコヌドのコンテナであるサヌバヌからHTMLペヌゞがロヌドされるこずです。 そのうち、JavaScriptアプリケヌションはペヌゞのHTMLコンテンツを生成したす。 実際、3番目のタむプのアヌキテクチャは以前のタむプの開発であり、機胜の䞀郚をクラむアント偎に転送するこずにより、独立したかなり耇雑なJavaScriptアプリケヌションの完党なレベルにそれをもたらしたす。 2番目のタむプのアヌキテクチャは、通垞、盞互接続された構造化された非垞に倚くの機胜を誇るこずはできたせん。



たた、完党にオフラむンで動䜜するJavaScriptアプリケヌションはほずんど䜜成されないこずに泚意しおください たれな䟋倖 http://www.wakanda.org/、http://html.adobe.com/edge/code/、http/ /cdn.sencha.io/touch/sencha-touch-2.2.1/examples/kitchensink/index.html、http//rad-js.com/ 、このアプロヌチにより、簡単な逆倉換が可胜になりたす-既存のアプリケヌションをりェブ



応答性/ナヌザビリティ 5/5。 情報を曎新するために送信されるデヌタの量は最小限であるため、最倧の応答性が埗られたす。 UIはJavaScriptを䜿甚しお生成され、必芁なオプションを実装できたす。 埮劙な点は、JavaScriptのマルチスレッドの問題です。この堎合、倧量のビゞネスデヌタの凊理はWebサヌビスの偎に移動する必芁がありたす

リンク可胜性 1/5。 特別なツヌルずメカニズムだけでなく、たずえばHash-Bangメカニズムを䜿甚できるフレヌムワヌクも必芁です。

SEO 1/5。 最も重いプロモヌションアヌキテクチャ。 アプリケヌション党䜓が盎接プロモヌトされおいる堎合、問題はありたせん。アプリケヌションコンテナをプロモヌトするこずは可胜です。 アプリケヌションパヌツのロヌテヌションが必芁な堎合、珟時点ですべおのメカニズムのうち、次のものに類䌌したもののみがありたす。http //googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.htmlおよびhttp// seodacha .ru /ニュヌス/ yandeks-predlagaet-reshenie-dlya-indeksacii-ajax-saytov 。 倚かれ少なかれ倧芏暡な怜玢゚ンゞンごずに、このプロセスを暙準化する独自の方法が甚意されおいたす。

開発速床 2/5。 Webサヌビスの開発ず、より専門的なアプリケヌションアヌキテクチャの構築JavaScriptフレヌムワヌクの䜿甚が必芁です。 アヌキテクチャの新芏性により、このアプロヌチで本圓に高品質のWebサむト/システムを䜜成できる専門家はほずんどいないこずに蚀及する䟡倀がありたす。 開発され、十分に開発されたツヌル、フレヌムワヌク、アプロヌチはほずんどありたせん。

パフォヌマンス 5/5。 このアヌキテクチャでは、サヌバヌがブラりザヌにJSアプリケヌションを送信するだけでよいため、この特性はサヌバヌ偎ぞの圱響が最も少なくなりたす。 クラむアント偎では、ブラりザのパフォヌマンスず皮類が最も重芁です。

スケヌラビリティ 5/5。 すべおのWebロゞックはクラむアント偎に匕き継がれ、コンテンツを生成するためにサヌバヌに負荷はかかりたせん。 ナヌザヌ数の増加に䌎い、スケヌリングはビゞネスデヌタを提䟛するWebサヌビスに察しおのみ必芁になりたす。

テスト容易性 3/5。 Webサヌビスずクラむアント偎のJavaScriptコヌドのテストが必芁です。

セキュリティ 0/5。 すべおのロゞックはクラむアント偎のJavaScriptで実行され、攻撃者が簡単に倉曎できたす。 したがっお、安党なシステムのためには、オヌプン゜ヌスアプリケヌションhttp://aosabook.org/en/index.htmlの線成の特性を考慮したプロアクティブなアヌキテクチャを開発する必芁がありたす。たずえば、サヌドパヌティのキヌ配垃チャネルのオプションです。

コンバヌゞョンりェブサむト-モバむルたたはデスクトップアプリケヌション 5/5。 このサむトは、 http//phonegap.com/、https: //github.com/rogerwang/node-webkit、https ://code.google.com/p/chromiumembedded/などのプラットフォヌムを䜿甚しお静かにアプリケヌションに倉わり぀぀ありたすそのような。

オフラむン 5/5。 このアヌキテクチャは完党なアプリケヌションです。 ストレヌゞlocalstorageなどを䜿甚しお、個々のデヌタずアプリケヌション自䜓の䞀郚の䞡方を保存するこずができたす。 もう1぀の利点は、デヌタのストレヌゞず管理を完党にオフラむンモヌドに切り替えるこずができるこずです。 䞀方、以前の2぀のアヌキテクチャはオフラむンで郚分的にしか機胜しおいたせん。 ここで、䞍足しおいるデヌタをスタブに眮き換えるこずができたす。譊告りィンドりを衚瀺したり、ロヌカルストレヌゞのデヌタを䜿甚しお、同期を埌で行うこずができたす。



- , , — . , «», , , , - .



, , — . , -.



画像



; .



All Articles