Arquitetura Classpad

De MSTECH wiki
Ir para: navegação, pesquisa

Informações Gerais

Ambientes utilizados

Ambiente URL de Acesso Credenciais Admin
Desenvolvimento http://dev-mscro.mstech.com.br admin / 123456
Testes http://tst-mscro.mstech.com.br admin / ms@cro
Testes http://tst-mscro.mstech.com.br admin / ms@cro
Homologação Externa http://hom-mscro.mstech.com.br Informação exclusiva do Devops/GTI
Produção http://mscro.mstech.com.br Informação exclusiva do Devops/GTI

Repositório de Versionamento

Ambiente: GITLab - Git

Nome: Classpad

Caminho: https://gitlab.mstech.com.br/groups/classpad

Estrutura dos branches: dev, release e master

Visão de Componentes

Servidor Datacenter

Servidor localizado no Datacenter e que interage com todos os servidores das escolas a ele ligados e diretamente com os aplicativos nos dispositivos android.

Servidor Escola

Servidor localizado em cada escola e que interage diretamente com os aplicativos nos dispositivos android.

Aplicativo

Existe em duas variantes: Professor e aluno, apresentando fundamentalmente diferenças no interface com o usuário. Sendo que o professor poderá criar sessões de aprendizagem e atividades nessa mesmas sessões, o aluno poderá apenas ingressar numa sessão e interagir com as atividades nela criada por um professor.

Classpad-servidor.png Classpad-escola.png Classpad-Datacenter.png

Decisões de Arquitetura

Persistência

Através de banco de dados relacional Criação do banco de dados PostgreSQL nos servidores e em Realm nos dispositivos

Tecnologia de integração

Será realizada por meio de troca de mensagens entre os dispositivos e o servidor Datacenter e/ou servidor na escola Tráfego via WSS entre servidores e dispositivos Tráfego via HTTPS entre servidores e entre servidores e dispositivos

Log

Implementado log de negócio (para rastreabilidade das ações do usuário) e de log técnico para análise de funcionamento e falhas Para os logs utilizamos arquivos de texto gerenciado pelo LOG4J2 Para crash report usaremos Crashlytics (Fabric.io)

Padrão de arquitetura utilizado

Utilizamos Servidores HTTPS RESTful na arquitetura JAX-RS para gerenciamento de APIs. Utilizamos o padrão de arquitetura DDD (Domain Driven Design) na aplicação web para ambiente de administração do servidor. Utilizamos o padrão “thin client” para os dispositivos. Utilizamos o padrão PubSub na comunicação durante uma sessão de aprendizagem Utilizamos o protocolo MDNS (Bonjour) para descoberta do servidor da escola Utilização de Jetty 9 para servidor HTTPS e WSS. Utilização de Hibernate 4 para comunicação com banco de dados PostgreSQL e SQLite. Utilização de JMDNS para Discovery na rede.

Tecnologia de Front-end

Utilização do design nativo Android Utilização de front end simplificado nos ambientes de Administração Aplicação de Material Design no Android e Angular-JS na Web

Tecnologia de Back-end

Arquitetura padrão para servidores Java e clientes Android Utilização de Java 7 e Android 4.4 ou superior

Deploy

Distribuição dos clientes android via Google Play Instalação dos servidores via instalador Pacotes de instalação APK versionados e assinados conforme padronização

Fundamentações das decisões tomadas

A utilização de servidores em escola é uma necessidade dada a natureza das infra estruturas de rede existentes nas escolas.


Utilizar a rede escolar para uma utilização da rede apoiada inteiramente em tecnologia peer to peer, é algo que obriga a estudo caso a caso, e inviabiliza um aplicativo que se pretende ser instalável em diversos cenários e localizações.


Com a crescente demanda por aplicativos apoiados numa premissa BYOD (Bring your own device), surge também a necessidade de ter uma distribuição feita na loja do Google Play, e um modo de ativação e configuração simples do aplicativo.


A necessidade de flexibilizar o aplicativo para utilizações fora das redes escolares, fez necessário a existência dos servidores em datacenter, para que permitam a que os usuários usufruam do aplicativo, mesmo estando fora da escola, ou caso a rede escolar esteja com algum problema.