Mensagens enviadas por: Kenobi
Índice dos Fóruns » Perfil de Kenobi » Mensagens enviadas por Kenobi
Autor Mensagem
Caros, só tomem cuidado que todo material tem propriedade intelectual e seria bacana ver se esse é permitida a sua distribuição.
Salve Gujeiros,

Essa semana que passou fiz uma palestra no SOA Symposium, junto com o Guilherme entre outros que representaram a comunidade brasileira.

Segue a sinópse: http://soasymposium.com/agenda2011.php#actors_model
Slides: http://www.slideshare.net/soaexpert/actors-model-asynchronous-design-with-non-blocking-io-and-seda

Valews
Longino wrote:
Kenobi wrote:
O Gavin tem créditos por ter criado o melhor framework do java (IMHO) - Hibernate


Hibernate é a reinvenção da roda. Existe uma tecnologia muito mais flexível chamada SQL.

O que ele fez foi contribuir para o XML hell do Java.



Não, desculpe-me amigo, mas você tem idéia de como é trabalhoso fazer Queries na mão - JDBC e encapsular com DAOS à cada Entidade do sistema ? Sem contar a tradução do modelo relacional para OOP.

O Hibernate é um mapeador do modelo relacional para orientado a objetos e possui uma série de features interessantes, como Lazyload, cacheamento etc.

Não sei quantos anos de experiência você tem com Java, mas vale à pena estudar um pouco a solução.

PS: Estou dando uma olhada na sua implementação de Lisp, parece muitíssimo interessante !

Um abraço,

Felipe Oliveira - @scaphe (twitter) - SOA|EXPERT
Com o nome real voce pensa duas vezes antes de postar, pratica comum de empresas usar o google pra procurar algo do candidato na internet.
Imagina voce expondo seu nome aqui no GUJ, pensaria duas vezes antes de falar qualquer coisa.


Exatamente, essa é minha proposição.

É um tanto radical, acaba um pouco com diversão de Nicks, Avatares, mas obriga o profissional a ter um maior comprometimento com o que está ecrevendo.

Ninguém iria gostar de contratar profssionais que possuem um péssimo português, aquém tecnicamente da pretensão da vaga e principalmente, mal educados.

Bom, conversei com o Paulo hoje, parece que teremos a implementação de um botão para indentificar mensagens ruins. Mas ainda consideraria fortemente a associação a algo mais profissional, como o linkedin.

Aliás, estamos finalizando o portal SOACloud na SOA|EXPERT, que funcionará no endereço www.soacloud.com.br e trataremos somente dos assuntos correlatos (SOA, BPM, BI, CEP, ESB, Cloud etc) e nossa estratégia para "auto-moderação" está em associar o profile do usuário ao Linkedin e iremos coibir anônimos da vida.

Mas acho que essa thread cumpriu sua missão e podemos fechá-la.

Um abraço,

Felipe Oliveira - @scaphe (twitter) - SOA|EXPERT.
www.linkedin.com/in/soaexpert


Pegando o gancho do último post, a existe uma especificação para Real Time (RTSJ) onde o garbage collector é acionado em tempos pré determinados, mantendo um ciclo constante - http://jcp.org/en/jsr/detail?id=282 .

A JRockit é uma das melhores implementações e quando se usa soluções de CEP (Complex Events) onde a baixa latência é regra, a solução para frameworks em Java é utilizar uma VM Real Time.

Com relação à linguagem do Gavin King, acredito que ele vem estudando uma série de linguagens como Scala, C#, Ruby, Closure, Erlang; e está tentando criar um bom mix entre features e sintaxe.

Scala é uma linguagem muitíssimo bem desenhada, entretanto a sintaxe dela arde os olhos ! Se o programador não sente prazer em programar, fica difícil algo ir pra frente.

A comunidade Ruby hoje é forte, exatamente pela flexibilidade e sintaxe.


O Gavin tem créditos por ter criado o melhor framework do java (IMHO) - Hibernate e descascou um abacaxi - JSF + EJB (Aff) com o Seam. Acredito que ele realmente tem condições de fazer algo diferente e que a comunidade adote como padrão.






Olá Paulo, bom vê-lo por aqui

Eu entendo que o nível técnico do GUJ tenha um público-alvo delineado, mas deveria ter uma área para a OldSchool, seria últil à quem está chegando.

Contudo, antigamente nós tentávamos discutir tecnicamente e hoje o pessoal leva pro lado pessoal, brigas e muitas discussões sem sentido algum.

Fico triste em entrar pra responder algum tópico tecnicamente e o pessoal sair "trollando", isso não é atitiude de profissional e essa é a minha crítica.

Talvez os Nicks tenham sido os vilões ou a integração com o portal java, não entendi o que aconteceu.

Um abraço,

PS: Eu sei que "amadureci", cabelos brancos inclusive, mas venho aqui pra tentar colocar alguma coisa na cabeça dessa molecada

Felipe


malconL wrote:Acontece que scala é mau desenhada, sintaxe medonha, comunidade fraca.. Acho precipitado pinta-la como nova linguagem oficial da JVM, sem falar que uma nova linguagem oficial é o contrário de pluralismo.


Scala mal desenhada ? De onde você tirou isso ? Scala é uma linguagem muitíssima bem desenhada. Aqui vai só um exemplo de types do Rafael - http://blog.rafaelferreira.net/2008/07/type-safe-builder-pattern-in-scala.html.

Com Scala você consegue ter programação funcional, oop, metaprogramação, script direto do shell (http://www.scala-lang.org/node/166). Se você pensar então em aplicações distribuídas, tem Actors embutida (http://www.scala-lang.org/node/242), Collections Paralelas http://infoscience.epfl.ch/record/150220/files/pc.pdf . Vale à pena estudá-la à fundo, antes de dizer que o design dela é ruim. Analisar superficialmente por uma sintaxe que você não compreende, é um grave equívoco.

Quanto à "oficial" eu não gosto muito dessa idéia, espero que com a evolução da JVM ao longo do tempo, perca o sentido e a liberdade de escolha em detrenimento à necessidades.
Pessoal,

A idéia desse post é fazer uma chamada à turma mais nova, que está no GUJ a 3-4 anos no máximo, para nos atentarmos à qualidade dos posts, resgatando um pouco do que o GUJ foi um dia.

O GUJ no passado era tido como um dos fóruns mais exclusivos, onde alguns profissionais que passaram por aqui como: Carlos Vilela - CV (ThoughtWorks), Philip Calcado - Shoes(ThoughtWorks) , Rodrigo Kumpera - Louds (Novel - Mono), Vanessa Sabino (Bani), Urubatan, Luca Bastos, Maurício Linhares, thingol (quem se lembra ? ), marcelomartins , Rafael Steil, Velo, entre outros tantos que me fogem agora e tornarvam isso aqui especial.

Parece que a nova geração do GUJ não quer discutir tecnicamente, há muita gíria, textos mal redigidos e uma mistura de Social Network, fazendo o GUJ ser um Orkut para vertical TI.

Os profissionais citados não escrevem mais por aqui pelo simples fato das discussões de alto nível terem se extinguido. Muitos não estão lendo o contexto de mensagens anteriores e entram no meio da discussão, sem embasamento e detonando o nível da discussão.


Sugiro aos moderadores algo até radical: Integração dos profiles dos usuários ao Linkedin, assim acabamos com a história de nicks e colocamos os profissionais à frente.

Essa é uma idéia para evitar que os mais velhos saim de vez do fórum e esse se torne um "besteirol" que não tenha sentido de existir.

PS: Quase dei um close na minha conta, esse é um apelo, pois gostava daqui.

Um abraço,

Felipe Oliveira - @scaphe (twitter) - SOA|EXPERT , vulgo - Kenobi.
Primeiro, obrigado marcosalex. Estou muitíssimo lisonjeado com seu comentário e espero fazer jus.

Rogério, bacana seu depoimento e um case prático para podermos estudar.

Bom, acho que muitos possuem visão divergente. Enquanto acredito que não se tratava somente de performance, outros decordam e isso é normal, já que estamos apenas conjecturando com base no que lemos.

Mas precisamos separar 2 coisas: Linguagem e VM - Virtual Machine.

Java não é uma linguagem tão bem desenhada e está anos luz à frente como disseram, pelo contrário. Ela tem falhas graves de design e não precisa nem ir muito longe, falar dos generics types. Basta olhar a API de data.

A VM entretanto é avançadíssima realmente e como o Maurício disse, vai demorar muito até outras chegarem no nível. Contudo, a idéia da VM é se tornar cada vez mais plural e talvez no futuro tenhamos uma outra linguagem, melhor desenhada, fazendo uso dos seus recursos.

Scala é uma forte candidata, isso sem contar com coisas que estão vindo, como The Ceylon Project - http://blog.talawah.net/2011/04/gavin-king-unviels-red-hats-top-secret.html

Cheers,

Kenobi

Luca, só uma curiosidade, o Mule implementa Seda então, para muitos cenários de integração você pode usar Seda facilmente .

Tiago, linguagem dinamicamente tipada vai ter uma performance inferior e talvez isso com o tempo seja amenizado, até mesmo pela JVM com suporte à linguagens dinâmicas - JSR 292. Para os amantes de Ruby há o Mirah, uma linguagem parecidíssima com Ruby, onde a diferença básica consiste em tipos.

Com essa diferença, a performance de Mirah é comparável à outras linguagens como Scala.

Mas ainda acho, que o problema estava muito mais no escalonamento e não na performance, até pq como disseram, se quisessem somente performance talvez tivessem usado uma outra abordagem.

Um abraço,

Kenobi - akka @scaphe
Tiago, dá uma lida nas minhas colocações, do Luca e Maurício. Acho que o caminho está muito mais em design da solução que linguagem .
Acredito que Frontend se trata da API Rest em cima de HTTP, que recebe os streams (inputs). Também acho que não tem a ver com a interface gráfica, pois poderia fazer algo completamente besta, usando JQuery diretamente se quisesse.



Luca wrote:IO assíncrono não bloqueante permite usar os mesmos recursos de forma mais efetiva e responder maior número de solicitações. E também facilita o aumento de recursos escalando horizontalmente.



Acredito que esse foi o maior motivo por optarem em mudar a arquitetura. Hoje o Twitter é muito acessado através de suas apis e possui integração com os mais diferentes devices, gerando uma quantidade de tráfego altíssima.

Por tanto, performance não era somente o objetivo. Acredito que foi um efeito colateral provido pela JVM e uma linguagem estaticamente tipada.

Posso estar errado, mas o maior problema era escalonamento, o que não é fácil de fazer com a arquitetura Rails. Eles conseguiram isso no backend, criando um filhote de AMQP em Scala, mas faltava resolver o input.

Luca, você que estudava SEDA também, o que você acha do Blend - http://engineering.twitter.com/2011/04/twitter-search-is-now-3x-faster_1656.html ? Vi que o Netty faz pools de thread, na documentação.

PS: Coisinha pra estudar: http://en.wikipedia.org/wiki/Directed_acyclic_graph
Bem lembrando Maurício, inclusive o Porcelli fez uma experimento com o Akka e o achou lento, comparando ao multithread tradicional, entretanto a proposta do mesmo é escalabilidade.

Acredito que vão conseguir ainda otimizar e comunicação remota é uma das coisas que pega em qualquer ambiente distribuído.

Falando no design de Actors, na verdade a Thead fica em Loop, esperando atores processarem, portanto, uma Thread consegue endereçar diversos atores, consequentemente respondendo a diversos requests.

Na verdade isso tem mais a ver com a API de NIO que utilizaram e design assíncrono /Event-driven. Quando falamos nesse tipo de arquitetura, significa: imutabilidade de objetos, não blocante ! Lembrando que essa é a chave, pois eles lidam com streams.


O Rails é um framework Request-Driven, síncrono e isso traz problemas quando você precisa escalar para milhares de nós, entrentato em Ruby você poderia escrever design Non-Blocking, event-driven utilizando Goliath, que utiliza Fibers ( Ruby 1.9) para endereçar - http://www.infoq.com/news/2007/08/ruby-1-9-fibers.

Dêem uma lida em performance: http://postrank-labs.github.com/goliath

Para Java e Scala, existe uma alternativa bem bacana para esse tipo de design, que é a utilização de Actors Model com Akka Framework - http://www.akka.io , desenhado pelo Jonas Bóner, engenheiro do Terracota.

O Akka trabalha com isolamento, atores remotos acessados através do Protobuf - http://code.google.com/p/protobuf e isso garante uma rápida comunicação.

Uma outra solução, seria utilizar SEDA (http://www.eecs.harvard.edu/~mdw/proj/seda) e talvez até mesclar, implementar SEDA com ActorsModel.


Resumindo, a JVM é parruda e ninguém discute, entretanto se utilizar com a arquitetura "convencional" request-driven síncrono, talvez o benefício não seja tão grande.

A questão da equipe do Twitter pode ter sido maturidade dos projetos, já que o Netty possui mais tempo e o código dele realmente é limpo, olhei o repositório logo quando vi a notícia, enquanto o Akka que eu citei, é muito sujo, pessoal que vem do C.

Como o Maurício disse, também acho que estão fugindo muito por aqui da discussão técnica e caindo para o mesmo pensamento que critico em developers Microsoft, que não enxergam um palmo à sua frente.

Todas as linguagens são interessantes, gostaria de ter tempo pra estudar diversas outras, pois cada linha de pensamento diferente, como programação funcional do lisp e haskell, ou a facilidade de metaprogramação do Ruby vai te tornar um programador melhor.


Quem aqui já escreveu uma DSL ? Veria Ruby com outros olhos.


Pra finalizar: Isso aqui não é futebol pra ter torcida !!


PS: Gostaria de discutir por aqui alternativas de design, SEDA vs Actors, combinação, Fibers - JVM e por aí vai....

º´~s

Kenobi






 
Índice dos Fóruns » Perfil de Kenobi » Mensagens enviadas por Kenobi
Ir para:   
Powered by JForum 2.1.8 © JForum Team