STGYのアーキテクチャ
本記事では、STGYの実装について解説する。STGYは開発者の平林幹雄がTypeScriptとNode.jsの勉強をするために作ったシステムであり、バックエンドもフロントエンドも教科書的な設計と実装を目指している。SNSのシステムではあるが、多くの案件でこの設計や実装を流用できることを期待している。
アーキテクチャ
STGYのアーキテクチャを以下の図に示す。ざっくり言うと、最下…
STGYの技術関連文書を公開します。
SNSの教科書的な実装を目指し、OSS製品として公開しています。ユーザビリティ、アクセシビリティ、スケーラビリティ、パフォーマンス、セキュリティの全てで高い水準を達成する方法について議論します。興味があればコードベースを御覧ください。
本記事では、STGYの実装について解説する。STGYは開発者の平林幹雄がTypeScriptとNode.jsの勉強をするために作ったシステムであり、バックエンドもフロントエンドも教科書的な設計と実装を目指している。SNSのシステムではあるが、多くの案件でこの設計や実装を流用できることを期待している。
STGYのアーキテクチャを以下の図に示す。ざっくり言うと、最下…

本記事では、STGYのシステム全体を、開発環境とデモ運用環境の双方にインストールする方法について説明する。Dockerを使った運用とネイティブサービスを使った運用の双方についても説明する。ドメイン名やIPアドレスは自分のものに読み替えられたい。
STGYの開発作業はDockerが動く環境であればどこでもできるが、ここではMac OSでの環境構築方…

本記事では、STGYのデータベースの設定とスキーマについて解説する。STGYのユーザや記事のデータはPostgreSQLで管理している。
データベースのスキーマのER図を以下に示す。主なテーブルは三つで、ユーザを管理するusersテーブルと、各ユーザが投稿した記事を管理するpostsテーブルと、通知を管理するnotificationsテーブルである。その他のテーブルは…

本記事では、STGYの運用上でデータベースに発行されるクエリについて分析する。SQLの具体例を示し、その計算量を解析し、実際の実行計画を見て確認する。
全ての投稿の中から最新20件を取り出す処理を考える。以下のクエリは実際には使われてないが、説明のための単純化したものを紹介する。デフォルトでは返信以外の投稿を一覧するため、reply_toがNULLであるという条件…

本記事では、STGYにおいて画像などのメディアデータをどのように管理するかについて説明する。Amazon S3または互換システムであるMinIOのAPIを使って単純かつ堅牢なデータ管理をするにはどうするかについて述べる。
画像などのメディアデータを扱う場合、データベースにバイナリを入れたり、ファイルシステムにファイルを置いたりする方法だと、運用が面倒くさい。可用性…
今後書きます。