🐥
三層アーキテクチャを振り返りながらFlaskのアーキテクチャを理解する
Flaskのアーキテクチャを書こうと思ったきっかけ
Flaskをなんとなくで利用している人は多いのではないでしょうか。
私の本業であるインフラエンジニア/アーキテクトの目線で三層アーキテクチャを振り返りつつ
Flaskのアーキテクチャを図示してみました。
三層アーキテクチャとは?
- Webサーバ(プレゼンテーション層)
ユーザーからのリクエストに応じてウェブページを提供します - APサーバ(ロジック層)
ビジネスロジックを処理し、ユーザーからの要求に応じてデータを処理します - DBサーバ(データ層)
データを保存、管理し、必要に応じてデータを提供します

※1 静的コンテンツ(HTML,画像等)はWebサーバから直接返却
Flaskのアーキテクチャ
スタック構成は以下です。

(補足)
OS:Linux,Windowsどちらでもよいが、Windowsを選定した例
DB:複数のDB製品に対応しているが、今回はSQLiteを選定した例
Flask:Webサーバ、APサーバ部分
FlaskはWebサーバ、APサーバの役割を担います。
- Webサーバ(プレゼンテーション層)
Webサーバとしてリクエストの受付・レスポンスを行います。
また、APサーバ(ロジック層)との橋渡しをしています。 - APサーバ(ロジック層)
ビジネスロジック(どういう値が来たらどう処理してどう返却するかのロジックなど)を処理する。Flaskの場合はPythonでロジックを書きます。
DB製品:DBサーバ(データ層)部分
SQLite等のDB製品がDBサーバとしての役割を担います。
FlaskだけではDBとして機能しないため、データの保存・読み書きの役割としてDBを別途インストールして使います。例えば以下のような製品を使います。
| 製品名 | タイプ | 特徴 |
|---|---|---|
| SQLite | 組み込み型 | 軽量で設定不要、開発や小規模向け |
| PostgreSQL | RDBMS | 高機能で信頼性が高く、大規模にも対応 |
| MySQL | RDBMS | 広く使われていて、学習資料も豊富 |
| SQLAlchemy | ORMライブラリ | DB製品ではないが、Flaskと相性抜群 |
Flaskの基礎とシステム開発の入門を学びたい方
Flaskの環境構築・起動方法からシステム開発の入門を学べるUdemy講座を公開しています。
講義の中で2ちゃんねる風の掲示板を作っていきます!
ネタ系講座ではなく、しっかりシステム開発の要件確定、設計、実装の一通りの流れも楽しく学べるようにできていますのでぜひ!
デモ画面だけちょっと貼っておきますね。

Discussion