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
GCP サーバーレスサービス× 少数チームによる事業立ち上げ / gcp_serverless...
Search
mokuo
September 24, 2019
Programming
3
5.5k
GCP サーバーレスサービス× 少数チームによる事業立ち上げ / gcp_serverless_startup_business
GCP サーバーレス サービスについて / アーキテクチャ / メリット / ハマりどころ / 今後の課題
mokuo
September 24, 2019
Tweet
Share
More Decks by mokuo
See All by mokuo
データの整合性を保つ非同期処理アーキテクチャパターン / Async Architecture Patterns
mokuo
61
23k
誰が作成しても1つの構造になるモデリング作成技術、Theory of Models に夢を見る
mokuo
47
20k
文系大学生がプログラマーを志してから現在までをふりかえり、エンジニアの キャリアについて考える / review-and-engineer-career
mokuo
0
1.2k
新規事業開発を支える技術 / Technology for new business
mokuo
1
6.9k
Eight メンション機能の フロントエンド実装 / Eight Mention Frontend
mokuo
5
7.1k
e2e_prototype_capybara.pdf
mokuo
0
240
Other Decks in Programming
See All in Programming
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
520
知って得する@cloudflare_vite-pluginのあれこれ
chimame
1
140
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
350
「次に何を学べばいいか分からない」あなたへ──若手エンジニアのための学習地図
panda_program
3
710
Comparing decimals in Swift Testing
417_72ki
0
160
一人でAIプロダクトを作るならAIにはもっと働いてもらいたい / I want AI to work harder
rkaga
3
260
テスターからテストエンジニアへ ~新米テストエンジニアが歩んだ9ヶ月振り返り~
non0113
2
250
QA x AIエコシステム段階構築作戦
osu
0
240
Go製CLIツールをnpmで配布するには
syumai
2
1.1k
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
1
430
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
2
740
書き捨てではなく継続開発可能なコードをAIコーディングエージェントで書くために意識していること
shuyakinjo
0
190
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.8k
How to Ace a Technical Interview
jacobian
278
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
870
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.4k
Java REST API Framework Comparison - PWX 2021
mraible
32
8.8k
Navigating Team Friction
lara
188
15k
Transcript
($1αʔόʔϨεαʔϏεʷগνʔϜ ʹΑΔࣄۀ্ཱͪ͛ 4FSWFSMFTTٕज़ษڧձʙϑϧϚωʔδυαʔϏε׆༻ࣄྫʙ %40$%FWFMPQNFOU(SPVQΤϯδχΞా༔Ұ 4BOTBOגࣜձࣾ
Agenda - ࣗݾհ - Sansan αʔϏεհ - ߴਫ਼ͳσʔλԽΛࢧ͑Δϊϋ - GCP
αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ 2
ࣗݾհ - ా ༔Ұ - Sansanגࣜձࣾ DSOC Development Group ΤϯδχΞ
- αʔόʔαΠυΛத৺ʹϑϩϯτΤϯυɾ Πϯϑϥʹڵຯ͕͋Γ·͢ - Sansan Tech Podcast ͬͯ·͢ʂ 3
Agenda - ࣗݾհ - Sansan αʔϏεհ - ߴਫ਼ͳσʔλԽΛࢧ͑Δϊϋ - GCP
αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ 4
๏ਓ͚Ϋϥυ໊ཧαʔϏε ݸਓ໊͚ΞϓϦ
6
Agenda - ࣗݾհ - Sansan αʔϏεհ - ߴਫ਼ͳσʔλԽΛࢧ͑Δϊϋ - GCP
αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ 7
ߴਫ਼ͳσʔλԽΛࢧ͑Δϊϋ ػցͷྗͱਓͷྗΛΈ߹ΘͤΔ 8
ϛεςΠΫσΟςΫλʔ 9 ޡΓͷΛֶशͯ͠ϛεͷ ՄೳੑΛ༧ଌ ͜ΕʹΑΓɺΦϖϨʔλʔޮతʹ ࠷ऴνΣοΫΛߦ͏͜ͱ͕ՄೳʹͳΓ·͢ɻ
ݴޠॲཧఆ 10 ໊ը૾͔ΒݴޠΛఆ • ̐ݴޠʢӳதؖʣʹରԠ • σʔλԽϑϩʔͷޮԽ • ΦϖϨʔλͷৼΓ͚ͷࣗಈԽ •
ਫ਼ 98 %
߲ηάϝϯςʔγϣϯ 11 จࣈΛಡΈऔΒͣʹɺ໊ͷ σβΠϯ͔Β߲Λݟ͚Δ • ߲ผͷ݁ՌΛֶश • ୯ମϞσϧͰ߲ۣܗɺ໊߲ͷਪఆ • ਫ਼
98 %
ΦϖϨʔλʔʹΑΔೖྗ - Ұͭͷ߲ʹର͢ΔɺෳͷΦϖϨʔλʹΑΔଟॏೖྗ - ೖྗ༰ʹର͢ΔࢹνΣοΫ - ೖྗϧʔϧτϨʔχϯάͷ࡞ 12
৽ͨͳσʔλԽαʔϏεͷݕূ ຊɺߴਫ਼ͳσʔλԽϊϋΛ׆༻ͨ͠ ʮٻॻͷσʔλԽʯʹؔ͢ΔऔΓΈΛ͝հ ※ ਖ਼ࣜͳ৽αʔϏεͷൃදͰ͍͟͝·ͤΜ 13
Agenda - ࣗݾհ - Sansan αʔϏεհ - ߴਫ਼ͳσʔλԽΛࢧ͑Δϊϋ - GCP
αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ 14
GCP αʔόʔϨε αʔϏε׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ
GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - ΞʔΩςΫνϟ
- ϝϦοτ - ϋϚΓͲ͜Ζ - ࠓޙͷ՝ - ·ͱΊ 16
GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - ΞʔΩςΫνϟ
- ϝϦοτ - ϋϚΓͲ͜Ζ - ࠓޙͷ՝ - ·ͱΊ 17
GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - Google App Engine - Cloud Firestore
- Cloud Tasks - Stackdriver - Cloud Storage - Cloud Functions 18
GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - Google App Engine - Cloud Firestore
- Cloud Tasks - Stackdriver - Cloud Storage => AWS S3 - Cloud Functions => AWS Labmda 19
Google App Engine PaaSʢPlatform as a Serviceʣ - εέʔϧΞτɾσϓϩΠ͕ߴ -
Πϯελϯε͕θϩ·ͰεέʔϧΠϯ - αϙʔτϥϯλΠϜ - Java, Python, Go, PHP, Node.js, Rubyʢbetaʣ 20
Cloud Firestore αʔόʔϨεͳυΩϡϝϯτࢦ NoSQL σʔλϕʔε - ΞϓϦέʔγϣϯͷෛՙʹԠͯࣗ͡ಈతʹਫฏεέʔϦϯά - ڧ߹ੑ -
ߴ͍Մ༻ੑ - ϚϧνϦʔδϣϯͰ 99.999% Ҏ্ - ϦʔδϣϯͰ 99.99% Ҏ্ 21
Cloud Firestore ͷ֊σʔλ ྫʣͦΕͧΕͷνϟοτϧʔϜʹෳͷϝοηʔδ͕͋Δ - rooms - room-A - messages
- message-1 - message-2 - … - room-B - … 22 name: “։ൃϧʔϜ” from: “ଠ”, msg: “͜Μʹͪʂ” from: “࣍”, msg: “Hello!”
Cloud Firestore ͷ֊σʔλ ྫʣͦΕͧΕͷνϟοτϧʔϜʹෳͷϝοηʔδ͕͋Δ - rooms - room-A - messages
- message-1 - message-2 - … - room-B - … 23 name: “։ൃϧʔϜ” from: “ଠ”, msg: “͜Μʹͪʂ” from: “࣍”, msg: “Hello!” ← ʢϧʔτʣίϨΫγϣϯ ← υΩϡϝϯτ ← rooms ͷαϒίϨΫγϣϯ ← υΩϡϝϯτ
Cloud Firestore ͷσʔλܕ - Map - JavaScript ͷΦϒδΣΫτɺRuby ͷϋογϡɺPython ͷࣙॻܕͷΑ͏ͳΛೖΕΒ
ΕΔ - Array - Boolean - Date and time - String - … ࢀߟ: https://firebase.google.com/docs/firestore/manage-data/data-types 24
Cloud Tasks ϑϧϚωʔδυͳλεΫΩϡʔαʔϏε - ॲཧΛඇಉظͰ࣮ߦͰ͖Δ - HTTP Target λεΫʢbetaʣ -
App Engine λεΫ - ಉ࣌λεΫͷ࠷େϨʔτ࠷େΛઃఆͰ͖Δ 25
Stackdriver ΞϓϦέʔγϣϯɺΠϯϑϥετϥΫνϟͷϞχλϦϯάͱཧ - ϩΪϯά => Stackdriver Logging - Τϥʔ௨ =>
Stackdriver Error Reporting - ϞχλϦϯά => Stackdriver Monitoring 26
GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - ΞʔΩςΫνϟ
- ϝϦοτ - ϋϚΓͲ͜Ζ - ࠓޙͷ՝ - ·ͱΊ 27
༻ݴޠ 28 Cloud Functions Node.js όοΫΤϯυ Node.js, TypeScript, Express ࣗಈԽΤϯδϯ
C# ϑϩϯτΤϯυ React, Redux, TypeScript
αʔϏεͷશମ૾ 29 ٻॻը૾ σʔλԽ݁Ռ ೖྗ / σʔλԽ γεςϜ ࣾΦϖϨʔλʔ ࣗಈԽΤϯδϯ
Ϣʔβʔଆ γεςϜ σʔλԽ ٻॻσʔλԽγεςϜ Ξοϓϩʔυ
αʔϏεͷશମ૾ 30 ٻॻը૾ σʔλԽ݁Ռ ೖྗ / σʔλԽ γεςϜ ࣾΦϖϨʔλʔ ࣗಈԽΤϯδϯ
Ϣʔβʔଆ γεςϜ Ξοϓϩʔυ σʔλԽ ٻॻσʔλԽγεςϜ
ΞʔΩςΫνϟ KPI ج൫ ϩΪϯά / Τϥʔ௨ Stackdriver Ϣʔβʔଆ γεςϜ BigQuery
Cloud Pub/Sub ࣗಈԽΤϯδϯ Cloud Dataflow App Engine Cloud Functions Cloud Storage Cloud Firestore Compute Engine Cloud Tasks ೖྗ / σʔλԽ γεςϜ
ΞʔΩςΫνϟ KPI ج൫ ϩΪϯά / Τϥʔ௨ Stackdriver Ϣʔβʔଆ γεςϜ BigQuery
Cloud Pub/Sub ࣗಈԽΤϯδϯ Cloud Dataflow App Engine Cloud Functions Cloud Storage Cloud Firestore Compute Engine Cloud Tasks ೖྗ / σʔλԽ γεςϜ
ΦϖϨʔλʔ͔ΒͷೖྗΛड͚͚Δ 3 App Engine ʢNode.jsʣ Cloud Tasks Cloud Firestore ࣾΦϖϨʔλʔ
App Engine ʢSPA ΞϓϦέʔγϣϯʣ ඇಉظॲཧ
ϑΝΠϧΞοϓϩʔυͰಛఆͷॲཧΛߦ͏ - Cloud Functions ͷ Cloud Storage τϦΨʔ - Cloud
Tasks ͷ App Engine λεΫ 34 Cloud Storage Cloud Functions App Engine Cloud Tasks
ࣗಈԽΤϯδϯ - Compute Engine 35 ٻॻը૾ͱΦϖϨʔλʔͷೖྗσʔλͷηοτΛֶश গͣͭࣗ͠ಈԽ͍ͯ͘͠ ※ Web API
ͱͯ͠࿈ܞ
KPI ج൫ - Google App Engine ͔Β Cloud Pub/Sub ܦ༝ͰϩάΛૹ৴
- Tableau ͰՄࢹԽ 36 App Engine BigQuery Cloud Pub/Sub Cloud Dataflow
GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - ΞʔΩςΫνϟ
- ϝϦοτ - ϋϚΓͲ͜Ζ - ࠓޙͷ՝ - ·ͱΊ 37
ϝϦοτ - ᶃ ΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ - ᶄ αʔόʔཧෆཁ - ᶅ ίετ࠷దԽ
38
ϝϦοτᶃɿΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ - ඇಉظ࣮ߦ - ఆظ࣮ߦ - σϓϩΠ - IPΞυϨε੍ݶ -
τϥϑΟοΫׂ 39 App Engine
ϝϦοτᶃɿΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ - ඇಉظ࣮ߦ - ఆظ࣮ߦ - σϓϩΠ - IPΞυϨε੍ݶ -
τϥϑΟοΫׂ 40 Cloud Tasks App Engine Cron gcloud ίϚϯυ App Engine ϑΝΠΞ Υʔϧ Traffic Splitting App Engine
ϝϦοτᶃɿΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ - ඇಉظ࣮ߦ - ఆظ࣮ߦ - σϓϩΠ - IPΞυϨε੍ݶ -
τϥϑΟοΫׂ 41 Cloud Tasks App Engine Cron gcloud ίϚϯυ App Engine ϑΝΠΞ Υʔϧ Traffic Splitting App Engine
τϥϑΟοΫׂ - Traffic Splitting - ෳόʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ - IP ΞυϨε Cookie
ͰτϥϑΟοΫΛׂͰ͖Δ - ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ 42 App Engine
τϥϑΟοΫׂ - Traffic Splitting - ෳόʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ => ಈ࡞֬ೝςετ - IP
ΞυϨε Cookie ͰτϥϑΟοΫΛׂͰ͖Δ => A/B ςετ - ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ 43 App Engine
τϥϑΟοΫׂ - Traffic Splitting - ෳόʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ => ಈ࡞֬ೝςετ - IP
ΞυϨε Cookie ͰτϥϑΟοΫΛׂͰ͖Δ => A/B ςετ - ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ 44 App Engine
τϥϑΟοΫׂ - Traffic Splitting - ෳόʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔ͤΔ => ಈ࡞֬ೝςετ - IP
ΞυϨε Cookie ͰτϥϑΟοΫΛׂͰ͖Δ => A/B ςετ - ཧը໘͔ΒΠϯελϯεͷόʔδϣϯΛมߋͰ͖Δ => ϩʔϧόοΫ 45 App Engine
ϝϦοτᶄɿαʔόʔཧෆཁ - ෛՙʹԠͯ͡Φʔτεέʔϧ - αʔόʔͷϓϩϏδϣχϯά͕ෆཁ 46 App Engine Cloud Firestore
ίετ࠷దԽ - جຊ͚ͬͨͩ՝ۚ - Πϯελϯε͕θϩ·ͰεέʔϧΠϯͳͲ - Google App Engine /
Standard Environment - Cloud Run 47
ϝϦοτʢ;Γ͔͑Γʣ - ᶃ ΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ - ᶄ αʔόʔཧෆཁ - ᶅ ίετ࠷దԽ
48
ϝϦοτʢ;Γ͔͑Γʣ - ᶃ ΞϓϦέʔγϣϯͷίʔυʹूதͰ͖Δ - ᶄ αʔόʔཧෆཁ - ᶅ ίετ࠷దԽ
49 => ݶΒΕͨϦιʔεͰεϐʔυײΛ࣋ͬͯ։ൃͰ͖Δ
GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - ΞʔΩςΫνϟ
- ϝϦοτ - ϋϚΓͲ͜Ζ - ࠓޙͷ՝ - ·ͱΊ 50
ϋϚΓͲ͜Ζ - ᶃ Google App Engine ڥ - ᶄ App
Engine ϑΝΠΞΥʔϧ - ᶅ Cloud Firestore ͷσʔλϕʔεઃܭ 51
ϋϚΓͲ͜ΖᶃɿGoogle App Engine ڥ - ελϯμʔυڥ or ϑϨΩγϒϧڥ => ՄೳͳݶΓελϯμʔυڥΛ͏
- σϓϩΠεέʔϦϯά͕ߴ - Πϯελϯε͕θϩ·ͰεέʔϧΠϯ - ެࣜυΩϡϝϯτࢀর - https://cloud.google.com/appengine/docs/flexible/java/flexible-for- standard-users?hl=ja 52 App Engine
GAE/FE Λ͏໘ - Google App Engine / Flexible Environment -
- GAEΠϯελϯεΛ VPC ωοτϫʔΫʹඥ͚͍ͨ࣌ - AWS ্ͷࣾαʔϏεͱ VPN Ͱଓ͔ͨͬͨ͠ͷͰɺҰ෦ GAE/FE Λ ༻ - ݱࡏ Serverless VPC Access Λ͑ɺελϯμʔυڥ͔Β VPC Ϧ ιʔεʹΞΫηεՄೳ - Γ͑Λݕ౼த 53 App Engine
GAE/FE Λ͏໘ - Google App Engine / Flexible Environment -
- ಛఆͷϥΠϒϥϦΛ͍͍ͨ࣌ - ผαʔϏεʹΓग़ͯ͠ Docker ΠϝʔδΛ༻ - ݱࡏ Cloud Run Λ༻͢Δ͜ͱͰɺGAE/SE ͷΑ͏ͳεέʔϥϏϦ ςΟΛอͪͭͭɺDocker ΠϝʔδΛͬͨߏʹͰ͖Δ 54 App Engine
ϋϚΓͲ͜ΖᶄɿApp Engine ϑΝΠΞΥʔϧ GCP αʔϏεؒͷ௨৴ϒϩοΫ͞ΕΔ͜ͱ͕͋Δ - Cloud Pub/Sub άϩʔόϧͳαʔϏεͰ͋ΔͨΊɺ ϗϫΠτϦετՃͰ͖ͳ͍
- Cloud Tasks ෦తʹ URL ϑΣον αʔϏεΛ͍ͬͯΔͨΊɺ URL ϑΣον αʔϏεͷ IP ΞυϨεΛڐՄ͢Δ 55 Cloud Storage Cloud Functions App Engine Cloud Tasks App Engine Cloud Pub/ Sub Cloud Storage App Engine
ϋϚΓͲ͜ΖᶅɿCloud Firestore ͷσʔλϕʔεઃܭ SQL ͷΑ͏ͳ COUNT ؔͳ͍ - υΩϡϝϯτΛΨόͬͱऔ͖ͬͯͯΧϯτ͢Δ͜ͱͰ͖Δ -
ࢄΧϯλΛ͏ - ੍ɿ1 υΩϡϝϯτ͋ͨΓ 1 ඵؒʹ 1 ճ͔͠ߋ৽Ͱ͖ͳ͍ - Χϯλ༻ͷυΩϡϝϯτΛෳ༻ҙͯ͠ɺϥϯμϜʹΠϯΫϦϝϯτ͢Δ - શυΩϡϝϯτΛऔಘͯ͠߹ܭΛܭࢉ͢Δ - FieldValue.increment() Λ͏ʢv1.1.0 ͰϦϦʔεʣ - ཁ݅ʹΑͬͯɺRedis ͳͲͰΧϯτ͢Δͷ͋Γ 56 Cloud Firestore
Firestore Ͱؔ࿈ΛͲͷΑ͏ʹ͔࣋ͭ ॻ͖ࠐΈಡΈࠐΈͷසͰஅ͢Δ - 1 : N ͷσʔλʹ͍ͭͯ - Ұॹʹѻ͏͜ͱ͕ଟ͍߹
=> Array ܕͱͯ͠ϑΟʔϧυʹ࣋ͨͤΔ - 1 υΩϡϝϯτ͋ͨΓ 1 ඵؒʹ 1 ճ͔͠ߋ৽Ͱ͖ͳ͍ - ผʑʹѻ͏͜ͱ͕ଟ͍߹ => αϒίϨΫγϣϯʹ࣋ͨͤΔ - ίϨΫγϣϯͱαϒίϨΫγϣϯʹ·͕ͨͬͨΫΤϦͰ͖ͳ͍ 57 Cloud Firestore
GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - ΞʔΩςΫνϟ
- ϝϦοτ - ϋϚΓͲ͜Ζ - ࠓޙͷ՝ - ·ͱΊ 58
ࠓޙͷ՝ - ᶃɿ։ൃڥ - ᶄɿಈ࡞֬ೝ - ᶅɿੳܥΫΤϦ - ᶆɿΤϥʔ௨ =>
͜Ε͔Β͍͑ͯ͘ 59
ࠓޙͷ՝ᶃɿ։ൃڥ - Cloud Firestore 1 ϓϩδΣΫτʹ 1 ͔ͭ͠ DB
Λ࡞Εͳ͍ - ։ൃɾࣗಈςετ - Cloud Tasks Push ͳͷͰɺϩʔΧϧʹ͚ΒΕͳ͍ - ։ൃ࣌ Cloud Tasks ΛϞοΫ͢Δ͔ 60
ࠓޙͷ՝ᶄɿಈ࡞֬ೝ - Heroku Review Apps ͷΑ͏ͳ͜ͱΛ͍ͨ͠ - PR ͝ͱʹڥΛཱͯΔ -
Google App Engine ෳόʔδϣϯͷΠϯελϯεΛಉ࣌ʹಈ͔͢͜ͱ ͕Ͱ͖Δ 61
ࠓޙͷ՝ᶅɿੳܥΫΤϦ - SQL ͷΑ͏ʹॊೈͳΫΤϦͳ͍ - BigQuery ʹσʔλΛΠϯϙʔτ͢Δ 62
ࠓޙͷ՝ᶆɿΤϥʔ௨ - Stackdriver Error Reporting ͔Βͷ ϝʔϧ௨Λ Gmail ͷϑΟϧλػೳͰ Slack
ʹ௨͍ͯ͠Δ - λΠϜϥά͕͋Δ - ςΩετΛΧελϚΠζͰ͖ͳ͍ - Datadog ͷूΛݕ౼ 63
GCP αʔόʔϨε αʔϏεͷ׆༻ࣄྫ ʙ৽ͨͳσʔλԽαʔϏεͷݕূʙ - GCP αʔόʔϨε αʔϏεʹ͍ͭͯ - ΞʔΩςΫνϟ
- ϝϦοτ - ϋϚΓͲ͜Ζ - ࠓޙͷ՝ - ·ͱΊ 64
·ͱΊ GCP αʔόʔϨε αʔϏε - ݶΒΕͨϦιʔεͰεϐʔυײΛ࣋ͬͯ։ൃͰ͖Δ - ϑϧϚωʔδυɺΦʔτεέʔϧͷྑ͞ΛڗडͰ͖ΔҰํͰɺ੍Ϋη͕ ͋Δ -
ϝϯόʔ͕૿͑ͯ͘Δͱɺ։ൃڥͳͲͷඋʹ͕ඞཁ 65
͍͞͝ʹ
We are hiring!
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠