O IPAM NextGen é uma solução de gerenciamento de endereços IP inspirada no phpipam, projetada para ser nativa em nuvem e altamente escalável. A aplicação permite o controle de sub-redes (CIDR), VLANs, mapeamento de endereços MAC e descoberta automática de ativos na rede.
A aplicação foi desenhada seguindo os três eixos do Scale Cube para garantir escalabilidade em ambientes Kubernetes:
- Eixo X (Escalabilidade Horizontal): Backend Stateless construído em .NET 8, permitindo múltiplas instâncias atrás de um Service/Ingress.
- Eixo Y (Decomposição Funcional): Separação de responsabilidades. O serviço de Network Scanning opera de forma independente do Core API, permitindo escalar o poder de varredura sem afetar a interface do usuário.
- Eixo Z (Data Partitioning): Preparado para segmentação de dados por zonas de rede ou unidades de negócio através do esquema de banco de dados.
- Frontend: Angular (Material Design / Tailwind CSS)
- Backend: .NET 8 (C#) - Clean Architecture
- Banco de Dados: PostgreSQL (Utilizando tipos nativos
inet,cidremacaddr) - Mensageria: Redis ou RabbitMQ (para coordenação do Eixo Y de Scan)
- Orquestração: Kubernetes (K8s)
/
├── src/
│ ├── backend/
│ │ ├── IPAM.API/ # Core API (Eixo X)
│ │ ├── IPAM.Worker.Scan/ # Serviço de Varredura (Eixo Y)
│ │ ├── IPAM.Domain/ # Entidades e Regras de Negócio
│ │ └── IPAM.Infrastructure/ # Acesso a dados e Integrações
│ ├── frontend/
│ │ └── ipam-ui/ # Aplicação Angular
├── k8s/ # Manifestos de Kubernetes
│ ├── deployment-api.yaml
│ ├── deployment-worker.yaml
│ └── postgres-statefulset.yaml
└── docker-compose.yml # Ambiente de desenvolvimento local
MyIpamSolution.sln
├── src
│ ├── 1.Core
│ │ ├── MyIpam.Domain # (Class Lib) Entidades (Subnet, IP), ValueObjects, Interfaces de Repositório.
│ │ └── MyIpam.Application # (Class Lib) Casos de uso (CQRS), DTOs, Interfaces de Serviços (IScannerQueue).
│ │
│ ├── 2.Infrastructure
│ │ ├── MyIpam.Infra.Data # (Class Lib) EF Core, Maps, Migrations, Repositórios.
│ │ └── MyIpam.Infra.Bus # (Class Lib) Implementação do MassTransit (RabbitMQ).
│ │
│ ├── 3.Presentation
│ │ └── MyIpam.WebApi # (ASP.NET Core) Controllers, Auth, Swagger. (Gerencia Eixo X - Stateless)
│ │
│ └── 4.Workers
│ └── MyIpam.NetworkScanner # (Worker Service) Background Service que roda nmap/ping/snmp. (Gerencia Eixo Y)
│
└── tests
└── ...
-----
prompt
-----
"Atue como um Arquiteto de Software Cloud Native. Preciso criar um IP Address Manager (IPAM) inspirado no phpIPAM. O projeto deve ser desenhado seguindo os princípios do Scale Cube para garantir escalabilidade total no Kubernetes.
Requisitos Funcionais:
Gerenciamento de IPv4/IPv6, CIDRs e VLANs.
Descoberta de ativos via ICMP/SNMP Scan.
Mapeamento de MAC Address e descrição de hosts.
Stack Tecnológica:
Frontend: Angular (SPA).
Backend: .NET 8 (C#) utilizando Clean Architecture.
Banco de Dados: PostgreSQL (devido ao suporte nativo a tipos inet e cidr).
Infra: Dockerfile (Multi-stage) e Manifestos K8s.
Diretrizes de Arquitetura (Scale Cube):
Eixo X: O backend deve ser Stateless para permitir múltiplas réplicas atrás de um Load Balancer.
Eixo Y: Projete a solução pensando na separação do serviço de 'Network Scanning' do serviço de 'API/Gestão', permitindo que o scanner escale independentemente.
Persistência: Utilize Migrations para o banco de dados e garanta que o schema suporte consultas performáticas em grandes ranges de IP.
O que eu preciso agora:
Desenhe a estrutura do Banco de Dados (PostgreSQL) focando em performance para subredes.
Esboce a estrutura de projetos da solução .NET 8 (WebAPI, Core, Infrastructure, Worker para Scan).
Sugira a melhor estratégia para o Worker de Scan (Eixo Y) se comunicar com a API principal (ex: Mensageria ou Shared DB).
Crie um exemplo inicial do Deployment Kubernetes para o Backend."