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
日々大量の素材を扱うために改善したこと/webgenba-meetup-03
Search
hamuyuuki
March 08, 2018
Technology
0
1k
日々大量の素材を扱うために改善したこと/webgenba-meetup-03
2018/03/07 Web現場Meetup #3
hamuyuuki
March 08, 2018
Tweet
Share
More Decks by hamuyuuki
See All by hamuyuuki
VS CodeのExtensionを作ってみた/pixta-techcamp-05
hamuyuuki
0
1.2k
Other Decks in Technology
See All in Technology
なぜfreeeはハブ・アンド・スポーク型の データメッシュアーキテクチャにチャレンジするのか?
shinichiro_joya
2
480
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
16k
メールヘッダーを見てみよう
hinono
0
110
2025年に挑戦したいこと
molmolken
0
160
【NGK2025S】動物園(PINTO_model_zoo)に遊びに行こう
kazuhitotakahashi
0
240
データ基盤におけるIaCの重要性とその運用
mtpooh
4
520
三菱電機で社内コミュニティを立ち上げた話
kurebayashi
1
360
新卒1年目、はじめてのアプリケーションサーバー【IBM WebSphere Liberty】
ktgrryt
0
120
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2.1k
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
180
あなたの人生も変わるかも?AWS認定2つで始まったウソみたいな話
iwamot
3
850
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
190
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
960
Practical Orchestrator
shlominoach
186
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Raft: Consensus for Rubyists
vanstee
137
6.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building an army of robots
kneath
302
45k
Speed Design
sergeychernyshev
25
740
Gamification - CAS2011
davidbonilla
80
5.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Designing for humans not robots
tammielis
250
25k
Transcript
ʑେྔͷૉࡐΛѻ͏ͨΊ ʹվળͨ͜͠ͱ 2018/03/07 WebݱMeetup ϐΫελגࣜձࣾɹҏ౻ ༟ر mits / 33114786
ࣗݾհ • ҏ౻ ༟ر • 2015/08 ʙ ϐΫελגࣜձࣾ • 2017/01
ʙ PIXTA VIETNAM ʹग़ • 2018/01 ʙ ٕज़ਪਐάϧʔϓ
ϐΫελגࣜձࣾͷ͝հ
ձࣾ֓ཁ • ઃཱ: 2005/08/25 • ཧ೦: ࠽ೳΛͭͳ͗ɺੈքΛϙδςΟϒʹ͢Δ • ࣄۀ༰: PIXTA,
fotowa, Snapmart ͷӡӦ • ڌ: ຊ, , λΠ, γϯΨϙʔϧ, ϕτφϜ, ؖࠃ
https://pixta.jp ຊޠΛؚΉ6ݴޠͰల։த
ࠓ͢͜ͱ • എܠ • ࣮ࢪ༰ • ࠓޙͷ՝ • ·ͱΊ
എܠ
ૉࡐ͕ PIXTA Ͱൢച͞ΕΔ·Ͱ 1. Ξοϓϩʔυ 2. ਃʢૉࡐʹλΠτϧɾλάΛඥ͚ʣ 3. ৹ࠪʢૉࡐͷΫΦϦςΟΛஅʣ 4.
ൢച։࢝ʂ
ૉࡐ͕ PIXTA Ͱൢച͞ΕΔ·Ͱ 1. Ξοϓϩʔυ 2. ਃʢૉࡐʹλΠτϧɾλάΛඥ͚ʣ 3. ৹ࠪʢૉࡐͷΫΦϦςΟΛஅʣ 4.
ൢച։࢝ʂ
Ξοϓϩʔυ • ϚΠϖʔδܦ༝ͷΞοϓϩʔυ • গྔͷૉࡐΛ PIXTA Ͱൢച͍ͨ͠ࡍʹ༻ • FTPαʔόʔܦ༝ͷΞοϓϩʔυ •
େྔͷૉࡐΛ PIXTA Ͱൢച͍ͨ͠ࡍʹ༻
Ξοϓϩʔυ • ϚΠϖʔδܦ༝ͷΞοϓϩʔυ • গྔͷૉࡐΛ PIXTA Ͱൢച͍ͨ͠ࡍʹ༻ • FTPαʔόʔܦ༝ͷΞοϓϩʔυ •
େྔͷૉࡐΛ PIXTA Ͱൢച͍ͨ͠ࡍʹ༻
FTPαʔόʔܦ༝ͷΞοϓϩʔυ • ετοΫϑΥτۀքͰҰൠతͳํ๏ • େྔͷૉࡐΛอ͍࣋ͯ͠Δ ΫϦΤΠλʔ ͕ޮ Α͘ΞοϓϩʔυͰ͖ΔͨΊʹଘࡏ͢Δ FTP
Server ΫϦΤΠλʔ Ξοϓϩʔυ
چFTPΞοϓϩʔυγεςϜ PIXTA (Batch) S3 FTP Server ΫϦΤΠλʔ ᶃΞοϓϩʔυ PIXTA
(Admin) ϐΫελ ελοϑ ᶄ࿈བྷʢϚΠϖʔδ্ʣ ᶅFTP=>S3ಉظґཔ ᶅFTP=>S3ಉظґཔ ᶆS3ಉظ ᶇ݁ՌΛ௨ ᶈαϜωΠϧੜ ᶉૉࡐใΛอଘ Worker
چFTPΞοϓϩʔυγεςϜ PIXTA (Batch) S3 FTP Server ΫϦΤΠλʔ ᶃΞοϓϩʔυ PIXTA
(Admin) ϐΫελ ελοϑ ᶄ࿈བྷʢϚΠϖʔδ্ʣ ᶅFTP=>S3ಉظґཔ ᶅFTP=>S3ಉظґཔ ᶆS3ಉظ ᶇ݁ՌΛ௨ ᶈαϜωΠϧੜ ᶉૉࡐใΛอଘ Worker
Ξοϓϩʔυ݅ͷਪҠ , , , ,
,
چFTPΞοϓϩʔυγεςϜ PIXTA (Batch) S3 FTP Server ΫϦΤΠλʔ ᶃΞοϓϩʔυ PIXTA
(Admin) ϐΫελ ελοϑ ᶄ࿈བྷʢϚΠϖʔδ্ʣ ᶅFTP=>S3ಉظґཔ ᶅFTP=>S3ಉظґཔ ᶆS3ಉظ ᶇ݁ՌΛ௨ ᶈαϜωΠϧੜ ᶉૉࡐใΛอଘ Worker
• ॲཧϑϩʔͷෳࡶ͞ʹΑΔӨڹ • Ξοϓϩʔυ݅૿ՃʹΑΔɺ͞ΒͳΔ γεςϜͷεέʔϧԽ
࣮ࢪ༰
• ॲཧϑϩʔͷෳࡶ͞ʹΑΔӨڹ • Ξοϓϩʔυ݅૿ՃʹΑΔɺ͞ΒͳΔ γεςϜͷεέʔϧԽ
৽FTPΞοϓϩʔυγεςϜ PIXTA (API) S3 FTP Server Lambda ΫϦΤΠλʔ ᶃΞοϓϩʔυ
ᶄS3ʹಉظ ᶅΠϕϯττϦΨ ᶆαϜωΠϧੜʢಈըʣ ᶆαϜωΠϧอଘʢը૾ʣ ᶆૉࡐใΛอଘ S3 Worker
• ॲཧϑϩʔͷෳࡶ͞ʹΑΔӨڹ • Ξοϓϩʔυ݅૿ՃʹΑΔɺ͞ΒͳΔ γεςϜͷεέʔϧԽ
چFTPΞοϓϩʔυγεςϜ PIXTA (Batch) S3 FTP Server ΫϦΤΠλʔ ᶃΞοϓϩʔυ PIXTA
(Admin) ϐΫελ ελοϑ ᶄ࿈བྷʢϚΠϖʔδ্ʣ ᶅFTP=>S3ಉظґཔ ᶅFTP=>S3ಉظґཔ ᶆS3ಉظ ᶇ݁ՌΛ௨ ᶈαϜωΠϧੜ ᶉૉࡐใΛอଘ Worker
৽FTPΞοϓϩʔυγεςϜ PIXTA (API) S3 FTP Server Lambda ΫϦΤΠλʔ ᶃΞοϓϩʔυ
ᶄS3ʹಉظ ᶅΠϕϯττϦΨ ᶆαϜωΠϧੜʢಈըʣ ᶆαϜωΠϧอଘʢը૾ʣ ᶆૉࡐใΛอଘ S3 Worker
• ॲཧϑϩʔͷෳࡶ͞ʹΑΔӨڹ • Ξοϓϩʔυ݅૿ՃʹΑΔɺ͞ΒͳΔ γεςϜͷεέʔϧԽ
چFTPΞοϓϩʔυγεςϜ PIXTA (Batch) S3 FTP Server ΫϦΤΠλʔ ᶃΞοϓϩʔυ PIXTA
(Admin) ϐΫελ ελοϑ ᶄ࿈བྷʢϚΠϖʔδ্ʣ ᶅFTP=>S3ಉظґཔ ᶅFTP=>S3ಉظґཔ ᶆS3ಉظ ᶇ݁ՌΛ௨ ᶈαϜωΠϧੜ ᶉૉࡐใΛอଘ Worker
৽FTPΞοϓϩʔυγεςϜ PIXTA (API) S3 FTP Server Lambda ΫϦΤΠλʔ ᶃΞοϓϩʔυ
ᶄS3ʹಉظ ᶅΠϕϯττϦΨ ᶆαϜωΠϧੜʢಈըʣ ᶆαϜωΠϧอଘʢը૾ʣ ᶆૉࡐใΛอଘ S3 Worker
AWS Lambda ͱ
৽FTPΞοϓϩʔυγεςϜ PIXTA (API) S3 FTP Server Lambda ΫϦΤΠλʔ ᶃΞοϓϩʔυ
ᶄS3ʹಉظ ᶅΠϕϯττϦΨ ᶆαϜωΠϧੜʢಈըʣ ᶆαϜωΠϧอଘʢը૾ʣ ᶆૉࡐใΛอଘ S3 Worker
• Inotify + Ruby ͰϑΝΠϧγεςϜΛࢹ • S3ʹϑΝΠϧΛಉظ ᶄS3ʹಉظ
৽FTPΞοϓϩʔυγεςϜ PIXTA (API) S3 FTP Server Lambda ΫϦΤΠλʔ ᶃΞοϓϩʔυ
ᶄS3ʹಉظ ᶅΠϕϯττϦΨ ᶆαϜωΠϧੜʢಈըʣ ᶆαϜωΠϧอଘʢը૾ʣ ᶆૉࡐใΛอଘ S3 Worker
ᶅΠϕϯττϦΨ • ΠϕϯττϦΨʹ S3 ΛՃ • Suffix ʹରͱͳΔϑΝΠϧΛࢦఆ • ը૾ɺಈըͦΕͧΕͷ֦ுࢠ
• Event types ʹରͱͳΔΠϕϯτΛࢦఆ • ObjectCreatedͰΦϒδΣΫτ࡞Λର
৽FTPΞοϓϩʔυγεςϜ PIXTA (API) S3 FTP Server Lambda ΫϦΤΠλʔ ᶃΞοϓϩʔυ
ᶄS3ʹಉظ ᶅΠϕϯττϦΨ ᶆαϜωΠϧੜʢಈըʣ ᶆαϜωΠϧอଘʢը૾ʣ ᶆૉࡐใΛอଘ S3 Worker
ᶆLambda • ը૾ϑΝΠϧʹ͍ͭͯ Lambda ͰαϜω ΠϧΛੜͯ͠ɺS3 ʹอଘ • ಈըϑΝΠϧʹ͍ͭͯ αϜωΠϧੜΛ
SQSܦ༝Ͱґཔ • ૉࡐใΛ APIܦ༝Ͱอଘ
ᶆLambda(ը૾αϜωΠϧੜ) import GraphicsMagick from 'gm'; export default class JpgProcessor {
constructor({ awsRegion, srcBucket, srcKey }) { . this.gm = GraphicsMagick.subClass({ imageMagick: true }); . } processImage() { return this._resizeThumbnail(); } _resizeThumbnail() { return this.gm(this.imageDataBody) .resize(THUMBNAIL_SIZE, THUMBNAIL_SIZE) .toBuffer(this.imageType, (err, buffer) => { . . }; } }
݁Ռ • ॲཧϑϩʔͷෳࡶ͞ʹΑΔӨڹ • ૉࡐΞοϓϩʔυΛτϦΨʹ͢Δ͜ͱͰɺॲཧϑϩʔ ΛҰํํʹͯ͠ෳࡶ͞Λͳͨ͘͠ • Ξοϓϩʔυ݅૿ՃʹΑΔɺ͞ΒͳΔγεςϜͷ εέʔϧԽ •
ϐΫελελοϑͷ࿈བྷΛͳ͘͠ɺLambdaΛ༻ ͢Δ͜ͱͰεέʔϧԽΛਤͬͨ
ࠓޙͷ՝
Amazon EBS ͷϚϯτ • ॳɺFTPαʔόʔ্Ͱ s3fs Λͬͯ s3 ΛϚ ϯτ͍͕ͯͨ͠ɺύϑΥʔϚϯε͕ग़ͳ͔ͬͨ
• FTPαʔόʔ Ͱɺ1000GBͷEBSΛϚϯτ ͍ͯ͠Δ • 5ಈ͍͍ͯͯίετ͕ 500$ ~ 1000$
Amazon EBS ͷϚϯτ
·ͱΊ
·ͱΊ • ॲཧϑϩʔͷෳࡶ͞ʹΑΔӨڹ • ૉࡐΞοϓϩʔυΛτϦΨʹ͢Δ͜ͱͰɺॲཧϑϩʔ ΛҰํํʹͯ͠ෳࡶ͞Λͳͨ͘͠ • Ξοϓϩʔυ݅૿ՃʹΑΔɺ͞ΒͳΔγεςϜͷ εέʔϧԽ •
ϐΫελελοϑͷ࿈བྷΛͳ͘͠ɺLambdaΛ༻ ͢Δ͜ͱͰεέʔϧԽΛਤͬͨ
We are hiring!
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ mits / 33114786