【ミニアプリ開発】5日目/基本設計③アプリの全体構成と、ネットワーク・仮想マシン構築 | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

家計簿アプリ開発5日目です!

 

今回は、全体のインフラ構成を設計したうえで、

Oracleクラウドを利用して、仮想ネットワーク(OracleVCN)とサブネット、VM構築までいきたいと思います。

 

これまでの記事はこちら。

Oracleクラウドを利用して、オリジナル家計簿アプリを作ろうとしております(`・ω・´)

【ミニアプリ開発】1日目/Oracleクラウドを登録してみた

【ミニアプリ開発】2日目/OracleクラウドのDBの種類と、DB作成

【ミニアプリ開発】3日目/基本設計①アプリGUI部分の設計

【ミニアプリ開発】4日目/基本設計②アプリのDBテーブル設計

 

 

もくじ

1.インフラ構成設計

2.Oracleクラウドのネットワーク構築

3.仮想マシン構築

4.おまけ(設計ツール紹介)

 

1.インフラ構成設計

ゆるっと、こんなかんじで全体像を考えてます。

(仕事ならもっとちゃんとしたものを書くよw)

 

よくあるWeb3層構造で作っていきます。

 

WebサーバとAPサーバ、ふつうはOSをそろえると思うのですが、

Linuxのディストリビューションの違いも勉強してみたいなあと思い、代表的な2つをそれぞれ使おうと思います。

(Tomcatその他ミドルウェアとの相性などにより変わる可能性もあります)

 

2.Oracleクラウドのネットワーク構築

ではさっそく、Oracleクラウド上で、

今回のアプリのためのネットワークを構築していきたいと思います!

が、構築前に、Oracleクラウドのネットワーク関連で出てくる基本用語を確認しておきます。

 

■用語確認

◎OracleVCN(Virtual Cloud Network)とは

Oracleクラウドで設定できる、仮想プライベート・ネットワーク。
「プライベート」の名前の通り、1つのOracleクラウドアカウントでの専用ネットワークとなります。
つまり誰か別の人と共有するものではないということですね。安心。

 

◎サブネット

一般的な「サブネットマスク」の意味と、本質は同じ。
Oracleクラウドで定義される「サブネット」は、VCN内で複数つくることもでき、
VCN内の他のサブネットとは重複しない、連続したIPアドレスの範囲で構成する必要があります。
たとえば、10.0.0.0/24とか。

各サブネットは、仮想のNIC(Virutual Network Interface Card)を含み、
1つのサブネット内のすべてのVNICは、同じルーティング表、セキュリティリスト、DHCPを利用します。

なお、サブネット作成時には、以下2つの種類から、どちらかを選ぶ必要があります。
・プライベート(サブネット内の仮想NICが、パブリックIPを持てない)
・パブリック(サブネット内の仮想NICが、任意にパブリックIPを持てる)

 

※その他の関連用語は、公式ドキュメントを参照。

https://docs.cloud.oracle.com/ja-jp/iaas/Content/Network/Concepts/overview.htm

 

■実際に構築してみる

VCNとサブネットを構築していきます。

サブネットはVCN内に作るものなので、構築順としては、

①VCNをつくる ②VCN内にサブネットをつくる

という手順になります。

 

◎VCN構築

まずはOracleクラウドのアカウントページを開き、画面左上にある3本線から、ハンバーガーメニューを出します。

「ネットワーキング」→「仮想クラウド・ネットワーク」を押して、VCNを新規作成していきます。

 

作成するネットワークの名前など聞かれるので、適切に回答していきます。

私はネーミングセンスが無さすぎるので、、、w

家計簿アプリということで「moneyVCN」にしてみました。(センスが欲しい………w)

 

また、「CIDR」も回答する必要があります。

「CIDR(Classless Inter-Domain Routing)」は、超ざっくり言うと、IPアドレスを良い感じに割り当てる仕組みです。詳しく書くと長くなるので、必要に応じてググってください

ここでは「192.168.1.0/24」にしてみました。

 

その他、DNSの設定もできます。

DNSの仕組み、勉強のために自分で別途入れてみても良いかなと思ったのですが、

とりあえずデフォルトのまま有効にしておきました。

 

設定し終えて、「VCNの作成」ボタンを押すと、すぐにVCNが作られます。はやい。

 

◎サブネットの構築

上の、構築されたVCNの画面で、「サブネットの作成」という青いボタンを押すと、

サブネットを作成するための設定画面が開きます。

 

やはりネーミングセンスは皆無なので、サブネット名は「moneySUBNET」としました。

また、サブネット・タイプは、推奨されている「リージョナル」としました。

※サブネット・タイプの説明に出てくる「リージョン」とは、Oracleクラウドのサーバが物理的に存在する場所です。言い換えると、Oracleクラウドのアカウント作成時に選択する地域のことです。(私は「日本/東京」を選んでいます)

サブネット・タイプは、リージョン内のどこにサブネットのインスタンスを作れるようにするか、という設定になります。

 

DNSの設定は、VCN構築時に設定したものと同じにしました。

 

セキュリティ・リストは、詳細がいまいち分からなかったので(あかんやつw)

ひとまずデフォルトを選びました。

 

設定を終え、「サブネットの作成」ボタンを押すと、

最初につくったVCNの内部に、サブネットが構築されます。

 

ここまでで、基本となるネットワークの部分を作成し終えました。

 

 

3.仮想マシン構築

続いて、APサーバ、WEBサーバとしてそれぞれ利用する、

仮想マシン(VM/Virutal Machine)を、Oracleクラウド上に作っていきます。

 

2サーバつくるのですが、手順は同じなので、APサーバの分だけ載せておきます。

 

メニューから、「コンピュート」→「インスタンス」で、仮想マシンを作成しはじめます。

 

例によって、仮想マシンの名前などを設定していきます。

 

基本的にデフォルトのままで。。

 

OSイメージだけはデフォルトから変更しました。

デフォルトはOracle Linuxですが、CentOSを使いたいので、「イメージの変更」を押下。

 

使いたいOSを選びます。

CentOS8を使いたかったのですが、候補になかったのでCentOS7を選びました。

CentOSは、Oracleクラウドの「Always Free」サービスの対象でした。

(WEBサーバは、同様の要領で、Ubunts20.04を選択しました)

イメージが変わったことを確認。

 

ネットワーキングの構成については、最初につくったVCN、サブネットの設定になっていることを確認。

 

続いて、SSHキーの追加。

説明にもあるとおり、Linuxの場合はSSH認証を使うとのこと。

自作の鍵などはないため、「SSHキー・ペアの生成」を選び、Oracleクラウドに自動生成してもらう設定としました。もし鍵を指定したい場合は、たぶんここで選ぶのだと思います。

秘密鍵はダウンロードしておきました。

 

最後に、「ブート・ボリュームの構成」。

オプション項目であり、必須ではなかったため、今回は何もチェックをつけず、「作成」としました。

 

仮想マシンの作成は、少し待ち時間が長めですが、

作成し終えると「実行中」ステータスを確認できます。

 

ここまで、ネットワークと仮想マシンの構築までを行いました。

 

4.おまけ(設計ツール紹介)

今回は、インフラ構成図を描くときに、LucidChartというツールを使いました。

lLucidChart:

https://www.lucidchart.com/pages/ja/examples/network-diagram-software

 

個人的には使いにくかった…(^-^;

私が使いこなせていないだけなのかもですが、(もしくは無料で使える範囲が限定的だからなのか)

標準で用意されている図のバリエーションが少なすぎて、

しかもpptやExcelなどOffice製品と大差ない(どころか、それより種類が少ない)。

 

オリジナルの図をアップロードすることで、その図を利用できるという機能もあるようですが、

それってOffice製品でもできるような…。

それなら操作に慣れているOffice製品使うほうが早いなあと思いました。

 

一方で、以下のようなメリットもありました。

 ・複数人で利用共有ができる

 ・クラウドサービスの1つなのでローカルPCにデータを保存しなくて良い

 

状況に応じて、ツールを使い分けていくと良さそうです。

 

※あくまで個人の感想です。

 

 

 

今回は以上です。

ちょっとずつアプリ開発っぽくなってきて楽しい( *´艸`)~♪