世界一適当な技術ブログ

日々学んだ内容をとにかくにブログ形式でアウトプットします。(技術系中心)基本自分用備忘録です

Cloud Run(サーバーサイドレンダリング)

Cloud Run

Clouf RunはGCPで提供されているDockerコンテナをデプロイできるコンピューティングサービスです。

Firebase Hostingは静的アセットの配信を基本機能としてますが、サーバーサイドロジックの実行環境として、Cloud FunctionsまたはCloud Runに接続できます。

2019年にCloud RunとFirebaseの連携が可能になりました。

Clooud Runについて説明します。

Cloud RunとHosting連携させるメリット

  • CloudRunはasianortheast1を利用できる
  • Dockerコンテナベースなので、ポータビリティ性が高い
  • ランタイム制約がないので、サーバーサイドレンダリングアプリケ- - ションと相性が良い
  • スケーリングし易い

Cloud RunとCloud Functionの違い

FirebaseHostingは静的なアセットの配信を基本機能としていますが、サーバーサイドロジックの実行環境として、CloudFunctionsまたはCloudRunに接続できます。

かつてはCloudFunctionsしか利用できませんでしたが、あるとき、それまでかなり不自由だったFirebaseでのサーバーサイドレンダリングが、一気に業務利用可能なレベルまで引き上げられました。(2019年の4月に、CloudRunとFirebaseの連携が発表されたことがきっかけ)

上記で挙げたようなメリットを考慮するとFirebaseを利用してサーバーサイドレンダリングする場合はCloudFunctionより、ClourRunを利用する方が現時点ではベター。

Cloud RunとHosting連携イメージ

Firebaseを利用したサーバーサイドレンダリングでは、CloudRunを用いてHTMLファイルとJavaScriptからなるアプリケーションを配信し、その他の静的なアセットはHostingから配信します。

参考

Cloud Run: コンテナを秒単位で本番環境にデプロイ  |  Google Cloud

Cloud Run を使用した動的コンテンツの配信とマイクロサービスのホスティング  |  Firebase

https://qiita.com/ryo2132/items/fe3e8e7dc410a316a0be

アクセス負荷分散「Cloud Load Balancing」

アクセス負荷分散「Cloud Load Balancing」

現在の案件ではコンテナ管理にk8s(GKE)を利用しています。

Google Kubernetes Engine(GKE)には、一般公開するアプリケーション用に次の 2 種類の Cloud Load Balancing(HTTP(S)負荷分散用のレイヤー7ロードバランサ(GlobalLoadBalancer)) のサポートが組み込まれています。

k8sについて ↓ lhiroki1205.hatenablog.com

HTTP(S) 負荷分散用 GKE Ingress

Google Kubernetes Engine(GKE)では、GKE Ingress と呼ばれる、組み込みのマネージド Ingress コントローラを使用できます。このコントローラは、GKE で HTTP(S) ワークロードを処理する Google Cloud ロードバランサとして Ingress リソースを実装します。

ingressオブジェクトはクラスタ内で実行されるアプリケーションに HTTP(S) トラフィックをルーティングするルールを定義します。

その時にGKE Ingress コントローラによって Cloud HTTP(S) ロードバランサが作成され、Ingress および関連する Service の情報に従ってそれが構成されます。

つまり、アクセス負荷やCPU負荷が高い時に自動でPodを増やしてオートスケールするといったことが可能になるのです。

GlobalLoadBalancer利用方法について

GlobalLoadBalancerはk8sを利用しない場合でも利用することは可能です。

下記参照図のようにGAEの負荷を算出して、負荷が少ない方に自動ルーティングすることが可能になります。 f:id:lhiroki1205:20210418125501p:plain

参考

吉積礼敏. GCPの教科書

https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

GCS(Cloud Storage)についてまとめ

GCS(Cloud Storage)についてまとめ

現在のジョインしている案件でリソース管理・管理にCloud Storageを利用しています。

GCS(Cloud Storage)の知見が少ないと感じたので、概要をまとめます。

GCS(Cloud Storage)とは

Cloud Storageとはオブジェクトストレージになります。

オブジェクトストレージとは、従来のようなファイル単位、ブロック単位ではなく「オブジェクト」という単位でデータを管理するストレージです。

個人的見解としては、画像保存やリソース保存にオブジェクトストレージを利用する企業が多いイメージです。

AWSのS3も有名なオブジェクトストレージになりますが、それのGCP版と考えても大枠間違ってないでしょう。

GCSの基本概念はAWSのS3とほぼ同じなので、下記の概念を参照にしてください。

lhiroki1205.hatenablog.com

GCS(Cloud Storage)用語解説

基本的にAWSのS3分かってればすぐに理解できると思います。

f:id:lhiroki1205:20210417195654p:plain 画像参考:GCPのストレージサービスについてまとめてみた

プロジェクト

GCSのデータはすべて、プロジェクトに属します。

パケット

バケットとは、データをGCSに格納するためのコンテナのことです。GCSに保存するデータは、すべてバケットに格納されます。

オブジェクト

バケットとは、データをGCSに格納するためのコンテナのことです。GCSに保存するデータは、すべてバケットに格納されます。

ストレージクラス

GCSのバケットは「MultiRegional」、「Regional」、「Nearline」、「Coldline」の4種類のストレージクラスが用意されております。

f:id:lhiroki1205:20210417195857p:plain

参考サイト

cloud.google.com

吉積礼敏. GCPの教科書

GCPのGKEについて

GCPのGKEについて

現在の案件では全環境(dev, staging, prod)のデプロイをGKEで行なっています。

ただGKEについての知識が乏しかったので、概要知識を記載する。

GKEとは

GKE(kubernetes engine)とはその名のとおりGoogleが開発したKubernetesというオープンソースのコンテナオーケストレーションツールのマネージドサービスです。

GKEイメージ図 f:id:lhiroki1205:20210413092735p:plain

1. ノードが複数集まったものをクラスタと呼ぶ
2. クラスタの中にサービスを定義する
3. サービスは複数のPod(Dockerコンテナ)によりサービス提供する
4. Podはクラスタ内でオートスケールが可能

lhiroki1205.hatenablog.com

GKEの特徴

GKEの特徴を記載します。

1. フルマネージド

クラスタをセットアップして、サービスアップしたらそのあとは全てGoogleでフルマネージドで運用されます。 インスタンスやネットワーク障害の場合でもインフラエンジニアが対処する必要は基本なく、安心してサービス提供することが可能です。

2. プライベートなContainer Registry

Contaner Registryを活用することで、プライベートなDockerイメージの保存とアクセスが容易に可能です。プライベートなので外部公開されるといった危険性もありません。

Contaner Registryとは?

A container registry is a repository, or collection of repositories, used to store container images for Kubernetes, DevOps, and container-based application development.

3. スケーラブル

GKEはPaaSでアプリケーションに対する要求に応じてサービスをスケールさせることが出来ます。

ロードバランサーも自動的に設定されるため、クラスのオートスケールと合わせることでアプリケーションを自動的にスケールすることも可能です。

4. Dockerのサポート

みんな大好きDockerフォーマットをサポートしている為、以降(利用開始や停止)が容易になります。

5. ロギング

チェックボックスをONにすると、Clod Looggingと連携が可能で、全てのログをCloud Loggingで管理できます。

料金体系について

KubernetesEngineは、1プロジェクトにつき5ノードまでは無料です(インスタンスの費用のみ)。6ノード以降でもクラスタ単位で0.15ドル/時間なので、月額にしても1,000円程度という金額です。

他のコンテナ管理サービスとの金額比較はこの動画見れば大枠理解できます。

www.youtube.com

参考

GCPの教科書

GCPのBigQueryについて

GCPのBigQueryについて

業務でGCPのBigQueryを利用する機会があったので、メモ残します。

BigQueryは、Google Cloud Platformで提供されるビッグデータ解析プラットフォームです。1PB(ペタバイト)あるいは10億行といった膨大なデータに対して、集計・分析処理を極めて高速に実行できます。処理はSQL風のクエリ言語で記述します。

BigQueryの特徴

めっちゃ早い

BigQueryの特徴はお驚くほど早くデータ取得できる点です。

例えば、100億レコードの場合、数十秒で解析結果を得ることが出来ます。

ちなみにこの高速処理を可能にしているのは、Googleの何千というサーバー群でクエリを並列処理している為です。

SQLの知識があれば誰でも利用できる。

ユーザーはSQLという使い慣れた言語によって、BigQuery上のビッグデータを解析することが可能になります。

管理不要なフルマネージドサービス

フルマネージドサービスなので、インフラ環境の運用、保守やデータベース管理の必要がありません。

基本概念

BigQueryを構成する抽象概念について説明します。

データセット

データセットは、テーブルの集合を所有するためのコンテナとなります。 RDBでいうところのテーブルスペースのような概念。

テーブル

テーブルは、構造化されたデータの集合です。 BigQueryはRDBと同様にスキーマを持ちます。

ビュー

ビューはSQLクエリによって定義することができる仮想テーブルです。

ジョブ

ジョブはクエリ実行、データ追加、テーブルのコピーなどの実行単位です。 ジョブは非同期で実行され、ユーザーは実行中のジョブステータスをポーリングによっていつでも確認できます。

図解

f:id:lhiroki1205:20210412160321p:plain

クエリ利用方法

qiita.com

参考

GCPの教科書

vue.jsグローバル登録とローカル登録の違いについて

vue.jsグローバル登録とローカル登録の違いについて

Vue.jsのコンポーネント設計にはグローバル登録とローカル登録の2種類があります。 その違いについてまとめます。

コンポーネントとは

1. ページを構成するUI部品
2. 再利用可能なVueインスタンス

コンポーネントを使う理由

1. 再利用ができる
2. メンテナンス性が高まる

一言で言うとコンポーネントとはHTMLとJavaScriptで作成された設計図のようなものになります。

グローバル登録

サンプルコード

Edit fiddle - JSFiddle - Code Playground

ローカル登録

特定のVueインスタンスは以下でしか利用しない、コンポーネントは特定のVueインスタンス配下でしか利用できないようにすることができる。

その時に利用するのがローカル登録。

(グローバル登録はどこからも参照できるというメリットの反面、影響範囲が大きすぎるので基本的にはローカル登録で影響範囲を局部的に収めることが推奨されています。)

サンプルコード Edit fiddle - JSFiddle - Code Playground