Skip to content

wkriesch/IPAM-scale-cube

Repository files navigation

IPAM NextGen - IP Address Manager

📌 Sobre o Projeto

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.

🏗️ Arquitetura e Teoria (Scale Cube)

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.

🚀 Stack Tecnológica

  • Frontend: Angular (Material Design / Tailwind CSS)
  • Backend: .NET 8 (C#) - Clean Architecture
  • Banco de Dados: PostgreSQL (Utilizando tipos nativos inet, cidr e macaddr)
  • Mensageria: Redis ou RabbitMQ (para coordenação do Eixo Y de Scan)
  • Orquestração: Kubernetes (K8s)

📂 Estrutura do Repositório

/
├── 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."

About

IP Address Manager, baseado em Teoria Scale Cube, altamente escalavel.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors