Soluções escaláveis com Microsoft Orleans

83 visualizações

Publicada em

Desenvolver soluções escaláveis pode ser mais simples do que pensamos. O Microsoft Orleans utiliza (Virtual) Actor Model para abstrair várias das complexidades envolvidas na criação de um sistema distribuído e escalável para que você possa focar no real problema que seu sistema se propõe a resolver

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
83
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • 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.
  • 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.
  • 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.
  • Soluções escaláveis com Microsoft Orleans

    1. 1. Soluções escaláveis com Microsoft Orleans Vinicius Quaiato Mahmoud Ali Lambda3
    2. 2. 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
    3. 3. 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
    4. 4. Você já viu isso?
    5. 5. 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
    6. 6. Escalabilidade horizontal
    7. 7. Possíveis gargalos • Persistência de dados • Recuperação de estado • Serviços centralizadores • Operações computacionalmente custosas
    8. 8. 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
    9. 9. Monolitos
    10. 10. Modelagem concorrente • Granularizar a aplicação • Independência para executar • Comunicação assíncrona
    11. 11. Actor Actor Actor Mensagem
    12. 12. Modelagem concorrente • Unidades isoladas • Estado interno local • Comportamento • Comunicação através de mensagens • Processamento distribuído
    13. 13. 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
    14. 14. Actor Actor Actor Mensagem Actor Actor Actor mensagem
    15. 15. 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?
    16. 16. É 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?
    17. 17. Implementações de Actor Model
    18. 18. 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
    19. 19. 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
    20. 20. 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
    21. 21. Recursos • Stateless • Stateful • At-Most-Once • At-Least-Once • Timers • Reminders • Persistência transparente
    22. 22. Demo (ou quase isso)
    23. 23. Quem está usando? • Microsoft • Azure • Skype • 343 Industries • Halo 4, 5, Reach • Visa
    24. 24. 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
    25. 25. Obrigado =)

    ×