Slide 1

Slide 1 text

User Happyをより早く、より大切にするための デプロイ・モニタリング改善の取り組み ROSCAFE 2社に聞く!DevOpsの最新事例 村田主磨、GrowthTeam

Slide 2

Slide 2 text

● SocialDogの事業紹介 ● デプロイ手法の改善 ○ 従来の構成 ○ 対応したアプローチ ● モニタリング環境の改善 ○ 従来の構成 ○ 対応したアプローチ ● これからの展望 2 アジェンダ ROSCAFE 2社に聞く!DevOpsの最新事例

Slide 3

Slide 3 text

SocialDogとは
 投稿管理
 分析
 ソーシャル
 リスニング
 3
 SNSマーケティングのための
 オールインワンツール
 フォロワー
 管理
 キャンペーン 
 一元管理


Slide 4

Slide 4 text

SocialDog Values 4
 会社として
 大切にしたい
 3つの価値観
 User Happy 常にユーザーのHappyを目指そう
 Love Technology 技術を愛そう
 Open Communication オープンにしよう


Slide 5

Slide 5 text

5
 Devチームの技術的な取り組み
 コンテナ環境 への移⾏ メンテナンスコストを削減し、より安定してサービスを 提供するため、インフラを GCPのサーバーレスのコン テナ実行環境 Cloud Runに移行しています。 
 Datadogの導⼊ アプリケーション・インフラの監視を効率化するために 監視アプリケーションの Datadogを導入しました。アプ リケーションモニタリング( APM)などの機能を利用し て、品質改善を行なっています。 
 CIによる積極的な ⾃動化 生産性向上・品質向上のため、積極的に CIによる自動 化を行なっています。 PullRequestの出ているブランチ にpushすると、各種テストが実行されたり、簡単に結 果が確認できるよう、 StorybookやCypressによるテス トの結果(ビジュアルリグレッションテスト)がホスティン グされる仕組みにしています。 
 PHPからGoへの リプレイス 数年間かけてバックエンドの開発環境を 
 PHP+CodeIgniterからGoにリプレイスしていきます。新 機能はすべて Goにより開発しています。 
 少しずつPHPからGoにリプレイスしています。 
 Cypress+reg-suitによるビジュアルリグレッションテスト 


Slide 6

Slide 6 text

6
 スキルアップ支援
 Cool SaaS⼿当 CoolなSaaSを作るための手当として、月額 1万円を支 給します。使途は自由です。例えば CoolなSaaSへの 課金、リモートワーク環境整備に利用できます。 
 個人のスキルアップが会社の成長に直結するため、学びを手厚く支援しています。
 Level UP サポート (経費での書籍等購⼊) 書籍(電子書籍も OK)や動画コンテンツなどを事前承認 不要で自由に購入できます。直接会社経費として購入 できるクレジットカードを配布しているため、 
 経費立替でスピーディに購入できます。 
 副業OK 副業によるスキルアップ、働き方改革を推進していくた め、「本業に影響させない」「競合他社の仕事ではな い」といった一定の要件を満たせば自由に 
 副業できます(申請制)。 
 社内勉強会‧ LT会 就業時間中の社内勉強会・ LT会の開催を推奨してい ます。少しずつ本を読む輪読会、 TypeScriptで適切な 型をつけるType-TypeChallengers!!、Figma勉強会、 各自が自由に発表する LT会など様々な勉強会が開催 されています。 


Slide 7

Slide 7 text

7 デプロイ手法の改善 User Happyをより早く、より大切にするための デプロイ・モニタリング改善の取り組み

Slide 8

Slide 8 text

● CloudRun環境 ● ソースコードでのビルドを使用 ● デプロイ時に以下全てが行われる ○ コンテナイメージのビルド ○ Artifact Registryへのイメージ永続化 ○ CloudRunへのデプロイ 従来の構成 デプロイ手法の改善 8

Slide 9

Slide 9 text

問題点 デプロイ手法の改善 9 User Happyをより多く届けるため、定期リリース、不定期 のリリースどちらも頻繁に行っている 1回あたりのデプロイ時間の長さが目立つようになった DBスキーマ更新後 コードの更新完了までの待ち 時間 main.goファイルが複数存在 するとエラーになる などの課題もあり

Slide 10

Slide 10 text

● ビルド ○ リリースブランチの更新で発火 ○ ArtifactRegistryへの永続化まで ● デプロイ ○ 作業者がコンテナイメージを指定してデ プロイ ○ イメージはArtifactRegistryから取得 対応したアプローチ : ビルドとデプロイの分離 デプロイ手法の改善 10 デプロイ時間が約5分→約20秒に!

Slide 11

Slide 11 text

● 事前にPHPで翻訳ファイルを生成する必要あり ○ マルチステージビルドで なるべく少ない手数 で 対応 ● バッチサーバとWebサーバ用のイメージが必要 ○ ビルドしたバイナリをマルチステージビルドで 複数のイメージにコピー するだけ ○ distrolessイメージを使用 ■ Googleが提供 ■ shellさえも含まれない最小限のイメー ジ tips デプロイ手法の改善 11

Slide 12

Slide 12 text

12 モニタリング環境の改善 User Happyをより早く、より大切にするための デプロイ・モニタリング改善の取り組み

Slide 13

Slide 13 text

● Datadogを使用 ● システムログは基本的に Datadog Logs に送られる ● リクエスト毎のトレースを Datadog APMで 閲覧できる ○ リクエスト本体 ○ クエリ詳細、実行時間 従来の構成 モニタリング環境の改善 13

Slide 14

Slide 14 text

14 問題点 SocialDogの新機能 toBでありtoCでもあるサービスのため、 問い合わせの種類が多様 ユーザー1人あたりの調査に時間がかかる 言語刷新のためPHPとGoの両方のサーバーが動 いている 言語ごとにログ内の ユーザーIDフィールドの構 造が異なる 言語によっては トレースの属性が未整備の状態

Slide 15

Slide 15 text

● 言語毎のログのユーザーIDフィールドを統一 ○ PHP、Go、JavaScript全て usr.id フィールドに出力されるように ○ 実装は変えない ○ DatadogのUI上で設定できる、 remapper機能で対応 対応したアプローチ : ログのUIDフィールド統一 モニタリング環境の改善 15 ユーザーの関連するログ全てを見たい時に 「@usr.id:xxx」で検索するだけで良くなった!

Slide 16

Slide 16 text

対応したアプローチ: トレースへのUID紐付け モニタリング環境の改善 16 ユーザー単位でリクエストの詳細情報を 追えるようになった! PHP Go APIのミドルウェアで全リクエストに一律で挿入

Slide 17

Slide 17 text

ビルドは自動化できた。 デプロイまで何らかのイベントをもとに自動で走らせ たり、さらに簡略化できれば、デプロイ作業の属人化 を防ぐことができる。 デプロイ: CDの自動化 モニタリング: ログとトレースの接続 今後の展望 SocialDogの新機能 17 ユーザー毎に何が起きているかはサッと調べられるよ うになった。 しかし、リクエストに紐づくイベントはまだ少し 追いにくさがある。 ログとトレースを接続できれば、リクエスト内のイベント をより把握しやすくなり、UserHappyを届けるスピード をさらに早くできる。

Slide 18

Slide 18 text

Copyright © SocialDog, Inc. All rights reserved.