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