STGYの技術情報

設計と実装と事業戦略

STGYの技術関連文書を公開します。

SNSの教科書的な実装を目指し、OSS製品として公開しています。ユーザビリティ、アクセシビリティ、スケーラビリティ、パフォーマンス、セキュリティの全てで高い水準を達成する方法について議論します。興味があればコードベースを御覧ください。

2025/01/01 24:01

STGYのアーキテクチャ

本記事では、STGYの実装について解説する。STGYは開発者の平林幹雄がTypeScriptNode.jsの勉強をするために作ったシステムであり、バックエンドもフロントエンドも教科書的な設計と実装を目指している。SNSのシステムではあるが、多くの案件でこの設計や実装を流用できることを期待している。

アーキテクチャ

STGYのアーキテクチャを以下の図に示す。ざっくり言うと、最下…

2025/01/01 24:01

STGYのインストール

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

Mac OS上での開発環境の構築

STGYの開発作業はDockerが動く環境であればどこでもできるが、ここではMac OSでの環境構築方…

2025/01/01 24:01

STGYのデータベース

本記事では、STGYのデータベースの設定とスキーマについて解説する。STGYのユーザや記事のデータはPostgreSQLで管理している。

概要と方針

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

2025/01/01 24:01

STGYの主要クエリ分析

本記事では、STGYの運用上でデータベースに発行されるクエリについて分析する。SQLの具体例を示し、その計算量を解析し、実際の実行計画を見て確認する。

最も単純な例

全ての投稿の中から最新20件を取り出す処理を考える。以下のクエリは実際には使われてないが、説明のための単純化したものを紹介する。デフォルトでは返信以外の投稿を一覧するため、reply_toがNULLであるという条件…

2025/01/01 24:01

STGYのメディアストレージ

本記事では、STGYにおいて画像などのメディアデータをどのように管理するかについて説明する。Amazon S3または互換システムであるMinIOのAPIを使って単純かつ堅牢なデータ管理をするにはどうするかについて述べる。

前提条件

画像などのメディアデータを扱う場合、データベースにバイナリを入れたり、ファイルシステムにファイルを置いたりする方法だと、運用が面倒くさい。可用性…

2025/01/01 24:01

STGYのその他の機能

今後書きます。