Palestra e debate sobre
Arquitetura de Software
Sobre o DNAD2013
Por André Zanatta Borgonovo
Programmer's Happy Day!
Desenvolvedor Sênior
@azborgonovo
azborgonovo@gmail.com
André Zanatta Borgonovo
Agenda
Um Case de Machine Learning
Implementando RESTful SOA com DDD
Construindo uma API de dados esportivos que responde ...
.NET Architects Days 2013
• MAIOR evento de arquitetura de software do Brasil
• Sem fins lucrativos
• Assuntos técnicos, c...
Disclaimer
AS INFORMAÇÕES E OPINÕES EXPRESSAS NESTA APRESENTAÇÃO SÃO DE
RESPONSABILIDADE DO PRÓPRIO AUTOR. EM MOMENTO E DE...
Um Case de Machine Learning
Por Guilherme Silveira
• Métodos
• Regressão linear
• Polinômios
• Demais funções
• Algoritmos...
Um Case de Machine Learning
Possíveis perguntas para um robô:
• Estou pagando um preço justo por
este produto?
• Qual seri...
Implementando RESTful SOA com DDD
Por Daniel Moreira Yokoyama
Behavior-centric
Data-centric
?
REST
DDD
Implementando RESTful SOA com DDD
Domain-Driven Design
• Pareamento entre negócio, modelo e
código
• NÃO é apenas o uso de...
Construindo uma API de dados esportivos que
responde a 6000 req/s
Por Rafael Martins
NGINX
Sobre
O Nginx é um servidor web rápido, leve, e
com inúmeras possibilidades de configuração
para melhoria performanc...
Considerações sobre APIs
Consistência
• Seu cliente é um desenvolvedor
• Dados consistentes
• Informações claras
• Boa doc...
Arquitetura evolutiva na prática
Por Denis Ferrari
Questões:
• O que fazer?
• Quando fazer?
• Em que ordem fazer?
• Qualid...
O que aprendi em 5 anos de pesquisa em TDD?
Por Mauricio Aniche
“Dizem que TDD melhora o design
de um software. Mas como e...
Respostas e Conclusões
"TDD dá retorno constante sobre os
possíveis problemas existentes no
atual projeto de classes. É ta...
Desenvolvendo aplicações acessíveis na plataforma .NET
Por Alexandre Santos Costa
“Uma aplicação acessível é aquela
que at...
Desenvolvendo aplicações acessíveis na plataforma .NET
Desenvolvimento
Web standards
Semântica
ARIA
(Accessible Rich Inter...
Checklist de Acessibilidade
 Etiquetar todos elementos
 Navegação por teclados
 Esquema de cores
 Verificação com leit...
Desenvolvendo aplicações acessíveis na plataforma .NET
“Para uma pessoa sem deficiência a
tecnologia tornaram as coisas fá...
Survey sobre Programação Concorrente com .NET
Por Fabio Galuppo Ideias
• Era dos multicores
• Novos dispositivos
• Economi...
CQRS aplicado para construção de aplicações de
alto desempenho usando Windows Azure
Por Elemar Junior
Command-query Separa...
Command-query Responsability Segregation
Quando é aplicável?
Em domínios colaborativos:
• Conjunto amplo de agentes
(usuár...
CQRS aplicado para construção de aplicações de
alto desempenho usando Windows Azure
Painel de Programação Funcional
Participantes
• Elemar Jr.
• Fabio Galuppo
• Pedro Teixeira
• Vinicius Hana
• Plínio Baldu...
Painel de Programação Funcional
Linguagens Funcionais
• Retornam funções ao invés de
valores
• Linq e Lambda são exemplos ...
Cálculo Fatorial
Exemplo em C# Exemplo em F#
Algumas conclusões pessoas & dicas
 É importante aprender sobre qualidade e padrões (DDD, TDD, CQRS...)
 Mas não se limi...
Obrigado!
“Para cultivar a sabedoria, é preciso força
interior. Sem crescimento interno, é difícil
conquistar a autoconfia...
Upcoming SlideShare
Loading in …5
×

Arquitetura de Software e o DNAD2013

469 views
295 views

Published on

Palestra e debate sobre arquitetura de software com base em algumas das palestras apresentadas no DNAD2013.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
469
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Arquitetura de Software e o DNAD2013

  1. 1. Palestra e debate sobre Arquitetura de Software Sobre o DNAD2013 Por André Zanatta Borgonovo
  2. 2. Programmer's Happy Day!
  3. 3. Desenvolvedor Sênior @azborgonovo azborgonovo@gmail.com André Zanatta Borgonovo
  4. 4. Agenda Um Case de Machine Learning Implementando RESTful SOA com DDD Construindo uma API de dados esportivos que responde a 6000 req/s Sobre o DNAD2013 Encerramento O que aprendi em 5 anos de pesquisa em TDD? Desenvolvendo aplicações acessíveis na plataforma .NET Survey sobre Programação Concorrente com .NET CQRS aplicado para construção de aplicações de alto desempenho usando Windows Azure Painel de Programação Funcional Arquitetura evolutiva na prática
  5. 5. .NET Architects Days 2013 • MAIOR evento de arquitetura de software do Brasil • Sem fins lucrativos • Assuntos técnicos, conceituais, práticos e acadêmicos • Interessados na melhoria da qualidade e produtividade em software • NÃO limita-se ao framework .NET ou a tecnologias Microsoft
  6. 6. Disclaimer AS INFORMAÇÕES E OPINÕES EXPRESSAS NESTA APRESENTAÇÃO SÃO DE RESPONSABILIDADE DO PRÓPRIO AUTOR. EM MOMENTO E DE MANEIRA ALGUMA PRETENDE-SE QUE AS INFORMAÇÕES PRESENTES NESTES SLIDES SEJAM CONSIDERADAS DE RESPONSABILIDADE OU OPNIÕES DIRETAS DE UM OU MAIS PALESTRANTES DO DNAD2013. ESTA APRESENTAÇÃO FOI FEITA COM O INTUITO DE COMPARTILHAR O CONHECIMENTO E EXPERIÊNCIA QUE PUDE TER NO DNAD2013.
  7. 7. Um Case de Machine Learning Por Guilherme Silveira • Métodos • Regressão linear • Polinômios • Demais funções • Algoritmos de Classificação • Capacidade de Evolução (treino) • Quantos mais dados, melhor a solução • Algoritmo para solução de problemas • Previsibilidade de resultados • Probabilidades e Estatísticas • Margens de erro • Redes neurais
  8. 8. Um Case de Machine Learning Possíveis perguntas para um robô: • Estou pagando um preço justo por este produto? • Qual seria o valor justo (estimativa)? • O e-mail é spam? • Essa movimentação é uma fraude? • Qual a nota o aluno vai tirar na prova final? • Quanto tempo os alunos precisarão para esta prova? • Como algum dado se agrupa?
  9. 9. Implementando RESTful SOA com DDD Por Daniel Moreira Yokoyama Behavior-centric Data-centric ? REST DDD
  10. 10. Implementando RESTful SOA com DDD Domain-Driven Design • Pareamento entre negócio, modelo e código • NÃO é apenas o uso de building blocks • Modelagem estratégica • Bounded Contexts • Context Map • Anti-Corruption Layer • Open Host Service • Published Language APIs RESTful HTTP Method URL GET /api/products GET /api/products/1 POST /api/products PUT /api/products/1 DELETE /api/products/1
  11. 11. Construindo uma API de dados esportivos que responde a 6000 req/s Por Rafael Martins
  12. 12. NGINX Sobre O Nginx é um servidor web rápido, leve, e com inúmeras possibilidades de configuração para melhoria performance • Consome menos memória que o Apache, pois é “event-based web server” ao invés de “process-based server” • Pode trabalhar junto com o Apache • Considerado o maior servidor HTTP, responsável por 12,81% dos servidores de HTTP e IMAP/POP3 (Netcraft/2013) Quem usa NGINX? • Dropbox • Netflix • Facebook • Netflix • SourceForge • Groupon • TED • Instagram • Intel • Wordpress ...
  13. 13. Considerações sobre APIs Consistência • Seu cliente é um desenvolvedor • Dados consistentes • Informações claras • Boa documentação Performance • Escalabilidade • Tamanho e quantidade de arquivos • Set mínimo e set máximo • Cache • Expiração ativa (remover vínculo entre tabelas) - NoSql • Consulta em memória
  14. 14. Arquitetura evolutiva na prática Por Denis Ferrari Questões: • O que fazer? • Quando fazer? • Em que ordem fazer? • Qualidade de um projeto = • Qualidade dos seus programadores • Não quantidade de programadores • Arquitetura tem seu momento • Keep It Simple, Stup#@! • Domain-Driven Design • Permitir que evolua
  15. 15. O que aprendi em 5 anos de pesquisa em TDD? Por Mauricio Aniche “Dizem que TDD melhora o design de um software. Mas como ele faz isso? Como acontece a sua ’magia’?” Mantra
  16. 16. Respostas e Conclusões "TDD dá retorno constante sobre os possíveis problemas existentes no atual projeto de classes. É tarefa do desenvolvedor perceber esses problemas e melhorar o projeto de acordo." "Se está difícil testar, é porque, provavelmente, há um problema de projeto ou implementação em se código." “O segredo é perceber, o mais rápido possível, o momento em que escrever o teste passou a ser uma tarefa difícil.” Mauricio Aniche
  17. 17. Desenvolvendo aplicações acessíveis na plataforma .NET Por Alexandre Santos Costa “Uma aplicação acessível é aquela que atende o maior tipo de limitações físicas e intelectuais” Alguns Recursos • Leitores de tela • Ampliadores de tela • Alto contraste • Teclado virtual
  18. 18. Desenvolvendo aplicações acessíveis na plataforma .NET Desenvolvimento Web standards Semântica ARIA (Accessible Rich Internet Application) Interações Teclado SIM Mouse NÃO para deficientes visuais Informações • Nome • Valor • Estado • Comportamento (roles) • Descrição imagens Problema Áreas dinâmicas
  19. 19. Checklist de Acessibilidade  Etiquetar todos elementos  Navegação por teclados  Esquema de cores  Verificação com leitores de tela
  20. 20. Desenvolvendo aplicações acessíveis na plataforma .NET “Para uma pessoa sem deficiência a tecnologia tornaram as coisas fáceis. Para uma pessoa com deficiência torna as coisas possíveis.” Mary Pat, IBM
  21. 21. Survey sobre Programação Concorrente com .NET Por Fabio Galuppo Ideias • Era dos multicores • Novos dispositivos • Economia de energia • Cloud computing • Abstrações do paralelismo (frameworks)
  22. 22. CQRS aplicado para construção de aplicações de alto desempenho usando Windows Azure Por Elemar Junior Command-query Separation (CQS) (Bertrand Meyer) • Command – Mudando o estado do objeto que o define, mas não retornando valor algum (métodos void); • Query – Retornando o resultado de algum processamento, mas não alterando o estado do objeto que o define (no side- effects) CQRS: Visão Geral
  23. 23. Command-query Responsability Segregation Quando é aplicável? Em domínios colaborativos: • Conjunto amplo de agentes (usuários); • Pequeno (proporcionalmente) conjunto de dados; • Onde o bloqueio de dados é necessário (concorrência); • Bloqueio de usuários não é necessário e/ou possível. Ideias • Novos dispositivos • Renderização no cliente, mas lógica mínima no cliente Tecnologias • MongoDb (NoSql) • Lucene (Indexação de busca) • Windows Azure
  24. 24. CQRS aplicado para construção de aplicações de alto desempenho usando Windows Azure
  25. 25. Painel de Programação Funcional Participantes • Elemar Jr. • Fabio Galuppo • Pedro Teixeira • Vinicius Hana • Plínio Balduino • Rodrigo Vidal Algumas linguagens funcionais
  26. 26. Painel de Programação Funcional Linguagens Funcionais • Retornam funções ao invés de valores • Linq e Lambda são exemplos de paradigma funcional no C# • Paradigmas de programação: • Programação estruturada • Programação orientada a objetos • Programação funcional • Linguagens multiparadigma Dica “Um bom programador não precisa conhecer várias linguagens, mas sim conhecer diversos paradigmas de programação”
  27. 27. Cálculo Fatorial Exemplo em C# Exemplo em F#
  28. 28. Algumas conclusões pessoas & dicas  É importante aprender sobre qualidade e padrões (DDD, TDD, CQRS...)  Mas não se limitar ou prender-se a estes padrões  Conhecer outros paradigmas de programação (aka linguagens funcionais)  Aprender como seu software utiliza seu hardware
  29. 29. Obrigado! “Para cultivar a sabedoria, é preciso força interior. Sem crescimento interno, é difícil conquistar a autoconfiança e a coragem necessárias. Sem elas, nossa vida se complica. O impossível torna-se possível com a força de vontade.” Dalai Lama

×