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 =)

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

  • 1.
    Soluções escaláveis com MicrosoftOrleans Vinicius Quaiato Mahmoud Ali Lambda3
  • 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
  • 5.
  • 6.
    Alto tráfego • Suaaplicação recebe uma grande quantidade de acessos (sazonal ou constante) • Seu servidor não é capaz de atender todas as requisições
  • 7.
  • 11.
    Possíveis gargalos • Persistênciade dados • Recuperação de estado • Serviços centralizadores • Operações computacionalmente custosas
  • 12.
    Diminuindo gargalos • Analisaras tecnologias de armazenamento • Cache • Otimizações no front-end • Pré-compilação de views • Processamento em fila • Mudança de paradigma arquitetural
  • 13.
  • 14.
    Modelagem concorrente • Granularizara aplicação • Independência para executar • Comunicação assíncrona
  • 15.
  • 16.
    Modelagem concorrente • Unidadesisoladas • Estado interno local • Comportamento • Comunicação através de mensagens • Processamento distribuído
  • 18.
    Actor Model • Padrãocriado 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
  • 19.
  • 20.
    Como pensar emActors? • 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 sempresimples? • 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?
  • 22.
  • 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ávelpor 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
  • 28.
    Recursos • Stateless • Stateful •At-Most-Once • At-Least-Once • Timers • Reminders • Persistência transparente
  • 29.
  • 30.
    Quem está usando? •Microsoft • Azure • Skype • 343 Industries • Halo 4, 5, Reach • Visa
  • 32.
    Ah, quem somosnó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
  • 33.

Notas do Editor

  • #25 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.
  • #26 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.
  • #29 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.