[1] PostgRESTとは?
何者?
githubのreadmeにある、以下のバナーを見れば、意味あいは一発だろう。
ゴロがいいね。実装はhaskell、githubスター数は9500以上。
出典: https://github.com/begriffs/postgrest
PostgRESTの使い所
ドキュメントを読んでいくと使い所が見えてきそう。
以下の出典: https://postgrest.com/en/v4.3/intro.html
開発動機
Using PostgREST is an alternative to manual CRUD programming. Custom API servers suffer problems. Writing business logic often duplicates, ignores or hobbles database structure. Object-relational mapping is a leaky abstraction leading to slow imperative code. The PostgREST philosophy establishes a single declarative source of truth: the data itself.
文中のhobbleとは ぶかっこうに歩くとかよちよち歩くといった意味合いらしい。(ごく少数の強者を除けば)、webへのデータベース公開をスクラッチからやると、なんだかさえないやっつけ仕事になっちゃうよね、そういうやっつけ感をPostgRESTは排除したいといったところかな。
はい、たしかに、ワタクシも残念なやっつけ仕事をしちゃってます。
One Thing Well(一事をしっかりと行う)
PostgREST has a focused scope. It works well with other tools like Nginx. This forces you to cleanly separate the data-centric CRUD operations from other concerns. Use a collection of sharp tools rather than building a big ball of mud.
なかなかいいね。Nginxなどと組み合わせて使うシャープなツールにPostgRESTはなりますよ、と(以下のような図式)。
Nginxなどのwebサーバーを介してアクセスするクライアント側は自前でRESTで書くか、ライブラリを使うことになる。詳しくはエコシステムのところに書いてある。JS向けのライブラリが多い。あとhaskell製なこともあってかelmのライブラリもある。これらは実装例もいくつかある模様。
In production
In productionのところが興味深く、有償のツールでも結構採用されていて、使い方をイメージする参考になりそう。PostgRESTなのにredisのweb管理ツールにも使われているとのこと。ポスグレをユーザー認証などに使っているのかな。
[2] JSON Web Token(JWT)によるセキュリティ担保
PostgRESTは 、JWTを用いたロールベースのセキュリティモデルを採用している。
出典 本家サイト 「Overview of Role System」
このあたりは、webにデータベースを公開するにあたって、もっとも気になるところの1つだ。
はたして、以下の図式がいつでも成り立ってくれるのか?
出典 同上
JSON Web Token(JWT)とは?
名前の通り、署名付きJSONをベースとしたセキュリティトークン。概要は、
JSON Web Token の効用あたりを参考にして欲しい。ここでは、PostgREST経由でJSON Web Tokenを用いて、webにデータベースを公開してみた上で、JWTの考察をしたい。
次回
デプロイ先
素に近いUbuntu server上で速攻PostgreSQLが扱えるということで、Cluod9無償版上にPostgRESTを導入したい。主要プラットホーム向けのバイナリリリースがあるので、haskellの有無に関わらず、容易に導入可能なはず。
その後は
こちらのブログに教えていただいたのだけれど、Rails製のオープンソースクラウドファンディングツールcatarseがPostgRESTを使っているので、こちらを試してみたい。ただし、Cluod9の無償版では容量的に厳しいかもなので、そのときに考えることとする。