SlideShare uma empresa Scribd logo
1 de 28
Akka basics
Why | What | When | How …
Por que Akka?
Curiosidades
Akka é o nome de uma montanha na Suécia (Lapônia)
É também o nome de uma deusa que representava toda a
beleza do mundo para os antigos povos suecos.
Akka é reativo
Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• Responsivo e Resiliente parecem ser termos que soam bem e
são propriedades desejáveis. […] Na semana passada eu vi uma
demonstração da linguagem de programação Extempore
controlando uma parede 3D com interação através do toque
humano. A visualização era impressionante e a resposta ao toque
em tempo real. Se sistemas assim podem ser construídos por que
a maioria dos websites levam segundos para responder a
mudanças simples em páginas?
Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• A maioria das pessoas considera que escalável significa aumentar
escala. Pode ser tão importante aumentar quanto diminuir de
forma que um negócio possa economizar. Tenho clientes do
varejo e de aluguel de espaços para férias e feriados que
apresentam variações de 3 ordens de magnitude na necessidade
de recursos entre períodos tranquilos e períodos de pico.
Dimensionar recursos com base no uso de pico seria desperdício
ao ponto de tornar o negócio economicamente inviável.
Comentários sobre o Manifesto Reativo por Martin Thompson
(https://twitter.com/search?q=%40mjpt777&src=typd) dados em
entrevista ao InfoQ
(https://www.infoq.com/br/news/2015/01/thompson-reactive-
manifesto-2)
• Ao ler sobre sistemas reativos muitas pessoas acham que estes
implicam na necessidade de um sistema de fila de mensagens.
Esse não é o caso. Qualquer mecanismo de comunicação que
proporcione uma fronteira assíncrona binária é suficiente. Pode
ser um produto de mensagens, mas também podem ser
websockets ou um protocolo assíncrono construído sobre REST.
O que é
• Akka oferece um modelo matemático de
computação concorrente (concurrency), conhecido
como o "modelo de ator". Neste modelo, o "ator"
fornece uma construção leve para:
• enviar e receber mensagens,
• tomar decisões locais, eventualmente criando novos
atores, de forma assíncrona e sem bloqueios.
Proposta de valor
• Um modelo de programação unificado para:
• simplificação de concorrência - escrever código com
a ilusão de "single-threadedness" sem bloqueios,
variáveis sincronizadas ou atômicas.
• distribuição mais simples - distribuída por padrão,
com configuração local ou remota.
• tolerância a falhas mais simples - desacopla a
comunicação da falha através da supervisão.
Comparando casos
• Devore e Walsh exemplificam chamadas
assíncronas entre duas “threads”:
• com bloqueio
• com callback
• com Future
• com Akka
Caso 1:
Chamada assíncrona com bloqueio
• Ruim!
Caso 2:
Chamada assíncrona com "callback"
• Razoável.
Caso 3:
Chamada assíncrona com
"Future"
• Melhor.
Akka:
Chamada assíncrona com mensagens
• Melhor ainda!
Akka runtime
Ferramental Scala
necessário
• Partial Function
• Similaridade com “Pattern matching”
• Case classes
• Future
• Implicit
Receita
• Criar aplicação
• sbt, dependências ao Akka
• Criar protocolo
• Criar um ator
• Run it!
Exemplo
Crie um projeto e inclua
Akka
SBT
Akka
Crie um protocolo
Case classes
Crie um ator
Partial function
Bootstrap class
Scala Singleton
App
Bootstrap class
Runtime
Instância o ator
Bootstrap class
Exemplo de chamada
Run
https://github.com/iservport/iservport-akka-sample/tree/master
Using Akka
• Play framework
• Lagom framework (ES/CQRS)
• Akka.js
Leitura recomendada
• https://info.lightbend.com/COLL-20XX-Actor-Based-
Distributed-Systems-Concurrent-Computing-for-
Reactive-Architectures_RES-LP-
TY.html?aliId=18739267
• https://info.lightbend.com/COLL-20XX-Reactive-
Microservices-Architecture-RES-LP.html?lst=WS
• http://akka.io/docs/
mauricio@iservport.com
Maurício Fernandes de Castro

Mais conteúdo relacionado

Semelhante a Akka basics

Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Thiago Rondon
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)Bruno Camara
 
Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)Thiago Rondon
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosCaio Cutrim
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosCaio Cutrim
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsHerval Freire
 
Computação em Nuvem: de volta aos terminais burros
Computação em Nuvem: de volta aos terminais burrosComputação em Nuvem: de volta aos terminais burros
Computação em Nuvem: de volta aos terminais burrosCristiane Zimmermann
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Luciano Condé
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @MovileEiti Kimura
 
Microservices Architecture Workshop
Microservices Architecture WorkshopMicroservices Architecture Workshop
Microservices Architecture WorkshopClaudio Acquaviva
 
Escalando para os primeiros 10 milhões de usuários
Escalando para os primeiros 10 milhões de usuáriosEscalando para os primeiros 10 milhões de usuários
Escalando para os primeiros 10 milhões de usuáriosAmazon Web Services LATAM
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Marcelo Dieder
 
Um Mecanismo de Autenticação Baseado em ECDH para Redes
Um Mecanismo de Autenticação Baseado em ECDH para Redes Um Mecanismo de Autenticação Baseado em ECDH para Redes
Um Mecanismo de Autenticação Baseado em ECDH para Redes Eduardo Souza
 
Provocação Konker no 1º hackday FIESP 2016
Provocação Konker no 1º hackday FIESP 2016Provocação Konker no 1º hackday FIESP 2016
Provocação Konker no 1º hackday FIESP 2016Alexandre Cardoso
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal RailsLuiz Costa
 

Semelhante a Akka basics (20)

Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
 
Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Computação em Nuvem: de volta aos terminais burros
Computação em Nuvem: de volta aos terminais burrosComputação em Nuvem: de volta aos terminais burros
Computação em Nuvem: de volta aos terminais burros
 
Akka programação concorrente
Akka   programação concorrenteAkka   programação concorrente
Akka programação concorrente
 
Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4Programação em Camadas com Entity Framework 4
Programação em Camadas com Entity Framework 4
 
O que é um protocolo de rede
O que é um protocolo de redeO que é um protocolo de rede
O que é um protocolo de rede
 
DDD - Step by Step
DDD - Step by StepDDD - Step by Step
DDD - Step by Step
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @Movile
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Microservices Architecture Workshop
Microservices Architecture WorkshopMicroservices Architecture Workshop
Microservices Architecture Workshop
 
Escalando para os primeiros 10 milhões de usuários
Escalando para os primeiros 10 milhões de usuáriosEscalando para os primeiros 10 milhões de usuários
Escalando para os primeiros 10 milhões de usuários
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013
 
Um Mecanismo de Autenticação Baseado em ECDH para Redes
Um Mecanismo de Autenticação Baseado em ECDH para Redes Um Mecanismo de Autenticação Baseado em ECDH para Redes
Um Mecanismo de Autenticação Baseado em ECDH para Redes
 
Provocação Konker no 1º hackday FIESP 2016
Provocação Konker no 1º hackday FIESP 2016Provocação Konker no 1º hackday FIESP 2016
Provocação Konker no 1º hackday FIESP 2016
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal Rails
 

Mais de Mauricio Fernandes de Castro (9)

Zio motivation to create ZIO-native http package
Zio motivation to create ZIO-native http packageZio motivation to create ZIO-native http package
Zio motivation to create ZIO-native http package
 
Apresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de CombustíveisApresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de Combustíveis
 
tece-report-1
tece-report-1tece-report-1
tece-report-1
 
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte IIMeetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
 
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte IMeetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
 
Intellij windows
Intellij windowsIntellij windows
Intellij windows
 
Scala why
Scala whyScala why
Scala why
 
Iservport circle-game
Iservport circle-gameIservport circle-game
Iservport circle-game
 
O efeito chaminé.
O efeito chaminé.O efeito chaminé.
O efeito chaminé.
 

Akka basics