公開されている
「Web Frameworks, Database and Web Sacks」
のキモ部分を読んで勉強してみたいと思います。
Webアプリケーション構築には、フロントエンド、バックエンドとも
多くのフレームワークがある。
適切なフロントエンド、バックエンド、データベースを選択することが必要である。
フレームワーク、データベース、OSの環境をWeb Stackと呼ぶ
Webアプリケーションを構築する技術やフレームワークは、数多い。
その1つにマイクロサービスベースのアーキテクチャがある。
マイクロサービスは、システムをサービスの集合体とすることで、
疎結合、高い保守性、独立したディプロイを提供しようとするもの。
サービス間は、APIでつながる。
フロントエンドは、ユーザインタフェースを提供し、
バックエンドは、ビジネスロジックを提供する。
この2つを独立させることで、迅速な開発、容易なアップグレード、高い保守性を実現できる
フロントエンドのフレームワーク
ユーザとのインタラクションを提供するコンポーネントをフロントエンドという。
フロントエンドに関するテーマは、パフォーマンスとレスポンシビリティ。
また、画面の大きさに合わせた出力等も必要になる。
1.AngularJS
SPAをつくるJavaScriptのフレームワーク。
HTMLを拡張してアプリケーションのコンポーネントを表現する。
2.ReactJS
効率的で多機能なユーザインタフェース向けのJavaScriptフレームワーク。
再利用可能な部品から複雑なUIを組み立てる。
ReactJSは、JSXを利用する。
JSXは、XMLのシンタックスにJavaScriptを加えたプリプロセッサである。
3.VueJS
Vueは、ユーザインタフェース、SPAを作るフレームワーク。
リアクティブやコンポーネントの利用に特徴がある。
バックエンドフレームワーク
バックエンドは、数多くの機能からなる。
たとえば、外部からの攻撃に対するAPIの保護、認証、データベースとの連携、
ユーザからのリクエストに応じた処理等である。
NodeJS
NodeJSは、非同期でイベントドリブンなJavaScriptのランタイムで、
スケーラブルなアプリケーションを構築することができる。
数多くのコネクションを同時に管理できる。
数多くのコネクションを同時に管理できる。
それぞれのコネクションは、コールバックがトリガーとなる。それ以外の時は、Sleepしている。
この動作は、他の多くのスレッドを利用する同期モデルとは異なる。
さらにNodeでは、lockを利用しないので、デットロックを心配する必要がない。
I/Oを発生させる機能が少ないため、プロセスがブロックされることはない。
これらの特質のため、Nodeは、スケーラブルなものとなっている。
Nodeは、オプティマズされたV8エンジンを利用している。
Django
Python用のWebフレームワーク。
高速に動作し、開発者が迅速に開発できるようになっている。
開発者がビジネスロジックの実装に集中できるようにしている。
Gjangoは、認証、サイトマップ、コンテンツ管理、RSS feedsなど、
多くの機能を支援している。
Djangoは、MVCアーキテクチャを採用している。
Modelは、ロジカルなデータ構造で、Webインターフェイスとデータベースの仲介を行う。
Viewは、ユーザインターフェイスのロジックを含む。
controllerは、modelからviewのデータのやり取りを行う。
Spring Boot
Spring bootは、巨大なモノリックなアプリケーションより、
マイクロサービスに適している。
Docker のコンテナにダイレクトにDeployできる。
サーバサイドのアプリケーション、REST API、イベント駆動型の処理を容易に作成できる。
また、health check(モニタリング)、メトリクスデータの提供などの機能もある。
SAMLやOAuth、LDAPなど業界標準の認証プロトコルをサポートする。
多くのリレーション、非リレーショナルのデータベース、クラウド・サービス、
MapReduceフレームワーク等に対応している。
リレーショナルデータベース(SQL)とノンリレーショナル(NoSQL)のデータベースの
データベース
リレーショナルデータベース(SQL)とノンリレーショナル(NoSQL)のデータベースの
選択がある。リレーショナルデータベースは、データが少ないOLTPに適している。
ノンリレーショナルデータベースは、非構造データを利用するときに好まれる。
PostgreSQL
PostgreSQLは、OLTPシステムに適している。また、分析用データベースにも適している。
高いスケーラビリティを持ち、Webシステムにも適している。
Django、Hibernate、NodeJSなどモダンなフレームワークと一緒に使われることが多い。
Django、Hibernate、NodeJSなどモダンなフレームワークと一緒に使われることが多い。
レプリケーションに優れており、多くのサーバが必要になる時などに利用される。
NoSQLスタイルでも利用できる。
MongoDB
ドキュメント指向のNoSQLのデータベースである。
コレクションとドキュメントと呼ばれる概念がある。
ドキュメントには、key-valueのペアが含まれ、こればリレーショナルデーターベースのレコードにあたる。
同じタイプのドキュメントの集合がコレクションである。
MongoDBは、レプリケーションの機能を利用して、スケーラビリティを実現する。
webアプリケーション構築に必要なソフトウェアの集合である。
WEB STACK
webアプリケーション構築に必要なソフトウェアの集合である。
web stackには、OS、データベース、プログラミング言語、Webサーバが含まれる。
〇 LAMP/LEMP
Linux 、Apache/Nginx、MySQL、PHP
〇 MEAN/MERN/MEVN
MongoDB、ExpressJS/AngularJS/ReactJS/VueJS、NodeJS
〇 Spring STACK
〇 LAMP/LEMP
Linux 、Apache/Nginx、MySQL、PHP
〇 MEAN/MERN/MEVN
MongoDB、ExpressJS/AngularJS/ReactJS/VueJS、NodeJS
〇 Spring STACK
0 件のコメント:
コメントを投稿