DynamoDBの多対多で隣接リストやった時の冗長性対策どうしよう

DynamoDBウキウキで初めて早速引っかかる問題の一つが多対多とn+1問題だと思うんだが、これについてはAWSのドキュメントに一応解決方法が乗っている。それについて書いた記事がこれ→「DynamoDBで多対多のテーブル設計 – 或る阿呆の記」。

隣接リストというデザインパターンで、初めて見た時はギョッとしたけど、実際やってみるとたしかに効率的にクエリが書ける。テーブルの構造についても、ああつまりRDBの中間テーブルに要素をもたせるとこうなるのか、ということで、個人的には納得もした。

ただこの方式は、冗長である。したがって、同一であるべきアイテムの情報に不整合が発生する可能性がある。それについて、どう対応したもんなんだろうか。

“DynamoDBの多対多で隣接リストやった時の冗長性対策どうしよう” の続きを読む

Google先生に見捨てられた個人ブログがこの先生きのこるには

今どきブログをやっている人もすっかり珍しくなってしまった。まぁそれはそうで、かつてと違って今からブログを始めるのは非常に厳しい。このブログを始めたのは2012年、別のブログは2016年に始めた。今にして思うと、個人がブログをしてそこそこの集客をできる最後の時期だったのかもしれない、と最近思う。

今は違う。個人ブログは、もはや検索で引っかからない。まったく引っかからないわけではないんだが、あらゆる企業やアフィリエイターの作った、しょうもないサイト(失礼!)に押しのけられている。

(もし今からブログを始めようという人がいるなら、技術系ならQiita、それ以外ならnoteに投稿するのが実質的。実は最近、僕もnoteを始めた。悪くないプラットフォームだと思う。この記事の趣旨ではないので、これ以上は言及しない)

時代は変わった。ブログ文化は検索エンジンと共に成長したが、今や検索エンジンは個人ブログを必要としてない。であれば、個人ブログも変わらないといけない。

“Google先生に見捨てられた個人ブログがこの先生きのこるには” の続きを読む

AWS Lambdaのロギングを考える

ロギングをどうするかで困っていた。AWS Lambdaでは、プリント出力したものがCloudWatchに保存されてとても便利なのだが、考えもなしにとりあえずポンポン入れていたところ、確かに情報はあるので追えないことはないんだが、地道に時間にあたりをつけて検索するなど、非常に泥臭い作業が要求され、なにかとつらかった。

APIのコール回数など集計したいという要件も出てきて、重い腰をあげてロギングについて頑張って考えました、という話。

“AWS Lambdaのロギングを考える” の続きを読む

AWS Lambdaをデプロイした時のダウンタイム

AWS Lambdaをデプロイした時、ダウンタイムは発生するのかについて。

直接答えとなる記述をドキュメントで見つけることができていないのだが、AWSフォーラムの開発者による回答を見るに、新旧両方のバージョンが動作する時間はあるものの、ダウンタイム自体は理屈のうえではなさそう。

“AWS Lambdaをデプロイした時のダウンタイム” の続きを読む

ブログ歴8年でいまさらクロス投稿を知る

知らなかった。このブログを始めたのが2012年の10月なので、実に8年以上ブログを続けているのだが、クロス投稿という概念を初めて知った。仮にも技術ネタ多めで、恐らく傍からは技術系のブログと目されているのではないかと思うのだが、そんなことも知らなかったのである。やはり僕は阿呆。

“ブログ歴8年でいまさらクロス投稿を知る” の続きを読む

nginx + certbot + Let’s Encrypt で TLSv1.0やTLSv1.1が無効化できない時

TLSv1.0やTLSv1.1は既知の脆弱性があるために、各種ブラウザでも対応が打ち切られています(参考「ついにTLS 1.0/1.1の無効化が決定!影響や確認・対応方法とは? | さくらのSSL」)。なので、もうサーバー側で対応する理由はないわけで、無効化する必要があるのですが、nginxの設定をなんぼいじっても無効化できないと思ったら、certbotでLet’s Encrypt使っている場合そっちの対応もあって半日ハマっていました。

“nginx + certbot + Let’s Encrypt で TLSv1.0やTLSv1.1が無効化できない時” の続きを読む

DynamoDB から DocumentClient で get() した StringSet型 の値を取り出す

AWS DynamoDBで使える型の一つに、StringSetがある。これは文字列の集合だ。JavaScriptでもES6以降にはSet型があるので、それと対応していればよいのだが、残念ながらしていない。

といっても、値を取り出すには、.values でアクセスすればよいだけ。というメモ。普段Python使っているのですぐに忘れる。

“DynamoDB から DocumentClient で get() した StringSet型 の値を取り出す” の続きを読む