Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
スタディサプリ/Quipper オンラインミートアップ #1(Webエンジニア) / 新規サー...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yoshihide TANIGUCHI
July 14, 2021
Programming
3.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スタディサプリ/Quipper オンラインミートアップ #1(Webエンジニア) / 新規サービス開発チームの紹介 / Studysapuri online meetup #1
Yoshihide TANIGUCHI
July 14, 2021
More Decks by Yoshihide TANIGUCHI
See All by Yoshihide TANIGUCHI
Raspberry Pi と Netatmo と少しの ruby で作る二酸化炭素濃度モニター君
ravelll
0
110
Ruby の静的型チェックの話
ravelll
0
99
Quipperian and VimConf2019
ravelll
1
5.8k
さくらのフロントエンド さくらの Vue.js // vue.js in SAKURA
ravelll
3
4.5k
PHP7.2で始める型宣言 // Type declaration with PHP 7.2
ravelll
0
300
ISUCONのすゝめ // Shall we ISUCON ?
ravelll
0
130
オブジェクト指向設計とデザインパターンの基礎 / Basics of object oriented design and design pattern
ravelll
0
760
1人から始める大規模Webアプリケーションの言語バージョンアップ / Upgrade PHP in a large application
ravelll
0
160
PHP 5.4 ~ 5.6 での追加機能のおさらいとバージョンアップへの誘い / Re-introduce PHP5.4~5.6 and invitation for upgrading
ravelll
0
120
Other Decks in Programming
See All in Programming
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
2
1.7k
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
690
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
240
スマート反転とウェブアクセシビリティ
camiha
0
210
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
420
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
400
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
320
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
110
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing Experiences People Love
moore
143
24k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
580
Making the Leap to Tech Lead
cromwellryan
135
10k
Leo the Paperboy
mayatellez
10
2.3k
Automating Front-end Workflow
addyosmani
1369
210k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Six Lessons from altMBA
skipperchong
29
4.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Product Roadmaps are Hard
iamctodd
55
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
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」で検索!!!