Tecnologia

O ClimWeb inclui ferramentas e funcionalidades destinadas a apoiar os SMHN nas suas atividades diárias de gestão do website, na prestação de informação e serviços aos seus utilizadores.

Esta seção busca apresentar a escolha das tecnologias, abordagem de desenvolvimento e apresentar os pacotes que suportam as funcionalidades disponíveis no ClimWeb em alto nível.

O ClimWeb desenvolvido é de código aberto e está hospedado no GitHub em https://github.com/wmo-raf/nmhs-cms

Estrutura básica do ClimWeb

O modelo de site é construído com base na estrutura de código aberto Wagtail. O próprio Wagtail é baseado no Django , que é uma estrutura web Python de alto nível que incentiva o desenvolvimento rápido e um design limpo e pragmático

Estrutura ClimWeb

O seguinte foi levado em consideração ao escolher o Wagtail como estrutura de escolha:

  • Python como linguagem de programação. O domínio do tempo e do clima requer muita interação com dados científicos. Python é uma das linguagens de script que facilita o desenvolvimento de procedimentos para manipulação desse tipo de dados. Desenvolver um site usando Python permite assim a flexibilidade de desenvolver funcionalidades baseadas em dados

  • Fácil de usar: Um dos principais recursos do Wagtail é sua interface intuitiva e fácil de usar. Isso torna mais fácil para os editores de conteúdo gerenciar sites sem precisar aprender as complexidades e detalhes técnicos da estrutura subjacente.

  • Flexibilidade: Wagtail é flexível quando se trata de criar e gerenciar sites. Ele permite o desenvolvimento rápido de sites altamente customizados com layouts, conteúdo e recursos complexos, com base nas necessidades dos editores de conteúdo.

  • Extensibilidade: O Wagtail foi projetado para ser facilmente estendido com uma ampla variedade de plug-ins, temas, componentes e outros recursos. Isso permite adicionar novos recursos, personalizar a aparência do seu site e estender a funcionalidade do ClimWeb.

  • Segurança: O Wagtail foi projetado pensando na segurança. Ele vem com recursos de segurança integrados do Django, como autenticação de usuário, validação de entrada e proteção contra métodos de ataque comuns.

  • Escalabilidade: Baseado em Django, o Wagtail foi projetado para ser altamente escalável, tornando-o a escolha ideal para sites com grandes quantidades de conteúdo e usuários. Ele pode lidar com grandes quantidades de dados sem problemas de desempenho, permitindo que os desenvolvedores criem sites que podem crescer à medida que sua base de usuários aumenta.

  • Recursos empresariais prontos para uso: Wagtail inclui permissões de usuários e grupos, fluxos de trabalho de conteúdo e moderação, relatórios, rastreamento de histórico de edição de conteúdo e outros recursos que os administradores e equipes de sites precisam.

  • Experiência da equipe de desenvolvimento: A atual equipe de desenvolvimento do ClimWeb do NMHS tem vasta experiência no desenvolvimento de projetos baseados em Wagtail e Django. Isso agiliza a implementação de novos recursos e funcionalidades

Abordagem de Desenvolvimento

Usamos a abordagem modular Django/Wagtail para desenvolver “aplicativos Django” para fornecer um conjunto de recursos e funcionalidades. Um aplicativo Django/Wagtail é um pacote Python que fornece algum conjunto de recursos. Os aplicativos podem ser reutilizados em vários projetos.

Os aplicativos incluem alguma combinação de modelos Django, visualizações, modelos, tags de modelo, arquivos estáticos, URLS, middleware etc. Eles são então conectados ao projeto com configurações INSTALLED_APPS. Uma aplicação, portanto, neste contexto, é um conjunto de códigos que interage com várias partes do framework.

O NMHS ClimWeb é assim concebido com um conjunto de aplicações internas que fornecem funcionalidades para diferentes páginas do site funcional. Eles estão organizados no diretório de páginas do código-fonte do ClimWeb. Cada subdiretório das páginas corresponde a uma seção do site que pode permitir a criação de uma ou mais páginas relacionadas a essa seção

Funcionalidades mais especializadas são desenvolvidas como aplicativos Wagtail externos que podem ser conectados ao projeto de código. Eles são então instalados como pacotes Python publicados no Python Package Index (PyPI), que é um repositório de software para a linguagem de programação Python.

Pacotes de Funcionalidades

  • CAP Composer: Ferramenta de composição e publicação do Common Alerting Protocol (CAP) que fornece funcionalidade para criar e publicar alertas formatados em CAP.

  • Gerenciador de previsão – Interface para gerenciamento de previsões de cidades de NMHSs

  • GeoManager – Fornece uma interface interativa para gerenciar e publicar conjuntos de dados georreferenciados (GIS)

  • Administrative Boundary Manager: Fornece funcionalidade para carregar, gerenciar e visualizar limites de um país

  • Editor de WebStories – Fornece funcionalidade para criar e publicar Google Web Stories

  • Surveys Creator – Fornece funcionalidade para criar e publicar pesquisas diretamente no ClimWeb, visualização e análise dos resultados usando gráficos interativos

Pacotes de integração de ferramentas de terceiros

E-mail Marketing

Reuniões on-line

Estruturas e bibliotecas de interface do usuário


Desenvolvendo novas funcionalidades

Uma abordagem modular é usada no desenvolvimento de novas funcionalidades a serem incluídas no ClimWeb. A nova funcionalidade deve ser desenvolvida isoladamente como um pacote Wagtail Python e publicada no PyPi para instalação usando Pip.

Seguimos os seguintes passos em geral:

  • Explore pacotes existentes na comunidade Wagtail/Django que fornecem funcionalidades semelhantes.

  • Se existir um pacote existente e não puder ser integrado diretamente no ClimWeb, tentamos personalizar o máximo que pudermos sobre este pacote, para torná-lo interoperável. Caso contrário, nós o usamos diretamente

  • Se não conseguirmos encontrar os pacotes existentes, desenvolvemos o pacote do zero. A ideia é evitar a reinvenção da roda sempre que possível.

Implantação de produção

Docker é usado para conteinerizar os diferentes componentes do ClimWeb.

Outros recipientes usados ​​incluem

  • PostgreSQL com extensão PostGIS como banco de dados

  • Nginx como servidor web e proxy web

  • Memcached como sistema de cache para solicitações da web

  • Eclipse Mosquitto como o corretor de mensagens MQTT. Usado principalmente para mensagens de alertas CAP

Eles são colocados em um arquivo de configuração do docker compose, usado para implantar o projeto usando o Docker Compose.

É fornecido um repositório de inicialização que reúne todos os diferentes componentes em um projeto. Isso pode ser acessado em https://github.com/wmo-raf/nmhs-cms-init . Um guia de instalação é fornecido no arquivo README do repositório.

Gerenciando atualizações

Novos lançamentos com correções de bugs e atualizações de recursos são publicados periodicamente nos lançamentos do repositório nmhs-cms.

Quando houver um novo lançamento, a interface ClimWeb Admin mostrará uma mensagem indicando que há um novo lançamento. O administrador do site pode então optar por atualizar para a nova versão, após ler as notas de lançamento que acompanham cada lançamento.

A atualização é feita através do clique de um botão, que aciona um processo de construção do docker com as novas versões. Depois que a nova versão for construída com sucesso, o contêiner será reiniciado com a nova versão efetivada.

Botão de atualização do ClimWeb

Em casos raros em que o gatilho automático de compilação falha, os administradores do sistema são treinados para realizar a atualização manualmente

Segurança em Django/Alvéola

O ClimWeb, usando Django/Wagtail, contém os seguintes recursos de segurança integrados. Mais detalhes sobre cada recurso podem ser encontrados em https://docs.djangoproject.com/en/5.0/topics/security

  • Proteção de script entre sites (XSS)

  • Proteção contra falsificação de solicitação entre sites (CSRF)

  • Proteção de injeção SQL

  • Proteção contra clickjacking

  • Configurações de proteção SSL\HTTPS

  • Validação de cabeçalho de host

  • Proteção da política de referência

  • Política de abertura de origem cruzada

  • Segurança da Sessão

  • Proteção de conteúdo enviado pelo usuário

Recursos de segurança específicos do ClimWeb:

  • Capacidade de alterar o URL do administrador periodicamente

  • Mecanismos de backup diário

  • Prevenções de login de força bruta

  • Autenticação de 2 fatores para conta de administrador