Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

アプリしか作れないけどAzureに触ってみた #ngtnet

4,241 views

Published on

2015/10/10 #ngtnet

Published in: Technology
  • Be the first to comment

アプリしか作れないけどAzureに触ってみた #ngtnet

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

×