はじめに
先週の二日間のIgnite、お疲れ様でした!
参加された方は、何か気になる製品や新しい発見などはあったでしょうか?
Igniteにおいては学ぶ分野ごとに「ラーニングパス」というものが設定されているのですが、私の場合は木曜日の5つあったセッションの枠のうち、先の二つは「クラウド ネイティブ アプリケーションの開発」に参加し、残りの3つは「Web アプリとデータの最新化」に参加してきました。
どちらも、モダンなWebアプリケーションを作るのにかかわりがあり、Webアプリケーションを作りたい!という私個人の興味とも合致していたためです。
その中で今回は、クラウド ネイティブ アプリケーションの開発のラーニングパスの2つ目の枠、「クラウド内のデータに関するオプション」についてレポートしていきたいと思います。
戦略と戦術
このセッションの内容を一言で纏めるとこの一言に尽きると思います。
セッション内では、クラウド内にデータを保存するにあたっては、まずは戦略を決めてから戦術を決めるようにしよう!という言葉でデータ保存の方法論について纏められていました。
そして、ここでいう「戦略」と「戦術」とは・・・
戦略
データ保存の方向性を考えるにあたっては、まず保存するデータの性質を見極めることが必要であるという話がありました。
要は保存するデータの形式の話で、例えばそれが画像ファイルのような非構造データなのか、あるいはRDBにあるようなリレーショナルで行、列の形で纏められるような構造化されたデータなのかということを見極めるということで、これによって後で説明する「戦術」を決めていくことになります。
またはあるいはJSONのような「ある程度構造化されているけれどもスキーマは完全には決まっていない、これからも変化しうるもの」を指して、「半構造データ」と呼んだりもしていました。
個人的にはドキュメント指向のデータを「半構造データ」と呼ぶのを聴くのは初めてだったので少し驚きました。
けれども実際にはたまに使われている言葉のようですね・・・
他にも、挿入されるデータの量が1件ずつなのか多数が同時にバルクでやってくるのか、読み出し時にはデータに素早くアクセスする必要があるかといった観点も戦略として捉えていました。
戦術
戦術とは、要はデータ保存のために実際に利用するサービスやツールのことです。
これを先ほど考えた戦略を基にして考えていくのが、クラウド内のデータの保存方法を決めるうえで有効である、というお話です。
例えば、画像などの非構造データはBLOBストレージに保存、JSONはCosmosDBへ、スキーマの決まっている構造データはSQL Databaseに保存しましょう、という話で、それは実際それぞれのサービスがそれらに適しているので当たり前だろうとも感じましたが、後から考えるとこれは要は使うサービスを先に決めてから何を保存するか決めるというようなバッドプラクティスを避けるための方法なのではないかとも感じました。
おわりに
戦略を決めてから戦術を決めるというのは、要は目的を決めてから使うツールを決めろというアーキテクチャを考える際のあるべき姿を分かりやすく説明する方法なのではないでしょうか。
そういった意味で、このセッションの内容は終わった後も何度か自分の中で思い出された、印象深いセッションでした。
一緒にIgniteに参加した他の方々も何かしら印象に残っているセッションがあると思います。
時々、そんなセッションのことを思い出してみて、今に生かせることがないか考えてみるのもいいのではないでしょうか。