O documento discute a tecnologia Play Framework, destacando suas características como arquitetura stateless e leve, programação assíncrona e não bloqueante, roteamento RESTful, testes automatizados e recarga de classes. O framework permite o desenvolvimento de aplicações web escaláveis com alta performance.
2. ObjetivoObjetivo
Compartilhar o Aprendizado com aCompartilhar o Aprendizado com a
tecnologia 'Play Framework' bemtecnologia 'Play Framework' bem
como apresentar um modelo decomo apresentar um modelo de
programação/sistemas reativos paraprogramação/sistemas reativos para
requisitos de alto desempenho erequisitos de alto desempenho e
escalabilidadeescalabilidade
3. RotaRota
Oque é?Oque é?
Core Play!Core Play!
Synchronous/bloking vs Async/Non-Synchronous/bloking vs Async/Non-
BlockingBlocking
Reactive Systems/ProgrammingReactive Systems/Programming
URL Routing (RESTFul)URL Routing (RESTFul)
Shere-Nothing(Stateless)Shere-Nothing(Stateless)
Template EngineTemplate Engine
Class ReloadingClass Reloading
TestesTestes
Evolution Data BaseEvolution Data Base
WebSocketsWebSockets
Akka(Modelo de Atores)Akka(Modelo de Atores)
4. Oque é?Oque é?
“Play é baseado em uma leve,
amigável e stateless arquitetura
Web, possui o consumo de
recursos previsíveis e mínimos de
(CPU, Memoria,Threads) para
aplicações altamente escaláveis” [1]
12. Os mais Usados Synchronous/Bloking IOOs mais Usados Synchronous/Bloking IO
13. Async/Non-Blocking IO que estão ganhandoAsync/Non-Blocking IO que estão ganhando
popularidadepopularidade
14. Bloking vs Non Bloking IOBloking vs Non Bloking IO
Non Bloking IO: Você pede
a pizza, a atendente
anota, desliga e atende o
próximo cliente, quando a
pizza estiver pronta ela é
entregue para você
Bloking IO: Você pede a
pizza, a atendente vai
ficar com você até quando
a pizza estiver pronta
15. NIO BenefíciosNIO Benefícios
• Consomem recursos somente quando
estiverem ativos
• Menor sobrecarga do sistema
• Suporta vários conexões concorrentes
• WebSockets
• Comet
• Server-Send Events
16. Qualidade com AgilidadeQualidade com Agilidade
• KISS (Keep It Simple, Stupid)
• CoC (Convension Over Configuration)
• DRY (Dont Repeat Youself)
• YAGNI (You Arent Gonna Need It)
• GRASP (General Responsibility Assignment Software Patterns)
• SOLID (Single responsibility, Open-closed, Liskov
substitution, Interfacesegregation and Dependency inversion)
• TDD (Test Driven Development)
• BDD (Behavior Driven Development)
26. WEBJARSWEBJARS
● Bibliotecas mais usadas no client-side:
jQuery, Bootstrap, etc
● Gerencia a controle de versão através
de gerenciamento de dependência
28. WebSocketsWebSockets
● Introduzido no HTML5
● Define uma full-duplex single socket connection,
através da qual é possível enviar mensagens
entre cliente e servidor
● Simplifica a complexidade em torno da
comunicação web bi-direcional
29. Akka (Modelo de Atores)Akka (Modelo de Atores)
● Abstrai a programação concorrente
● Mutabilidade isolada
● Imutabilidade Compartilhada
30. Mas o que é um ator?Mas o que é um ator?
● Modelo criado em 1987 pela
Linguagem Erlang
● Entidades Independentes
● Estado
● Comportamento
● Mailbox
31.
32. QUEM USA PLAY / SCALA?QUEM USA PLAY / SCALA?
https://typesafe.com/resources/case-studies-and-stories
33. ConclusãoConclusão
De uma curva de apredizado baixa,
Play! é uma excelente ferramenta para
o desenvolvimento de aplicações web,
principalmente se a cultura ágil é a
marca de sua equipe
Responsive: O sistema responde em tempo hábil, se possível.
Resiliente: O sistema permanece responsivo em face da falha
Elastic: O sistema permanece responsivo sob variando carga de trabalho. Sistemas reativos pode reagir a mudanças na taxa de entrada, aumentando ou diminuindo os recursos alocados para atender a esses insumos.
Mensagem Driven: sistemas reativos contam com uma passagem de mensagens assíncrona para estabelecer uma fronteira entre os componentes que garante o baixo acoplamento, isolamento, transparência de localização , e fornece os meios para delegar erros como mensagens.
Comunicação Non-blocking permite que os destinatários apenas consumam recursos quando estiverem ativos, levando a uma menor sistema sobrecarga.
Comunicação Non-blocking permite que os destinatários apenas consumam recursos quando estiverem ativos, levando a uma menor sistema sobrecarga.
métodos estáticos são ruins, ele não são testáveis, e assim por diante, mas ele está aqui por uma razão muito importante, um controller é um objeto sem estado, porque o protocole HTTP por si é stateless, você faz uma requisição, você obtêm a resposta... não há relação entre essas conexões
Usa
http://www.fluentlenium.org/
Uma facilitador para o Selenium