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.5k
スタディサプリ/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
81
Ruby の静的型チェックの話
ravelll
0
85
Quipperian and VimConf2019
ravelll
1
5.7k
さくらのフロントエンド さくらの Vue.js // vue.js in SAKURA
ravelll
3
4.4k
PHP7.2で始める型宣言 // Type declaration with PHP 7.2
ravelll
0
280
ISUCONのすゝめ // Shall we ISUCON ?
ravelll
0
120
オブジェクト指向設計とデザインパターンの基礎 / Basics of object oriented design and design pattern
ravelll
0
730
1人から始める大規模Webアプリケーションの言語バージョンアップ / Upgrade PHP in a large application
ravelll
0
150
PHP 5.4 ~ 5.6 での追加機能のおさらいとバージョンアップへの誘い / Re-introduce PHP5.4~5.6 and invitation for upgrading
ravelll
0
96
Other Decks in Programming
See All in Programming
実践ArchUnit ~実例による検証パターンの紹介~
ogiwarat
2
270
データベースコネクションプール(DBCP)の変遷と理解
fujikawa8
1
260
從零到一:搭建你的第一個 Observability 平台
blueswen
1
940
Beyond Portability: Live Migration for Evolving WebAssembly Workloads
chikuwait
0
380
Elixir で IoT 開発、 Nerves なら簡単にできる!?
pojiro
1
140
Go Modules: From Basics to Beyond / Go Modulesの基本とその先へ
kuro_kurorrr
0
120
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
1
760
セキュリティマネジャー廃止とクラウドネイティブ型サンドボックス活用
kazumura
1
180
無関心の谷
kanayannet
0
170
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
17
4.7k
A comprehensive view of refactoring
marabesi
0
660
XSLTで作るBrainfuck処理系
makki_d
0
200
Featured
See All Featured
Building Applications with DynamoDB
mza
95
6.4k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Bash Introduction
62gerente
614
210k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Site-Speed That Sticks
csswizardry
10
640
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
RailsConf 2023
tenderlove
30
1.1k
Why Our Code Smells
bkeepers
PRO
337
57k
Being A Developer After 40
akosma
90
590k
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」で検索!!!