A Arquitetura do WiRiPouch:
Escalando FinTech em Moçambique

WiRiSoft Engineering

Equipa de Infraestrutura Core

24 Dez 2025 8 min de leitura

Desenvolver ecossistemas de pagamentos e liquidação digital em mercados emergentes exige um redesenho estrutural completo das camadas tradicionais de persistência de dados. No WiRiPouch, mitigamos a latência regional mantendo a segurança atómica estrita ao nível do banco de dados.

1. O Desafio da Concorrência Conectiva

Em cenários onde as conexões GPRS ou canais celulares oscilam, chamadas síncronas convencionais que dependem de middlewares externos geram timeouts críticos. Optámos por uma estratégia assíncrona baseada em Python e Django, isolando o ciclo de processamento transacional em filas controladas que garantem a entrega de registros operacionais sem duplicação de saldo.

Aferição de Infraestrutura

"Ao desacoplar o pedido de envio inicial do commit definitivo de liquidação na base de dados, conseguimos reduzir o tempo de resposta percebido pelo lojista no ponto de venda para menos de 180 milissegundos, independentemente do tráfego local."

2. Integridade Atómica em PostgreSQL

Para impedir condições de corrida (race conditions) em carteiras digitais concorrentes, o código backend utiliza bloqueios explícitos de linha. Ao invés de dependermos de estados em cache volátil, forçamos o isolamento via instruções estruturadas diretamente no motor relacional PostgreSQL.

wiripouch / infrastructure / tasks.pyPython 3.11 + Django ORM
from django.db import transaction
from .models import Wallet, TransactionEntry

@transaction.atomic
def execute_secure_settlement(wallet_id, destination_id, token_amount):
    # Enforce strict SELECT FOR UPDATE to lock row until block commit
    source_wallet = Wallet.objects.select_for_update().get(uuid=wallet_id)
    
    if source_wallet.available_balance >= token_amount:
        source_wallet.available_balance -= token_amount
        source_wallet.save(update_fields=['available_balance'])
        
        # Log immutable tracking block
        TransactionEntry.objects.create(
            account=source_wallet,
            direction='OUT',
            volume=token_amount,
            state='SETTLED'
        )
        return True
    return False