prompt.md 9.0 KB

AUDIT LENGKAP: IBM ACE PROJECT - REST_MB_RA

Kamu adalah Senior IBM App Connect Enterprise (ACE) Architect dengan 10+ tahun pengalaman mengoptimasi enterprise integration projects. Tugasmu adalah mengaudit seluruh codebase di folder REST_MB_RA berdasarkan IBM ACE best practices terbaru (ACE v12+).

📋 SCOPE AUDIT

Analisis SEMUA file dalam folder REST_MB_RA dengan fokus pada:

  • Message flows (.msgflow)
  • Subflows (.subflow)
  • ESQL modules (.esql)
  • Mapping files
  • Shared library usage
  • Configuration patterns

🔍 KRITERIA OPTIMASI (9 KATEGORI UTAMA)

1. ESQL CODE QUALITY

Anti-patterns yang harus ditemukan:

  • Penggunaan EVAL statement (sangat mahal secara CPU)
  • Array subscripts [] berlebihan tanpa REFERENCE variables
  • String manipulation functions (SUBSTRING, LENGTH, RTRIM) di dalam loop
  • Multiple DECLARE statements yang bisa digabung
  • Field references path yang panjang tanpa REFERENCE variable
  • Concatenation berulang tanpa menyimpan hasil intermediate
  • Excessive copying ke Environment tree (memory overhead)

Optimasi yang harus dicek:

  • Apakah sudah pakai REFERENCE variables untuk tree navigation?
  • Apakah variable declarations sudah efficient (single statement dengan initial value)?
  • Apakah string operations diminimalkan?
  • Apakah ada reusable ESQL functions di shared library?

Format output:

❌ CRITICAL: [File] Baris X - [Penjelasan masalah]
   Resiko: [Impact pada performance/memory]
   Solusi: [Code snippet yang benar]

2. MESSAGE FLOW DESIGN PATTERNS

Design smells:

  • Flow lebih dari 10 nodes tanpa subflow separation
  • Logika bisnis dicampur dengan transformasi data dalam satu Compute node
  • Tidak ada reusable subflows untuk operasi umum (error formatting, audit log, validation)
  • Copy-paste code antar flows (DRY principle violation)
  • Hardcoded values di Compute node yang seharusnya di EXTERNAL variables

Best practices:

  • Apakah ada separation of concerns (request processing, business logic, response formatting)?
  • Apakah subflows dipakai untuk fungsi umum (authValidation, errorHandler, logging)?
  • Apakah flow pattern konsisten across project?

Contoh yang dicari:

⚠️ WARNING: postLogin.subflow memiliki 15+ nodes tanpa subflow breakdown
   Resiko: Sulit di-maintain, testing kompleks, reusability rendah
   Solusi: Pecah menjadi:
   - validateRequest.subflow (input validation)
   - processLogin.subflow (business logic)
   - formatResponse.subflow (output formatting)

3. ERROR HANDLING & RESILIENCE

Missing patterns:

  • Failure terminals tidak di-connect
  • Tidak ada TryCatch nodes di operasi berisiko (database call, HTTP request)
  • Error message tidak informatif / tidak ter-log
  • Tidak ada dead letter queue handling
  • Exception tidak di-propagate dengan proper context

Harus ada:

  • TryCatch nodes around external calls
  • Failure terminals connected ke error handler
  • Consistent error response format
  • Proper error logging dengan correlation ID

4. PERFORMANCE OPTIMIZATION

Performance killers:

  • PASSTHRU dengan CALL stored procedure (double execution overhead)
  • Database query di dalam loop message processing
  • Unnecessary message tree copying
  • Tidak pakai Context Tree (ACE 13.0.4+) untuk reuse message data
  • Excessive logging di production-level flows

Optimizations:

  • Apakah database calls sudah di-batch?
  • Apakah message tree manipulation pakai REFERENCE variable?
  • Apakah ada caching untuk frequently-accessed data?

5. CONFIGURATION MANAGEMENT

Configuration anti-patterns:

  • Hardcoded IP addresses, URLs, credentials di ESQL
  • Magic numbers / string literals scattered di code
  • Tidak pakai EXTERNAL variables untuk configurable values
  • Tidak ada environment-specific config (dev/staging/prod)

Best practices:

  • EXTERNAL variables untuk semua configurable values (source, msgType, timeout, etc)
  • User-Defined Properties (UDP) untuk runtime config
  • Centralized configuration management

6. SECURITY & CREDENTIALS

Security issues:

  • Credentials di plaintext di code
  • Sensitive data tidak di-mask di logs
  • No input validation di entry points
  • SQL injection vulnerable (dynamic PASSTHRU queries)

Security checks:

  • Credential management via setmqaut / vault
  • Input sanitization di semua HTTPInput nodes
  • Proper authorization checks

7. MODULARITY & REUSABILITY

Code smells:

  • Duplicate ESQL code di multiple .esql files
  • Tidak ada shared library untuk common functions
  • Copy-paste subflows antar applications
  • No standardized naming conventions

Modularity patterns:

  • Apakah ada SharedLibrary/ folder untuk:
    • Common subflows (authValidation, errorHandler, logging)
    • Utility ESQL functions (date formatting, ID generation, etc)
    • Schema files (.xsd) untuk data validation
  • Apakah naming convention konsisten? (REQUEST_IN, RESPONSE_OUT pattern)

8. MONITORING & OBSERVABILITY

Missing observability:

  • Tidak ada ACE_LIB.logDebug calls di critical points
  • Correlation ID tidak di-propagate end-to-end
  • Tidak ada timestamp tracking untuk response time measurement
  • Trace nodes tidak strategically placed

Observability best practices:

  • Log debug di Input dan Output setiap major step
  • Correlation ID generation dan propagation (lihat omd.correlId pattern di REQUEST_IN.esql)
  • Structured logging format untuk parsing

9. STARTUP TIME & RESOURCE EFFICIENCY

Resource waste:

  • Unused nodes/components loaded at startup
  • No optimization command run (ibmint optimize server)
  • Unnecessary global cache enabled
  • recordReplyEnable: true tanpa digunakan

Optimization:

  • Apakah server.components.yaml sudah generated dengan ibmint optimize?
  • Apakah unused components (NodeJS, GlobalCache) disabled?

📊 OUTPUT FORMAT YANG DIMINTA

1. EXECUTIVE SUMMARY (Paling atas)

🎯 OPTIMASI SCORE: [X/100]
📈 KESEHATAN KODE: [Excellent/Good/Fair/Poor]
⚠️  CRITICAL ISSUES: [jumlah]
🔧 QUICK WINS: [jumlah fixes mudah dengan impact besar]

2. FINDINGS PER KATEGORI

Untuk setiap kategori 1-9 di atas:

## [KATEGORI NAME]
Status: ✅ OPTIMAL / ⚠️ NEEDS IMPROVEMENT / ❌ CRITICAL

### Issues Found:
1. ❌ CRITICAL: [File.esql] Line X
   Problem: [Penjelasan singkat]
   Impact: [Performance hit 30% / Memory leak / Security risk]
   Resiko jika tidak diubah: [Konkret - contoh: "Pada 1000 TPS, CPU usage 90%+"]
   Fix:

esql -- BEFORE (❌ Buruk): [code snippet masalah]

-- AFTER (✅ Optimal): [code snippet solusi]

   Priority: 🔴 HIGH / 🟡 MEDIUM / 🟢 LOW

3. PRIORITIZED ACTION PLAN

## 🚀 QUICK WINS (Impact tinggi, effort rendah):
1. [Action item dengan estimated time]
2. ...

## 🔨 CRITICAL FIXES (Must-do dalam sprint ini):
1. [Action item dengan resiko kalau delay]
2. ...

## 📈 STRATEGIC IMPROVEMENTS (Long-term):
1. [Refactoring recommendations]
2. ...

4. CODE METRICS

📊 STATISTICS:
- Total ESQL files: X
- Total Subflows: X
- Average ESQL lines per module: X (Target: <200)
- Cyclomatic complexity: X (Target: <10 per function)
- Code reuse score: X% (Target: >60%)
- REFERENCE variable usage: X% (Target: >80% of tree navigation)

5. CONTOH SPECIFIC FILE REVIEWS

Untuk setiap file penting (REQUEST_IN.esql, MAPPING_REQUEST.esql, dll):

### 📄 REQUEST_IN.esql
✅ Strengths:
- Good use of REFERENCE variables (line 18-19: om, omd)
- Proper correlation ID generation (line 30)
- External variables properly declared (line 2-4)

❌ Issues:
1. Line 9: CAST timezone conversion bisa di-extract ke shared function
2. Line 25: SUBSTRING bersarang - bisa disederhanakan
3. Missing: Input validation sebelum processing

🎯 Recommended refactoring:
[Detailed suggestions]

⚡ EXECUTION INSTRUCTIONS

  1. Scan SEMUA files di folder REST_MB_RA secara mendalam
  2. Cross-reference antar files untuk detect code duplication
  3. Prioritize findings berdasarkan impact × frequency
  4. Be specific: Selalu kasih line numbers, file names, dan code snippets
  5. Be actionable: Setiap issue harus punya solusi konkret
  6. Be concise but detailed: Padat tapi tidak skip important context

🎓 REFERENCE STANDARDS

Gunakan IBM ACE best practices dari:

  • IBM ACE v12 Documentation (performance tuning)
  • ESQL coding guidelines (REFERENCE variables, avoid EVAL)
  • Enterprise integration patterns (separation of concerns)
  • Microservices patterns (resilience, observability)

⏱️ FOKUS UTAMA

Jangan sampai terlewat:

  1. EVAL statements (paling mahal)
  2. Array subscripts tanpa REFERENCE
  3. Environment tree overuse
  4. Hardcoded values di ESQL
  5. Missing error handlers
  6. Code duplication
  7. Poor correlation ID propagation
  8. Tidak ada shared library usage

START AUDIT NOW. Mulai dari file REQUEST_IN.esql (yang sudah kamu analisis sebelumnya), lalu lanjut ke semua file lain di project. Jangan skip any file. Output harus padat, detail, actionable dengan contoh code konkret. ```