Life ConnectLife Connect
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
  • Archive
  • Data Dictionary
  • Functional Epics

    • DICTIONARY OF ATTRIBUTES
    • Search Condos
    • Display

      • DisplayAll

        • Display all - Contracts
        • Display all - invoices
        • Display all - parts
        • Display all - Persons Relationships
        • Display all - Persons
        • Display tickets
      • DisplayContract

        • Display bank account Contract
        • Display Condo Member Contract
        • Display contact contract
        • Display Employee Contract
        • Display Generic Contract
        • Display Insurance Contract
        • Display Legal Represent Contract
        • Display Oral Contract
        • Display Owner Contract
        • Display Condo Regulation Contract
        • Display rental Contract
        • Display Supplier Contract
        • Display Trustee Contract
      • DisplayDelegate

        • Display Delegate
      • DisplayHistory

        • Display history
      • DisplayPerson

        • Display Company Person
        • Display Condo Person
        • Display Division Person
        • Display Group Person
        • Display Indivision Person
        • Display Natural Person
        • Display Union Person
        • Display Unknown Person
      • DisplayPersonsContracts

        • Display all Interventions
      • DisplayProperty

        • Display part
        • Display part
      • UiPerson

        • Display "mini" Persons
    • Process

      • Create

        • Create property & condo
      • Delete

        • Delete objects according to state machine
      • RC Renewal

        • RC RESIDENTIAL - automatic renewal
      • Review

        • rent amount review - RC residential - creation
        • rent amount review - RC residential - take-over
      • Sell

        • Sell a unit
    • Reporting

      • GRR

        • GLOBAL RENT REPORT
    • Search

      • Search
    • StateMachine

      • CreatingContract

        • State machine - creating a rental contract
        • State machine - creating a rental delegate contract
        • State machine - Referencing a abstract part contract
        • State machine - Referencing a bank contract
        • State machine - Referencing a condo regulation contract
        • State machine - Referencing a contact contract
        • State machine - Referencing an employee contract
        • State machine - Referencing a generic contract
        • State machine - Referencing a legal represent contract
        • State machine - Referencing a owner contract
        • State machine - Referencing a rental contract
        • State machine - Referencing a supplier contract
        • State machine - Referencing a trustee contract
      • CreatingIntervention

        • State machine - creating a ticket
        • State machine - Referencing a message
      • CreatingInvoice

        • State machine - creating a incoming (supplier) invoice
      • CreatingPayments

        • State machine - creating an incoming payment
      • EncodingPart

        • CreatingPart

          • State machine - Referencing part relationships
          • State machine - Referencing a part
      • EncodingPerson

        • CreatingAddresses

          • State machine - Creating email address
          • State machine - Creating phone address
          • State machine - Creating postal address
          • State machine - Creating web address
        • CreatingPerson

          • State machine - Referencing a company person
          • State machine - Referencing a condo person
          • State machine - Referencing a division person
          • State machine - Referencing an group person
          • State machine - Referencing an indivision person
          • State machine - Referencing a natural person
          • State machine - Referencing a union person
        • CreatingShareHolders

          • State machine - valuing a shareholder
      • Scanning

        • State machine scanning - analyze a document
        • State machine scanning - matching a document
        • State machine scanning - encoding a document : related information
    • Utility

      • Allocation keys
      • Company settings
      • Document data & file
      • Revision Index
    • Validations

      • Shareholders validation
  • Implicit

    • Callback

      • Logging In
  • ProductBoard

    • Rental Process

      • Rental delegate process
    • Ticketing

      • Create a ticket - link a ticket in Outlook add-in - add a call - display a ticket
      • Display Person Info in Outlook add-in
  • Technical Epics

    • Indexation Feature Documentation
    • Rent Amount Management Feature Documentation
    • I have an API
    • I can store the balance of an account
    • I Have Person Notifications
    • đź§© System Process Diagrams
    • The Team has a DEV environment
    • The Team is organized
    • Accounting

      • Re-generation of Invoices
      • I can call the rent for my Rental Contract
      • Payment Creation Strategy Feature Documentation
      • I Can Revese

        • Payment Reversal
      • I Have Invoices

        • I have direction on invoice's item level
      • I Have Subsidies

        • I Can Receive Family Allowance Payments - Technical Documentation
        • Subsidies + Direct Debit Documentation
    • Communication Module

      • Communication module
    • Contracts

      • I can have contract guarantors
      • API Models
      • I Have Call For Rent Process

        • Call For Rent (CFR) Process Documentation
      • Occupancy Compensation

        • **OCCUPANCY COMPENSATION Documentation**
      • State Machine

        • I can have the Rental Contract state machine
    • Database

      • Database Indexes
    • E2e Testing

      • I can create an E2E dataset
    • Env Setup

      • Adapt env to stateless UI build
      • Blockhound
      • Table of Environments and Their Specifications
      • Environment How-To
      • Java Flight Recorder Management Documentation
      • Local Environment Setup
      • Kubernetes Logs Retrieval Documentation
      • Monitoring
      • I can create a new organisation
      • Production Environment Configuration
      • Remote Environment Setup
      • Set up of separate DB for env
      • Terraform Aws S3 Buckets
      • adb-ui Service Version Update
    • Files

      • I can have tags for files
    • Globals

      • boundaries
      • boundaries
      • boundaries
      • boundaries
    • Messaging

      • MongoDB Trigger Model Documentation
    • Open Api

      • Swagger Documentation Guide
      • Swagger
    • Parts

      • I Have A Forecast And Actuals Module
      • I can have part equipments
    • Process

      • Pre-Meeting Questionnaire
      • I Can Release My Feature
    • Security

      • I can create and provision an organisation
      • a user is granted access to the application
    • Stress Test

      • Introduction
      • Reports

        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Table of contents
    • Tickets

      • Ticket Details Functionality
    • Troubleshooting

      • Prometheus Memory Issue Handling
Last updated 2025-03-05⚠️ 1 year 3 months old — verify against current code before relying on details.

Production Environment Configuration

Node Pools and Nodes Sizing

The cluster consists of two node pools: agentpool1, designated as the system node pool (control plane), and nodepool1, which serves as the worker node pool. To ensure reliability, agentpool1 contains two nodes, and nodepool1 also has two nodes to maintain a minimum level of workload availability.

The node pools utilize different machine sizes: Standard_D2ds_v5 for agentpool1 and Standard_E2as_v5 for nodepool1. The infrastructure allows for horizontal scaling, enabling the addition of more nodes to the existing node pools or the creation of additional node pools.

Availability zones are leveraged to mitigate outages in supported regions. Both control plane components and node pool nodes are distributed across multiple availability zones. Note that availability zones can only be configured at the time of node pool creation and cannot be modified afterward. For further details, refer to the Microsoft documentation.

Pod Deployment and Affinity

To enhance availability and reliability, each core service—adb-accounting, adb-contracts, adb-parts, adb-persons, and adb-utilities—is deployed with two replicas, controlled through the replicas deployment attribute.

Based on user feedback from approximately two years ago (Kevin), the application exhibited significantly better performance in a development environment running on a single server compared to its deployment in Azure. Since pod resource limits and JVM options were identical in both environments, it was inferred that reduced network latency played a significant role in performance improvement.

Given that no major changes have been made to the network communication pattern, the deployment is configured to ensure that services crucial to business operations run within the same node. Using podAffinity and podAntiAffinity, adb-accounting pods are restricted to different availability zones, while adb-contracts, adb-parts, adb-persons, and adb-utilities must run on the same node as adb-accounting. Additionally, two pods of the same service cannot run on the same node. By setting internalTrafficPolicy to Local, network communication between these services remains within a single physical machine, reducing latency.

Deployment Updates and Zero Downtime Rollout

To facilitate zero-downtime deployments, rolling updates are configured to prevent service interruptions. Without additional configurations, the cluster would attempt to maintain two pods of the older version while keeping the new version’s pods in a pending state due to insufficient resources. To avoid this, the RollingUpdate strategy ensures that Kubernetes shuts down one older pod before creating a newer version pod, continuing this process iteratively. More details on Kubernetes updates can be found here.

Resource

To prevent resource exhaustion during computation spikes (e.g., CFR generation), the pod resource requests and limits are set to the same values. This ensures that pods always have sufficient resources allocated and are not subject to unpredictable throttling. Additionally, the JVM -XX:MaxRAM option is set to match the pod memory limit, allowing the JVM to utilize all available memory within the pod efficiently.

Network Policy

The AKS cluster is configured with the well-known open-source Calico network policy. While Kubernetes NetworkPolicy is not currently restricting network traffic between pods, this can be configured in the future. The network policy is enabled at the time of cluster provisioning, as it cannot be added afterward.

Edit this page
Last Updated:
Contributors: Yevhenii Khudolii
Prev
I can create a new organisation
Next
Remote Environment Setup