Pular para o conteúdo
02Case Study

Digital Application Architecture

Papel
Arquiteto de Software. Atuação na arquitetura de aplicações Reactive Web e Mobile, com foco em domínios, capacidades compartilhadas, estratégia mobile e ciclo de entrega.
Escopo
Aplicações digitais enterprise em Reactive Web e Mobile (iOS e Android), no OutSystems ODC e no O11, integradas a identidade e serviços corporativos.
Impacto
Arquitetura organizada por domínios, com capacidades compartilhadas coesas, offline tratado como modo arquitetural e dependências nativas isoladas.

Arquitetura de aplicações digitais enterprise para experiências Mobile e Reactive Web, integrando identidade, serviços corporativos, capacidades compartilhadas e ciclos de entrega.

Contexto

Aplicações digitais enterprise fazem parte de ecossistemas compostos por identidade, serviços corporativos, integrações, sistemas legados e diferentes canais digitais. Reactive Web e Mobile compartilham princípios arquiteturais, mas também possuem características próprias de execução, segurança e distribuição.

O desafio é permitir que aplicações e capacidades compartilhadas evoluam de forma sustentável sem criar dependências excessivas entre canais e sistemas corporativos.

Desafio arquitetural

Arquitetura de aplicações

Domínios funcionais, responsabilidades e serviços de aplicação.

Capacidades compartilhadas

Identidade, sessão, segurança, configuração e serviços reutilizáveis.

Arquitetura de integração

APIs, serviços corporativos, sistemas legados e contratos claros.

Reactive Web e Mobile

Canais diferentes seguindo princípios arquiteturais consistentes.

Arquitetura mobile

Offline, conectividade, capacidades do dispositivo e integrações nativas.

Evolução da plataforma

Arquitetura adaptada às capacidades e restrições do ODC e do O11.

Visão geral da arquitetura

A arquitetura estabelece fronteiras claras entre aplicações digitais, capacidades compartilhadas, integração e sistemas corporativos.

Reactive Web e Mobile compartilham serviços e princípios arquiteturais, enquanto cada aplicação mantém responsabilidades relacionadas aos seus domínios funcionais e às características da plataforma onde opera.

Aplicações Digitais
Reactive Web

Capacidades de Negócio · Domínios Funcionais · Lógica de Aplicação

Mobile

Capacidades de Negócio · Domínios Funcionais · Lógica de Aplicação

Capacidades Compartilhadas da Aplicação

Identidade · Sessão · Segurança · Configuração

Serviços Reutilizáveis · Lógica Compartilhada · Observabilidade

Camada de Integração

REST APIs · SOAP · Serviços Corporativos · APIs Externas

Contratos · Orquestração · Transformação · Tratamento de Erros

Sistemas Corporativos

Sistemas de Negócio · Plataformas Legadas · Serviços Corporativos · Dados Corporativos

Serviços Externos

Provedores de Identidade · Serviços de Terceiros · Plataformas Externas · Serviços Mobile

Arquitetura de aplicações

A arquitetura de uma aplicação digital deve refletir os domínios e responsabilidades da solução, e não apenas a estrutura técnica da plataforma utilizada para construí-la.

Fronteiras funcionais

Funcionalidades do mesmo domínio devem permanecer próximas, com dependências controladas.

Ownership e responsabilidade

Regras, serviços e dados precisam ter ownership claro, em vez de serem distribuídos por conveniência de implementação.

Reutilização com fronteiras

Reutilização deve reduzir duplicação sem criar dependências difíceis de evoluir.

Fronteiras de dados e integração

Aplicações devem conhecer apenas os dados e contratos de suas responsabilidades.

Reactive Web

Reactive Web segue os mesmos princípios de domínio e reutilização da arquitetura enterprise, distribuindo responsabilidades entre aplicação, capacidades compartilhadas e APIs corporativas, com evolução independente da solução.

Functional Domains · Application Services · Session & Identity · Shared Capabilities · API Consumption · Security Boundaries · Reusable Libraries · Data Ownership

Arquitetura mobile

Aplicações mobile assumem responsabilidades próprias porque o dispositivo passa a fazer parte do ambiente de execução: conectividade intermitente, persistência local, sincronização e segurança precisam ser consideradas desde o desenho da arquitetura.

01

Offline e sincronização de dados

Suportar operação offline não significa apenas armazenar dados localmente. A arquitetura precisa definir quais informações permanecem disponíveis no dispositivo, quais operações podem ocorrer sem conectividade e como alterações locais serão reconciliadas posteriormente com serviços remotos.

Initial Sync · Incremental Sync · Local Changes · Pending Operations · Conflict Handling · Retry · Idempotency · Recovery · Local / Remote Consistency

A solução precisa continuar previsível mesmo quando a rede não é.

02

Conectividade e resiliência

Disponibilidade de rede é uma condição variável: mudanças de conectividade, timeouts e falhas transitórias precisam produzir comportamentos controlados.

Network Status · Timeout · Retry · Pending Operations · Error Recovery · Graceful Degradation

03

Segurança do dispositivo e armazenamento local

Persistir informações no dispositivo adiciona uma nova superfície de segurança. Dados locais precisam ser tratados de acordo com sua sensibilidade.

Local Data · Cache · Preferences · Session Data · Secure Storage

04

Push, deep links e recursos do dispositivo

Push notifications podem iniciar fluxos e direcionar o usuário para capacidades específicas; deep links permitem que canais externos façam o mesmo diretamente no aplicativo.

FCM · APNs · Push Tokens · Deep Links · Camera · Biometrics · Files · Location · Sharing · Permissions

05

Plugins e integração nativa

Plugins e frameworks como Cordova e Capacitor conectam a aplicação a APIs e funcionalidades nativas de iOS e Android, considerando compatibilidade, permissões e impacto no build. Regras de negócio devem permanecer desacopladas dessas dependências sempre que possível.

Plugins · Cordova · Capacitor · Native SDKs · Permissions · Platform Compatibility

06

Ciclo de vida da aplicação

Aplicações mobile precisam considerar inicialização, foreground, background, retomada e encerramento pelo sistema, com sessão, sincronização e integrações nativas respondendo corretamente a cada mudança de estado.

Arquitetura de plataforma: ODC e O11

ODC e O11 possuem capacidades e restrições diferentes, mas os mesmos princípios arquiteturais permanecem consistentes entre plataformas.

OutSystems Developer Cloud

  • Arquitetura orientada a aplicações
  • Bibliotecas e capacidades compartilhadas
  • Runtime gerenciado na nuvem
  • Modelo de entrega moderno
  • Integrações externas e serviços da plataforma

OutSystems 11

  • Arquitetura modular de aplicações
  • Módulos reutilizáveis e serviços compartilhados
  • Runtime enterprise consolidado
  • Ciclo de deploy maduro
  • Integrações externas e mecanismos de extensibilidade

Plataformas diferentes. Princípios arquiteturais consistentes.

Arquitetura de entrega

Reactive Web e Mobile possuem ciclos de entrega diferentes: aplicações web seguem publicação e promoção, enquanto mobile adiciona geração de pacotes, assinatura e distribuição pelas lojas.

Código-Fonte / Aplicação
Reactive Web

Build / Publish

Validação

Promoção

Produção

Mobile

Build Mobile

iOS

IPA

Assinatura

App Store

Android

AAB

Assinatura

Google Play

Lançamento / Atualização

No mobile, plugins, versões de Cordova ou Capacitor e assinatura também fazem parte do ciclo de entrega: uma mudança aparentemente limitada à aplicação pode exigir novo build nativo ou submissão às lojas.

Decisões arquiteturais

01

Organizar por domínio, não por tela

DECISION

Organizar a solução por domínios funcionais e responsabilidades.

WHY

Domínios evoluem como capacidades de negócio, mantendo mudanças localizadas.

TRADE-OFF

Exige disciplina na definição de ownership.

02

Compartilhar capacidades, não aplicações inteiras

DECISION

Compartilhar capacidades coesas em vez de acoplar aplicações inteiras.

WHY

Reutilização precisa reduzir duplicação sem criar dependências estruturais.

TRADE-OFF

Contratos compartilhados exigem governança e compatibilidade.

03

Tratar offline como um modo arquitetural

DECISION

Tratar offline como um modo arquitetural explícito, não apenas cache.

WHY

Offline introduz estado local, sincronização, conflitos, retries e consistência.

TRADE-OFF

Aumenta complexidade; deve ser aplicado só onde agrega valor real.

04

Isolar dependências nativas

DECISION

Isolar plugins, SDKs e integrações Cordova/Capacitor atrás de responsabilidades bem definidas.

WHY

Dependências nativas possuem ciclos de evolução diferentes da lógica funcional.

TRADE-OFF

Introduz abstração adicional, mas reduz impacto de substituições e incompatibilidades.

Trade-offs

Arquitetura não elimina trade-offs. Ela torna essas escolhas explícitas para que complexidade, autonomia e evolução possam ser administradas conscientemente.

ReutilizaçãoAutonomia
Capacidade offlineComplexidade de sincronização
MultiplataformaRecursos nativos
PadronizaçãoFlexibilidade da plataforma

Panorama tecnológico

OutSystems Developer Cloud · OutSystems 11 · Reactive Web · Mobile · REST · SOAP · SQL · FCM · APNs · Cordova · Capacitor · iOS · Android · Offline Data Sync · Native Plugins

Considerações finais

Arquitetura de aplicações digitais vai além da tecnologia usada para construir uma interface: envolve responsabilidades, domínios, dados, integrações e capacidades compartilhadas para que diferentes soluções evoluam de forma sustentável. Reactive Web e Mobile têm necessidades distintas, mas fazem parte do mesmo ecossistema arquitetural.