SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Soluções escaláveis com
Microsoft Orleans
Vinicius Quaiato
Mahmoud Ali
Lambda3
Esta palestra não é sobre
• A venda de um produto
• Deep dive em código
• Comparativos entre frameworks
• Gatinhos fofinhos
• Ensinar padrões arquiteturais super bacanas
• Repositórios
Esta palestra é sobre
• Conhecer algo novo
• (Brevemente) conhecer um novo padrão
• Ver um pouco de código (ilustrar exemplo)
• Pensar fora da caixa
• Gatinhos fofinhos
Você já viu isso?
Alto tráfego
• Sua aplicação recebe uma grande quantidade de acessos (sazonal
ou constante)
• Seu servidor não é capaz de atender todas as requisições
Escalabilidade horizontal
Possíveis gargalos
• Persistência de dados
• Recuperação de estado
• Serviços centralizadores
• Operações computacionalmente custosas
Diminuindo gargalos
• Analisar as tecnologias de armazenamento
• Cache
• Otimizações no front-end
• Pré-compilação de views
• Processamento em fila
• Mudança de paradigma arquitetural
Monolitos
Modelagem concorrente
• Granularizar a aplicação
• Independência para executar
• Comunicação assíncrona
Actor
Actor
Actor
Mensagem
Modelagem concorrente
• Unidades isoladas
• Estado interno local
• Comportamento
• Comunicação através de mensagens
• Processamento distribuído
Actor Model
• Padrão criado na década de 70 que propõe tratar “atores” como a
primitiva universal num sistema
• Atores devem poder
• tomar decisões locais
• criar mais atores
• enviar mensagens
• Atores devem ser isolados
Actor
Actor
Actor
Mensagem
Actor
Actor
Actor
mensagem
Como pensar em Actors?
• Pense em trechos de computação com estado
• Carrinho de compra?
• Processo de checkout?
• Rastreamento de carro/pet?
• Processador de achievements (gamification)?
• Saldo de cartão de crédito?
• Histórico de compras de cartão de crédito?
É tudo sempre simples?
• Complicações de aplicações concorrentes com actor model:
• Como subir novos atores?
• Como gerenciar o ciclo de vida desses atores?
• Como detectar que um ator morreu?
• Como se recuperar de erros?
• Como localizar um ator para enviar uma mensagem a ele?
Implementações de Actor Model
O que é o Microsoft Orleans?
• Framework .NET para a criação de aplicações distribuídas e
concorrentes.
• Implementa e disponibiliza o padrão (Virtual) Actor Models dentro
do .NET
• Como framework padrão Microsoft, facilita sua vida e abstrai uma
série de preocupações
Principais Benefícios
• Escalável por padrão
• Orleans lida com toda a complexidade na distribuição de sistemas,
escalando sua aplicação para o infinito e além
• Baixa latência
• Manter estado necessário em memória
• Concorrência simplificada
• Escreva código C# da forma como você está acostumado/a, mensagens
assíncronas entre Grains
Conceitos Chave
• Grains – Representação de Actors
• São a menor unidade computacional neste tipo de sistema
• Silos – Gerenciam os ciclos de vida dos Grains
• Não acessam estado de outros Grains diretamente
• Escaláveis de forma horizontal
• Leves
• Clients – Aplicações que fazem chamadas aos Grains
Recursos
• Stateless
• Stateful
• At-Most-Once
• At-Least-Once
• Timers
• Reminders
• Persistência transparente
Demo (ou quase isso)
Quem está usando?
• Microsoft
• Azure
• Skype
• 343 Industries
• Halo 4, 5, Reach
• Visa
Ah, quem somos nós..?
akamud (Mahmoud Ali)
• @akamud
• http://github.com/akamud
• Lambda3
• http://high5devs.com
• Mestre cervejeiro
Vinicius Quaiato
• @vquaiato
• http://github.com/vquaiato
• Lambda3
• Juiz de Magic
• Pai
• Ciclista
• Vegano
Obrigado =)

Mais conteúdo relacionado

Semelhante a Soluções escaláveis com Microsoft Orleans e Windows Azure

Clean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoClean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoPaulo Henrique da Silva
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGdjonatascostsa
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...André Leon S. Gradvohl
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemastaniamaciel
 
Resumo diagrama de casos de utilização
Resumo diagrama de casos de utilizaçãoResumo diagrama de casos de utilização
Resumo diagrama de casos de utilizaçãoMarco Coelho
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangElaine Naomi
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Rodrigo Vieira
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...iMasters
 

Semelhante a Soluções escaláveis com Microsoft Orleans e Windows Azure (20)

01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Métricas de Código
Métricas de CódigoMétricas de Código
Métricas de Código
 
Clean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoClean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimento
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMG
 
ORM e EF
ORM e EFORM e EF
ORM e EF
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 
Resumo diagrama de casos de utilização
Resumo diagrama de casos de utilizaçãoResumo diagrama de casos de utilização
Resumo diagrama de casos de utilização
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
CosmosDB from zero2hero
CosmosDB from zero2heroCosmosDB from zero2hero
CosmosDB from zero2hero
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Servidores de Aplicações
Servidores de AplicaçõesServidores de Aplicações
Servidores de Aplicações
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
 
Rational Unfied Process
Rational Unfied ProcessRational Unfied Process
Rational Unfied Process
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
 

Mais de Vinicius Quaiato

Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Vinicius Quaiato
 
Throughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBThroughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBVinicius Quaiato
 
Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Vinicius Quaiato
 
Microsoft loves open source
Microsoft loves open sourceMicrosoft loves open source
Microsoft loves open sourceVinicius Quaiato
 
Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Vinicius Quaiato
 
Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)Vinicius Quaiato
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoVinicius Quaiato
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoVinicius Quaiato
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaVinicius Quaiato
 
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiatoVinicius Quaiato
 
Patterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingPatterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingVinicius Quaiato
 
Windows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureWindows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureVinicius Quaiato
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do WindowsVinicius Quaiato
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do WindowsVinicius Quaiato
 
YAGNI, KISS e Over Patternization
YAGNI, KISS e Over PatternizationYAGNI, KISS e Over Patternization
YAGNI, KISS e Over PatternizationVinicius Quaiato
 
MSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios SolidMSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios SolidVinicius Quaiato
 
Orientação a Objetos e Design Patterns
Orientação a Objetos e Design PatternsOrientação a Objetos e Design Patterns
Orientação a Objetos e Design PatternsVinicius Quaiato
 

Mais de Vinicius Quaiato (20)

Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?
 
Throughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBThroughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DB
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017
 
Microsoft loves open source
Microsoft loves open sourceMicrosoft loves open source
Microsoft loves open source
 
Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)
 
Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp Londrina
 
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
 
Patterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingPatterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud Computing
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Windows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureWindows Phone 7 & Windows Azure
Windows Phone 7 & Windows Azure
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 
YAGNI, KISS e Over Patternization
YAGNI, KISS e Over PatternizationYAGNI, KISS e Over Patternization
YAGNI, KISS e Over Patternization
 
MSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios SolidMSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios Solid
 
Orientação a Objetos e Design Patterns
Orientação a Objetos e Design PatternsOrientação a Objetos e Design Patterns
Orientação a Objetos e Design Patterns
 
TDD no ASP.NET MVC
TDD no ASP.NET MVCTDD no ASP.NET MVC
TDD no ASP.NET MVC
 

Soluções escaláveis com Microsoft Orleans e Windows Azure

  • 1. Soluções escaláveis com Microsoft Orleans Vinicius Quaiato Mahmoud Ali Lambda3
  • 2.
  • 3. Esta palestra não é sobre • A venda de um produto • Deep dive em código • Comparativos entre frameworks • Gatinhos fofinhos • Ensinar padrões arquiteturais super bacanas • Repositórios
  • 4. Esta palestra é sobre • Conhecer algo novo • (Brevemente) conhecer um novo padrão • Ver um pouco de código (ilustrar exemplo) • Pensar fora da caixa • Gatinhos fofinhos
  • 6. Alto tráfego • Sua aplicação recebe uma grande quantidade de acessos (sazonal ou constante) • Seu servidor não é capaz de atender todas as requisições
  • 8.
  • 9.
  • 10.
  • 11. Possíveis gargalos • Persistência de dados • Recuperação de estado • Serviços centralizadores • Operações computacionalmente custosas
  • 12. Diminuindo gargalos • Analisar as tecnologias de armazenamento • Cache • Otimizações no front-end • Pré-compilação de views • Processamento em fila • Mudança de paradigma arquitetural
  • 14. Modelagem concorrente • Granularizar a aplicação • Independência para executar • Comunicação assíncrona
  • 16. Modelagem concorrente • Unidades isoladas • Estado interno local • Comportamento • Comunicação através de mensagens • Processamento distribuído
  • 17.
  • 18. Actor Model • Padrão criado na década de 70 que propõe tratar “atores” como a primitiva universal num sistema • Atores devem poder • tomar decisões locais • criar mais atores • enviar mensagens • Atores devem ser isolados
  • 20. Como pensar em Actors? • Pense em trechos de computação com estado • Carrinho de compra? • Processo de checkout? • Rastreamento de carro/pet? • Processador de achievements (gamification)? • Saldo de cartão de crédito? • Histórico de compras de cartão de crédito?
  • 21. É tudo sempre simples? • Complicações de aplicações concorrentes com actor model: • Como subir novos atores? • Como gerenciar o ciclo de vida desses atores? • Como detectar que um ator morreu? • Como se recuperar de erros? • Como localizar um ator para enviar uma mensagem a ele?
  • 23. O que é o Microsoft Orleans? • Framework .NET para a criação de aplicações distribuídas e concorrentes. • Implementa e disponibiliza o padrão (Virtual) Actor Models dentro do .NET • Como framework padrão Microsoft, facilita sua vida e abstrai uma série de preocupações
  • 24. Principais Benefícios • Escalável por padrão • Orleans lida com toda a complexidade na distribuição de sistemas, escalando sua aplicação para o infinito e além • Baixa latência • Manter estado necessário em memória • Concorrência simplificada • Escreva código C# da forma como você está acostumado/a, mensagens assíncronas entre Grains
  • 25. Conceitos Chave • Grains – Representação de Actors • São a menor unidade computacional neste tipo de sistema • Silos – Gerenciam os ciclos de vida dos Grains • Não acessam estado de outros Grains diretamente • Escaláveis de forma horizontal • Leves • Clients – Aplicações que fazem chamadas aos Grains
  • 26.
  • 27.
  • 28. Recursos • Stateless • Stateful • At-Most-Once • At-Least-Once • Timers • Reminders • Persistência transparente
  • 29. Demo (ou quase isso)
  • 30. Quem está usando? • Microsoft • Azure • Skype • 343 Industries • Halo 4, 5, Reach • Visa
  • 31.
  • 32. Ah, quem somos nós..? akamud (Mahmoud Ali) • @akamud • http://github.com/akamud • Lambda3 • http://high5devs.com • Mestre cervejeiro Vinicius Quaiato • @vquaiato • http://github.com/vquaiato • Lambda3 • Juiz de Magic • Pai • Ciclista • Vegano

Notas do Editor

  1. Escalabilidade transparente - utilizando Orleans as equipes de desenvolvimento focam-se em produzir código de negócios ao invés de lidar com as complexidades e lock, thread, semáforos, etc. Extensibilidade - Orleans integra-se com diferentes formas de persistência como SQL Premises, SQL Azure, Azure Storage. E caso necessário é possível extender o framework para utilizar formas customizadas de persistência.
  2. Grains - são a representação de Actors. São a menor unidade computacional neste tipo de sistema. Grains existem de forma isolada entre si. Não acessam estado de outros Grains diretamente. Para isso trocam mensagens. Escaláveis de forma horizontal. Leves. Silos - são nós que gerenciam o ciclo de vida de Grains. Nos Silos que Grains executam. Silos podem existem dentro de um cluster. São criados conforme as necessidades de escalabilidade. Clients - são as aplicações que realizam chamadas para os Grains. O Orleans abstrai todo o processo de criação, inicialização e destruição dos Grains. Clients podem ser aplicações Web, Mobile, IoT, Desktop, games, etc.
  3. Stateless - alguns grains, para efeito de performance podem ser marcados como sendo _Stateless_. Stateful - grains podem manter estado At-Most-Once - por padrão Orleans garante que as mensagens serão entregues no máximo uma vez. At-Least-Once - se recursos como retry estiverem habilitados, então Orleans garante que estas mensagens serão entregues pelo menos uma vez, não garantindo sua unicidade. Timers - Timers são formas de adicionar comportamento recorrente a um Grain. Eles precisam que o Grain esdteja ativo. Reminders - Reminders são parecidos com Timers, exceto que se um Grain não existir, ele será ativado. Eles estão vinculados a um Grain e não a uma astivação específica de um Grain.