Hero Image
APIファーストについて

1.APIファーストについて 本システムは、マイクロサービス1をAPIで提供することをコンセプトに構築されています。APIファースト2の視点を取り入れることができれば、APIのURLごとに技術を変えたり、設計の統一ができるようになります。これによってメンテナンス性を向上させたり、マイクロサービス的な視点によってサービスの肥大化を防げるようになります。 2.システム構成 本システムでは、APIを利用することで各種サービスを要求に応じて追加提供できます。このために、バックエンドが複雑になっていますが各種監視まで細かな管理ができ信頼性のおけるシステムです。また、高速な通信技術と最新のセキュリティ技術を導入していますので優れたUXを提供しています。 また、開発・テスト・デプロイまで一連の作業が一部自動化されるなど見通しがよく使いやすい設計となっていますので、メンテナンスや拡張性に優れています。 バックエンドのGo言語は、並行処理や並列処理が言語レベルで備わっており、このCPUで複数の仕事を同時に行う機能により、大量の同時接続に対応できかつコンパイル型なので高速に処理することができます。 3.技術スタック フロントエンド 言語: Javascript フレームワーク: Svelte/Sapper バックエンド 言語: Go プラットフォーム: Micro データベース PostgreSql: リレーショナル データ ストレージ ArangoDB: マスタデータ用のマルチモデル Timescale: 高速時系列データベース Redis: キャッシュ用[Key-value]データベース オーケストレーション Docker KubernetesはMinikubeで動作します。 通信 gRPC: サービス間の高速な通信技術 JSON: データ記述言語 その他 NATS: Pub/sub NGINX: K8sの進捗コントローラ Vault: K8sのパスワード管理 Prometheus: モニタリングツール Grafana: データ可視化ツール 4.マイクロサービス 電子掲示板 SNS チャット SMS(プッシュ通知) アンケート(Google Formを使うが、連絡先のDB化) 広告掲載(SSHにて管理者が行う) API管理(アプリケーション管理)(システム管理者) メトリクス監視(1)(DB:PostgreSQL)(システム管理者) メトリクス監視(2)(DB:AngoraDB)(システム管理者) 以上 マイクロサービス:マイクロサービスとは、複数の独立した小さなコンポーネントやサービスの組み合わせによりアプリケーションを開発する、クラウドネイティブなアプローチのアーキテクチャーです。。 ↩︎ APIファースト:APIは、プログラム的な結び付きを使って他のコードにアクセスできるようにする仕組みです。これを利用するとソフトウェア開発に要する時間が根本的に短縮できます。また、ソフトウェア開発にAPIファーストのアプローチを取ればソフトウェア開発の作業を洗練できます。 ↩︎

Hero Image
「MicroとgRPC」について

ローカルSNSで使っている【MicroとgRPC】 ローカルSNSで使っており、便利な技術です。 Go-Microは、基盤となるプラットフォームがそれらを記述するために必要なプリミティブを定義し、外部の手段からアクセスするために必要なプリミティブを定義する理由である、このサービス開発モデルを念頭に置いて構築されています。Micro には、高速での使用が非常に簡単になる Go サービス フレームワークが含まれています。 本システムを構成するために使われており、カスタマイズに必要なアプリケーションについて説明します。全体は、microサービスで構成されており、gRPCアプリケーションの各サービスと技術について説明します。 クラウドサービスの定義は、次のTwilioまたはStripeを構築するのに役立つものと考えています。クラウドサービスは、APIとして完全に消費されるように構築されたもののようにますます見ています。だから、マイクロは、そのモデルを念頭に置いて構築します。バックエンドにマイクロサービスを記述し、フロントエンドの単一の API としてそれらをつなぎ合わせます。 マイクロは、HTTP/JSON 要求を外部で処理し、バックエンド用に gRPC に変換する API ゲートウェイを提供します。これにより、バックエンドで効率的にパフォーマンスの高いサービスを構築し、相互に切り離されるが、消費者に単一のビューを提示するエクスペリエンスが大幅に簡素化されます。 Microは、マルチ環境モデルに存在するだけでなく、最初にリモートモデルに存在するという知識を持って構築されました。そのため、CLI とローカル サービスの gRPC ID プロキシを構築し、任意の Micro サーバーにリモートで安全に接続し、認証サービスに格納されている資格情報を使用してそれらのサービスとリソースにアクセスできるようにします。 サービスはクラウドの第 1 時代に合わせて構築されているだけでなく、サービスへのアクセスもそのようにしていると考えることができます。 M30 - M3OはMicroを搭載した次世代クラウドプラットフォームです。10 倍の開発者エクスペリエンスを実現するために、1 つのプラットフォーム上で、より簡単なプログラム可能なビルディング ブロックとして、無料で有料の公開 API を探索、発見、消費します。 プログラム可能な実世界マイクロサービスのレシピ - マイクロサービスは、あらゆる製品、アプリ、サービスの基本的な構成要素を提供します。これらは、単独で使用することも、組み合わせて強力な分散システムを作成することもできます。サービスは、RPC を使用して相互に使用され、Micro API を介して外部の世界から使用されることを意図しています。 参考資料 Go Micro - Go Microは分散システム開発のフレームワークです Micro Services - プログラム可能な実世界マイクロサービス Micro - マイクロは分散型クラウドオペレーティングシステムです。 Micro Document - マイクロへの高レベルの説明 M30 Micro Platform - Next Generation Cloud - 10 倍の開発者エクスペリエンスを実現するために、単純なプログラム可能なビルディング ブロックとしてパブリック API を 1 つのプラットフォームで探索、検出、使用します。 マイクロサービスフレームワークGo-Microを使う前にgRPCが必要になりますので、gRPCからGo-Microと進みます。