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
スタディサプリ/Quipper オンラインミートアップ #1(Webエンジニア) / 新規サー...
Search
Yoshihide TANIGUCHI
July 14, 2021
Programming
0
2.3k
スタディサプリ/Quipper オンラインミートアップ #1(Webエンジニア) / 新規サービス開発チームの紹介 / Studysapuri online meetup #1
Yoshihide TANIGUCHI
July 14, 2021
Tweet
Share
More Decks by Yoshihide TANIGUCHI
See All by Yoshihide TANIGUCHI
Raspberry Pi と Netatmo と少しの ruby で作る二酸化炭素濃度モニター君
ravelll
0
76
Ruby の静的型チェックの話
ravelll
0
80
Quipperian and VimConf2019
ravelll
1
5.6k
さくらのフロントエンド さくらの Vue.js // vue.js in SAKURA
ravelll
3
4.3k
PHP7.2で始める型宣言 // Type declaration with PHP 7.2
ravelll
0
280
ISUCONのすゝめ // Shall we ISUCON ?
ravelll
0
110
オブジェクト指向設計とデザインパターンの基礎 / Basics of object oriented design and design pattern
ravelll
0
710
1人から始める大規模Webアプリケーションの言語バージョンアップ / Upgrade PHP in a large application
ravelll
0
130
PHP 5.4 ~ 5.6 での追加機能のおさらいとバージョンアップへの誘い / Re-introduce PHP5.4~5.6 and invitation for upgrading
ravelll
0
94
Other Decks in Programming
See All in Programming
自力でTTSモデルを作った話
zgock999
0
120
Expoによるアプリ開発の現在地とReact Server Componentsが切り開く未来
yukukotani
1
220
機能が複雑化しても 頼りになる FactoryBotの話
tamikof
1
240
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
230
楽しく向き合う例外対応
okutsu
0
730
⚪⚪の⚪⚪をSwiftUIで再現す る
u503
0
120
CloudNativePGを布教したい
nnaka2992
0
120
変化の激しい時代における、こだわりのないエンジニアの強さ
satoshi256kbyte
0
110
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
950
Datadog DBMでなにができる? JDDUG Meetup#7
nealle
0
160
もう僕は OpenAPI を書きたくない
sgash708
6
1.9k
1年目の私に伝えたい!テストコードを怖がらなくなるためのヒント/Tips for not being afraid of test code
push_gawa
1
650
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Designing for humans not robots
tammielis
250
25k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
For a Future-Friendly Web
brad_frost
176
9.6k
Unsuck your backbone
ammeep
669
57k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
260
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Transcript
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 新規サービス開発チームの紹介 TANIGUCHI Yoshihide @ravelll スタディサプリ/Quipper オンラインミートアップ
#1(Webエンジニア)
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Agenda | 01 02 03 新規サービス開発チームについて
開発しているサービスについて 見えている技術的な課題
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 < Hi 👋 • @ravelll (TANIGUCHI
Yoshihide) ◦ バックエンドエンジニア@GMOペパボ ◦ フロントエンドエンジニア@さくらインターネット ◦ Web Engineer@Quipper (2019-06~) • 現チームではバックエンド API の開発とサービスの稼働環境の整備を担当 ときどき Web フロントエンドの開発も
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 新規サービス開発チームについて 01
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 開発チーム ➔ Web 13 人, iOS
6 人, Android 4 人, QA 1 人, PdM 1 人 ◆ Web は 3 つのサブチームに分割 ➔ 2週間1スプリントのスクラム ◆ スクラムセレモニーは Web のサブチームごとと職能ごとに実施中 ◆ 職能横断チーム(feature チーム)の構成も検討中
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 開発の進め方 ➔ PdM が機能の叩き台をメンバーに展開 ➔ みんなで仕様を固めてドキュメント化・Issue
化 ➔ Sprint Backlog に追加、Sprint Planning でメンバーにアサイン ➔ 実装 ◆ 1 人をリードとしてアサイン、必要に応じてペアプロ・モブプロも ➔ 確認
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 利用ツール ➔ コミュニケーション: Slack, Google Meet,
SpetialChat ➔ プロジェクト管理: ZenHub ➔ ドキュメンテーション: GitHub Wiki, GitHub Issue, Google Docs, Google Slides, Miro ➔ デザイン共有: Figma ➔ 有用そうなツールを見つけたら気軽に試せる環境
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Web Engineer の担当範囲 ➔ 開発する機能の提案・設計 ➔
フロントエンド・バックエンドアプリケーションの設計・実装・運用保守 ➔ アプリケーションの稼働環境の整備 ◆ CI/CD の整備 ◆ アプリケーションの K8s 上への展開(K8s manifest の記述) ◆ Datadog 等を利用した稼働状況の監視や SLI / SLO の設定
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 開発しているサービスについて 02
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 ➔ 学習系のサービス ◆ 目下開発中のサービスなので詳細は🤐 ◆ ドメイン知識がある程度溜まっている状態から開発スタート
◆ ゼロからアプリケーションを書く 開発しているサービスについて
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 アーキテクチャ
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 これまでの意思決定から 3 つをピックアップ ➔ サービス間は基本的に GraphQL
で会話 ➔ 初手 Microservices ➔ バックエンドサービスに複数言語
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 基本的に GraphQL で会話 ➔ API 開発時のクライアント・サーバーの両開発者の協調を促進させたかった
◆ 既存プロジェクトの開発でクライアント(mobile app)側の開発が API の後追いで行われてしまう課題があった ➔ 既存の REST API で起きていた Over-fetching とそれを軽減するための 様々な構造を持つエンティティの量産(i.e. User, UserLite, UserWithABC, ...)を防ぎたかった ➔ 現チームでは主にクライアント側が GraphQL Schema を提案し、 サーバー側の開発者と議論して実装している
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 初手 Microservices ➔ 社内の古くから存在するあるサービスが大きな Monolith になっている
◆ 一部を Microservices に移行中 ➔ 今回作るサービスについては既にドメイン知識が多くあり、分けるべきと思し きドメイン境界が見えていた ◆ 安全に最初から Service を分割することでそれぞれの Service の 開発効率を高く保てそう ◆ 社内に Microservices 運用の知見を増やせそう
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 バックエンドサービスに複数言語 ➔ RoR と Node.js (TypeScript)
◆ Content は責務的に型によるサポートが欲しい → TS Usage は既存の資源・知見を活かして素早く開発したい → RoR ◆ Node.js は社内に運用の知見はほぼ無かったが、それを加味しても恩 恵が勝ると判断 ➔ 社の First language は Ruby だが、目的に応じて柔軟に言語を選んでいる チームが多い ◆ 社内に Go, Elixir のアプリケーションも
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 余談: より良い意思決定のための取り組み ➔ 毎週1時間、リードアーキテクト含む社内の開発者たちが技術トピックを持ち 寄り会話する場(random tech
talk)がある ◆ 開発者全員が参加必須の会ではなく、意思決定を行う上で必須のフ ローというわけでもない ◆ 技術的な意思決定について広く意見が欲しいときはここで会話をすると 大変便利
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 random tech talk の雰囲気
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 見えている技術的な課題 03
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 課題 ➔ Partial Outage への対応 ➔
GraphQL API の運用 ➔ 高頻度で安定したデリバリー
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Partial Outage への対応 ➔ バックエンドアプリケーション群の一部に問題が発生してもユーザーのサー ビス利用を止めないようにしたい
◆ 例:ユーザーの学習履歴の取得失敗が学習に影響を与えないようにす る ➔ 取り組みたいが現状は具体的な対応に着手できていない状況
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 GraphQL API の運用 ➔ GraphQL のクエリの種別(Operation)の粒度での
SLI / SLO の設定がで きていない ◆ サービスの中で特に体験を劣化させたくない機能を SLI に据えて、機能 が必要とするクエリについての SLO を監視したい ◆ Apollo の data platform サービスである Apollo Studio と Datadog の Apollo 連携を使って解決できるか検証中 ➔ キャッシュ活用、Directive の活用、セキュリティ、…
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 高頻度で安定したデリバリー ➔ スタディサプリの Production リリースは週に1回 ◆
手動 QA test(1 ~ 2日) → リリース ➔ 新規サービスは週1回よりも高頻度にリリースできるようにしたい ◆ QA test の自動化 ◆ Canary Release, Feature Flags など Production リリース時のリスク を削減
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Quipper では人々の学びを支える 仲間を絶賛募集中です!!!
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 「quipper web engineer」で検索!!!