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.1k
GCP サーバーレスサービス× 少数チームによる事業立ち上げ / gcp_serverless_startup_business
GCP サーバーレス サービスについて / アーキテクチャ / メリット / ハマりどころ / 今後の課題
mokuo
September 24, 2019
Tweet
Share
More Decks by mokuo
See All by mokuo
誰が作成しても1つの構造になるモデリング作成技術、Theory of Models に夢を見る
mokuo
35
6.9k
文系大学生がプログラマーを志してから現在までをふりかえり、エンジニアの キャリアについて考える / review-and-engineer-career
mokuo
0
1.1k
新規事業開発を支える技術 / Technology for new business
mokuo
1
6.4k
Eight メンション機能の フロントエンド実装 / Eight Mention Frontend
mokuo
5
6.5k
e2e_prototype_capybara.pdf
mokuo
0
160
Other Decks in Programming
See All in Programming
Understand the mechanism! Let's do screenshots tests of Compose Previews with various variations / 仕組みから理解する!Composeプレビューを様々なバリエーションでスクリーンショットテストしよう
sumio
3
570
私のEbitengineの第一歩
qt_luigi
0
440
大公開!iOS開発の悩みトップ5 〜iOSDC Japan 2024〜
ryunakayama
0
190
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
140
Rustではじめる負荷試験
skanehira
5
1.2k
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
800
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
130
Prolog入門
qnighy
4
1k
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
390
Amebaチョイス立ち上げの裏側 ~依存システムとの闘い~
daichi_igarashi
0
230
Why Prism?
kddnewton
4
1.7k
What is Parser
yui_knk
9
4.1k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
458
32k
A Philosophy of Restraint
colly
202
16k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
663
120k
Creatively Recalculating Your Daily Design Routine
revolveconf
215
12k
Statistics for Hackers
jakevdp
793
220k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
GitHub's CSS Performance
jonrohan
1029
450k
Design by the Numbers
sachag
277
19k
The Invisible Side of Design
smashingmag
295
50k
Thoughts on Productivity
jonyablonski
66
4.2k
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!
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠