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
pixivとThrift
Search
Atsushi Takayama
December 09, 2015
Technology
1
200
pixivとThrift
Atsushi Takayama
December 09, 2015
Tweet
Share
More Decks by Atsushi Takayama
See All by Atsushi Takayama
最高の開発者体験の追求が開発生産性を改善し続ける文化を生み出した話
edvakf
3
980
NeurIPS 2021 論文読み会: How Modular should Neural Module Networks Be for Systematic Generalization?
edvakf
0
110
8年物のJavaのシステムをKotlinに変えていく選択に至るまで
edvakf
2
970
ピクシブ社内のImageFlux利用事例紹介
edvakf
1
2.6k
学びの文化を育む社内読書会のススメ
edvakf
0
190
フルCDNアーキテクチャでサービス設計した話
edvakf
5
3.6k
Goでバイナリを読む+α
edvakf
1
850
お前はこれまでに作ったAPIの数を覚えているのか?
edvakf
0
2.4k
「ふつうのRailsアプリケーション」についての考え方
edvakf
2
710
Other Decks in Technology
See All in Technology
SORACOMで実現するIoTのマルチクラウド対応 - IoTでのクリーンアーキテクチャの実現 -
kenichirokimura
0
280
分野に潜むツールの紹介
pojiro
1
340
エンジニア視点で見る、 組織で運用されるデザインシステムにするには
shunya078
1
270
20分で分かるIAM全機能 (拡大版) / 20240903-jawsug-yokohama-iam
opelab
3
130
React Aria で実現する次世代のアクセシビリティ
ryo_manba
4
860
中規模・ミドルTier開発組織におけるDevRelの戦略と実行と成果 - DevRel Guild Conference Mini -
leveragestech
2
280
AWSを始めた頃に陥りがちなポイントをまとめてみた
oshanqq
1
3k
ログラスが面白いと思う理由をマネージャーがエモく語ってみる / 20240829 vs LT
yoshikiiida
1
530
[RSJ24] Object Segmentation from Open-Vocabulary Manipulation Instructions Based on Optimal Transport Polygon Matching with Foundation Models
keio_smilab
PRO
0
130
Dive Deep in Cloud Run: Automatic Base Image update
aoto
PRO
0
900
「名前解決」から振り返るAmazon VPC
yuki_ink
0
320
App Router を実プロダクトで採用して見えてきた勘所をちょっとだけ紹介
marokanatani
0
640
Featured
See All Featured
The Cult of Friendly URLs
andyhume
76
5.9k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.8k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
28
2.2k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
Designing for humans not robots
tammielis
248
25k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
27
7.4k
A Philosophy of Restraint
colly
202
16k
Thoughts on Productivity
jonyablonski
66
4.2k
How to Think Like a Performance Engineer
csswizardry
15
920
A designer walks into a library…
pauljervisheath
201
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
47
2.8k
Transcript
pixivͱThrift
ࣗݾհ • ߴࢁ Թ @edvakf • pixivͷອըࣄۀͷ։ൃऀ • ීஈॻ͍ͯΔͷScalaPHPɺͨ·ʹJSRubyGo •
ϦʔυΤϯδχΞ • ձࣾͷٕज़બʹΛ࣋ͭ • ʮࣾͷΤϯδχΞ͕ͤʹಇͨ͘ΊʹʯΛߟ࣮͑ݱ͢Δۀ
Thrift
Thriftͱ • RPCͷͨΊͷϑϨʔϜϫʔΫ • ಠࣗͷΠϯλʔϑΣΠεఆٛݴޠͰσʔλߏͱαʔϏεΠϯλʔϑΣ ΠεΛهड़ • ͦΕΛίϯύΠϧ֤ͯ͠ݴޠͷϥΠϒϥϦΛग़ྗ • ௨৴ϨΠϠʔಠࣗͷιέοτϓϩτίϧͷଞʹɺHTTPͳͲબΔ
• ΕΔ͜ͱࠓGoogle͕ग़ͨ͠gRPCͱಉ͡ • pixivͰPHP͔Βѻ͍͍͢ThriftΛબ
pixiv.git • pixiv.gitPHP͚ͩͰ200ສߦҎ্ • ίʔσΟϯάن݁ߏ͔ͬ͠Γ͍ͯ͠ΔํͰɺ͍ͩͨ ͍Ͳ͜ಉ͡࡞๏Ͱॻ͔Ε͍ͯΔ • 1ՕॴΛ֮͑ΕଞͷՕॴ͙͢ϝϯςͰ͖ΔΑ͏ʹ • ίʔσΟϯάنʹ߹͍ͬͯͳ͍ݹ͍ίʔυΛॻ͖͑
ͨΓ͢ΔͷʹͦΕͳΓͷखؒΛ͔͚͍ͯΔ
pixiv.git • தʹͪΖΜɺͦ͏͍͏࣌Ҏ֎ʹ৮ΒΕͳ͍Օॴ͋Δ • ͦ͏͍͏෦࣮ࡍpixivͷࠜװͱૄ݁߹ʹͳ͍ͬͯΔ͜ͱ͕ ଟ͍ • ྫ͑ϢʔβʔใͱΠϥετใ͙Β͍͔͍ͬͯ͠ͳ͍ͱ͔ • ϢʔβʔใͱΠϥετใ͙Β͍Λฦ͢APIͰपล෦ͱܨ͕
Δ͜ͱʹΑͬͯɺपล෦ΛผϦϙδτϦʹͯ͠ૣ͘ރΒ͍ͯ͠ ͚ͳ͍͔ • →ThriftΛ࠾༻
ThriftʹܾΊͨܦҢ • pixivʹPHPҎ֎ʹRailsͰॻ͔ΕͨαʔϏε͕͋ ΓɺݴޠΛ͑ͯ͏Մೳੑ͕͋ͬͨ • ࠓGoScala͋Δ • PHPͰAPIαʔόʔΛ࡞Δ͜ͱʹͳΔͷͰɺHTTPʹͬ ͔ΕΔͷ͕ྑ͔ͬͨ
vs JSON • طʹ͋ͬͨɺJSONΛฦ͢εϚϗΞϓϦ༻APIͷΛ ղܾ͔ͨͬͨ͠ • APIυΩϡϝϯτͷඋ͕์ஔ͞Ε͕ͪ • LLʹ͋Γ͕ͪͳɺܕʹ͍෦ΛؤுͬͯίʔυΛॻ ͍ͯରॲ͍ͯͨ͠
• →ThriftͰ͋ΕɺAPIυΩϡϝϯτࣗಈͰ࡞ΒΕΔ ͠ɺPHPͰಛʹҙࣝ͠ͳͯ͘APIͷܕ͕͔ͬ͠Γ͢Δ
ThriftͷΘΕํͱར • ݱࡏɺ2ͭͷपลαʔϏε͔Βར༻ • ScalaͱRails • ThriftͷఆٛΛ࣋ͬͨϦϙδτϦɺcomposer.jsonͱbuild.sbtͱ gemspec͕ஔ͔Ε͍ͯΔ • HTTPͷརΛ׆͔ͯ͠ɺnginxͰϦόʔεϓϩΩγ
• nginxΑΓઌpixivͷී௨ͷϦΫΤετͷࡋ͔Εํͱಉ͡ • APIΛఆٛ͢Δͱ͖ʹσʔλߏܕؚΊ͔ͯͬ͠Γߟ͑ͯ࡞ΔͷͰɺม ͑ͨ͘ͳͬͨ͜ͱࠓͷͱ͜Ζແ͍
རʁ • ॳͷݟ௨ΓɺϢʔβʔใͱΠϥετใ͙Β͍ ͰࣄΓ͍ͯΔ • →ͱ͍͏ͷਖ਼͘͠ͳͯ͘ɺͦΕͧΕͷपลαʔ Ϗεઐ༻ͷAPIগ࡞Δ͜ͱʹͳͬͨ • ઐ༻෦͕ଟ͘ͳΕͳΔ΄Ͳɺʮ࣮पลαʔϏ εີ݁߹ͩͬͨʯͱ͍͏͜ͱʹͳΓɺRPCͰܨ
͕ͬͨͷؒҧ͍ͩͬͨͱ͍͏͜ͱʹͳΔ
ଞʹࠔͬͨ • HTTP௨৴ΛThriftͷϥΠϒϥϦ͕Ӆṭ͢ΔͷͰɺੜͷϨεϙϯεΛ ֬ೝ͢Δͷ͕໘ • ͦͦόΠφϦͳͷͰ༰ΛݟͯΘ͔Βͳ͍ • ʢવ͚ͩͲʣ։ൃ͢Δͱ͖ʹɺAPIఆٛΛॻ͍ͯϒϥϯνʹϓο γϡͯ͠αʔόʔɾΫϥΠΞϯτͰ͏Α͏ʹͯ͠…ͱ͍͏ϑϩʔ ໘
• εϚϗΞϓϦ༻ͷAPIʹ͓͔ͱࢥ͕ͬͨɺॾʑͷཧ༝Ͱ٫Լͨ͠ • ී௨ʹJSONͷREST APIʹམͪண͍ͨ
·ͱΊ • pixivͰࠓ͔ΒݴޠؒɾαʔόʔؒRPCͰThriftΛ ͍࢝Ί·ͨ͠ • ܕ͕͔ͬ͠Γ͍ͯ͠Δͱ͜ΖͱɺυΩϡϝϯτͷੜ͕ ΩϥʔͰͨ͠