SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
REST APIs
William Bruno
Desenvolvedor NodeJS
http://wbruno.com.br/
http://github.com/wbruno
wbrunom@gmail.com
@wbrunom
APIs REST escaláveis
1.Aplicação
2.Plataforma
3.Desenvolvimento
Facilidade de extender
Maior throughput com
baixo tempo de resposta
Replicável, automatizado, confiável
be REST
https://imasters.com.br/desenvolvimento/definicao-restricoes-e-beneficios-
modelo-de-arquitetura-rest/
1. Client-Server
2. Stateless
3. Cacheable
4. Uniform Interface
5. Layered System
6. Code On Demand
1
HTTP methods: [GET, POST, PUT, PATCH, DELETE, etc..]
HTTP Status Code [200, 201, 204, 400, 409, 422, etc]
Endpoints: [plural, hífen]
be REST
https://tools.ietf.org/html/rfc2616
1
Nível 0: Samba do criolo doido
Nível 1: Endpoints bem definidos
Nível 2: Uso correto do protocolo
Nível 3: HATEOAS
be RESTful
https://imasters.com.br/apis/restful-api-melhores-praticas/
níveis de maturidade
1,2
Configs/Libs (DRY)
package.json
“main”: “index.js",
"devDependencies": {
"eslint": "^4.7.2",
"eslint-config-blz": "git+ssh://git@github.com/belezanaweb/eslint-config-blz.git",
"nyc": "^11.2.0",
"nyc-config-blz": "git+ssh://git@github.com/belezanaweb/nyc-config-blz.git"
},
"dependencies": {
"node-config": "git+ssh://git@github.com/belezanaweb/node-config.git"
}
3
Auto scaling
Latência

(UNIX) Load Average

% de CPU

etc
Depende da aplicação
1
Sidekicks
Definições de arquitetura

Autenticação/Autorização
Banco de dados correto (MongoDB, SQL, ElasticSearch, etc)
RabbitMQ
Uso de cache
2
Cache
Redis (cache distribuido)
Memória
NGINX proxy cache

Browser
(onde?) depende da regra de negócio
https://github.com/wbruno/examples/tree/gh-pages/nodejs-in-production
2
tools/services
2,3
Monólito: 1 ou 2 máquinas
Microsserviços: 23 APIs diferentes, 46
máquinas (ou mais), 23 LBs ou mais.

Micro Services
https://www.thoughtworks.com/pt/insights/blog/microservices-nutshell
2
Monólito: 1 ou 2 máquinas
Microsserviços: 23 APIs diferentes, 46
máquinas (ou mais), 23 LBs ou mais.

Micro Services
https://www.thoughtworks.com/pt/insights/blog/microservices-nutshell
2
Design Patterns
SOLID
DRY/DIE

KISS

YAGNI (worse is better)
Bad smell
1,2,3
http://wbruno.com.br/php/boas-praticas-de-programacao-filosofias-de-desenvolvimento/
Inception
Bibliografia
https://imasters.com.br/desenvolvimento/definicao-restricoes-e-beneficios-
modelo-de-arquitetura-rest/
https://tools.ietf.org/html/rfc2616

https://imasters.com.br/apis/restful-api-melhores-praticas/
https://github.com/wbruno/examples/tree/gh-pages/nodejs-in-production
Obrigado

Mais conteúdo relacionado

Semelhante a APIs REST escaláveis

Api multiplataforma .Net Core
Api  multiplataforma .Net CoreApi  multiplataforma .Net Core
Api multiplataforma .Net CoreAlessandra Soares
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]Igor Santos
 
Rest fuuuu front-end
Rest fuuuu front-endRest fuuuu front-end
Rest fuuuu front-endIgor Santos
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?akamud
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebMatheus Fidelis
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoRenato Groff
 
Boas práticas com Web Services
Boas práticas com Web ServicesBoas práticas com Web Services
Boas práticas com Web ServicesEvaldo Junior
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lioLuis Moraes Junior
 
desenvolvimento-web-javascript
desenvolvimento-web-javascriptdesenvolvimento-web-javascript
desenvolvimento-web-javascriptFelipe Barros
 
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EE
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EEGUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EE
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EERodrigo Cândido da Silva
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaDiego Cavalca
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JSEduardo Nunes Pereira
 
[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistranoCode Experts Learning
 
Desbravando o REST com Python
Desbravando o REST com PythonDesbravando o REST com Python
Desbravando o REST com PythonMatheus Fidelis
 

Semelhante a APIs REST escaláveis (20)

Um pouco sobre APIs
Um pouco sobre APIsUm pouco sobre APIs
Um pouco sobre APIs
 
REST com Python
REST com PythonREST com Python
REST com Python
 
Api multiplataforma .Net Core
Api  multiplataforma .Net CoreApi  multiplataforma .Net Core
Api multiplataforma .Net Core
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
 
Rest fuuuu front-end
Rest fuuuu front-endRest fuuuu front-end
Rest fuuuu front-end
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação Web
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
 
Boas práticas com Web Services
Boas práticas com Web ServicesBoas práticas com Web Services
Boas práticas com Web Services
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lio
 
desenvolvimento-web-javascript
desenvolvimento-web-javascriptdesenvolvimento-web-javascript
desenvolvimento-web-javascript
 
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EE
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EEGUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EE
GUJavaSC - Alternativas ao Desenvolvimento do Back-end Mobile com Java EE
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativos
 
Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JS
 
[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano
 
Desbravando o REST com Python
Desbravando o REST com PythonDesbravando o REST com Python
Desbravando o REST com Python
 

Mais de William Bruno Moraes

Mais de William Bruno Moraes (10)

blz-ecomm.pdf
blz-ecomm.pdfblz-ecomm.pdf
blz-ecomm.pdf
 
Projetando um clube fidelidade para 50 milhões de clientes
Projetando um clube fidelidade para 50 milhões de clientesProjetando um clube fidelidade para 50 milhões de clientes
Projetando um clube fidelidade para 50 milhões de clientes
 
Javascript fullstasck
Javascript fullstasckJavascript fullstasck
Javascript fullstasck
 
Functional javascript
Functional javascriptFunctional javascript
Functional javascript
 
Nodejs in Production
Nodejs in ProductionNodejs in Production
Nodejs in Production
 
I Promise You
I Promise YouI Promise You
I Promise You
 
Boas Práticas em jQuery
Boas Práticas em jQueryBoas Práticas em jQuery
Boas Práticas em jQuery
 
Repensando seu CSS - Boas práticas e performance
Repensando seu CSS - Boas práticas e performanceRepensando seu CSS - Boas práticas e performance
Repensando seu CSS - Boas práticas e performance
 
Afinal o que é a web
Afinal o que é a webAfinal o que é a web
Afinal o que é a web
 
Responsive webdesign
Responsive webdesignResponsive webdesign
Responsive webdesign
 

APIs REST escaláveis