Azureを使うための勉強法

タグの編集
投稿者 Tomomi  (社会人) 投稿日時 2021/2/5 10:34:37
とあるデータ管理を行うアプリをユーザーに運用しています。
(元々VB2005で作成したものを、現在ではVB2013にしてメンテナンスを行っています。)
データ管理はAccessのMDBで行い、関連する画像ファイル等のバイナリデータは
MDBを配置した場所のサブフォルダで管理しています。
(画像ファイル等のパスをMDBで管理)

さて、MDBに蓄積されたデータ件数がかなり多くなり、
また、ユーザーより、データの場所をクラウド対応して欲しい
(いわゆるリモートワークでも利用可能としたい)
というご要望がありました。

そこで、クラウドサービスの導入を検討しているのですが、
開発言語にVB.net(たまにC#)を使用している関係上、
MicrosoftのAzureがいいかな、と思っています。

現在のAccess MDBと関連データを扱うことと同じことがやりたいので、
まずはSQL Serverを使いたいです。
次に、DBデータに関連する画像データ等を保管するフォルダですが、
以前、DBのバイナリ型に画像データを入れようかと検討したのですが
色々と検索するとあまりお勧めできないとのことで、
サーバ内部のフォルダに保管し、リクエストに応じHTTP等で応答することを
検討しています。

まとめると、以下のようなことがやりたいです。
・クライアント側アプリからSQL Serverにクエリを投げるような使い方をしたい
・HTTP等でリクエストに応じたレスポンス(画像データ等)を返すWebサービスを作りたい

とは言っても、私はこの業界をしばらく離れていて、
SQL Serverは20年近く触ったことがありません。
ましてや、Webアプリはレガシーaspの時代です。

ほぼほぼビギナーですが、勉強のためにどのようなステップで
取り組んでいけばよいでしょうか?

・まずどのような契約が必要か?
 (とりあえずは最低ランクのスペックで十分)

・AzureでSQL Serverを使用するためのお薦めの解説サイトは?

・AzureでWebサービスを開発するためのお薦めの解説サイトは?
 (とりあえずhttpでリクエストを受け取ったら何らかのレスポンスを返す、
  というところまで習得できれば、あとは何とかやっていけると思います。)

アドバイスの程、何卒宜しくお願い致します。
投稿者 るきお  (社会人) 投稿日時 2021/2/5 13:12:52
>開発言語にVB.net(たまにC#)を使用している関係上、
>MicrosoftのAzureがいいかな、と思っています。
AWS、GCPでもVB/C#を動かせますよ。

アーキテクチャーを先に考えたほうが良いですね。
インターネット経由でなんでもできるアーキテクチャーが柔軟性・拡張性などに優れお勧めですが、要件によっては専用線(Express Routeなど)をひいて、専用線内でやりとりする場合もあります。

専用線をひくのは少しハードルがありますので、ひとまずお勧めであるインターネット経由で機能を提供する方向で書いてみます。

>クライアント側アプリからSQL Serverにクエリを投げるような使い方をしたい
これはお勧めできないです。
脆弱性の原因になりますし、セキュリティ機能(WAFなど)でこのようなリクエストが拒否される可能性すらあります。
クライアントとクラウド間の通信は WebAPI にするのが良く、そのWebAPIの機能もSQLを引数として結果を返すというようなものではなく、商品を取得する、商品を登録するなどの扱っているモノ(リソース)単位で考えるのが一般的です。

SQL Serverを使うのもお勧めではなく、もっと安いMySQLも使えますし、RDBではない、Cosmod DBやTableストレージもあります。これらは機能が劣っているわけではなく、考え方が違うものです。クラウド自体の考え方によりマッチするようになっています。

Azureについては公式の学習教材がここにそろっていますので、ご覧になってみてはいかがでしょうか。
https://docs.microsoft.com/ja-jp/learn/browse/?products=azure&resource_type=learning%20path
投稿者 るきお  (社会人) 投稿日時 2021/2/5 13:15:07
訂正

Cosmod DB → Cosmos DB
投稿者 (削除されました)  () 投稿日時 2021/2/5 14:19:20
(削除されました)
投稿者 Tomomi  (社会人) 投稿日時 2021/2/5 14:22:05
るきお様、アドバイスありがとうございます。
ご教示頂いたサイトで勉強します。
やりたいことはインターネット経由前提で考えています。
また、クライアントから直接SQLということは止めて、
WebAPIという考えで行こうと思います。

ところで、SQL Serverはあまりお勧めではない、とのことですが、
RDBで言うと何がお勧めでしょうか?

 現在AccessのMDBで行っているのは、
 例えば、各商品に関するレビュー文章や独自の記事をDBに登録し、
これをキーワード検索する、というものです。
 今後、データ量の増加に耐えられるよう、今回クラウド化を検討していますが、
テキスト検索の速度も向上させたいです。
どうしても、キーワード検索となると、いわゆる中間一致の検索が多くなるのですが、
 従来のSQLの中間LIKE検索より高速な検索ができるものがあれば、願ったり、です。 
投稿者 るきお  (社会人) 投稿日時 2021/2/5 20:18:23
>RDBで言うと何がお勧めでしょうか?
RDBで私がお勧めするのは MySQL, PostgreSQL, MariaDB, SQL Server の順です。
SQL Server には Azure SQLを含みます。

お勧めする理由は、フルマネージドの度合いとコストです。
他の要件を含めるとにお勧めは変わります。

RDB自体をお勧めしない場合もあります。

>テキスト検索の速度も向上させたいです。
現行がAccessであることを考えるとデータベース自体は何を選択してもAccessよりは高速かもしれません。
ネットワークによる遅延のほうが大きくなる場合もあります。
データ量や処理内容にもよります。

速度が気になるならGCPのBigQueryはRDBではありませんが、速度では定評があります。値段もそんなに高くないような…。
https://cloud.google.com/bigquery/pricing?hl=ja

Tomomiさんは現状ほぼビギナー状態ということなので、とっつきやすいところからお試しで作ってみるアプローチが良いのではないでしょうか。
そういう意味では上記で紹介したAzureの教材は扱いやすいと思います。
投稿者 Tomomi  (社会人) 投稿日時 2021/2/10 12:03:48
るきお様、アドバイスありがとうございました。 
まずは、るきお様ご提示のサイトでAzureを勉強し、
ついでに他のクラウドサービスも勉強してみようと思います。
また、DBについても、必要なのはテキスト検索の高速化なので、
RDBにこだわらず、より良いコスパのものを探そうと思います。

とりあえず、この質問はクローズさせて頂きますが、
何かあればまた相談させてください。