【terraform】gcpでcicd環境を構築する方法
tech
背景
今後GCP環境を使用していく上で工数が拡大しないように、 早い段階でcicd環境を設定しており、 今回はGCP環境にて構築した際の方法を記載したい。
設計
AWSの設計とほぼ同様に以下の構成で作成を行った
内容 | GCPサービス | AWSの場合 |
---|---|---|
リポジトリ | Cloud Source Repositories | AWS CodeCommit |
cicd | Cloud Build | AWS CodeBuild + AWS CodePipeline |
環境構築 | terraform | terraform |
構成を考える上で気になった点は以下の内容である。
- AWSと比較してCloud Buildはトリガーが組みやすい(CodePipelineが不要)
- Cloud Buildは権限管理が楽だが、複数のcicdを組む際に権限を分けると行ったことは苦手そう
- terraformの代わりにDeployment Managerも検討したが、AWS等使用も考慮し共通でterraformを使用した
AWS CodeDeployもそうだがサービス固有のdeploymentよりかは、 第三者がラップしたterraformが使い勝手が良い印象。。。
実際のコード
準備
stateファイル格納バケット作成
$ gcloud auth login
$ gcloud config set project {{プロジェクト名}}
$ gsutil mb gs://{{バケット名}}
「Cloud Source Repositories」「Cloud Build」はUIぽちぽちでよしなに作成。 デプロイフロー次第だが今回はmasterへのpushで作成されるように設計。
フォルダ構成
$ tree .
.
├── README.md
├── ci
│ ├── terraform_apply.sh
│ └── terraform_plan.sh
├── cloudbuild.yaml
└── terraform
└── backend.tf
各種コード
#!/bin/bash
cd terraform
WORKSPACE=prd
terraform init -backend-config="prefix=${WORKSPACE}" -reconfigure
if [ ! $(terraform workspace list | grep ${WORKSPACE}) ]; then
terraform workspace new ${WORKSPACE}
fi
terraform workspace select ${WORKSPACE}
echo 'terraform apply'
terraform apply -auto-approve -parallelism=50
#!/bin/bash
cd terraform
WORKSPACE=prd
terraform init -backend-config="prefix=${WORKSPACE}" -reconfigure
if [ ! $(terraform workspace list | grep ${WORKSPACE}) ]; then
terraform workspace new ${WORKSPACE}
fi
terraform workspace select ${WORKSPACE}
echo 'terraform plan'
terraform plan -parallelism=50
substitutions:
_TERRAFORM_VERSION_: 0.12.10
steps:
- id: 'tf plan'
name: 'hashicorp/terraform:${_TERRAFORM_VERSION_}'
entrypoint: 'sh'
args: ['./ci/terraform_plan.sh']
- id: 'tf apply'
name: 'hashicorp/terraform:${_TERRAFORM_VERSION_}'
entrypoint: 'sh'
args: ['./ci/terraform_apply.sh']
terraform {
backend "gcs" {
bucket = "{{バケット名}}"
prefix = "terraform/state"
}
}
感想
実際に作ってみた感想としてはAWSよりもかなり簡単に作成ができたというのが大きかったです。 その一方権限管理はザルな感じが強く、 他のGCPサービス同様スタートアップ向けな感じが強かったです。 細かい要件には添えないがさっと便利なものができるよと行った感じ。
SinkCapitalではデータに関する支援を行っています
弊社はスペシャリスト人材が多く在籍するデータ組織です。 データ分析や分析基盤の設計などでお困りの方がいらっしゃれば、 まずは無料で、こちらから各分野のスペシャリストに直接相談出来ます。
Terraform Cloudを利用した、CI/CD戦略と最適なterraformディレクトリについて考えてみた。

tech
terraformリソースとクラウドへの適応は様々な手段がある。Actionsでクラウドにapplyされるなど、その中でも管理しやすいと考える、Terraform Cloudを利用したCI/CD及びterraformのディレクトリ設計及び、ブランチ戦略について紹介する。
TerraformとGitHub Actions(CI/CD)を用いたGitHub repositoryの管理

tech
今回は、TerraformのCI/CDをGitHub Actionsを利用して構築する方法についてご紹介します。Terraformを使ってGitHubのリポジトリを作成し、GitHub Actionsを使ってCI/CDを自動化する方法を実際の手順とともに解説します。この記事を読むことで、TerraformとGitHub Actionsを使った開発の流れを学習することができます.最終的には、以下の画像のように、GitHub上で管理されるリポジトリを作成することができます。
GitHub Actionsを用いてReactのサイトをGitHub Pagesに公開する方法

tech
今回はReactを使用したWebサイトの構築から、GitHub Actionsを利用した自動化ビルドやデプロイ、そしてGitHub Pagesでの公開方法まで、一連の流れを紹介します。この記事を読むことで、Reactを使用してWebサイトを作成する方法や、GitHub ActionsによるCI/CDの構築方法を学ぶことができます。最終的には、以下のようなWebサイトをGitHub Pages上で公開することができます。
【事例紹介】クックビズ株式会社様の分析環境の新規構築をお手伝いさせていただきました

tech case
フード関連業に特化した有料職業紹介事業などを提供するクックビズ株式会社様は、15周年を迎え、新コーポレートアイデンティティを制定など大きな変革を行っていました。本体機能とともに力をいれたのが分析環境の刷新であり、今後会社をデータから支える分析環境づくりの方法を模索されており、弊社ではデータ分析環境構築のお手伝いをさせていただきました。今回、弊社はこれらの課題に対してSinkCapitalのサポートを依頼してくださったデータチームの上岡さん・角田さん・宮川さんに導入結果や使用感について伺いました。
Pythonの因果分析ライブラリCausalNexの紹介

tech
ベイジアンネットワークは、ディープラーニング(深層学習)等とは違い変数間の因果関係を捉える事が出来るため、病気の原因分析、気象予測、マーケティングなどで活用されています。今回は、Pythonでのベイジアンネットワークを用いた因果分析について紹介します。
GCP上のWebログデータ処理パイプライン:生データ処理から機械学習まで

tech
不定期でGoogleCloudStorageにアップロードされているWebログデータに対し、毎日0時にComposer内ではDataprocがデータを前処理しBigqueryにアウトプットします。その後VertexAIにモデルのトレーニングを行い、処理完了後slackに結果を投げます。
世界各国で利用されるCRMツール、Hubspotを既存の自社サイトに対して導入してみました。

tech
世界各国で利用されるマーケティングプラットフォームツールであるHubspotを弊社の自社サイトに導入してみました。マーケティング、営業、カスタマーサービスなど様々なサービスがありますが、今回は主にサイト上でのリード獲得部分の導入について説明ささせていただければと思います。
海外で有名なデータ統合Saasプロダクトであるfivetranを利用してみました

tech
海外で有名なデータ統合Saasプロダクトであるfivetranを利用してデータ連携をしてみました。日本では類似のサービスとしてtroccoがありますが、troccoとの違いも整理していければと思っています。
【事例紹介】freee株式会社のデータ分析業務をお手伝いさせていただきました

tech case
人事労務・会計などを含むクラウドERPを提供するfreee株式会社(以下、freee)は、既存事業の伸びに加えて受発注やタスク管理など新規領域開拓も加わり成長を続けています。それに伴いデータ分析環境の保守管理や、データ利用者からの問い合わせ対応に取られる時間が増えてしまい、分析業務に当てる時間が圧迫されていました。今回、これらの課題に対してSinkCapitalのサポートを依頼してくださったAnalyticsチームの鎌田さん・福田さん・鈴木さんに導入結果や今後の見通しについて伺いました。
Pipedrive Web Formsでutmを取得する方法

tech
Pipedrive には、ウェブフォーム(Pipedrive Web Forms) という機能があります。今回はこの Pipedrive Web Forms の送信時に、utmを取得する方法についてまとめました。
データ周りで話題のdbt(data build tool)をBigQueryを使ってみました

tech
ETL・ELTのLoad部分を担うオープンソースサービスであるdbtを使ってみて、既存のサービスとの比較を行いました。既存のサービスにない多くの特徴を持っていますので、もし気になった方はぜひ見ていただければと思います。
【事例紹介】IVRy様の分析基盤データパイプラインの設計・開発をお手伝いさせていただきました

tech case
電話自動応答サービスを展開されているIVRy様に対し、弊社でデータパイプライン構築のお手伝いさせていただきました。その中で重視した考え方や設計思想、また構築後の使用感などを記事にまとめさせていただきましたので、データパイプラインをご検討中の方は是非ご参考にしていただけますと幸いです。
Snowflakeにterraformを導入する方法

tech
0からSnowflakeにterraformを導入した際の方法をご紹介します。Snowflake独自の注意点なども記載させていただきましたので、そちらもご参考いただけると幸いです。
BQにおけるSQL検算を効率化する無料chrome拡張機能をリリースいたしました

tech
BigQueryのjoin句を含むstandardSQLを入力することで、join前後でのレコード数の変化を返すSQLを自動でクリップボードにコピーする無料chrome拡張機能をリリースいたしました。
社内ドキュメントにNotionを導入して感じた事

tech
社内ドキュメントをNotionに寄せることで見えてきたメリット・デメリットをまとめていきたいと思います。また使う中で感じたいくつかの要望もまとめていこうと思います。
「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第3章 BIツールに関する知識をつける

techinternlearning
【「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第3章】現在長期インターンをさせてもらっているSinkCapitalさんの方で、データ系の業務に携わることになりそうなのですが、それの準備期間として紹介していただいた本をまとめていきたいと思います。
「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第2章 さまざまな分析をしてみよう

techinternlearning
【「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第2章】現在長期インターンをさせてもらっているSinkCapitalさんの方で、データ系の業務に携わることになりそうなのですが、それの準備期間として紹介していただいた本をまとめていきたいと思います。
「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第1章 分析ダッシュボードを作ってみよう

techinternlearning
【「BIツール」活用 超入門 Google Data Portalではじめるデータ集計・分析・可視化 第1章】現在長期インターンをさせてもらっているSinkCapitalさんの方で、データ系の業務に携わることになりそうなのですが、それの準備期間として紹介していただいた本をまとめていきたいと思います。
Ruby on Rails チュートリアル第14章をやってみて & まとめ

techinternlearning
【Ruby on rails 第14章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第13章をやってみて

techinternlearning
【Ruby on rails 第13章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第12章をやってみて

techinternlearning
【Ruby on rails 第12章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第11章をやってみて

techinternlearning
【Ruby on rails 第11章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第10章をやってみて

techinternlearning
【Ruby on rails 第10章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第9章をやってみて

techinternlearning
【Ruby on rails 第9章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第8章をやってみて

techinternlearning
【Ruby on rails 第8章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第7章をやってみて

techinternlearning
【Ruby on rails 第7章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第6章をやってみて

techinternlearning
【Ruby on rails 第6章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第5章をやってみて

techinternlearning
【Ruby on rails 第5章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第4章をやってみて

techinternlearning
【Ruby on rails 第4章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第3章をやってみて

techinternlearning
【Ruby on rails 第3章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第2章をやってみて

techinternlearning
【Ruby on rails 第2章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Ruby on Rails チュートリアル第1章をやってみて & 自己紹介

techinternlearning
【Ruby on rails 第1章】インターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。
Nuxt上でのd3を利用した散布図の作成方法

techdataAnalytics
クリック可能な散布図をNuxtjs上で作成する場合にd3.jsが汎用性が高く便利でした。利用するにあたって難しかった点などを備考録としてまとめています。
アクセスログを可視化しGAのデータを直感的に理解できる型態にする試み(ネットワーク型)

techdataAnalytics
ビジネスに活きる分析を進める上で弊社では「理解できる」ことを重要と考えており、特に直感的理解は可視化を進める上で特に重要だと考える内容の一つです。弊社では様々なお客様のデータ分析を進める上で常により示唆の大きい可視化を追求しており、今回はその中で最近試みているネットワーク側の可視化についてまとめたいと思います。
代表櫻井による特別講演会が白陵高等学校で開かれました

eventpersonal
2021年の夏に兵庫県の私立白陵高等学校において、代表櫻井による特別講演会を開催いたしました。今振り返って高校の頃の自分に伝えたいことについてお話しました。
Nuxtで動的ページを随時追加する場合にNot Foundとなる

tech
Nuxtで動的ページを登録する方法はありますが、登録後に随時コンテンツが追加される際はNot Foundとなってしまうので、そう言った際の対処方法について
GKEをやめてCloud Runを始めてみました

tech
firebaseで構築したシステムの裏で動かすバッチの負荷が大きく、cloud functionsで終わらなかったためCloud Runを利用してみました。動作確認までの知見等を雑多にまとめてみました。
AWSをやめてfirebaseを使い始めて感じたメリットやデメリットとそれの対応策(LT登壇内容)

techeventpersonal
みそかつウェブ・GDG Nagoya主催の「around firebase」とCloud Native Nagoya主演の「Cloud Native Nagoya」にてfirebaseのLTをさせていただきました。そこで会話させていただいたfirebaseを使い始めて感じたメリット・デメリットについてまとめています。
PWA+SPAのwebアプリ作成にnuxtjs+firebaseがめちゃ便利だった

tech
PWA+SPAのwebアプリを作る際にnuxt.js+firebaseを合わせて利用すると便利だったので知見を書き留めています
s3のhostingでPWAを導入する方法

tech
アプリ作成時にpwaが比較されることが多かったですが、実際にpwaを実装した経験がなかったため今回自社サイトをPWA化してみました。
dockerでseleniumを動かしてみる(chrome_headless)

tech
seleniumの相談をいただくことが増えたため、seleniumの勉強もかねてdockerでの実行テストを行いました
THE DECKのイベントにお邪魔させていただきました

eventpersonal
大学コンソーシアム大阪のイベント@The DECK にお邪魔してきました
flutter(dart)を触ってみた感想

tech
android向けアプリへの対応も考慮してflutter(dart)を触ってみたので、感想をまとめておこうと思います。理解が深まっていく中で定期的にまとめていければと思います。
代表本林による特別講演会が滝高校で開かれました

eventpersonal
2020年11月7日(土)愛知県の私立滝高校において、代表本林による特別講演会を開催いたしました。IT業界やデータサイエンスについてお話しました。
AWS・GCPを選ぶ際の観点

tech
AWSかGCPを選ぶ際の観点について書き留めておこうと思います
CloudFormationとterraformの比較

tech
AWS CloudFormationとterraformの両方を使ってみて感じた違いをまとめてみました。
iosのcallkit周りでできること

tech
新規事業を検討する上でios(swift)の電話周りでできることを調査したため、調査結果をブログとして残しています。
総務省特定サービス産業実態調査のデータ分析

techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「特定サービス産業実態調査」について見ていこうと思います。
「お絵かきつみ木バトル」をリリースしました

techapp
タスク管理を二次元的に行うアプリ「お絵かきつみ木バトル」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
総務省工業統計調査のデータ分析

techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「工業統計調査」について見ていこうと思います。
総務省サービス産業動向調査のデータ分析

techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。初回は「サービス産業動向調査」について見ていこうと思います。
タスク管理アプリ「タスククロス」をリリースしました

techapp
タスク管理を二次元的に行うアプリ「タスククロス」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
【合格体験記】GCP_Cloud_Archtectに受かりました

personalqualification
Google Professional Cloud Architectに合格したので、勉強法別のコスパをまとめてみました。
AWSでサブドメインなし(wwwなし)からサブドメインあり(wwwあり)へのリダイレクト設定

tech
もともと企業サイトがサブドメインありで公開していたが、サブドメインなしでもエラーなく接続できるように設計。terraformで作成しているので是非ご参考ください。
マークダウンで記事を書けるようにしてみた

tech
ホームページのブログをマークダウンを使用してかけるようにしました。gatsbyなどもありますが、今回はお手製cicd+pythonを使用してライトに作成しました。