backend, app e internet das coisas com nodejs no google cloud platform
TRANSCRIPT
![Page 1: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/1.jpg)
Backend, App e Internet das Coisas com NodeJS e
Google Cloud Platform
Alvaro Viebrantz aviebrantz.com.br @alvaroviebrantz medium.com/iot-bootcamp
1
![Page 2: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/2.jpg)
Alvaro Viebrantz DevMT e GDGCuiabá
Fullstack developer
aviebrantz.com.br // @alvaroviebrantz medium.com/iot-bootcamp
2
![Page 3: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/3.jpg)
Agenda
• O que é computação em nuvem. • Google Cloud Platform Overview. • NodeJS • Estudo de Caso - PacktPub Notifier
• Backend - Google App Engine • App - React Native + Firebase • IoT - Alexa Custom Skill
3
![Page 4: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/4.jpg)
4
![Page 5: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/5.jpg)
38 anos
Computadores Primitivos Computadores Pessoais
5
![Page 6: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/6.jpg)
15 anos
Computadores Pessoais Internet
6
![Page 7: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/7.jpg)
12 anos
Internet Smartphones / Nuvem / Mobile
7
![Page 8: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/8.jpg)
“The more advanced we become the faster we become at
advancing”
"Marco Annunziata: Welcome to the Age of the Industrial Internet"8
![Page 9: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/9.jpg)
9
![Page 10: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/10.jpg)
10
![Page 11: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/11.jpg)
4.7 bilhões de
página
A Web é gigante hoje
Era do Zetabyte*
* 1000 Exabytes
36.000 anos de video
em hd
Últimos
20 anos
http://www.livescience.com/54094-how-big-is-the-internet.html
11
![Page 12: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/12.jpg)
Nossa noção de sucesso mudou…
12
![Page 13: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/13.jpg)
13
![Page 14: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/14.jpg)
14
![Page 15: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/15.jpg)
http://press.spotify.com/us/category/pictures/
15
![Page 16: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/16.jpg)
16
![Page 17: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/17.jpg)
Como isso é possível ?
17
![Page 18: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/18.jpg)
18
![Page 19: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/19.jpg)
19
![Page 20: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/20.jpg)
Pilares
Disponibilidade Manutenção Escalável
Economia
20
![Page 21: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/21.jpg)
Escalabilidade Horizontal
Escalabilidade VerticalX
21
![Page 22: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/22.jpg)
22
![Page 23: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/23.jpg)
Porque Google Cloud Platform ?
23
![Page 24: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/24.jpg)
O Google Cloud Platform é construído na mesma infraestrutura que os serviços do google rodam
• Rede Global • Redundância • Infraestrutura inovadora
24
![Page 25: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/25.jpg)
25
![Page 26: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/26.jpg)
Regiões
26
![Page 27: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/27.jpg)
Vantagens
Preço (Cobrança por minuto)
Maquinas Customizáveis (até GPU) Facilmente Escalável
Developer Experience ❤
27
![Page 28: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/28.jpg)
28
![Page 29: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/29.jpg)
29
![Page 30: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/30.jpg)
Estudo de Caso
30
![Page 31: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/31.jpg)
Estudo de CasoPacktPub Notifier
Backend
App
IoT
31
![Page 32: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/32.jpg)
32
![Page 33: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/33.jpg)
Node.js
• Engine V8 do Google Chrome
• Rápido e escalável
• Orientado a eventos e não bloqueante
• Muito leve
• Perfeito para aplicações real-time
33
![Page 34: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/34.jpg)
É apenas Javascript
• Navegador
• Server side
• Desktop - Electron e NW
• Mobile - Cordova, Ionic, React Native, etc.
• Embarcado - Mongoose OS e Espruino
• Geladeira, torradeira, etc
34
![Page 35: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/35.jpg)
Ecossistema rico
• Muitas ferramentas feitas com Node
• Webpack ❤
• Gerenciadores de pacotes
• NPM e Yarn
• Editores
• Visual Studio Code, Atom, Webstorm
• Mais de 450 mil pacotes no npmjs.com
35
![Page 36: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/36.jpg)
Web Frameworks
• Express.js
• Hapi.js
• Koa
36
![Page 37: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/37.jpg)
Stack escolhido
• Hapi.js no Backend
• Aplicativos iOS e Android nativos com React Native
• Vários serviços do GCP
• Database, Cron, Tasks, HTTPS, etc
37
![Page 38: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/38.jpg)
PacktPub Notifier v0.1
iOS e Android
Packt Publishing
Website
Backend
38
![Page 39: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/39.jpg)
Hello World com HapiJS
const Hapi = require('hapi'); const server = new Hapi.Server();
server.connection({ host: '0.0.0.0', port: process.env.PORT || 8080 });
server.route({ method: 'GET', path: '/api/tasks/fetch-books', config: { handler: (request, reply) => { reply({ message: 'Hello World'}) } } });
server.start((err) => { if (err) { throw err; } });
39
![Page 40: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/40.jpg)
Web Scrapping
'use strict';
const cheerio = require('cheerio'); const fetch = require('node-fetch'); const urlFreeLearning = 'http://www.packtpub.com/packt/offers/free-learning/';
class PackPubCrawler { /* Código omitido */
async fetchBooksFromPacktPub() { let body = await this.fetchPageBody(); let documentSelector = cheerio.load(body);
let currentBook = this.scrapeCurrentBook(documentSelector);
return { currentBook }; } }
module.exports = PackPubCrawler;
40
![Page 41: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/41.jpg)
Api de Livros
'use strict';
const Boom = require('boom'); const PackPubCrawler = require('../PacktPubCrawler');
module.exports = { method: 'GET', path: '/api/books', config: { handler: async (request, reply) => { try {
const crawler = new PackPubCrawler(); let books = await crawler.fetchBooksFromPacktPub(); console.log('Success Fetching Books'); reply({ books }); } catch (e) { console.log('Error Fetching Books', e); reply(Boom.badGateway('Xablau', e)) } } } }
41
![Page 42: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/42.jpg)
Api de Livros
42
![Page 43: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/43.jpg)
43
![Page 44: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/44.jpg)
Nuvem
IaaSInfrastructre as a Service
CaaSContainer/Cluster as a
Service
PaaSPlatform as a Service
SaaSSoftware as a Service
GoogleVocê
44
![Page 45: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/45.jpg)
Nuvem
IaaSInfrastructre as a Service
On Premise PaaSPlatform as a Service
SaaSSoftware as a Service
• Aplicação • Dados • Runtime • Middleware • SO • Virtualização • Servidores • Storage • Redes
• Aplicação • Dados • Runtime • Middleware • SO • Virtualização • Servidores • Storage • Redes
• Aplicação • Dados • Runtime • Middleware • SO • Virtualização • Servidores • Storage • Redes
• Aplicação • Dados • Runtime • Middleware • SO • Virtualização • Servidores • Storage • Redes
Gerenciado por você
Gerenciado magicamente45
![Page 46: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/46.jpg)
Google App Engine - Standard vs Flexible
46
![Page 47: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/47.jpg)
47
![Page 48: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/48.jpg)
48
![Page 49: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/49.jpg)
https://googlecloudplatform.github.io/google-cloud-node
49
![Page 50: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/50.jpg)
1. Instale o Cloud SDK (cli)
2. Configure o app.yaml
3. cloud app deploy
https://cloud.google.com/sdk/
runtime: nodejs env: flex
skip_files: - ^node_modules$
resources: cpu: .5 memory_gb: .6 disk_size_gb: 10
manual_scaling: instances: 1
#automatic_scaling: # min_num_instances: 1 # max_num_instances: 1 # cool_down_period_sec: 120 # cpu_utilization: # target_utilization: 0.8
50
![Page 51: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/51.jpg)
PacktPub Notifier v0.1 - Fail
51
![Page 52: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/52.jpg)
Really slow rest api
52
![Page 53: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/53.jpg)
PacktPub Notifier v0.2
iOS e Android
Packt Publishing
Website
Storage Database
53
![Page 54: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/54.jpg)
We need a database
54
![Page 55: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/55.jpg)
NoSQL escolhido - Flexibilidade
55
![Page 56: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/56.jpg)
Serviço de Livros - Salvandoconst Datastore = require('@google-cloud/datastore');
// Instantiates a client const datastore = Datastore({ projectId: config.projectId });
const kind = 'Book';
class BookService { /* Codigo omitido */ async save(book) { let slug = this.getSlug(book); book.slug = slug; const bookKey = datastore.key([kind, slug]);
let bookEntity = { key: bookKey, data: book };
return datastore.save(bookEntity); } }
56
![Page 57: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/57.jpg)
Serviço de Livros - Consulta
// The kind for the new entity const kind = 'Book';
class BookService { /* Codigo omitido */
async all() { const query = datastore.createQuery(kind) .order('date', { descending: true }); let results = await datastore.runQuery(query); return results[0]; } }
57
![Page 58: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/58.jpg)
API de tarefa de busca e armazenamento de livros
module.exports = { method: 'GET', path: '/api/tasks/fetch-books', config: { handler: async (request, reply) => { const crawler = new PackPubCrawler(); let books = await crawler.fetchBooksFromPacktPub(); const service = new BooksService();
let slug = service.getSlug(books.currentBook); let exists = await service.exists(slug); if (!exists) { // Save new book await service.save(books.currentBook); //TODO: Notify clients that subscribed to this } reply({ books }); } } }
58
![Page 59: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/59.jpg)
API de Livros
const BooksService = require('../BooksService');
module.exports = { method: 'GET', path: '/api/books', config: { handler: async (request, reply) => { let service = new BooksService(); let books = await service.all(); reply({ books }); } } }
59
![Page 60: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/60.jpg)
API de Livros
60
![Page 61: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/61.jpg)
Datastore console
61
![Page 62: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/62.jpg)
PacktPub Notifier v0.2
iOS e Android
Packt Publishing
Website
62
![Page 63: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/63.jpg)
Agendamento de tarefas
Como fazer em ambiente distribuido ?
63
![Page 64: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/64.jpg)
Agendamento de tarefas
64
![Page 65: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/65.jpg)
Agendamento de tarefas - Gambiarra
65
![Page 66: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/66.jpg)
1. Sintaxe do unix cron ou mais natural
2. Configure um cron.yaml
3. cloud app deploy cron.yaml
Google App Engine - cron.yaml
cron: - description: fetch book every 30 mins url: /api/tasks/fetch-books schedule: every 30 mins target: default
66
![Page 67: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/67.jpg)
Google App Engine - cron.yaml
67
![Page 68: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/68.jpg)
Google App Engine - Logs, monitoramento e trace
1. Pacote @google/cloud-trace
2. Just works
if (process.env.NODE_ENV === 'production') { require('@google/cloud-trace').start(); }
68
![Page 69: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/69.jpg)
Google App Engine - Logs, monitoramento e trace
69
![Page 70: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/70.jpg)
Google App Engine - Logs, monitoramento e trace
70
![Page 71: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/71.jpg)
PacktPub Notifier v0.5
iOS e Android
Packt Publishing
Website
71
![Page 72: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/72.jpg)
Push Notifications
72% Abrem o app quando
recebe uma notificação
72
![Page 73: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/73.jpg)
Fluxo Push Notifications
Android iOS
Backend
GCM APNS
Device Token
73
![Page 74: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/74.jpg)
74
![Page 75: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/75.jpg)
75
![Page 76: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/76.jpg)
const admin = require("firebase-admin");
let credential = admin.credential.applicationDefault();
admin.initializeApp({ credential, databaseURL: "https://iot-bootcamp-158521.firebaseio.com" });
const messaging = admin.messaging();
const TOPIC_NAME = 'receive_book_notification';
class BookNotificationService {
async notifyAllClients(book) { var payload = { notification: { title: `${book.title} is free today!`, body: `Open the app to claim this book.` } }; return messaging.sendToTopic(TOPIC_NAME, payload); } }
Firebase Admin SDK
76
![Page 77: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/77.jpg)
Client Side - React Native
import Firestack from 'react-native-firestack'; import FCM from 'react-native-fcm';
const TOPIC_NAME = 'receive_book_notification';
async subscribe() { let { wantsToReceiveNotifications } = this.state; if (!wantsToReceiveNotifications) { FCM.requestPermissions(); FCM.subscribeToTopic(TOPIC_NAME); firestack.analytics.logEventWithName('subscribe', {}); } else { FCM.unsubscribeFromTopic(TOPIC_NAME); firestack.analytics.logEventWithName('unsubscribe', {}); } this.setState({ wantsToReceiveNotifications: !wantsToReceiveNotifications }) }
77
![Page 78: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/78.jpg)
Firebase Analytics e Push
78
![Page 79: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/79.jpg)
iOS e Android
PacktPub Notifier v0.8
Packt Publishing
Website
79
![Page 80: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/80.jpg)
80
![Page 81: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/81.jpg)
Fluxo Alexa Custom Skill
Backend
Usuário
Alexa, Ask Packt Publishing Fan what’s the book of the day
The free book of the day is title Learning Raspberry Pi
Alexa SkillHTTPS
81
![Page 82: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/82.jpg)
Api de integração com a Alexaconst BooksService = require('../BooksService');
module.exports = { method: 'POST', path: '/api/alexa', config: { handler: async (request, reply) => { let service = new BooksService(); let book = await service.getLastBook(); let message = `The free book of the day is titled ${book.title}`; reply({ "version": "1.0", "sessionAttributes": {}, "response": { "shouldEndSession": true, "outputSpeech": { "type": "SSML", "ssml": `<speak>${message}</speak>` }, } }); } } } 82
![Page 83: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/83.jpg)
PacktPub Notifier - Final
iOS e Android
Amazon Echo
Alexa Custom
Skill
Packt Publishing
Website
83
![Page 84: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/84.jpg)
Futuro ?
84
![Page 85: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/85.jpg)
• Funções escritas em NodeJS • Escalabilidade automatica • Serverless • Podem ser chamadas por eventos
• Mudanças de arquivo, banco, http, etc.
85
![Page 86: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/86.jpg)
Serverless
86
![Page 87: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/87.jpg)
Duvidas ?
Alvaro Viebrantz aviebrantz.com.br @alvaroviebrantz medium.com/iot-bootcamp
https://github.com/alvarowolfx/packtpub-notifier-gcp
87
![Page 88: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/88.jpg)
Links úteis
• https://cloud.google.com/sdk/
• https://developers.google.com
• https://cloud.google.com/products/
• https://firebase.google.com
• https://nodejs.org/en/
• https://developer.amazon.com
• https://facebook.github.io/react-native/
88
![Page 89: Backend, app e internet das coisas com NodeJS no Google Cloud Platform](https://reader030.vdocument.in/reader030/viewer/2022021500/58e4a1771a28aba3458b60f5/html5/thumbnails/89.jpg)
Referência
• https://pt.slideshare.net/FrancescoMarchitelli1/google-cloud-platform-47074110
• https://www.infoq.com/br/presentations/plataforma-digital-com-google-cloud-platform
• https://cloud.google.com/icons/
89