121
arquiteturas modernas um panorama sobre velhas necessidades e novas oportunidades 2011 @vquaiato Saturday, September 10, 11

Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Embed Size (px)

DESCRIPTION

Palestra mostrando novidades da plataforma .NET/Microsoft que possibilitam a criação de arquiteturas modernas resolvendo problemas antigos e frequentes. Panorama sobre a utilização de Cloud Computing, computação paralela, computação assíncrona, mobilidade, nosql e muito mais.

Citation preview

Page 1: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

arquiteturas modernas

um panorama sobre velhas necessidades e novas oportunidades

2011

@vquaiatoSaturday, September 10, 11

Page 2: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

@vquaiato(vinicius quaiato)

programadorpalestrante

paisantista

entusiastaconsultor

etc, etc, etc

Saturday, September 10, 11

Page 3: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

http://viniciusquaiato.comhttp://crafters.com.br

[email protected]

@vquaiato(vinicius quaiato)

Saturday, September 10, 11

Page 4: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

um blog

Saturday, September 10, 11

Page 5: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

vazio e sem retorno de valor

Saturday, September 10, 11

Page 6: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

discussão sobre arquitetura e design

de software

Saturday, September 10, 11

Page 7: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

.NET Architects Days

Saturday, September 10, 11

Page 8: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

pensar

Saturday, September 10, 11

Page 9: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

o mundo do software é repleto de

possibilidades

Saturday, September 10, 11

Page 10: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

mas a indústria de software pode sofrer

alguns apagões

Saturday, September 10, 11

Page 11: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

em software existem muitas soluções

Saturday, September 10, 11

Page 12: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

mas muitas vezes não se pagam

Saturday, September 10, 11

Page 13: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

há 10 anos você imaginaria ter 100 máquinas para

rodar seu sistema?

Saturday, September 10, 11

Page 14: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

<lembrando>

Saturday, September 10, 11

Page 15: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 16: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 17: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 18: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 19: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 20: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

</lembrando>

Saturday, September 10, 11

Page 21: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

há 5 anos você imaginaria?

Saturday, September 10, 11

Page 22: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

e se falarmos em infinitas máquinas?

Saturday, September 10, 11

Page 23: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

hoje você pode não só imaginar: mas ter!

Saturday, September 10, 11

Page 24: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 25: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 26: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

cloud computing

Saturday, September 10, 11

Page 27: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

mas o que é cloud computing?

Saturday, September 10, 11

Page 28: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

existem diferentes significados

Saturday, September 10, 11

Page 29: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

existem diferentes significados

pontos de vista

Saturday, September 10, 11

Page 30: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

“Cloud computing é a entrega de computação como

um serviço ao invés de um produto...” - (Wikipedia)

Saturday, September 10, 11

Page 31: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

“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

Page 32: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

“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

Page 33: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

“...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

Page 34: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

em comum

paga-se pelo uso

capacidades elásticas

interface self-service

recursos são abstraídos

Saturday, September 10, 11

Page 35: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 36: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 37: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 38: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 39: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 40: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 41: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 42: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 43: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 44: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 45: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 46: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

você já se questionou sobre armazenamento

de dados?

Saturday, September 10, 11

Page 47: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

há décadas fazemos da mesma maneira

Saturday, September 10, 11

Page 48: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

<lembrar>

Saturday, September 10, 11

Page 49: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

o mundo do software é repleto de

possibilidades

Saturday, September 10, 11

Page 50: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

</lembrar>

Saturday, September 10, 11

Page 51: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

estamos tão acostumados com

problemas

Saturday, September 10, 11

Page 52: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

fechamos os olhos para

(novas) soluções

Saturday, September 10, 11

Page 53: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

há algum tempo você tem ouvido um

zumbido

Saturday, September 10, 11

Page 54: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

opções não relacionais estão ganhando força

Saturday, September 10, 11

Page 55: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

@porcelliSaturday, September 10, 11

Page 56: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

cada uma destas opções resolve um

problema específico

Saturday, September 10, 11

Page 57: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

o objetivo do nosql não é anular o banco

relacional

Saturday, September 10, 11

Page 58: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

algumas possibilidades

Saturday, September 10, 11

Page 59: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

já pensou em realizar o login usando um banco key-value?

Saturday, September 10, 11

Page 60: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

os amigos/seguidores do seu sistema podem ser feitos

com um banco orientado a grafos

Saturday, September 10, 11

Page 61: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

<reflexão>

Saturday, September 10, 11

Page 62: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

atualmente todo sistema quer ter o conceito de

amigos/seguidores

Saturday, September 10, 11

Page 63: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

</reflexão>

Saturday, September 10, 11

Page 64: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

aquela aplicação cujo modelo não está bem

definido pode tirar proveito de um banco schemaless

Saturday, September 10, 11

Page 65: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 66: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

um dia alguém disse

Saturday, September 10, 11

Page 67: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

“um computador em cada casa”(gates, o bill)

Saturday, September 10, 11

Page 68: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

hoje mais do que isso temos um computador

em cada mão

Saturday, September 10, 11

Page 69: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 70: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 71: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 72: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

os dispositivos móveis já fazem(mesmo?)

parte das aplicações

Saturday, September 10, 11

Page 73: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

mantém as aplicações conosco, em qualquer lugar

Saturday, September 10, 11

Page 74: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

o backend em suas empresas devem se

conectar a estes devices

Saturday, September 10, 11

Page 75: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

backends registram push-notifications que são

recebidas em qualquer lugar

Saturday, September 10, 11

Page 76: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

sua aplicação deve estar preparada para suportar uma interface simples

com menos poder de processamento

Saturday, September 10, 11

Page 77: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

processamento na nuvem precisa começar a fazer parte da solução

Saturday, September 10, 11

Page 78: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

remotamente, deve ser possível tomar

decisões importantes

Saturday, September 10, 11

Page 79: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 80: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

quando você fica parado em uma fila

está perdendo tempo

Saturday, September 10, 11

Page 81: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

se tivesse uma forma de ser avisado somente na

sua vez tudo seria melhor

Saturday, September 10, 11

Page 82: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

a forma como fazemos isso(programação

assíncrona) pode não ser mais a melhor

Saturday, September 10, 11

Page 83: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

programação reativa pode nos ajudar a lidar com toda

essa complexidade

Saturday, September 10, 11

Page 84: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

(Rx)Saturday, September 10, 11

Page 85: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Reactive Extensions

Saturday, September 10, 11

Page 86: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

composição de aplicações assíncronas e baseadas em eventos

Saturday, September 10, 11

Page 87: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

sequências de dados representadas na forma

de observable sequences

Saturday, September 10, 11

Page 88: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

o padrão de observers notifica todos interessados sobre mudanças no fluxo de

dados

Saturday, September 10, 11

Page 89: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

asynchronous method pattern criado de

forma bastante simples

Saturday, September 10, 11

Page 90: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

opera-se com LINQ sobre estas sequências

Saturday, September 10, 11

Page 91: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

group, select, SelectMany, Throttle, TakeUntil, Retry, etc

Saturday, September 10, 11

Page 92: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

.NET, WP7, Silverlight e Javascript

Saturday, September 10, 11

Page 93: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

além do Rx o futuro do c# é async

Saturday, September 10, 11

Page 94: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

pensar de forma não blocante é importante, necessário e hoje muito

viável

Saturday, September 10, 11

Page 95: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 96: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

se jogarmos todo tráfego da marginal em uma única via: tudo para

Saturday, September 10, 11

Page 97: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

por isso criamos mais vias e paralelizamos

o tráfego

Saturday, September 10, 11

Page 98: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

há 10 anos tínhamos computadores single

core

Saturday, September 10, 11

Page 99: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

alguns tiveram um poderoso processador com Hyper-Threading

Saturday, September 10, 11

Page 100: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

hoje é quase padrão computadores com 2

ou mais núcleos

Saturday, September 10, 11

Page 101: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

suas aplicações são pensadas paras tirar o

máximo de proveito da máquina?

Saturday, September 10, 11

Page 102: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

criar aplicações multi threading é complicado

Saturday, September 10, 11

Page 103: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

para tirar o máximo de proveito em cenários

multi-core podemos usar o PLINQ

Saturday, September 10, 11

Page 104: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Parallel LINQ é a implementação paralela

do LINQ to objects

Saturday, September 10, 11

Page 105: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

a intenção é acelerar a execução de operações

em ambientes multi-core

Saturday, September 10, 11

Page 106: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

nenhum esforço adicional é requerido

Saturday, September 10, 11

Page 107: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

se a operação é mais custosa o PLINQ se

encarrega de executar da maneira tradicional

Saturday, September 10, 11

Page 108: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

Saturday, September 10, 11

Page 109: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

pensar fora da caixa

Saturday, September 10, 11

Page 110: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

estamos vivendo uma quebra de

paradigmas

Saturday, September 10, 11

Page 111: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

nuvem, paralelismo, assíncrono, nosql,

mobilidade, etc

Saturday, September 10, 11

Page 112: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

são realidades e não mais promessas

Saturday, September 10, 11

Page 113: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

não considerar estas evoluções é voltar

para 2001

Saturday, September 10, 11

Page 114: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

talvez você não precise de todas estas

opções sempre

Saturday, September 10, 11

Page 115: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

é muito importante conhecer a plataforma

e seus recursos

Saturday, September 10, 11

Page 116: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

hoje temos soluções possíveis para antigos

desafios

Saturday, September 10, 11

Page 117: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

é comum resistirmos às mudanças, às

“novidades”

Saturday, September 10, 11

Page 118: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

mas isso pode custar seu design e/ou

arquitetura

Saturday, September 10, 11

Page 119: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

abrace as mudanças

Saturday, September 10, 11

Page 120: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

obrigado <o/@vquaiato

[email protected]://viniciusquaiato.com

2011

@vquaiatoSaturday, September 10, 11

Page 121: Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato

• 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