##前回までのおさらい
読んでいる本はこちら
Docker/Kubernetes 実践コンテナ開発入門
3章まで読み終わったので、今回は4章編となる。
3章編については以下に記載
Dockerの本を読んでみた -3章編-
##章の流れ
これまで学習してきた章の実践として、4章が存在する。
よって、Dockerの基礎なんてもう知ってるよ!っていう方は4章からやるのが良いのかもしれない。
章内の主題としては、「Webアプリケーションを実際に構築してみようー!」というもので、作成フローから順々に説明されている。
##Webアプリケーションの仕様
###そもそも、アプリケーションを作成のフローとは?
一般的に、Webアプリケーションを作成しよう!となった場合のフローとして、
「企画」→「設計」→「開発」
が主流となる。
それぞれのフローで具体的にどんなことを行うのかということについて、以下にまとめた。
**「企画」**では、どんな人がいつ使うのかといったターゲット決めを行う
**「設計」**では、サイトマップ、ワイヤーフレームの作成、データベースの設計を行う
**「開発」**では、プログラミング言語などを使って設計した仕組みを作っていく
今回は「企画」部分は省略し、「設計」部分から実践演習として問題が定義されていた。
###アプリケーションの仕様
実践演習として定義されたものは以下となる。
・TODOを登録・更新・削除できる
・登録されているTODOの一覧を表示できる
・ブラウザから利用できるWebアプリケーションとして構築する
・ブラウザ以外のプラットフォームからでも利用できるように、JSON APIのエンドポイントも作成する
####アーキテクチャ(設計図)
作成するアプリケーションはDocker Swarmを使用し、オーケストレーション機能を持たせる。
また、イメージごとに使用するサービスを分ける方式を取っていた。
イメージ名 | 用途 | Service名 | Stack名 |
---|---|---|---|
MySQL | データストア | mysql_master,mysql_slave | MySQL |
API | データストアを操作するAPIサーバ | app_api | Application |
Web | ビューを生成するアプリケーションサーバ | frontend_web | Frontend |
Nginx | プロキシサーバ | app_nginx,frontend_nginx | Application Frontend |
####Nginx
アプリケーションのフロントエンドサーバ及びAPIの前段として、Nginxを配置し、リバースプロキシとして動作させる。
Nginxを配置するのはキャッシュ利用、バックエンドの柔軟なルーティングやアクセスログの出力を容易にする為とあった。
####配置戦略
今回作成するTODOアプリも、Swarmクラスタ上でそれぞれのServiceを展開する方式を取る。
###TODOアプリケーションの全体像
作成していくフローとして以下が記載されていた。本の内容を引用する。
1、データストアとなるMaster/Slave構成のMySQL Serviceの構築
2、MySQLとデータのやり取りをする為のAPI実装
3、ウェブアプリケーションとAPI間にリバースプロキシとなるNginxを通じてアクセエスできるように設定
4、APIを利用してサーバ再度レンダリングをするWebアプリケーションを実装
5、フロント側にリバースプロキシ(Nginx)を置く
##作っていく
###MySQL編
本内では、gitに参考資料が記載されているので、そこから取ってきた上で構築を進める流れとなっている。
###API編
APIのイメージを作成出来るファイルがGitに公開されているので、それを見ながら作業を進めていく感じ。
###Nginx編
API編と同様でしたね。
###Web編
最後に、WebアプリケーションをNode.jsで構築する流れとなっていた。
Node.jsが分からない場合は、以下を参照すると勉強になったので記載する。
Node.jsとはなにか?なぜみんな使っているのか?
この章でも、今までと同様に見本となるgitが公開されているので、作業する環境にgitをcloneして作業する。
###次回の話
5章は以下に記載したので、興味がある方はどうぞ。
Dockerの本を読んでみた -5章編-
##まとめ
WebアプリケーションをDockerでつくってみよう〜ハンズオン章だったと思う。
そもそもWebアプリの構成部分で理解が進んでないと割ときついと思ったので、これ知らんーってなったらその都度調べつつ実施するのが望ましい。