Projeto Arquitetural
Chat Turingo
1-Introdução
Visão geral da arquitetura inicial do sistema de bate-papo para a rede social turingo. Este documento destina-se a desenvolvedores, testadores e ao gerente do projeto.
2-Contexto
Turingo é uma rede social composta por turistas e agencias de turismo, o objetivo do projeto é criar um sistema de bate-papo escalável para a rede social Turingo facilitando o contato entre agencias de viagens e seus clientes; para que assim as vendas e compras nesse área possam se tornar mais fáceis; e que tanto a demanda quanto a oferta aumentem devido as facilidades que a inclusão digital permitem. Entre as principais funcionalidades estão: logar e sair do chat, iniciar e encerrar conversa, visualizar histórico e modificar status.
O sistema será mantido e evoluído de acordo ( e junto ) com a manutenabilidade e evolução do Turingo e estará disponível sempre que o Turingo estiver. O ideal e esperado é de 24 horas por dia, 7 dias pó semana.
Descrição das Funcionalidades:
Logar: Ao entrar na sua conta do Turingo, o chat já se loga automaticamente; assim como no facebook e gmail.
Logout: O usuário, ao entrar no turingo e ter seu bate-papo carregado, pode optar por sair do chat.
Iniciar conversa: Após logado, qualquer turista pode falar com qualquer agência ( online ) e qualquer agência pode falar com qualquer turista (online.)
Modificar status: O turista e a agência pode escolher seu status entre as opções: Online, Ocupado e Ausente ( Offline sai do chat ).
3-Requisitos Arquiteturais
Requisitos Funcionais:
Os requisitos funcionais listados acima só serão abordados com maior foco em Projeto 2 ( opção do cliente ); em Projeto 1 será trabalhado com maior ênfase o conceito do chat , um protótipo para ele e testes.
o O servidor deve ser escrito em PHP rodando em cima de Jabber.
o A interface do sistema deve ser compatível com os browsers Internet Explorer , Mozilla Firefox e Chrome.
o A interface deve ser feita em PHP
o O sistema deve suportar cerca de 2000 ( esse número ainda está em estudo ) conversas simultâneas por máquina.
o O sistema deve ser escalável(Caso eu use duas máquinas o sistema deve
suportar 4000 conversas simultâneas; para 3 máquinas, 6 mil conversas e assim por diante).
o O sistema deve ser desenvolvido de forma que a configuração das máquinas (Core 2 Duo, 8Gb RAM, onde somente 1Gb deve estar sendo usado pelo sistema) o suporte.
o OBS: Essas configurações de hardware são para dar suporte ao lado servidor do Chat; o lado cliente roda na web ( nos brownsers IE, Firefox e Chrome) , não importando assim a configuração de hardware.
4-Testabilidade
A testabilidade será feita através de teste de carga e teste de escala.
Os testes de carga serão feitos através do endereço de loopback simulando diversos usuários logados no chat, espera-se que o chat funcione normalmente com o número de usuários que o cliente do projeto deseja ( 2 mil por máquina ).
Os testes de escala são feitos no servidor, e o servidor usado para o desenvolvimento do projeto ( Openfire ) já garante escalabilidade.
5-Decisão-chave para a estrutura da arquitetura
A principal decisão-chave da arquitetura do projeto foi a escolha da tecnologia Jabber, pois como se trata de um sistema de bate-papo a comunicação é o essencial. Decisão-Chave Utilizar tecnologia Jabber
Drivers RNF: O sistema deve ser escalável. Descrição
Flexibilidade - as aplicações Jabber, além das mensagens instantâneas, incluem gerenciamento de rede, gestão de conteúdo, ferramentas de colaboração, compartilhamento de arquivos, jogos e monitoramento remoto de sistemas. Vantagens O sistema pode ser distribuído de forma
que não limita o número de usuários. Desvantagens
Observações
Mais vantagens oferecidas pela tecnologia jabber:
Abertura - os protocolos Jabber são gratuitos, abertos, públicos e de fácil compreensão ,além disso existem múltiplas implementações de clientes, servidores, componentes e bibliotecas de código.
Padronização - A IETF( Internet Engineering Task Force ), formalizou o núcleo dos protocolos XML de transmissão de dados como uma tecnologia de mensagens instantâneas e presença sob o nome de XMPP e as especificações XMPP foram publicadas como RFC 3920 e RFC 3921.
Confiabilidade - as primeiras tecnologias Jabber foram desenvolvidas por Jeremie Miller em 1998 e estão bastante estáveis agora, centenas de desenvolvedores estão trabalhando em tecnologias Jabber, existem dezenas de milhares de servidores Jabber funcionando na Internet hoje e milhões de pessoas usando o Jabber como mensageiro instantâneo.
o Confiabilidade do Sistema: Com relação a confiabilidade do sistema, partindo do fato que o protocolo XMPP será usado através do Jabber; garante-se que o sistema também possui a mesma confiabilidade.
Descentralização - a arquitetura da rede Jabber é similar ao e-mail, como resultado qualquer um pode ter o seu próprio servidor Jabber, permitindo às pessoas e organizações terem total controle sobre suas mensagens instantâneas.
Segurança - qualquer servidor Jabber pode ser isolado da rede Jabber pública ( por exemplo, a intranet da empresa ), além disso fazem parte das especificações XMPP medidas de segurança robustas, usando SASL e TLS.
o Segurança do Sistema: A segurança do sistema com relação ao lado cliente é feita por meio do login no Turingo ( ao se logar no turingo, loga-se no chat). A segurança no lado servidor também é feita via autenticação por login.
Extensibilidade - usando o poder das "XML namespaces", qualquer um pode construir funcionalidades sobre os protocolos centrais, para manter a interoperabilidade, as extensões comuns são mantidas pela Jabber Software Foundation.
Flexibilidade - as aplicações Jabber, além das mensagens instantâneas, incluem gerenciamento de rede, gestão de conteúdo, ferramentas de colaboração, compartilhamento de arquivos, jogos e monitoramento remoto de sistemas.
Diversidade - uma grande quantidade de empresas e projetos de código aberto usam os protocolos Jabber para criar e desenvolver aplicações e serviços.
6-Estrutura da Arquitetura
O projeto arquitetural é subdivido em dois, já que trata-se de um sistema cliente servidor.
Arquitetura Jabber As tecnologias usadas serão:
FrontEnd ( entenda FrontEnd como sendo o cliente web): Jabber , HTML, Bibliotecas
XMPP, PHP e JavaScript
BackEnd ( entenda BackEnd como sendo o servidor para o chat, que estará rodando nas máquinas da empresa do cliente ): O servidor Jabber openfire.
No lado cliente, a tecnologia usada será principalmente JavaScript e HTML ; no lado servidor será usado o servidor Jabber Openfire que é feito em PHP usando da tecnologia XMPP para fazer comunicação com os clientes vias httpRequest. O servidor estará rodando em um espaço chamado Octoputs alocado dentro do servidor da empresa; o octopus fará chamadas REST ao tomcat para saber quais novos usuários do Turingo vão se tornar também novos usuários do chat turingo, será utilizado também hadoop, hbase e um balanceador de carga. O cliente estará rodando na web; quer seja no navegador IE, Firefox ou Chrome.
Componentes da arquitetura Jabber:
Jabber Session Messenger(JSM) – O JSM gerencia o registro de novas contas,
autentica usuários, e gerencia informações sobre presença.
C2S(Cliente-to-Server) – C2S manipula as conexões entre o servidor e seus clientes. A
principal tarefa é a formatação e roteamento de mensagens entre clientes e outros componentes.
S2S(Server-to-Server) – S2S manipula conexões entre o servidor jabber e outros
servidores.
Xdb( XML Database) – xbd é o mecanismo de armazenamento persistente
compartilhado para o servidor jabber.
Logger – Responsável por registrar mensagens de controle de outros componentes
para o servidor . Registra mensagens, registra o login e logout de usuários, erros e assim por diante.
Dnsrv(DNS servisse) – converte nomes de servidores em endereços IP.
Jabber User Directory(JUD) – fornece serviços que habilitam clientes exibir
informações de seu contato, bem como a disponibilização de informações de outros contatos do cliente.
Conferencing (conf) – Permite formar grupos de clientes (salas de bate-papo).
Component BUS - é o backbone do servidor.
6-Bibliografia
Moore Dana,Wright Williiam, Jabber Developer’s Handbook, Sams Publishing ,2004.