Skip to content

Transaction Portal Service

Overview

The Transaction Portal Service is a microservices-based application designed to handle financial transactions with integrated fraud detection and risk assessment capabilities. The application demonstrates a hybrid service mesh deployment using Istio, combining both sidecar and ambient modes for different services.

Architecture

flowchart LR
    TG[traffic-gen] --> TP

    subgraph TP ["transaction-portal"]
        TP_V1[v1]
        TP_V2[v2]
    end

    subgraph AS ["account-service"]
        AS_V1[v1]
        AS_V2[v2]
    end

    subgraph FD ["fraud-detection"]
        FD_V1[v1]
        FD_V2[v2]
        FD_V3[v3]
    end

    subgraph RA ["risk-assessment"]
        RA_V1[v1]
        RA_V2[v2]
    end

    TP --> AS
    TP --> FD
    TP --> RA
    FD --> RA

    style TP fill:#e1f5fe
    style AS fill:#f3e5f5
    style FD fill:#fff3e0
    style RA fill:#e8f5e8
    style TG fill:#fce4ec


Service Components

The application consists of four core microservices with varying health and performance characteristics:

Service Health Status

Service Version Health Status Error Rate Response Delay Error Codes Notes
transaction-portal v1 ✅ 100% healthy 0% - - Primary service
v2 ✅ 100% healthy 0% 100ms - Slight latency
fraud-detection v1 ✅ 100% healthy 0% - - Optimal performance
v2 ⚠️ Partial 0.10% 800ms 504 Gateway timeout issues
v3 ⚠️ Partial 0.15% 500ms 500 Internal server errors
risk-assessment v1 ⚠️ Partial 0.05% - 429 Rate limiting active
v2 ⚠️ Partial 0.20% 3000ms 500 High latency
account-service v1 ✅ 100% healthy 0% - - Optimal performance
v2 ⚠️ Partial 1.00% - 503 Service unavailable

Deployment Configuration

The application uses Istio's hybrid mesh deployment model, strategically placing services in different modes based on their requirements:

a. Sidecar Mode Deployment

Services requiring enhanced observability and fine-grained traffic control:

  • transaction-portal - Core transaction processing service
  • risk-assessment - Risk evaluation and scoring service

b. Ambient Mode Deployment

Services deployed within the same cluster for simplified mesh participation:

  • fraud-detection - Transaction fraud analysis service
  • account-service - Account management and validation service

Quick Deployment

Deploy all services with a single command:

curl -sL https://bootstrap.tetr8.io/apps/deploy-app.sh | bash

Deployment Verification

Verify the successful deployment of all services:

Check Namespaces

kubectl get namespaces
Expcted Output:
NAME                     STATUS   AGE
account-service          Active   6h57m
cluster-autoscaler       Active   3d9h
default                  Active   3d9h
fraud-detection          Active   6h57m
istio-ingress            Active   7h2m
istio-system             Active   7h5m
kube-node-lease          Active   3d9h
kube-public              Active   3d9h
kube-system              Active   3d9h
risk-assesment           Active   6h57m
trafficgen-transaction   Active   6h57m
transaction-portal       Active   6h57m

Verify Service Deployments

1. Account Service:

kubectl get pods -n account-service
Expected output:
NAME                                  READY   STATUS    RESTARTS   AGE
account-service-v1-78cd9c6b88-nwr7d   1/1     Running   0          150m
account-service-v2-845c7d9f67-k9p2x   1/1     Running   0          150m

2. Fraud Detection Service:

kubectl get pods -n fraud-detection
Expected output:
NAME                                  READY   STATUS    RESTARTS   AGE
fraud-detection-v1-68897dd99b-wq4j2   1/1     Running   0          174m
fraud-detection-v2-7646c9dcfd-x8q2c   1/1     Running   0          174m
fraud-detection-v3-9567e8aff4-m7n1k   1/1     Running   0          174m

3. Risk Assessment Service:

kubectl get pods -n risk-assessment
Expected output:
NAME                                  READY   STATUS    RESTARTS   AGE
risk-assessment-v1-7566fd5d8c-r8fhm   2/2     Running   0          174m
risk-assessment-v2-8677g9e5f9-s9q3n   2/2     Running   0          174m

4. Transaction Portal Service:

kubectl get pods -n transaction-portal
Expected output:
NAME                                     READY   STATUS    RESTARTS   AGE
transaction-portal-v1-5fc6644a45-g1h5j   2/2     Running   0          175m
transaction-portal-v2-6fc6755b56-h2gm6   2/2     Running   0          175m


5. Traffic Generator:

kubectl get pods -n trafficgen-transaction
Expected output:
NAME                                        READY   STATUS    RESTARTS   AGE
trafficgen-transaction-7c8f5d9b4a-x4k2m    1/1     Running   0          170m

Next Steps

After successful deployment, consider:

  1. Configuring traffic policies for load balancing
  2. Implementing circuit breakers for fault tolerance
  3. Establishing security policies and access controls