はじめに
こんにちは!福神漬けです。
こういう考えに触れた事が少ない人向けに、「データ永続化層」ということについて説明しつつ、
これによってプラスになる部分なんかも説明できたらと思ってます。
データ永続化層とは
特に初学者の人はシステムを作るときにデータを保存する場所を考えると、
MySQLなどのRDSやDynamoDBなどのNoSQLが浮かんでくると思います。
ここで考え方を少し変えてみると、「データを保存し、必要なときに取り出せる仕組み」であれば
それはすべて“データ永続化層”として扱うことができる、と言えます。
RDSやNoSQL以外に、例えば有名なところだと下記もそうです。
- ・Google Spread Sheets(GSS)+ Google Apps Script(GAS)
- ・Cloud Watch Logs + AWS Lambdaなど
- ・単純な txt / json ファイル + それを読み書きするシステム
これらは形態も性能もまったく違いますが、「永続化する」という一点においては同じ役割を果たします。
データ永続化層という考え方は、「保存手段を横並びに抽象化して整理してしまおう」というアーキテクチャ的な見方です。
それぞれのメリット・デメリットの理解が大事
もちろんどれを使っても同じというわけではありません。
データ永続化層として見れば同列に扱えますが、技術的特徴や制約は大きく異なります。
GSSは誰でも編集できる強みがありますが、大量データに弱い、同時書き込みに弱いなどあります。
txt / jsonは安価ではありますが、そもそも使うための付随のシステムがあることが前提になります。
なんだかんだ一番考慮することが少ないのはRDSな気がしてきますが、コストが相応にかかります。
適切に選べば、システムに大きな幅を持たせられる
データ永続化層を幅広い視点で捉えると、「高いRDSを使わずとも成立するシステム」や、
「非エンジニアも参加できる運用」など、選択肢が一気に広がります。
例えば、コアテックにはブログを書くための当番表がWEBシステムとしてありますが、
構成はGSS + GAS + Google Siteです。
利点はこんな感じです。
- ・Google Workspaceの契約内でコストがほぼ収まる
- ・当番表データをGSSで管理するのでエンジニア以外の人でも管理できる
- ・サーバレス運用ができる
- ・ついでにGoogleアカウントでの閲覧権限設定が楽にできる
- ・ついでにGASでチャットワーク通知もできる
終わりに
自分としてはデータベースの学習をしていくときに、ある程度RDSやNoSQLを縦に深ぼった後は、
こうやって横に広げて勉強できると、できることの幅が広がるんじゃないかと思います。
特にAIシステムを学習や開発に使うことができる今では、こういう概念的な理解がなおさら大事になってくると思います。
もちろん個々の理解も大事なのでバランスが必要なんですけどね。
お疲れ様でした!