Apresentará as motivações e lições aprendidas na criação de uma aplicação de larga escala orientada a serviços. Entenda como fatores como performance, estilos de comunicação e produtividade da equipe relacionam-se à estruturação de uma aplicação.
Ruby on Rails é um framework web. Mas essa é a parte menos importante. O que torna difícil a qualquer um de "clonar" essa iniciativa é que seria necessário clonar toda a comunidade. Sem o ecossistema que faz open source, trás preceitos ágeis, empreendedorismo, produtos, nada disso seria possível.
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
Palestra ministrada na Trilha de Testes do TDC2016 em 09 de julho de 2016. Nela mostro, na prática, como automatizar testes de unidade, API e Web com frameworks open-source em Ruby.
Curso sobre AngularJS, tratando deste ambiente e ferramentas modernas de desenvolvimento até o desenvolvimento de uma aplicação usando AngularJS. Curso em duas partes.
No final foram desenvolvidas duas aplicações que podem ser vistas nos links:
https://github.com/alvarowolfx/shopping-list
https://github.com/alvarowolfx/ng-pokedex
Containers para Software! A mais nova revolução, trazida ao mundo pela Dockers, rodando hoje na AWS. Venha conhecer esta inovadora e revolucionária tecnologia que vai mudar a forma como você desenvolve e implementa software.
Ruby on Rails é um framework web. Mas essa é a parte menos importante. O que torna difícil a qualquer um de "clonar" essa iniciativa é que seria necessário clonar toda a comunidade. Sem o ecossistema que faz open source, trás preceitos ágeis, empreendedorismo, produtos, nada disso seria possível.
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
Palestra ministrada na Trilha de Testes do TDC2016 em 09 de julho de 2016. Nela mostro, na prática, como automatizar testes de unidade, API e Web com frameworks open-source em Ruby.
Curso sobre AngularJS, tratando deste ambiente e ferramentas modernas de desenvolvimento até o desenvolvimento de uma aplicação usando AngularJS. Curso em duas partes.
No final foram desenvolvidas duas aplicações que podem ser vistas nos links:
https://github.com/alvarowolfx/shopping-list
https://github.com/alvarowolfx/ng-pokedex
Containers para Software! A mais nova revolução, trazida ao mundo pela Dockers, rodando hoje na AWS. Venha conhecer esta inovadora e revolucionária tecnologia que vai mudar a forma como você desenvolve e implementa software.
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na PráticaRenato Groff
Slides do minicurso gratuito promovido pela comunidade Azure na Prática no dia 09/05/2020, com foco em desenvolvimento Web utilizando serviços do Microsoft Azure.
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperCesar Romero
TDC 2018 - Trilha Delphi
Repositório https://github.com/cesarliws/full-stack-tdc-poa
Introdução as plataformas web e cloud.
Como criar um servidor back-end cloud com Delphi MVC Framework simples, eficiente, alto desempenho e de fácil manutenção.
Como criar front-end web rapidamente com a biblioteca React.js, para consumir o back-end criado com Delphi MVC Framework.
* Introdução a Plataforma Web e Cloud
* Servidor RESTful com DMVC Framework e FireDAC
* Introdução ao Desenvolvimento front-end JavaScript com React.js
Por que e como montamos um meio de pagamentos inteiramente em Node.js? Nessa palestra, falarei sobre o que aprendemos construindo um projeto relativamente grande em Node. Primeiro, os motivos que nos levaram a usá-lo no Pagar.me e porque Node foi a ferramenta certa para nós. Depois, sobre como montamos uma infraestrutura que une Node.js com tecnologias diferentes (MongoDB, MySQL e ElasticSearch) para usar a melhor parte de cada uma delas e ganhar versatilidade e escalabilidade.
Também abordarei os cuidados com código (patterns, code style, modules, etc), testes, integração contínua e segurança na stack que precisamos ter para criar algo grande com Node. Além disso, contarei um pouco sobre ele em produção, incluindo as ferramentas que usamos para rodar e monitorar nossa aplicação e a infraestrutura por trás dela. O objetivo é mostrar quando, como e porque utilizar o Node, e provar até onde ele pode chegar.
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
Python: mudando o modo de desenvolver para a internet (Marcos Daniel Petry)
A Palestra se propõem a apresentar várias soluções que a linguagem oferece para o desenvolvimento de aplicações voltadas para a internet e uma pequena comparação com alguns de seus “concorrentes” de outras linguagens. Fatores determinantes para a escolha de um framework ideal e também cases de sucesso de várias empresas, dos mais diversos portes, ao redor do mundo
Marcos Daniel Petry
Desenvolvedor Python/Django na Universidade de Caxias do Sul. Vice Presidente da Associação Python Brasil, associação cujo objetivo é apoiar e disseminar o uso da linguagem Python no país. Jogador de poker =P
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
Apresentação sobre o uso de Docker e serviços do Microsoft Azure como Web App for Containers e AKS (Azure Kubernetes Service) no desenvolvimento de soluções Web escaláveis. Palestra realizada em conjunto com o MVP Thiago Adriano em meetup promovido pelo grupo Azure Brasil em 28/08/2018 na cidade de São Paulo-SP.
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
Palestra realizada no TDC (The Developers Conference) 2018, edição de Porto Alegre. Se trata de uma apresentação sobre Serverless e o funcionamento das Azure Functions, ecossistemas e funcionalidades, com exemplos de código e um pouco mais.
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Renato Groff
Apresentação sobre o uso de Docker, Kubernetes e serviços do Microsoft Azure como Web App for Containers e AKS (Azure Kubernetes Service) no desenvolvimento de APIs REST escaláveis. Palestra realizada durante o DEVPIRA Festival, um evento promovido pela comunidade DevPiracicaba e que aconteceu em Piracicaba-SP no dia 01/12/2018.
O crescimento do mercado mobile e a necessidade de prover acesso a serviços existentes para desenvolvedores terceiros popularizaram o uso e disponibilização de APIs REST públicas. Com isso, pontos como escalabilidade, versionamento, desacoplamento e encapsulamento tornaram-se centrais no projeto de APIs. Nesta palestra será apresentado o conceito de APIs Hypermedia e como seu uso ajuda no projeto e implementação de APIs mais flexíveis.
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na PráticaRenato Groff
Slides do minicurso gratuito promovido pela comunidade Azure na Prática no dia 09/05/2020, com foco em desenvolvimento Web utilizando serviços do Microsoft Azure.
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperCesar Romero
TDC 2018 - Trilha Delphi
Repositório https://github.com/cesarliws/full-stack-tdc-poa
Introdução as plataformas web e cloud.
Como criar um servidor back-end cloud com Delphi MVC Framework simples, eficiente, alto desempenho e de fácil manutenção.
Como criar front-end web rapidamente com a biblioteca React.js, para consumir o back-end criado com Delphi MVC Framework.
* Introdução a Plataforma Web e Cloud
* Servidor RESTful com DMVC Framework e FireDAC
* Introdução ao Desenvolvimento front-end JavaScript com React.js
Por que e como montamos um meio de pagamentos inteiramente em Node.js? Nessa palestra, falarei sobre o que aprendemos construindo um projeto relativamente grande em Node. Primeiro, os motivos que nos levaram a usá-lo no Pagar.me e porque Node foi a ferramenta certa para nós. Depois, sobre como montamos uma infraestrutura que une Node.js com tecnologias diferentes (MongoDB, MySQL e ElasticSearch) para usar a melhor parte de cada uma delas e ganhar versatilidade e escalabilidade.
Também abordarei os cuidados com código (patterns, code style, modules, etc), testes, integração contínua e segurança na stack que precisamos ter para criar algo grande com Node. Além disso, contarei um pouco sobre ele em produção, incluindo as ferramentas que usamos para rodar e monitorar nossa aplicação e a infraestrutura por trás dela. O objetivo é mostrar quando, como e porque utilizar o Node, e provar até onde ele pode chegar.
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
Python: mudando o modo de desenvolver para a internet (Marcos Daniel Petry)
A Palestra se propõem a apresentar várias soluções que a linguagem oferece para o desenvolvimento de aplicações voltadas para a internet e uma pequena comparação com alguns de seus “concorrentes” de outras linguagens. Fatores determinantes para a escolha de um framework ideal e também cases de sucesso de várias empresas, dos mais diversos portes, ao redor do mundo
Marcos Daniel Petry
Desenvolvedor Python/Django na Universidade de Caxias do Sul. Vice Presidente da Associação Python Brasil, associação cujo objetivo é apoiar e disseminar o uso da linguagem Python no país. Jogador de poker =P
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
Apresentação sobre o uso de Docker e serviços do Microsoft Azure como Web App for Containers e AKS (Azure Kubernetes Service) no desenvolvimento de soluções Web escaláveis. Palestra realizada em conjunto com o MVP Thiago Adriano em meetup promovido pelo grupo Azure Brasil em 28/08/2018 na cidade de São Paulo-SP.
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
Palestra realizada no TDC (The Developers Conference) 2018, edição de Porto Alegre. Se trata de uma apresentação sobre Serverless e o funcionamento das Azure Functions, ecossistemas e funcionalidades, com exemplos de código e um pouco mais.
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Renato Groff
Apresentação sobre o uso de Docker, Kubernetes e serviços do Microsoft Azure como Web App for Containers e AKS (Azure Kubernetes Service) no desenvolvimento de APIs REST escaláveis. Palestra realizada durante o DEVPIRA Festival, um evento promovido pela comunidade DevPiracicaba e que aconteceu em Piracicaba-SP no dia 01/12/2018.
O crescimento do mercado mobile e a necessidade de prover acesso a serviços existentes para desenvolvedores terceiros popularizaram o uso e disponibilização de APIs REST públicas. Com isso, pontos como escalabilidade, versionamento, desacoplamento e encapsulamento tornaram-se centrais no projeto de APIs. Nesta palestra será apresentado o conceito de APIs Hypermedia e como seu uso ajuda no projeto e implementação de APIs mais flexíveis.
23. Doorkeeper
class
DoorkeeperWithRepresenter
include
Untied::Doorkeeper
def
initialize
watch
User,
:after_create,
represent_with:
UserRepresenter
watch
Course,
:after_create,
represent_with:
CourseRepresenter
end
end
34. Solução
• MongoDB
• Dados não estruturados
• Possibilidade de guardar estrutura de
dados complexas
• Mais facilmente escalável
• Boa biblioteca de consulta
35. Solução
• Aplicação isolada (fail-safe)
• Interação através de uma API REST
• em-http-request (requisições
assíncronas e paralelas)
36. Implementação inicial
• Cliente da API (VisClient) bem simples
• Uso do em-http-request para envio de
requisições de forma assíncrona e
paralela
• Falhas logadas em arquivos
• Uso extensivo de Observers
37. Requisições
• Assíncronas
• Logs em arquivos
def
send_async_info(params,
url)
if
EM.reactor_running?
do_request(params,
url,
true)
else
...
end
end
def
do_request(params,
url,
self_reactor)
http
=
EM::HttpRequest.new(url).post({:body
=>
params.to_json
})
http.callback
do
...
rescue
log.error
"log
goes
here..."
end
EM.stop
unless
self_reactor
end
http.errback
do
...
rescue
log.error
"log
goes
here..."
end
EM.stop
unless
self_reactor
end
end
38. Requisições
• Paralelas
• Logs em arquivos
def
send_multi_request
...
em
do
multi
=
EventMachine::MultiRequest.new
enrollments.each_with_index
do
|enroll,
idx|
multi.add
idx,
EM::HttpRequest.new(url).post({
:body
=>
enroll.to_json
})
end
multi.callback
do
multi.responses[:errback].each
do
|err|
logger.error
"logs
goes
here..."
end
EM.stop
unless
@running
end
end
end
41. Lições Aprendidas
• Não havia interface única para envio das
notificações, ou seja, código espalhado e
de difícil manutenção
• O em-http-request é construído em cima
do EventMachine
• Logar em arquivos com propósito de
recuperar falhas é uma bola de neve
42. Lições Aprendidas
• Lidar com requisições paralelas é difícil
• Pouco workers do nginx para muitas
requisições paralelas
• Difícil depuração
44. Atualmente
• Delayed Job lida com falhas e reenvios de
uma forma atômica
• VisClient responsável por criar Jobs e
construir os parâmetros
• Simples depuração e detecção de falhas
• Uso de representers
github.com/apotonick/roar
45. New vis client
• Envio de requisições
(Faraday)
• Lógica de criação de
jobs
• Lógica de
parametrização
def
self.notify_delayed(resource,
type,
args)
elements
=
args.respond_to?(:map)
?
args
:
[args]
notifier_builder
=
NotifierBuilder.new(resource,
type,
elements)
notifier_builder.build
end
46. Representer
module
Vis
module
EnrollmentVisRepresenter
include
Roar::Representer::JSON
property
:user_id
property
:subject_id
property
:space_id
property
:course_id
property
:created_at
property
:updated_at
def
space_id
self.subject.space.id
end
def
course_id
self.subject.space.course.id
end
end
end
48. Futuro
• Vis vai se tornar provedora de Relatórios e
Visualizações
• não haverá API de consulta
• relatórios e visualizações estarão em
Vis, front-end incluso
• inclusão será feita através de iframe