Upload
kazumune-katagiri
View
3.926
Download
0
Embed Size (px)
Citation preview
Niigata.NET #1 アプリしか作れないけどAzureに触ってみた2015/10/10 @nemuzuka
自己紹介• 片桐 一宗(かたぎり かずむね)
• id:nemuzuka / @nemuzuka
• サーバサイドにJavaを使用したWebアプリケーションの開発を主にしております
• フリーランス(vss.jp.net)
• あまりMSの製品、テクノロジーに触っていません。
• 強いて言えば方眼紙としてアイツを...
.NETコミュニティですが、 .NET要素ゼロでお送りします
個人事業主なのですが、 サービスも立ち上げています。
[Salon de Karte]
主なサービス維持コスト
1,099円/月(VPS 1台)
問題点
• VPSの停止=サービスの停止
• サービスを止めたくない
• AWS等で冗長化構成を組めばいい
• それなりにコストがかかる
• そんなにお金も生み出していないサービスの維持費を(勉強の為とは言え)掛けられない
「VPSが落ちませんように」と願う毎日
ある日、石野さん(@AILight)よりBizSparkの存在を知る
BizSpark
こ れ だ http://www.microsoft.com/ja-jp/ventures/BizSpark.aspx
3年間祈る必要無くなるかも
ということで申し込み (割とすんなり行けました)
Mission 1.
「Salon de Karte」を Azure上で動作させろ
Q. そのアプリどんな構成?
A. こんな構成のWebアプリ
Apache Tomcat PostgreSQLScala
S3
この辺をAzure上へ移行する
Azureの中で何が使えそう?
• Web Apps
• SQL Database
• Virtual Machines
1. Web Apps
• いろいろ面倒見てくれる
• スケール
• ユーザ数が増えてもボタン1つでAPサーバ増やせる!
• 負荷によって自動スケール
• SQL Database(SQL Server)やMySQLもまとめて入れることもできるみたい
• デプロイ
• warファイルをgitでpushすれば良い
• 前のバージョンに戻したいなーってのも管理コンソールから簡単に!
• ミドルウェアは決め打ち
• Javaの場合、IIS + (Tomcat | Jetty) AWSで言うところの
Beanstalk
2. SQL Database
• 管理はMSにお任せできるSQL Server
• 何か困ったら札束で殴れば良…
AWSで言うところの
RDS for SQL Server
3. Virtual Machines
• 仮想マシン
• 好き勝手できる
• エンドポイント
• 外部との通信許可。ファイヤーウォールでポートを空ける感じ
• SSH(22) / HTTP(80) とか
• この設定がしっかりしていれば外部からの不正アクセスも防げる気がする AWSで言うところの
EC2
どれを使いましょう?
• APサーバ
• Web Apps
• Virtual Machines
• DBサーバ
• SQL Database
• Virtual Machines
Javaが使えてスケールも 簡単にやってくれそうなので
アプリが SQL Serverなら楽だった…
まずは Web Appsの設定
Web Apps設定(1)
Web Apps設定(2)
Javaを使用するように[構成]を設定
Web Apps設定(3)
warを作って Gitリポジトリにpush
$ git push azure master
以上。
やだ・・・簡単・・・
• RDBMSもSQL Server / MySQLにしておけばWebAppsだけでシステム構築ができそう
• ネットワークとかよく知らなくてもサービスが止まらない環境に仕上げられるのはすごい
• 困ったら札束の力で解決というのも潔い
• モジュールのバージョンupはwarを再度pushすれば良い
• (warだから?)キャッシュが残ってて、前の奴を削除する必要があった…
続いて Virtual Machinesの設定
Virtual Machines設定(1)
OSを選択して(今回はLinux)
クライアント側で 認証用のキーを作成して、UP (SSH接続時に使用)
Virtual Machines設定(2)
ネットワークを設定
できたー
後はSSHでログインして PostgreSQLを
ソースからコンパイルして インストール。
※日本語の全文検索する都合上 コンパイルがいるのです
接続先をゴニョゴニョして…
ログイン画面がでたー!
画像もS3に上がるー!
これ
割とあっさりできました。
ちょっと待って。
Web Appsと Virtual Machinesの
つなぎ込みはどうしてる?
あ…
Virtual Machinesのエンドポイントで
port 5432開放!
アッー!$ view /usr/local/pgsql/data/pg_hba.conf
host all all 0.0.0.0/0 trust
postgresにはどのIPアドレスからでも 接続できるよ!
何故こんな設定にした
• WebAppsからの接続アドレスは変わることがある(らしい)ため
この中のどれか
非常にマズイ
接続先URLを知っていれば 誰でもDBが覗けてしまう…
Mission 2.
DBサーバを 不正な外部アクセスから守れ!
※Web AppsはMSの威信にかけて不正侵入できないでしょうからスルー
何故不正アクセスされることになるか• Web Apps と Virtual MachinesがパブリックなIPで通信してるから
アプリはこいつを指定してた
今はこんな感じ
IIS Tomcat
PostgreSQL
S3
Web Apps
Virtual Machines VIP(ドメイン)で やりとしてるので、 Web Appsだけでなく インターネット上の全てと繋がることができる
✕
VIPは変わる(ことがある)し、 インターネット経由でアクセスするので通信距離が長くなる
余計なものは 見せなきゃ良いじゃない
A. 内部ネットワーク
Q. ネットワーク設計の ご経験は?
A. 既に準備されてるもんじゃないんですか?(38歳 自営業)
恐る恐るはじめてみました
要は、こうなれば良いんでしょ?
IIS Tomcat
PostgreSQL
S3
Web Apps
Virtual Machines
local IPでやり取りする
仮想ネットワーク
公開するのは Web Appsだけ
仮想ネットワークを作ろう
仮想ネットワークの設定(1)
これ重要
仮想ネットワークの設定(2)
Web Appsのセグメント
Virtual Machinesのセグメント
仮想ネットワーク上に Virtual Machinesを作ろう
後乗せできません
• 仮想ネットワークに参加する仮想マシンは、作成時に指定する必要がある
これ重要
仮想マシン作成後
仮想マシンが追加される
ゲートウェイの作成も行う
仮想ネットワーク上に Web Appsを乗せよう
後乗せできます
• ポータルサイトから設定します
Web Appsのダッシュボードから これクリック
Web Appsのネットワーク設定
• VNET統合のセットアップをクリックします
作成した 仮想ネットワークを 指定します
しばらくすると設定されます
接続先の情報も内部IPで安心
• Web Apps上のDB接続文字列
• jdbc:postgresql://10.0.1.4:5432/データベース名
• PostgreSQLの設定
• 仮想マシンのエンドポイント
$ view /usr/local/pgsql/data/pg_hba.conf
host all all 10.0.0.0/24 trust
参考サイト
• しばやん雑記
• http://blog.shibayan.jp/entry/20140911/1410430147
• ブチザッキ
• https://buchizo.wordpress.com/2014/09/11/azure-web%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AEvpn%E6%8E%A5%E7%B6%9A/
Mission 3.
サービスとして提供せよ
まだまだやることあるんですよー• 独自ドメイン化
• SSL証明書の設定
• サーバ増えた際のHttpSessionの扱い
• 今のままだとLBが今まで通信してたサーバに割り振ってくれないと困る
• LBがStickeyにできればまだ良いんだけど…
• 違うサーバに割り振られても大丈夫なようにするには
• Tomcat上のSession情報をSQL Serverにつっこむ…?
• クライアント証明書設定
• URL毎に異なるクライアント証明書仕込みたい
• Web AppsのIISでできる?
• DBの冗長化
[HttpSession] クライアントに紐づくデータを サーバ上のメモリに持つ (カート内の商品情報とか)
間に合いませんでした…
Azure使ってみての感想• 普通のWebアプリなら大きな問題ないと思う
• Azureに上げる為のソースの修正
• 一時ファイル書き込む箇所 ←これだけ
• 多分、.NET使ってればサーバが増えても問題ないんですよね?
• コスト
• Web Apps(¥8,976/月~)
• 仮想ネットワーク上に配置するのにStandardにする必要あり
• 仮想マシン(¥6,834/月~)
• さらにトラフィック分の課金がある
• ドキュメントが見つけにくい
BizSparkの無料枠
¥15,500/月…
まとめ• Web Appsでできることで収まれば、後は気にしなくて良い
• 基本、金で解決
• PaaSでできること以上のことをやろうとした場合、仮想マシンを揃えることになるのはAWSも一緒
• 仮想マシン運用だとコストはそれほど下がらない
• PostgreSQLで日本語の全文検索を使用する場合、仮想マシンからは逃れられない
• ネットワークの設定はごちゃごちゃしてなくて簡単
• ヒトリでデキター
• しばらくは祈り続けます
ご清聴 ありがとうございました