Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
cocone TECH TALK Vol.6 - Kotlin バックエンドアーキテクチャ o...
Search
cocone
May 08, 2023
Technology
660
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
cocone TECH TALK Vol.6 - Kotlin バックエンドアーキテクチャ of アバターサービス
cocone
May 08, 2023
More Decks by cocone
See All by cocone
Cocone_Research_Center_2025.pdf
cocone
0
360
20240301_cocone_EMゆるミートアップvol6_LT資料
cocone
0
950
2024_cocone-wellbeing
cocone
0
5.2k
2023夏季合同企業説明会ココネ
cocone
0
410
cocone TECH TALK Vol.6 - リアルタイム対戦xバックエンドアーキテクチャ
cocone
0
730
cocone TECH TALK Vol.6 - ココネグループのブロックチェーン MOOI Network とのバックエンド連携
cocone
0
660
cocone corporation(JPN)/Handbook2022
cocone
1
31k
cocone Tech Talk vol.5 - Unity Dotsを使ってみた
cocone
0
2.6k
cocone corporation(JPN)/Letter to Planner
cocone
0
600
Other Decks in Technology
See All in Technology
紙 to デジタル
ichien178
0
480
指示待ちから変化に応じるClaude Codeへ!~環境からAgentへの帰り道を作る~
gotalab555
9
1.7k
AI駆動開発を組織で促すために
lycorptech_jp
PRO
7
9k
人気商品が「ちゃんと買える」をつくる ー ECの負荷改善
ykagano
1
130
MCPを待つな、パスキーを拡げよう(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
400
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.5k
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
4
1k
Does an AI Watermark Survive Translation?
machinetranslation
0
510
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
550
エージェント化するAI:現在地とその先に起きる変化 / AI as Agents: The Current State and the Changes Ahead
ks91
PRO
0
180
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
400
AI駆動開発はどこまで来たのか? ファインディの最新実態調査で読み解く現在地 Devin Con Tokyo
akiratom
4
2.2k
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
550
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
310
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
520
GraphQLとの向き合い方2022年版
quramy
50
15k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The agentic SEO stack - context over prompts
schlessera
0
880
A designer walks into a library…
pauljervisheath
211
24k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The Pragmatic Product Professional
lauravandoore
37
7.4k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
Claude Code のすすめ
schroneko
67
230k
Transcript
Kotlin バックエンドアーキテク チャ of アバターサービス 2023/04 大友 秀輔
自己紹介 • 大友秀輔 (@slumbers99) • 2013年9月ココネ入社(子会社含 ◦ メッセンジャー ▪ Connect
▪ TonTon ▪ Potto ◦ アバター ▪ ポケコロ • ココネッツ ▪ ClawKiss ◦ 音声ライブ配信 ▪ 私を布教して
自己紹介 • 大友秀輔 • @slumbers99 • 2013年9月ココネ入社 ◦ メッセンジャー ▪
Connect ▪ TonTon ▪ Potto ◦ アバター ▪ ポケコロ • ココネッツ ▪ ClawKiss ◦ 音声ライブ配信 ▪ 私を布教して
今日話すこと • ClawKissとは • ClawKissでのバックエンドアーキテクチャ ◦ 使ったクラウドサービス ◦ 技術構成 ◦
苦労したところ • まとめ • 質疑応答
今日話さないこと • ChatGPT
ClawKissとは
ClawKiss とは • 2022年12月20日リリース • 可愛く遊んで、稼げる。Dress & Earn を謳ったココネがグローバル に挑戦するためのweb3サービス
• ブロックチェーンネットワーク 「MOOI」を利用 ◦ MOOIはココネグループが運用 • ココネが得意なCCPジャンルをブ ロックチェーンに載せたらどうなるか の意欲作
None
バックエンドアーキテクチャ
言語とフレームワーク • Kotlin 1.6.x ◦ JDK: Amazon Corretto 17 •
SpringBoot 2.6.x ◦ grpc-spring-boot-starter 4.7.x • gRPC ◦ protoc ver.3 • Gradle 7.4.x
DB系 - MongoDB Atlas (on aws) - ユーザーデータ - マスターデータ
- ElastiCache - リモートキャッシュ - OpenSearch - 全文検索
認証とモバイルPUSH • Firebase Authentication ◦ メール / パスワード ◦ Twitter
◦ Facebook ◦ Apple ◦ Google • Firebase Cloud Messaging ◦ 友達申請 ◦ 行動可能時間 ◦ お知らせ ◦ etc …
その他 • aws ◦ EC2 (ALB, EC2, AutoScaling Group …)
◦ S3 ◦ CodeDeploy ◦ Lambda (Python 3.8) ◦ API Gateway ◦ CloudFront ◦ Systems Manager (パラ メータストア) • Simple Notification Service • Jenkins • DataDog • Gitlab
None
環境 • Alpha, Staging, Beta, Production 環境を用意 ◦ Application Server
以外は2分割 ◦ Alpha: 開発用、Staging: QA環境、Beta: リリース前確認 ◦ 開発用クライアントからはそれぞれ接続できるようにしてる ◦ S3などもそれぞれ別に用意 • 各種DB接続先などパラメータストアで保持 ◦ AutoScaling時に環境変数へコピー
デプロイ Merge RequestでKotestとDetektのチェックが 通ったものをリリースブランチにマージ kotlin proto gradle build pull
デプロイ • リリースブランチに対してMR ◦ Jenkinsに投げてKotestとDetekt実行 ▪ Jenkinsプラグイン ▪ PUSHとMR作成時に実行 ◦
結果をGitlabのMRのステータス更新 ▪ Pipelines must succeed の設定にしている • Jenkinsでデプロイジョブを実行 ◦ リリースブランチをPULLしてビルド ◦ CodeDeployを実行
苦労したところ
苦労したところ • gRPC を使っての環境構築が初めてだった ◦ ALBのヘルスチェックが通らない問題 ◦ ローカルでのgRPC接続はできる ◦ デプロイしてみてもヘルスチェックのログすら記録されない
◦ ヘルスチェックは虚無にいったのか?? ◦ tcpdumpとってみた -> 解決の糸口
苦労したところ • HTTP2を許可するだけだった・・・ ◦ 会社テックブログに載せました「Spring BootとgRPCをApplication Load Balancer(ALB)で動かそうとしてハマったこと」 ◦ https://engineering.cocone.io/2022/06/10/run_springboot_
and_grpc_with_alb/
苦労したところ • protoファイルどこに置こうか問題 ◦ protoは別リポジトリで管理 ◦ submoduleにして参照していた ◦ なんとなくうまく行っているがこれでいいかわからん •
基本的にprotoリポジトリはブランチ一本化 ◦ developブランチ(なんでもいいけど)に落ち着いた • 構造体からパラメータ消すとそもそもビルドできなくなる ◦ 消すときのルールは必要かも
苦労したこと その他特に困ったこともなく、比較的安定して運用できております。 バグは・・・・すいません。
まとめ • ClawKissはAWSふんだんにつかわれている • Kotlin on SpringBoot はいい選択肢だと思っている • アバターサービスと銘打って入るがバックエンドとしては特に尖ったことは
していない • 当たり前のWEBサービスの技術が当たり前に構築されている • ちょっと罠があったりもするが概ね安定運営
ご清聴ありがとうございました このあとの懇親会もよろしくお ねがいします