🐥

三層アーキテクチャを振り返りながら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ちゃんねる風の掲示板を作っていきます!
ネタ系講座ではなく、しっかりシステム開発の要件確定、設計、実装の一通りの流れも楽しく学べるようにできていますのでぜひ!
https://www.udemy.com/course/web-python-flask/?referralCode=4E5CE594E27DB480F5B4

デモ画面だけちょっと貼っておきますね。

Discussion