🏠

Annexe A · Étude Migration PostgreSQL (Synthèse)

(Version complète : voir reports/GRDF_SAT_PRE_HAB_Technical_Audit_Report.md Appendix D)

A.1 Faisabilité Technique

Compatibilité Oracle 19c → PostgreSQL 16

Feature OracleÉquivalent PostgreSQLEffort Migration
PL/SQL procédures stockéesPL/pgSQL⚠️ Moyen (syntaxe différente)
SequencesSERIAL / GENERATED ALWAYS AS IDENTITY✅ Trivial
TriggersPL/pgSQL triggers⚠️ Moyen (syntaxe proche)
Indexes B-TreeB-Tree natif✅ Identique
Materialized ViewsNatif PostgreSQL✅ Identique
PartitioningDeclarative Partitioning (PG 10+)✅ Meilleur que Oracle
Hints SQL (/*+ INDEX */)⚠️ Non supportéAlternative : indexes automatiques
CONNECT BY (requêtes hiérarchiques)WITH RECURSIVE⚠️ Réécriture requêtes

Outils de Migration

  1. Ora2Pg (recommandé) — open source Perl

    • ✅ Extraction schéma + données + procédures stockées

    • ✅ Génération scripts SQL PostgreSQL

    • ⚠️ Nécessite validation manuelle (10–15% code PL/SQL)

  2. AWS SCT (Schema Conversion Tool)

    • ✅ Gratuit, analyse automatique compatibilité

    • ⚠️ Nécessite compte AWS (pas d'obligation déploiement)

  3. Debezium CDC (Change Data Capture)

    • ✅ Réplication temps réel Oracle → PostgreSQL pendant coexistence

    • ✅ Kafka Connect source Oracle + sink PostgreSQL

A.2 TCO 5 Ans (Comparaison Oracle vs PostgreSQL)

Poste de CoûtOracle 19cPostgreSQL 16Économies
Licences DB€180K (Processor license × 2 sockets)€0 (open source)€180K
Support éditeur€90K (20% licences × 5 ans)€45K (support EnterpriseDB optionnel)€45K
Infrastructure (serveurs, stockage)€120K€90K (moins de RAM requis)€30K
DBA / Ops (5 ans)€160K (0.5 ETP × 5 ans)€135K (courbe apprentissage)€25K
Migration initiale€0€50K (Ora2Pg + validation)-€50K
TOTAL 5 ANS€550K€320K€230K (42%)

Note : économies conservatrices (hypothèse support PostgreSQL payant). Si autogéré : économies jusqu'à €320K (58%).

A.3 Roadmap Migration (Intégrée à Option B)


 


Annexe B · Métriques Complètes SAT-PRE & SAT-HAB

B.1 SAT-PRE (app-pre-main)

MétriqueValeurBenchmark IndustrieÉcart
LOC Total70 42150K–100K (application JEE standard)✅ Normal
Classes Java618400–800✅ Normal
Packages8960–120✅ Normal
Méthodes4 7823K–6K✅ Normal
Complexité Cyclomatique Moyenne13.7< 10 (recommandé)⚠️ Élevé
Méthodes complexité > 2087< 5% (cible)🔴 1.8% (critique)
God Classes (> 20 dépendances)140 (cible)🔴 Critique
Classes avec SQL concat450 (cible)🔴 Critique
Javadoc coverage32%80% (cible)🔴 Très insuffisant
Test coverage (estimé)30%80% (cible)🔴 Très insuffisant

Top 10 Classes Par LOC

  1. EcSatPreWkf001Controller — 487 LOC (God Class)

  2. TraitementMasseServiceImpl — 412 LOC (God Class)

  3. IncidentDaoImpl — 398 LOC

  4. EcSatPreWkf002Controller — 376 LOC (God Class)

  5. RapportGeneratorServiceImpl — 354 LOC

  6. ValidationMetierServiceImpl — 332 LOC

  7. NotificationServiceImpl — 318 LOC

  8. SynchronisationBatchJob — 305 LOC

  9. CompteurReferentielClient — 289 LOC

  10. AlarmProcessorServiceImpl — 276 LOC

B.2 SAT-HAB (app-hab)

MétriqueValeurBenchmarkÉcart
LOC Total18 23410K–30K✅ Normal (app plus petite)
Classes Java10080–150✅ Normal
Packages1210–20✅ Normal
Complexité Cyclomatique Moyenne10.6< 10⚠️ Acceptable
God Classes (> 20 dépendances)20⚠️ Moyen
Classes avec SQL concat110🔴 Critique

Top 3 Classes Par LOC

  1. HabilitationManagerImpl — 289 LOC (God Class)

  2. LdapSyncService — 245 LOC

  3. RoleValidatorService — 198 LOC


 


Annexe C · Diagrammes Mermaid Complets

C.1 Architecture Actuelle (Détaillée)

(Voir Section 2.2 pour diagramme complet avec 35+ nœuds)

C.2 Diagramme Couplage SIAS/TICC (Extrait Top 20)

Classes Non Classifiées — 590 classes

Classes Partagées — 47 classes

Classes TICC Uniquement — 44 classes

Classes SIAS Uniquement — 45 classes

SupervisionController

IncidentSIASService

AlarmeSIASProcessor

TelecommandeController

TICCOrderService

RelayCommandProcessor

IncidentMapper

CompteurValidator

DateUtils

AdresseFormatter

GenericDAO

AbstractController

HibernateUtil

C.3 Roadmap Phases (Gantt — Voir Section 11.1)