Changes between Version 1 and Version 2 of AdvancedApplicationDevelopment


Ignore:
Timestamp:
05/07/26 13:21:43 (3 days ago)
Author:
233062
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDevelopment

    v1 v2  
    1 = Напреден Апликативен Развој - Оптимизација на Backend-от =
    2 
    3 == Проблем ==
    4 
    5 При зголемен број на корисници и захтеви, backend апликацијата покажуваше слаба перформанса поради:
    6 
    7 1. Недостаток на соодветна конфигурација на connection pooling (премал pool size од 2)
    8 2. Непотребни транзакции на read-only операции
    9 3. N+1 query проблем во WeightService (една query per row за training sessions)
    10 4. Неоптимална батching на operations во DisciplineService
    11 
    12 == Решение ==
     1= Напреден Апликативен Развој
    132
    143=== 1. Pooling - Hikari Configuration ===
     
    165Pooling претставува процес каде што не се отвара нова конекција за секој request, туку има константен број на отворени конекције кои се доделуваат на различни requests. Со ова значително се намалува времето по request бидејќи не се губи време за отварање на нова и затворање на стара конекција.
    176
    18 Во projectот ова го правам со Hikari Pool во Java Spring Boot. Hikari е автоматски вклучено во Spring Boot преку spring-boot-starter-web библиотеката.
     7Во мојот проект ова го правам со Hikari Pool во Java Spring Boot. Hikari е автоматски вклучено во Spring Boot преку spring-boot-starter-web библиотеката.
    198
    209Пред (конзервативна конфигурација за SSH tunnel):
     
    2615След (поголем default pool за поголем број корисници):
    2716{{{
    28 # Максимален број на конекции (default 5, може да се override преку env)
    29 spring.datasource.hikari.maximum-pool-size=${SPRING_DATASOURCE_HIKARI_MAX_POOL_SIZE:5}
     17# Максимален број на конекции (default 20, може да се override преку env)
     18spring.datasource.hikari.maximum-pool-size=${SPRING_DATASOURCE_HIKARI_MAX_POOL_SIZE:20}
    3019
    3120# Минимум конекции кои секогаш ќе се спремни за да преземат нови requests
    32 spring.datasource.hikari.minimum-idle=${SPRING_DATASOURCE_HIKARI_MIN_IDLE:1}
     21spring.datasource.hikari.minimum-idle=${SPRING_DATASOURCE_HIKARI_MIN_IDLE:5}
    3322
    3423# Колку долго да се чека за конекција пред requestot да е одбиен
     
    261250}}}
    262251
    263 == Резултати ==
    264 
    265 По оптимизацијата:
    266 
    267 ✓ Hikari Pool зголемен од 2 → 5 конекции
    268 ✓ 15+ методи означени со @Transactional(readOnly = true)
    269 ✓ N+1 query решен во WeightService (90% намалување)
    270 ✓ DisciplineService оптимизиран со batch insertions (80% намалување)
    271 ✓ Сите файлови компајлирани без errors
    272 ✓ Backend тестови успешно поминаа
    273 
    274 == Заклучок ==
    275 
    276 Backend апликацијата е оптимизирана за поголем број на конкурентни корисници, брже read-операции, и намалена database load.