Architectural Overview - VF Server running via Kubernetes Helm Offline



High-Level Overview

The vFunction Server running in a Kubernetes Cluster deployed via Helm through an Offline Registry includes the following:

  • 12+ Pods running in an Kubernetes Cluster in a dedicated Namespace
  • Two Persistent Volumes for MySQL and Measurements Storage
  • One external Port open (80, 443, other) to listen for browser requests from end users and analysis information from the application(s)

Architectural Diagram


Deployment Details

The vFunction Server includes the following Pods:

Deployment Name
Number of Replicas
Internal Port
External Port
Memory Limit
CPU Limit
Mounted Persistent Volume
vfunction-mysql 1 3306 Not Applicable 4GB
Configurable in the installation.yaml
1 CPU
Configurable in the installation.yaml
vfunction-mysql-vol
vfunction-nginx 1 8080 or 8443 80, 443 or a Custom Port 1GB 1 CPU Not Applicable
vfunction-storage 1 2222 Not Applicable 1GB 1 CPU vfunction-storage-vol
vfunction-vfapi-dm 1
Can scale up to 10
8007 Not Applicable 8GB
Configurable in the installation.yaml
1 CPU
Configurable in the installation.yaml
Not Applicable
vfunction-vfapi-idp 1 8005 Not Applicable 1GB 1 CPU Not Applicable
vfunction-vfapi-mcp 1 8008 Not Applicable 1GB 1 CPU Not Applicable
vfunction-vfapi-measurements 2
Can scale up to 10
8003 Not Applicable 8GB
Configurable in the installation.yaml
1 CPU
Configurable in the installation.yaml
Not Applicable
vfunction-vfapi-organizations 1 8001 Not Applicable 1GB 1 CPU Not Applicable
vfunction-vfapi-otlp 1
Can scale up to 10
4318 Not Applicable 8GB
Configurable in installation.yaml
1 CPU Not Applicable
vfunction-vfapi-parser 1 8002 Not Applicable 1GB 1 CPU Not Applicable
vfunction-vfapi-users 1 8004 Not Applicable 1GB 1 CPU Not Applicable

Persistent Volumes

The vFunction Server includes the following Persistent Volumes:

  • vfunction-mysql-vol
  • vfunction-storage-vol

The vfunction-mysql-vol is mounted to the vfunction-mysql Pod. This Volume is used for storing the MySQL Database used by the vFunction Server. This Volume is maintained by the vFunction installation and upgrade processes, including nightly backups which are stored on the vfunction-mysql-vol.

The vfunction-storage-vol is mounted to the vfunction-storage-vol Pod. This Volume is used for storing Monolithic and Distributed Measurements, the metadata used to provide Analysis for a vFunction Application. This Volume is maintained by the vFunction installation and upgrade processes, with Measurements backups downloadable from the vFunction Server UI.


Traffic Legend

External over open Port

End Users to Server

End Users access the Server via a Browser. Standard REST APIs are used to retrieve and update organization, application and measurement information and structure.

Agents to Server

The Agents send standard REST APIs to stop and start Learning and to upload Application details to the vFunction Server for analysis.

Internal over Kubernetes Namespace’s Network

Nginx to API Containers

The Nginx Container forwards APIs from the browser or from Agents to the relevant services over Ports 8001, 8003, 8004, 8005, 8006 and 8007.

API Containers to MySQL Container

The API Containers send request to store and process all processed information.

Organizations API Container to SQL Parser Container

The Organizations API Container sends request to the SQL Parser Container to parse queries retrieved from .NET agents.

Measurements API Container to Storage Volume

The Measurements API Container sends requests to store and retrieve raw data to the Storage Container and its Persistent Volume.

Distributed Measurements API Container to Storage Volume

The Distributed Measurements API Container sends requests to store and retrieve raw data to the Storage Container and its Persistent Volume.


Information gathered by vFunction from the Application

The vFunction Monolithic Agent gathers information about the Application and sends that information to the vFunction Server for analysis. That information contains statistical and structural data based on the Application’s behavior, including:

  • Callstacks
  • Field, method and class names
  • External HTTP Connection data (IP Addresses, Hostnames)
  • File names
  • DB Query Metadata (Tables and Stored Procedures)