Mensagens enviadas por: Emerson Macedo
Índice dos Fóruns » Perfil de Emerson Macedo » Mensagens enviadas por Emerson Macedo
Autor Mensagem
Pessoal,

estou fazendo uma limpa nas minhas coisas e resolvi doar todas as minhas revistas Mundo Java (agora MundoJ) e Java Magazine. Interessados entrem em contato por email para combinarmos a forma de envio.

Lógicamente o frete é por sua conta.

Por favor, não respondam por aqui dizendo que estão interessados pois eu não responderei. Enviem um email pra emerleite at gmail dot com com o assunto: Revistas Java para facilitar meu filtro do gmail.

Abraços,

Emerson
Para cache distribuido pode usar o memcache
@rugolini

Eu sinto muito mas ao mesmo tempo que concordo contigo eu tenho que alfinetar o RUP. Muito mau documentado e deu margem a muitas interpretações. Ao contrário o SCRUM que tem a documentação melhor, como você bem disse. Esse segundo sofre do inverso, pois muita gente esquece que estamos desenvolvendo software e acha que colar papelzinho de post-it e ficar em pé numa reunião de 15 minutos todos os dias vai resolver todos os problemas.

Por isso que eu concordo com tudo que o meu amigo Rodrigo Yoshima diz no post abaixo e que com certeza já deve ter falado contigo sobre esse assunto:

http://blog.aspercom.com.br/2009/09/29/o-que-matou-o-rup-pode-matar-o-agile/

Abraços,
Como responsável pelo SCRUM eu emiti seu certificado de acordo com seu interesse.

http://bit.ly/cDao23
http://www.guj.com.br/posts/list/213652.java#1099912
Banco de Dados ou então num cache distribuido mesmo.
@Kenobi
Eu já trabalhei com BPM identificando gargalo em processos de negócios de um Grande Banco/Seguradora aqui do Brasil. Esse estudo serviu de base para a iniciativa SOA da empresa. Eu concordo contigo que um ESB pode ser bem útil para abstrair alguns problemas de integração e criar um ponto central, mas quanto ao BPEL, tenho a impressão que montar uma DSL pode ser bem mais interessante, IMO. Eu não gostei muito de BPEL, achei muito de propósito geral. Prefiro algo mais enxuto.

O que você acha?

[]s
Rubem Azenha wrote:Eu tenho péssima experiências com integração via banco de dados! Depende de cara projeto, mas eu geralmente sou contra.

Eu acho muito problemático ter várias aplicações lendo uma mesma base de dados, pior ainda várias aplicações alterando a mesma base de dados. É muito fácil a situação ficar caótica e você não conseguir enchergar que aplicação altera que dado em que tabela. Sem falar na duplicação de códigos entre aplicações para interpretar o que cada dado significa, validações, etc e todos so problemas que essa duplicação de código traz.

O pior é tratar os eventos que devem acontecer quando um dado é inserido ou alterado... numa aplicação que eu trabalhei no ano retrasado, várias aplicações liam e alteravam os dados dos funcionários. Isso era um problema por que existia uma necessidade de executar um processo de uma das aplicação cada vez que um funcionário era demitido ou entrava de férias... No fim acabamos fazendo uma aplicação só pra cuidar do cadastro dos funcionários, todas as outras aplicações que precisavam acessar ou alterar dados dos funcionários passaram a utilizar essa aplicação e tinhamos mecanismos que permitiam trabalhar melhor com notificações de eventos (nada muito sofisticado, tinha muito espaço para melhoras, mas é melhor que usar trigger).

Enfim, acho que o banco de dados deve ser utilizado por apenas um sistema, os outros sistemas não devem acessar direto o banco de dados e sim usar algum outro mecanismo de integração (queue, WS, EJB...)

Exato. A parte de eventos é uma das piores. Geralmente o banco fica cheio de triggers e vira um inferno dar manutenção.

Como disse no início, é claro que cada caso é um caso, mas só usaria se não houvesse outra opção.

[]s
Tem uma Thread que fala sobre isso e apesar de um pouco antiga tem bastante conteúdo pra te ajudar, creio eu.

http://www.guj.com.br/posts/list/85604.java

[]s
Eu só recomendaria em casos muito específicos, não como primeira opção.
Luiz Aguiar wrote:
Luca wrote:Olá

Como engenheiro acho o Project excelente para gerenciar obras ou projetos de engenharia. Na área de TI nunca vi dar certo.
Luca

++

++
Respondido
xdraculax wrote:Ok:

Segurança:

Todos os dados devem ser enviados para a central criptografados. Usando uma chave de tamanho variável (ou seja, para alguns contratos posso utilizar uma chave de 128 bits, e em outro uma de 1024 bits).

Entendi. No caso aqui o protocolo de transporte não invalida o uso da criptografia. Usando HTTP ou Simplesmente sockets TCP você pode implementar a criptografia conforme você precisar.

xdraculax wrote:
Performance

Alguns contratos possuem restrições de tempo de envio. Por exemplo, a mensagem deve sair do equipamento para a central de 2 seg. Se você imaginar isso isoladamente, é perfeitamente possível usar SOAP, mas no momento de enviar essa mensagem eu posso estar enviando um arquivo de 300MB, e mais n mensagens com outras finalidades. Como, com SOAP isso seria tratado?

Aqui está o ponto mais problemático. Se você tem um SLA específico, precisará analisar com cuidado e principalmente fazer testes pra ver o que está atrapalhando . Como você diz que envia arquivos de 300MB, acho que antes da preocupação com o protocolo de transferênia você vai ter que se preocupar com a largura de banda, pois caso contrário não vai adiantar nada você trocar HTTP por TCP puro.

Quanto a como isso seria tratado com SOAP, REST ou qualquer outra coisa isso depende apenas da modelagem dos Serviços/Recursos.

xdraculax wrote:
Escalabilidade

Novamente a variação por contrato. Em alguns eu posso ter 30 equipamentos em campo, e em outro eu posso ter 500. Uma central para suportar os 500 equipamentos, certamente não será uma máquina só.

O fato de ter N servidores vai fazer com que você tenha que ter um balanceador na frente para direcionar a requisição (HTTP ou TCP puro) para o servidor que estiver mais "folgado" no momento.

Uma coisa importante que o Luca falou vou reforçar aqui: Não desconsidere a possibilidade de fazer o processamento assíncrono. Esse seu servidor que vai receber essas mensagens poderia fazer um trabalho bem leve, jogando essas mensagens numa fila para não gerar um Load muito alto em momentos de pico. Quanto mais leve esse ponto de entrada for, melhor.

[]s
xdraculax wrote:
Emerson Macedo wrote:Ao invés de ter 1 máquina com socket, uma opção é ter uma farm com 2 ou 3 máquinas respondendo HTTP (REST, SOAP, POX). Conforme a necessidade você coloca mais máquinas


A aplicação tem outros requisitos de Segurança e Performance; onde a performance afeta diretamente essa comunicação feita entre os equipamentos em campo e a central. Acredito que REST e SOAP não são boas opções para uma performance alta. Outra questão que não deve ser fácil com relação a SOAP e REST é Segurança.
Como eu disse tudo é criptografado e SOAP não se adequaria bem a esse requisito.

Quais seriam esses requisitos de segurança e performance para que possamos ajudar e ver se realmente alternativas webservices seriam tão ruins?

xdraculax wrote:
Emerson Macedo wrote:
Se você adorat a idéia que coloquei acima, esse problema vai ser minimizado no ponto de entrada. O Servidor de mensageria também não deveria funcionar com somente uma instância, pra evitar justamente o que você falou. Nesse ponto, você vai ter consumidores dessa mensagens e pode dosar esse processamento como convir para evitar a saturação do sistema, e trabalhar em cima do tempo de resposta, como o Luca já havia explicado.


Tudo bem, entendi. Mas imaginemos o seguinte (um exemplo bem bobo, mas é só pra ter certeza que estamos compreendendo a mesma coisa):

Você tem sua fábrica de carros com
1 linha de produção e
1 porta pequena (meu socket - coisa estranha, "meu socket"), que recebe uma pequena quantidade de peças.

De repente sua demanda aumenta 200%, e você coloca mais 2 linhas de produção, mas sua porta continua a mesma; ou seja, você possui o mesmo ponto de entrada limitado, que em nosso caso é o socket. E agora você tem capacidade de produção mas sua porta não dá vazão a essa quantidade de peças que chegam.

Eu não sei se entendi seu problema, mas pelo que você está dizendo ta me parecendo largura de banda, é isso? Caso contrário, poderia explicar melhor?
xdraculax wrote:
Meu problema é exatamente essa porta. Eu quero uma forma de tornar essa porta mais escalar, segura e rápida (quer nada ein ^^).

Mais uma vez, seria interessante você colocar aqui esses requisitos de segurança e performance para que possamos ajudar e ver se realmente alternativas webservices seriam tão ruins.
xdraculax wrote:
Na central que recebe esses dados, temos um Socket (1 socket mesmo); essa central recebe esses dados, persiste em banco, processa, envia alertas, etc.
Problema é que vai chegar um ponto, que 1 socket (ou a largura de banda) não vai dar vazão a quantidade de informação, ou a capacidade de processamento dessa central não vai ser suficiente (por mais que você coloque uma máquina super potente, vai chegar uma hora que não vai mais poder aumentar sua capacidade).

Ao invés de ter 1 máquina com socket, uma opção é ter uma farm com 2 ou 3 máquinas respondendo HTTP (REST, SOAP, POX). Conforme a necessidade você coloca mais máquinas

xdraculax wrote:
Criar uma máquina que simplesmente enfileira os recebimentos de informações e vai passando para outras máquinas processarem - o problema dessa abordagem, é que a se a máquina de faixada cair, o sistema todo cai.

Se você adorat a idéia que coloquei acima, esse problema vai ser minimizado no ponto de entrada. O Servidor de mensageria também não deveria funcionar com somente uma instância, pra evitar justamente o que você falou. Nesse ponto, você vai ter consumidores dessa mensagens e pode dosar esse processamento como convir para evitar a saturação do sistema, e trabalhar em cima do tempo de resposta, como o Luca já havia explicado.
 
Índice dos Fóruns » Perfil de Emerson Macedo » Mensagens enviadas por Emerson Macedo
Ir para:   
Powered by JForum 2.1.8 © JForum Team