1.APIファーストについて

本システムは、マイクロサービス1をAPIで提供することをコンセプトに構築されています。APIファースト2の視点を取り入れることができれば、APIのURLごとに技術を変えたり、設計の統一ができるようになります。これによってメンテナンス性を向上させたり、マイクロサービス的な視点によってサービスの肥大化を防げるようになります。

2.システム構成

本システムでは、APIを利用することで各種サービスを要求に応じて追加提供できます。このために、バックエンドが複雑になっていますが各種監視まで細かな管理ができ信頼性のおけるシステムです。また、高速な通信技術と最新のセキュリティ技術を導入していますので優れたUXを提供しています。

また、開発・テスト・デプロイまで一連の作業が一部自動化されるなど見通しがよく使いやすい設計となっていますので、メンテナンスや拡張性に優れています。

バックエンドのGo言語は、並行処理や並列処理が言語レベルで備わっており、このCPUで複数の仕事を同時に行う機能により、大量の同時接続に対応できかつコンパイル型なので高速に処理することができます。

3.技術スタック
  1. フロントエンド
  • 言語: Javascript
  • フレームワーク: Svelte/Sapper
  1. バックエンド
  • 言語: Go
  • プラットフォーム: Micro
  1. データベース
  • PostgreSql: リレーショナル データ ストレージ
  • ArangoDB: マスタデータ用のマルチモデル
  • Timescale: 高速時系列データベース
  • Redis: キャッシュ用[Key-value]データベース
  1. オーケストレーション
  • Docker
  • KubernetesはMinikubeで動作します。
  1. 通信
  • gRPC: サービス間の高速な通信技術
  • JSON: データ記述言語
  1. その他
  • NATS: Pub/sub
  • NGINX: K8sの進捗コントローラ
  • Vault: K8sのパスワード管理
  • Prometheus: モニタリングツール
  • Grafana: データ可視化ツール
4.マイクロサービス
  1. 電子掲示板
  2. SNS
  3. チャット
  4. SMS(プッシュ通知)
  5. アンケート(Google Formを使うが、連絡先のDB化)
  6. 広告掲載(SSHにて管理者が行う)
  7. API管理(アプリケーション管理)(システム管理者)
  8. メトリクス監視(1)(DB:PostgreSQL)(システム管理者)
  9. メトリクス監視(2)(DB:AngoraDB)(システム管理者)
以上

  1. マイクロサービス:マイクロサービスとは、複数の独立した小さなコンポーネントやサービスの組み合わせによりアプリケーションを開発する、クラウドネイティブなアプローチのアーキテクチャーです。。 ↩︎

  2. APIファースト:APIは、プログラム的な結び付きを使って他のコードにアクセスできるようにする仕組みです。これを利用するとソフトウェア開発に要する時間が根本的に短縮できます。また、ソフトウェア開発にAPIファーストのアプローチを取ればソフトウェア開発の作業を洗練できます。 ↩︎