.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
-
Upload
vinicius-quaiato -
Category
Technology
-
view
7.015 -
download
10
description
Transcript of .Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
arquiteturas modernas
um panorama sobre velhas necessidades e novas oportunidades
2011
@vquaiatoSaturday, September 10, 11
@vquaiato(vinicius quaiato)
programadorpalestrante
paisantista
entusiastaconsultor
etc, etc, etc
Saturday, September 10, 11
http://viniciusquaiato.comhttp://crafters.com.br
@vquaiato(vinicius quaiato)
Saturday, September 10, 11
um blog
Saturday, September 10, 11
vazio e sem retorno de valor
Saturday, September 10, 11
discussão sobre arquitetura e design
de software
Saturday, September 10, 11
.NET Architects Days
Saturday, September 10, 11
pensar
Saturday, September 10, 11
o mundo do software é repleto de
possibilidades
Saturday, September 10, 11
mas a indústria de software pode sofrer
alguns apagões
Saturday, September 10, 11
em software existem muitas soluções
Saturday, September 10, 11
mas muitas vezes não se pagam
Saturday, September 10, 11
há 10 anos você imaginaria ter 100 máquinas para
rodar seu sistema?
Saturday, September 10, 11
<lembrando>
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
</lembrando>
Saturday, September 10, 11
há 5 anos você imaginaria?
Saturday, September 10, 11
e se falarmos em infinitas máquinas?
Saturday, September 10, 11
hoje você pode não só imaginar: mas ter!
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
cloud computing
Saturday, September 10, 11
mas o que é cloud computing?
Saturday, September 10, 11
existem diferentes significados
Saturday, September 10, 11
existem diferentes significados
pontos de vista
Saturday, September 10, 11
“Cloud computing é a entrega de computação como
um serviço ao invés de um produto...” - (Wikipedia)
Saturday, September 10, 11
“Clouds são serviços que oferecem computação, rede e armazenamento.
O gerenciamento do hardware é totalmente abstraído de quem compra o serviço...” - McKinsey & Co. Report
Saturday, September 10, 11
“Cloud computing possui as seguintes características: (1) ilusão de recursos de
computação infinitos; (2) não há necessidade de um compromisso inicial;
(3) paga-se pelo uso, conforme for preciso” - UCBerkeley
Saturday, September 10, 11
“...um modelo onde paga-se pelo uso para ter disponibilidade, praticidade, e acesso sob demanda
a um pool de recursos de computação(rede, servidores, armazenamento, aplicações, serviços)
que podem ser rapidamente provisionados e liberados com um esforço mínimo” - National
Institute of Standards and Technology
Saturday, September 10, 11
em comum
paga-se pelo uso
capacidades elásticas
interface self-service
recursos são abstraídos
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
você já se questionou sobre armazenamento
de dados?
Saturday, September 10, 11
há décadas fazemos da mesma maneira
Saturday, September 10, 11
<lembrar>
Saturday, September 10, 11
o mundo do software é repleto de
possibilidades
Saturday, September 10, 11
</lembrar>
Saturday, September 10, 11
estamos tão acostumados com
problemas
Saturday, September 10, 11
fechamos os olhos para
(novas) soluções
Saturday, September 10, 11
há algum tempo você tem ouvido um
zumbido
Saturday, September 10, 11
opções não relacionais estão ganhando força
Saturday, September 10, 11
@porcelliSaturday, September 10, 11
cada uma destas opções resolve um
problema específico
Saturday, September 10, 11
o objetivo do nosql não é anular o banco
relacional
Saturday, September 10, 11
algumas possibilidades
Saturday, September 10, 11
já pensou em realizar o login usando um banco key-value?
Saturday, September 10, 11
os amigos/seguidores do seu sistema podem ser feitos
com um banco orientado a grafos
Saturday, September 10, 11
<reflexão>
Saturday, September 10, 11
atualmente todo sistema quer ter o conceito de
amigos/seguidores
Saturday, September 10, 11
</reflexão>
Saturday, September 10, 11
aquela aplicação cujo modelo não está bem
definido pode tirar proveito de um banco schemaless
Saturday, September 10, 11
Saturday, September 10, 11
um dia alguém disse
Saturday, September 10, 11
“um computador em cada casa”(gates, o bill)
Saturday, September 10, 11
hoje mais do que isso temos um computador
em cada mão
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
Saturday, September 10, 11
os dispositivos móveis já fazem(mesmo?)
parte das aplicações
Saturday, September 10, 11
mantém as aplicações conosco, em qualquer lugar
Saturday, September 10, 11
o backend em suas empresas devem se
conectar a estes devices
Saturday, September 10, 11
backends registram push-notifications que são
recebidas em qualquer lugar
Saturday, September 10, 11
sua aplicação deve estar preparada para suportar uma interface simples
com menos poder de processamento
Saturday, September 10, 11
processamento na nuvem precisa começar a fazer parte da solução
Saturday, September 10, 11
remotamente, deve ser possível tomar
decisões importantes
Saturday, September 10, 11
Saturday, September 10, 11
quando você fica parado em uma fila
está perdendo tempo
Saturday, September 10, 11
se tivesse uma forma de ser avisado somente na
sua vez tudo seria melhor
Saturday, September 10, 11
a forma como fazemos isso(programação
assíncrona) pode não ser mais a melhor
Saturday, September 10, 11
programação reativa pode nos ajudar a lidar com toda
essa complexidade
Saturday, September 10, 11
(Rx)Saturday, September 10, 11
Reactive Extensions
Saturday, September 10, 11
composição de aplicações assíncronas e baseadas em eventos
Saturday, September 10, 11
sequências de dados representadas na forma
de observable sequences
Saturday, September 10, 11
o padrão de observers notifica todos interessados sobre mudanças no fluxo de
dados
Saturday, September 10, 11
asynchronous method pattern criado de
forma bastante simples
Saturday, September 10, 11
opera-se com LINQ sobre estas sequências
Saturday, September 10, 11
group, select, SelectMany, Throttle, TakeUntil, Retry, etc
Saturday, September 10, 11
.NET, WP7, Silverlight e Javascript
Saturday, September 10, 11
além do Rx o futuro do c# é async
Saturday, September 10, 11
pensar de forma não blocante é importante, necessário e hoje muito
viável
Saturday, September 10, 11
Saturday, September 10, 11
se jogarmos todo tráfego da marginal em uma única via: tudo para
Saturday, September 10, 11
por isso criamos mais vias e paralelizamos
o tráfego
Saturday, September 10, 11
há 10 anos tínhamos computadores single
core
Saturday, September 10, 11
alguns tiveram um poderoso processador com Hyper-Threading
Saturday, September 10, 11
hoje é quase padrão computadores com 2
ou mais núcleos
Saturday, September 10, 11
suas aplicações são pensadas paras tirar o
máximo de proveito da máquina?
Saturday, September 10, 11
criar aplicações multi threading é complicado
Saturday, September 10, 11
para tirar o máximo de proveito em cenários
multi-core podemos usar o PLINQ
Saturday, September 10, 11
Parallel LINQ é a implementação paralela
do LINQ to objects
Saturday, September 10, 11
a intenção é acelerar a execução de operações
em ambientes multi-core
Saturday, September 10, 11
nenhum esforço adicional é requerido
Saturday, September 10, 11
se a operação é mais custosa o PLINQ se
encarrega de executar da maneira tradicional
Saturday, September 10, 11
Saturday, September 10, 11
pensar fora da caixa
Saturday, September 10, 11
estamos vivendo uma quebra de
paradigmas
Saturday, September 10, 11
nuvem, paralelismo, assíncrono, nosql,
mobilidade, etc
Saturday, September 10, 11
são realidades e não mais promessas
Saturday, September 10, 11
não considerar estas evoluções é voltar
para 2001
Saturday, September 10, 11
talvez você não precise de todas estas
opções sempre
Saturday, September 10, 11
é muito importante conhecer a plataforma
e seus recursos
Saturday, September 10, 11
hoje temos soluções possíveis para antigos
desafios
Saturday, September 10, 11
é comum resistirmos às mudanças, às
“novidades”
Saturday, September 10, 11
mas isso pode custar seu design e/ou
arquitetura
Saturday, September 10, 11
abrace as mudanças
Saturday, September 10, 11
obrigado <o/@vquaiato
[email protected]://viniciusquaiato.com
2011
@vquaiatoSaturday, September 10, 11
• http://www.slideshare.net/alexandre_porcelli/nosql-mstechday-so-paulo/
• http://viniciusquaiato.com/blog/category/windows-azure/
• http://www.microsoft.com/windowsazure/
• http://www.slideshare.net/Guppers/im-cloud-confused
• http://www.slideshare.net/jamesbroberg/ introduction-to-cloud-computing- ccgrid-2009
• http://soapatterns.org/
• http://www.slideshare.net/simonguest/ patterns-for-cloud-computing
• http://channel9.msdn.com/Series/Rx-Workshop/Rx-Workshop-Event-Processing
• http://msdn.microsoft.com/en-us/magazine/cc163329.aspx
• http://msdn.microsoft.com/en-us/library/dd997399.aspx
• http://viniciusquaiato.com/blog/plinq-paralelismo-no-net-4-com-parallel-linq/
• http://weblogs.asp.net/gunnarpeipman/archive/2010/01/31/net-framework-4-0-comparing-linq-and-plinq-performance.aspx
• http://msdn.microsoft.com/en-us/library/hh242985(v=VS.103).aspx
• http://en.wikipedia.org/wiki/Reactive_programming
• http://jesseliberty.com/reactive-extensionsindex/
• http://www.archive.org/web/web.php
Saturday, September 10, 11