Large Quotes, Rule Complexity, Pricing Throughput, Caching, and Capacity
Performance, Scalability, and Large Enterprise Deals
Menangani large quote trees, combinatorial rules, bulk operations, dan long-running processes.
Part 048 — Large Quotes, Rule Complexity, Pricing Throughput, Caching, and Capacity
Positioning
Large enterprise deals memiliki karakteristik yang berbeda dari ordinary transactional workloads.
Satu deal dapat memiliki:
- 10,000 sites;
- hundreds of product types;
- deep bundle hierarchies;
- millions of characteristic/rule evaluations;
- multiple currencies/accounts;
- bulk qualification;
- long-running pricing;
- multi-level approval;
- many Product Orders;
- and thousands of fulfillment tasks.
Optimisasi yang salah dapat merusak correctness:
- cache menggunakan stale catalog;
- parallel pricing mengubah rounding order;
- pagination menyembunyikan validation error;
- batch retry menggandakan effects;
- atau partitioning memecah aggregate invariant.
Core thesis: performance engineering harus dimulai dari workload model, correctness invariants, dan capacity envelope. Optimizations harus terukur, version-aware, explainable, and failure-safe—bukan sekadar menambah threads, cache, atau hardware.
1. Performance
Performance adalah seberapa cepat dan efisien system memenuhi workload tertentu.
2. Scalability
Scalability adalah kemampuan mempertahankan target behavior saat workload meningkat.
3. Capacity
Capacity adalah maximum sustainable workload under defined constraints and SLO.
4. Efficiency
Work accomplished per resource unit.
5. Throughput
Completed operations per unit time.
6. Latency
Time to complete one operation.
7. Concurrency
Number of operations active simultaneously.
8. Saturation
Degree resource is fully utilized or queued.
9. Tail Latency
High percentile latency such as p95/p99.
10. Correctness under Load
System must preserve:
- invariants;
- ordering;
- idempotency;
- and exact monetary semantics.
11. Workload Model
Describe actual work, not abstract requests/second only.
12. Quote Workload Dimensions
- item count;
- hierarchy depth;
- relationship count;
- characteristic count;
- rule count;
- price component count;
- sites;
- accounts;
- currencies;
- and revisions.
13. Order Workload Dimensions
- Order count per Acceptance;
- items per Order;
- dependency nodes/edges;
- fulfillment domains;
- external calls;
- and lifecycle duration.
14. Tenant Workload Dimensions
- active users;
- concurrent sessions;
- batch imports;
- large-deal frequency;
- and integration traffic.
15. Temporal Pattern
Workload may be:
- steady;
- bursty;
- end-of-quarter;
- campaign-driven;
- batch-window;
- or invoice-cycle aligned.
16. End-of-Quarter Spike
Sales activity and approvals can surge before commercial deadlines.
17. Catalog Publication Spike
Large cache invalidation/recalculation waves.
18. Bulk Migration Spike
Different from normal interactive traffic.
19. Replay Spike
Event replay can overwhelm consumers/downstream.
20. Failure Retry Spike
Outage recovery may produce more load than normal traffic.
21. Workload Classes
Separate:
- interactive;
- asynchronous;
- batch;
- background;
- admin;
- and reconciliation.
22. Interactive Workload
Needs low user-perceived latency.
Examples:
- add item;
- save;
- validate subset;
- view totals.
23. Asynchronous Workload
Can take seconds/minutes with operation progress.
Examples:
- full pricing;
- proposal generation;
- large conversion.
24. Batch Workload
Processes many independent records/items.
25. Background Workload
Reconciliation, cleanup, and projections.
26. Admin Workload
Mass correction, migration, config publication.
27. Priority Classes
Do not let low-priority replay starve live Orders.
28. Service Class
Possible:
- real-time;
- near-real-time;
- standard batch;
- low-priority maintenance.
29. Workload SLO
Define separately by class and size.
30. Size Bucket
Example:
- small: <= 50 items;
- medium: 51–500;
- large: 501–5,000;
- very large: > 5,000.
Actual thresholds must come from real data.
31. Complexity Score
Item count alone may be insufficient.
32. Complexity Inputs
- tree nodes;
- graph edges;
- rule evaluations;
- pricing dependencies;
- currencies;
- sites;
- external qualifications;
- and cross-item discounts.
33. Weighted Complexity
Example conceptually:
score =
items
+ 2 * relationships
+ 5 * cross-item rules
+ 10 * external qualifications
Calibrate empirically.
34. Complexity Class
Use for:
- routing;
- asynchronous mode;
- resource quotas;
- and capacity planning.
35. Cost Prediction
Predict CPU/time/memory from workload features.
36. Admission Control
Reject, queue, or schedule work exceeding safe capacity.
37. Capacity Envelope
Defines supported combinations of:
- size;
- concurrency;
- latency;
- memory;
- and dependency capacity.
38. Maximum Tested Size
Not necessarily maximum theoretical size.
39. Maximum Supported Size
Contracted product limit.
40. Maximum Safe Size
Operational guard before failure risk.
41. Size Limit Behavior
Return explicit error/async path, not OOM.
42. Graceful Degradation
Large workload may:
- move async;
- reduce optional expansions;
- lower parallelism;
- or require scheduled processing.
Correctness remains.
43. Performance Budget
Allocate latency across stages.
44. End-to-End Budget
Example stages:
- API;
- authorization;
- load Quote;
- rule evaluation;
- pricing;
- persistence;
- event publication.
45. Dependency Budget
Each downstream call gets bounded share.
46. User-Perceived Latency
Includes network, UI rendering, and progress feedback.
47. Perceived Performance
Show:
- optimistic local edit;
- incremental result;
- progress;
- and partial validation,
without claiming finality too early.
48. Synchronous Threshold
Small workload may complete inline.
Large workload becomes async.
49. Async Operation
Returns operation ID and progress/status.
50. Progress
Should reflect completed stages/items, not fake spinner.
51. Progress Monotonicity
Progress should not move backward unless replan/restart is explained.
52. Cancellation
Long-running job may support cooperative cancellation.
53. Cancellation Safety
Do not leave partial side effects unclassified.
54. Time Estimate
Use range/confidence based on workload and queue.
55. Interactive Save
Should not always recalculate entire Quote.
56. Incremental Save
Persist changed item/partition and update revision metadata.
57. Incremental Validation
Validate affected scope and dependencies.
58. Incremental Pricing
Recalculate impacted components only.
59. Dependency Graph for Calculation
Map which rules/prices depend on which inputs.
60. Change Set
Capture exact changed fields/items.
61. Impact Analysis
Determine affected:
- configuration rules;
- prices;
- totals;
- approvals;
- and documents.
62. Dirty Set
Items/components requiring recomputation.
63. Transitive Closure
Changes can affect downstream dependent items.
64. Incremental Correctness
Incremental result must equal full recomputation under same versions.
65. Full Recalculation Verification
Periodically compare incremental versus full output.
66. Incremental Cache
Store intermediate reusable results.
67. Intermediate Result Identity
Include:
- input fingerprint;
- rule version;
- catalog version;
- pricing version;
- and tenant context.
68. Partial Result
May be marked provisional until all barriers complete.
69. Partial Total Risk
UI must not present incomplete total as final.
70. Stale Marker
Explicitly indicate stale item/price/validation.
71. Quote Object Graph
Large Quotes should not require loading all children for every command.
72. Aggregate Partitioning
Possible:
- Quote header;
- item partitions;
- pricing partitions;
- and revision manifest.
73. Partition Key
Possible by:
- root item;
- site;
- business group;
- or stable shard.
74. Partition Invariant
Define which invariants remain local versus finalization-time.
75. Cross-Partition Invariant
Examples:
- quote-level currency;
- total;
- approval threshold;
- and uniqueness.
76. Finalization Barrier
Validates all partitions against one manifest/version.
77. Revision Manifest
Contains exact partition versions/checksums.
78. Partition Movement
Avoid unstable re-sharding during active revision.
79. Lazy Loading
Load only required item subtree.
80. Lazy Loading Risk
Hidden database calls and N+1 queries.
81. Explicit Fetch Plan
Define required data per command/query.
82. N+1 Query
One query for parent plus one per child.
83. N+1 Detection
Use query counts and tracing.
84. Batch Fetch
Load references in bounded sets.
85. Join Explosion
One large join duplicates rows and memory.
86. Multiple Query Assembly
May be faster/safer with explicit map.
87. Denormalized Projection
Optimize read/query without changing write authority.
88. Large Collection API
Use pagination/cursor.
89. Cursor Pagination
Stable for changing datasets.
90. Item Subresource
Example:
GET /quotes/{id}/items?cursor=...
91. Partial Response
Select fields needed for list view.
92. Controlled Expansion
Prevent recursive full graph expansion.
93. Summary Projection
Header totals/status/counts without full items.
94. Tree Query
Fetch subtree by root/depth.
95. Graph Query
Filter relationships/nodes.
96. Bulk Export
Use async streaming/file with authorization and checksum.
97. Payload Size
Large JSON causes:
- serialization cost;
- network latency;
- memory duplication;
- and GC pressure.
98. Compression
Useful over network, costs CPU.
99. Binary Protocol
May help internal high-throughput calls, but contract complexity increases.
100. Streaming Serialization
Avoid materializing full payload.
101. Backpressure in Streaming
Consumer controls pace.
102. Request Size Limit
Protect service before parsing huge body.
103. Incremental Import
Upload file then process records asynchronously.
104. Bulk Import Manifest
Contains:
- file;
- schema/version;
- count;
- checksum;
- tenant;
- and operation.
105. Per-Item Result
Track success/failure/unknown.
106. Partial Retry
Retry unresolved items only.
107. Pricing Workload
Pricing can include:
- price selection;
- tier evaluation;
- discounts;
- cross-item adjustments;
- tax estimate;
- and aggregation.
108. Pricing Complexity
Can be linear, logarithmic, polynomial, or combinatorial depending rules.
109. Rule Evaluation Count
Instrument number of:
- candidates;
- matched rules;
- expressions;
- and external lookups.
110. Candidate Reduction
Index rules by:
- product;
- market;
- channel;
- customer segment;
- date;
- and action.
111. Rule Index
Avoid scanning every rule for every item.
112. Precompiled Rule
Compile expression/decision table before request.
113. Rule AST Cache
Cache parsed/compiled representation by version.
114. Rule Fact Preparation
Normalize facts once per evaluation scope.
115. Shared Fact Cache
Reuse immutable context among items.
116. Rule Short-Circuit
Stop evaluating branches when result determined, if semantics permit.
117. Rule Ordering
Order by selectivity/cost only if semantic result remains equivalent.
118. Rule Side Effect
Pricing/configuration rules should be side-effect free.
119. Deterministic Parallel Evaluation
Parallelism must not change precedence/rounding.
120. Cross-Item Rule
Requires group/global context.
121. Cross-Item Rule Cost
Can create O(n²) comparisons.
122. Index Cross-Item Relationship
Use grouping/index rather than full pairwise scan.
123. Combinatorial Explosion
Bundle option combinations grow exponentially.
124. Constraint Propagation
Prune impossible combinations early.
125. Arc Consistency
Constraint technique to reduce candidate domains.
126. SAT/Constraint Solver
May be useful for complex configuration.
127. Solver Timeout
Return incomplete/manual/async result, not invalid configuration.
128. Solver Search Strategy
Heuristics affect performance but must preserve validity.
129. Solution Count
Avoid enumerating all valid configurations if only one/recommendation needed.
130. Incremental Solver
Reuse prior state after small change.
131. Solver Explanation
Performance optimization should not remove explainability.
132. Memoization
Cache pure function result by complete input identity.
133. Memoization Key
Include all relevant semantic versions.
134. Cache
Stores reusable data/result to reduce cost/latency.
135. Cache Correctness
A fast wrong answer is worse than a slow correct answer.
136. Cache Types
- local in-memory;
- distributed;
- CDN;
- database cache;
- materialized view;
- and result cache.
137. Local Cache
Low latency, per-instance inconsistency.
138. Distributed Cache
Shared, network cost, operational dependency.
139. CDN
Useful for public/static artifacts, less for sensitive dynamic Quote data.
140. Cache-Aside
Load on miss; invalidate/update after write.
141. Read-Through
Cache loads through provider.
142. Write-Through
Write cache and store in controlled path.
143. Write-Behind
Dangerous for critical domain state.
144. Cache Key
Must include:
- tenant;
- object/input identity;
- catalog version;
- pricing/rule version;
- market/channel;
- currency;
- effective date;
- and relevant context.
145. Missing Key Dimension
Creates cross-context or stale result.
146. Cache Versioning
Versioned namespace avoids complex delete storms.
147. Cache Invalidation
Possible:
- event-driven;
- TTL;
- version change;
- explicit purge;
- and epoch switch.
148. Catalog Invalidation
New publication should not invalidate historical pinned Quote cache unnecessarily.
149. Price Invalidation
Current/effective caches depend on price definition version/effective time.
150. Tenant Config Invalidation
Tenant-scoped and version-aware.
151. Cache Stampede
Many requests recompute same missing key.
152. Single Flight
One computation per key; others wait/use stale safe value.
153. Stale-While-Revalidate
Only for data where bounded stale result is acceptable.
154. Negative Cache
Use carefully for newly published products/resources.
155. TTL
Should reflect change rate and correctness tolerance.
156. Infinite TTL
Only safe with immutable/versioned keys.
157. Cache Warming
Preload high-demand immutable data.
158. Cache Eviction
Memory pressure may remove useful entries.
159. Hot Key
One catalog/config key receives huge traffic.
160. Hot Key Replication
Local cache or partition strategy.
161. Cache Penetration
Repeated misses for invalid IDs.
Use validation/rate limit/short negative cache.
162. Cache Metrics
- hit ratio;
- miss;
- load latency;
- eviction;
- stale reject;
- and key cardinality.
163. Hit Ratio Trap
High hit ratio can still hide incorrect keying.
164. Database Performance
Start with query plans and workload.
165. Index
Supports lookup/filter/order.
166. Index Cost
Writes, storage, maintenance.
167. Composite Index
Column order should match query predicates.
168. Partial Index
Useful for active/pending states.
169. Covering Index
Avoid table lookup for common query.
170. Expression Index
Useful for normalized keys where supported.
171. Index Selectivity
Low-selectivity index may not help.
172. Query Plan
Inspect actual execution, estimates, rows, and buffers.
173. Statistics
Stale statistics cause bad plans.
174. Parameter Sensitivity
One plan may not fit small and large tenants.
175. Prepared Statement Plan
Database-specific behavior may require monitoring.
176. Partitioned Table
Partition by tenant/date/state where justified.
177. Partition Pruning
Queries must include partition key.
178. Too Many Partitions
Operational/planner overhead.
179. Hot Partition
Large tenant/state causes contention.
180. Archival Partition
Move old terminated/history data.
181. Connection Pool
Bounded resource.
182. Pool Exhaustion
Requests queue/time out.
183. Pool Size
More connections can overload DB.
184. Transaction Duration
Short transactions reduce contention.
185. Lock Contention
Measure wait time and blocking query.
186. Optimistic Conflict
High rate may indicate aggregate too large.
187. Deadlock
Track and fix ordering/query pattern.
188. Batch Write
Reduce round trips.
189. Batch Size
Too large increases transaction/log/memory cost.
190. Upsert
Use carefully with version/domain guards.
191. Bulk Update Risk
Bypasses aggregate logic and audit.
192. Append-Only History
Can grow rapidly; partition/retention/index accordingly.
193. Audit Storage
Separate access pattern from transactional tables.
194. Read Replica
Offload stale-tolerant queries.
195. Replica Lag
Do not use for immediate command guard.
196. Materialized View
Precompute expensive query.
197. Refresh Strategy
- on commit;
- event-driven;
- scheduled;
- or incremental.
198. Materialized View Freshness
Expose last refresh/version.
199. Search Engine
Useful for support/search, not transactional authority.
200. Search Index Size
Large nested documents can be expensive.
201. Search Document Design
Summary document plus item child/index strategy.
202. Reindex
Must not overwhelm primary system.
203. Queue
Buffers asynchronous work.
204. Queue Depth
Current backlog.
205. Queue Age
Oldest message/job age.
206. Arrival Rate
New work per unit time.
207. Service Rate
Completed work per unit time.
208. Little's Law
Conceptually:
L = λW
Average items in system = arrival rate × average time.
209. Queue Stability
Service rate must exceed arrival rate over sustainable period.
210. Backpressure
Reduce/stop producers when consumers saturated.
211. Admission Control
Prevent overload before queue becomes unbounded.
212. Bounded Queue
Defines maximum backlog.
213. Queue Overflow Policy
- reject;
- defer;
- spill to durable storage;
- or degrade.
214. Priority Queue
Separate interactive/high-priority work.
215. Priority Starvation
Low-priority work may never run.
216. Fairness
Weighted fair scheduling.
217. Per-Tenant Queue
Isolation but operational overhead.
218. Shared Queue with Tenant Quota
Efficient if fairness enforced.
219. Consumer Concurrency
Scale workers but respect downstream capacity and ordering.
220. Prefetch
Too high can cause unfairness and long redelivery.
221. Batch Consume
Improves throughput.
222. Partial Batch Failure
Track per message/item.
223. Retry Queue
Should not block fresh work indefinitely.
224. Poison Message
Quarantine after bounded retry.
225. Replay Throttling
Historical replay gets lower priority/rate.
226. Fan-Out
One accepted Quote may create many Orders/tasks/events.
227. Fan-Out Storm
Bound and stage dispatch.
228. Fan-In
Aggregation/barrier waits for many results.
229. Straggler
One slow item determines whole group completion.
230. Straggler Policy
- wait;
- timeout;
- partial completion;
- isolate residual;
- or reassign.
231. Hedged Request
Duplicate slow read to another replica/provider.
Avoid for non-idempotent side effects.
232. Speculative Execution
Can reduce tail latency for safe/pure tasks.
233. Work Stealing
Workers take available partitions.
234. Large Order Partitioning
Possible by:
- site;
- region;
- legal entity;
- Billing Account;
- delivery wave;
- or fulfillment domain.
235. Partition Independence
Minimize cross-partition dependencies.
236. Master Manifest
Tracks partition progress and completion policy.
237. Cross-Partition Barrier
Can create bottleneck.
238. Hierarchical Aggregation
Aggregate item -> site -> region -> Order.
239. Partial Completion
Large deals often need independent site/item outcomes.
240. Failure Isolation
One site failure should not stop all independent sites.
241. Bulk Order Creation
Use deterministic groups and per-group idempotency.
242. Bulk Status Query
Summary + paged details.
243. Bulk Cancellation
Per-scope capability, idempotency, and result.
244. Bulk Repricing
Group by shared immutable context and distribute work.
245. Shared Calculation Context
Catalog/config/customer context loaded once per batch.
246. Item-Level Calculation
Parallel but deterministic.
247. Cross-Item Aggregation
Runs after item components.
248. Deterministic Reduction
Aggregation order must preserve rounding/precedence.
249. Floating Point
Avoid binary floating point for Money.
250. Decimal Arithmetic
Use explicit scale/rounding.
251. Parallel Reduction Risk
Different grouping can change rounded totals.
252. Stable Aggregation Order
Define deterministic order and rounding boundary.
253. Memory
Large object graphs can exhaust heap.
254. Working Set
Active memory required for one job.
255. Peak Memory
Concurrent jobs × working set.
256. Streaming Processing
Reduce full materialization.
257. Chunking
Process bounded items.
258. Spill to Disk/Object Store
For intermediate large artifacts where appropriate.
259. Garbage Collection
Large temporary objects increase pause/CPU.
260. Allocation Profiling
Identify serialization/tree-copy hotspots.
261. Copy Amplification
Mapping between layers may duplicate full graph several times.
262. Immutable Copy Cost
Use structural sharing or partitioning where safe.
263. Recursive Algorithms
Deep trees can overflow stack.
264. Iterative Traversal
Safer for untrusted/deep hierarchy.
265. Maximum Depth
Enforce product/model constraint.
266. Cycle Detection
Prevent infinite traversal.
267. Serialization Depth Limit
Protect API.
268. CPU
Measure per operation/item/rule.
269. CPU Profiling
Sampling profiler for real workload.
270. Hot Method
May be:
- rule expression;
- JSON mapping;
- currency rounding;
- relationship traversal;
- or logging.
271. Vectorization
Potential for numeric batch calculation, but domain semantics may limit.
272. Parallelism
Use when independent and enough work exists.
273. Parallelism Overhead
Thread/task scheduling can hurt small work.
274. Parallelism Threshold
Enable only above measured complexity.
275. Work Partition Size
Too small: overhead.
Too large: poor balance/tail.
276. Thread Pool
Bounded by CPU or I/O class.
277. Blocking Calls
Do not consume unbounded compute threads.
278. Virtual Threads
Can simplify high-concurrency blocking I/O in modern Java environments, but do not remove downstream/database capacity constraints.
Exact runtime/version behavior must be validated for the deployed Java stack.
279. Reactive Model
Useful for high-concurrency I/O but increases programming/diagnostic complexity.
280. Async Does Not Mean Faster
It can improve concurrency/resource use, not service time itself.
281. Workload Isolation
Separate pools/queues for:
- pricing;
- documents;
- external integration;
- and reconciliation.
282. Bulkhead
Failure/saturation in one workload does not exhaust all resources.
283. Rate Limit
Protect service and dependencies.
284. Circuit Breaker
Stops calls to unhealthy dependency.
285. Timeout
Bound wait and resource occupation.
286. Retry
Adds load; budget and backoff required.
287. Retry Amplification
Multiple layers multiply traffic.
288. Load Shedding
Reject lower-priority work to preserve core flow.
289. Graceful Degradation Examples
- skip optional recommendation;
- use cached display metadata;
- defer proposal preview;
- queue non-critical analytics.
Never skip core pricing/validation silently.
290. External Dependency Capacity
Supplier, tax, Billing, Inventory, and qualification APIs may be bottlenecks.
291. Dependency Concurrency Limit
Per endpoint/tenant/operation.
292. Connection Pool per Dependency
Bound and monitor.
293. Bulk API
Use if downstream supports true per-item semantics.
294. Batching Window
Small delay can combine calls, affecting latency.
295. Request Coalescing
Deduplicate identical concurrent reads.
296. External Cache
Cache stable qualification/catalog data only with validity/version.
297. Downstream SLA
Capacity plan must use actual dependency limits.
298. Fallback
Must preserve correctness and be explicit.
299. Capacity Planning
Estimate required resources for forecast workload and failure scenarios.
300. Baseline Capacity
Normal expected load.
301. Peak Capacity
Known business peaks.
302. Recovery Capacity
Catch-up load after outage.
303. Replay Capacity
Historical stream replay.
304. Failover Capacity
Can secondary region handle production?
305. Headroom
Reserve margin for bursts/failures.
306. Utilization Target
100% sustained utilization is unsafe for queueing systems.
307. Autoscaling
Scale based on meaningful signals.
308. CPU Autoscaling
Good for CPU-bound homogeneous work.
309. Queue-Based Autoscaling
Use depth/age/service rate for workers.
310. Custom Metric Autoscaling
Possible by active jobs or pricing complexity.
311. Scale-Up Delay
May be too slow for sudden spikes.
312. Pre-Scaling
Before known end-of-quarter/batch event.
313. Scale-Down Safety
Do not terminate active long-running work without durable checkpoint.
314. Database Scaling
Options:
- vertical;
- read replicas;
- partitioning;
- sharding;
- archival;
- query optimization.
315. Sharding
Introduces cross-shard query/transaction complexity.
316. Tenant Sharding
Natural for isolation, but large tenant may dominate shard.
317. Aggregate Sharding
Keep one aggregate on one shard.
318. Cross-Shard Reporting
Use projections/warehouse.
319. Rebalancing
Move shards/tenants safely with routing version and reconciliation.
320. Capacity Model
Example inputs:
arrival rate
size distribution
service-time distribution
concurrency
memory/job
external call count
retry rate
321. Performance Test Types
- microbenchmark;
- component benchmark;
- load;
- stress;
- spike;
- soak;
- scalability;
- failover;
- and capacity test.
322. Microbenchmark
Measures isolated hot operation.
323. Microbenchmark Risk
May not represent allocation, DB, network, and contention.
324. Component Benchmark
Tests pricing/rule/configuration engine with realistic data.
325. Load Test
Expected workload under target SLO.
326. Stress Test
Beyond capacity to find failure mode.
327. Spike Test
Sudden traffic burst.
328. Soak Test
Long duration to find leaks/drift.
329. Scalability Test
Compare resource and throughput as load grows.
330. Failover Test
Measure impact and catch-up.
331. Capacity Test
Determines safe supported envelope.
332. Test Dataset
Must represent:
- real hierarchy;
- rule complexity;
- price components;
- tenants;
- and data skew.
333. Synthetic Uniform Data Risk
Misses hot products/large tenants/skew.
334. Production-Derived Data
Sanitized/anonymized and policy-controlled.
335. Workload Replay
Replay representative request/event patterns without unsafe side effects.
336. Performance Regression Test
Compare version against baseline.
337. Regression Budget
Fail build/release when critical operation worsens beyond allowed percentage/absolute SLO.
338. Noise Control
Performance environments need stable resources and repeated runs.
339. Warm-Up
JIT/cache/connection warm-up affects Java benchmarks.
340. JVM Considerations
Measure:
- heap;
- GC;
- allocation;
- thread count;
- safepoints;
- and JIT behavior.
341. Database Warm Cache
Test cold and warm scenarios.
342. Network Emulation
Include realistic latency and failures.
343. Dependency Stub Risk
Stubs may be too fast and unlimited.
344. Capacity-Limited Stub
Model rate limit, latency distribution, timeout, and errors.
345. Long-Tail Data
Include worst-case relationships/rules.
346. Correctness Oracle
Performance test must verify result, not only response time.
347. Pricing Golden Result
Compare exact components, rounding, and provenance.
348. Incremental Equivalence
Incremental result equals full recomputation.
349. Idempotency under Load
Duplicate requests still produce one effect.
350. Concurrency Invariant
No lost update or invalid transition.
351. Backpressure Test
Verify bounded queue and producer behavior.
352. Overload Behavior
System should:
- reject/queue clearly;
- preserve existing work;
- and recover predictably.
353. OOM Behavior
Prevent via admission control; restart alone is not solution.
354. Timeout Behavior
Avoid cascade and blind retries.
355. Brownout
System partially degrades optional features to preserve core.
356. Capacity Dashboard
Track:
- arrival/service rate;
- queue depth/age;
- concurrency;
- utilization;
- saturation;
- and headroom.
357. Size Distribution Dashboard
Items, sites, rules, payload, graph nodes.
358. Latency by Size
p50/p95/p99 segmented by complexity class.
359. Pricing Metrics
- evaluation time;
- rules considered/matched;
- cache hit;
- components;
- and external calls.
360. Configuration Metrics
- constraint count;
- solver nodes;
- pruning;
- timeout;
- and explanation cost.
361. Persistence Metrics
- query count;
- rows;
- lock wait;
- transaction time;
- and conflict.
362. Queue Metrics
- depth;
- age;
- retries;
- DLQ;
- and throughput.
363. Memory Metrics
- heap/job;
- allocation rate;
- GC pause;
- and OOM prevention.
364. External Dependency Metrics
- latency;
- rate limit;
- errors;
- and concurrency.
365. Cache Metrics
- hit/miss;
- stale reject;
- invalidation;
- load;
- and eviction.
366. Cost Metrics
- compute per Quote;
- storage per item;
- event volume;
- and external-call cost.
367. Performance SLI
Examples:
- p95 interactive save under target for size class;
- full pricing completes within target by complexity class;
- queue age below target;
- and zero correctness mismatch between incremental/full calculation.
Internal targets must be verified.
368. Capacity Alert
Alert before hard saturation.
369. Queue Burn Alert
Arrival rate persistently exceeds service rate.
370. Memory Headroom Alert
Active jobs can exceed safe heap.
371. DB Contention Alert
Lock wait/conflict rises with large Quote.
372. Cache Invalidation Alert
Unexpected miss storm after publication.
373. Dependency Limit Alert
Rate-limit utilization near threshold.
374. Large-Deal Alert
One operation exceeds complexity/support threshold.
May route to controlled lane, not necessarily page.
375. Performance Incident
Examples:
- pricing p99 spike;
- OOM on large Quote;
- DB lock storm;
- event backlog;
- cache stampede;
- and supplier throttling.
376. Containment
Possible:
- admission limit;
- reduce concurrency;
- tenant throttle;
- disable optional feature;
- pause replay;
- and route large jobs async.
377. Recovery
Drain backlog gradually.
Avoid retry storm.
378. Post-Incident Capacity Review
Update envelope, test, and guard.
379. Optimization Process
- define workload/SLO;
- measure;
- profile;
- hypothesize;
- optimize;
- verify correctness;
- retest under load;
- observe production.
380. Premature Optimization
Optimizing without measured bottleneck can add complexity.
381. Local Optimization
May shift bottleneck downstream.
382. End-to-End Optimization
Evaluate full lifecycle and dependency.
383. Algorithmic Improvement
Often more valuable than hardware.
384. Data-Access Improvement
Remove N+1, reduce rows, and use correct index.
385. Caching Improvement
Only after complete key/invalidation design.
386. Parallelism Improvement
Only after determinism and capacity checks.
387. Hardware Scaling
Useful but not substitute for bounded workload.
388. Performance Explainability
Record why operation is expensive:
- number of items;
- rules;
- external calls;
- and cache misses.
389. Customer Transparency
For large deal, expose progress and scoped failures.
390. Large-Deal Operational Lane
May provide:
- scheduled window;
- dedicated queue;
- higher quota;
- and specialist support.
391. Large-Deal Preflight
Before execution check:
- size;
- complexity;
- data completeness;
- mappings;
- capacity;
- and downstream quotas.
392. Preflight Result
- safe interactive;
- safe async;
- schedule required;
- split recommended;
- or unsupported.
393. Deal Partition Recommendation
Suggest split by:
- site wave;
- Billing Account;
- legal entity;
- or fulfillment independence.
394. Commercial Semantics of Split
Splitting must not change accepted discount/terms without explicit policy.
395. Cross-Partition Pricing
Quote-level discount may require global calculation before Order partition.
396. Global Approval
Approval may bind total deal even when fulfillment splits.
397. Global Acceptance
One Acceptance can produce many execution groups.
398. Residual Tracking
Every partition/item has explicit outcome.
399. Large Deal Resume
Job restarts from durable checkpoint, not from zero.
400. Checkpoint Identity
Stage, partition, version, and input checksum.
401. Checkpoint Compatibility
Code upgrade may require version-aware resume/migration.
402. Intermediate Artifact
Store immutable partition result with provenance.
403. Recompute versus Reuse
Reuse only when input/version fingerprint matches.
404. Partial Failure
Independent partitions continue according to policy.
405. Retry Scope
Retry failed partition/item, not entire 10,000-item deal.
406. Bulk Idempotency
Stable business key per generated Order/item/effect.
407. Exactly-Once Myth
At scale, expect retries/redelivery and design effectively-once effects.
408. Large-Deal Audit
Track manifest, partitions, versions, and outcomes.
409. Large-Deal Reconciliation
Compare accepted manifest with Orders, Products, and Billing outcomes.
410. Performance Smells
- item count only, no complexity;
- average latency only;
- and no size-class SLO.
411. Data Smells
- load full object graph;
- N+1;
- giant join;
- and no pagination.
412. Pricing Smells
- scan all rules;
- external call per item;
- and full repricing on every keystroke.
413. Cache Smells
- key omits version/tenant;
- cache current mutable object for history;
- and global invalidation storm.
414. Queue Smells
- unbounded queue;
- queue depth without age;
- and replay shares priority with live traffic.
415. Parallelism Smells
- unlimited futures;
- downstream rate limit ignored;
- and nondeterministic monetary reduction.
416. Memory Smells
- repeated deep copies;
- full JSON materialization;
- and no maximum depth/size.
417. Database Smells
- one transaction for all 10,000 items;
- missing version/index;
- and read replica for command guard.
418. Capacity Smells
- autoscaling only on CPU;
- no recovery/replay capacity;
- and no admission control.
419. Testing Smells
- tiny synthetic datasets;
- no correctness checks;
- and no soak/failure scenario.
420. Anti-Patterns
Cache Everything
Stale or cross-tenant results.
Parallelize Everything
Contention and nondeterminism.
Full Recompute on Every Edit
Interactive experience collapses.
One Giant Aggregate
Locks and memory grow with deal size.
One Giant Batch Transaction
Failure and rollback become expensive.
Average Latency SLO
Tail problems disappear.
Unbounded Async Queue
Outage becomes permanent backlog.
Scale App, Ignore Downstream
Bottleneck moves to database/supplier.
Split Deal without Commercial Model
Totals, discounts, and acceptance semantics break.
421. Workload Model Template
## Operation / User Journey
## Workload Class
## Arrival Pattern
## Size / Complexity Distribution
## Data Skew / Hot Tenants
## Dependencies / External Calls
## Concurrency
## Latency / Throughput SLO
## Memory / CPU / DB Cost
## Failure / Retry / Replay Load
## Capacity Envelope
422. Complexity Score Template
Items:
Hierarchy depth:
Relationships:
Characteristics:
Rule candidates:
Cross-item rules:
Price components:
Sites/accounts/currencies:
External checks:
Calculated score/class:
423. Cache Contract Template
Cached value:
Authority:
Key dimensions:
Tenant:
Semantic versions:
TTL:
Invalidation:
Staleness allowed:
Single-flight:
Metrics:
Fallback:
424. Incremental Calculation Template
Changed inputs:
Dependency graph:
Dirty set:
Transitive impacts:
Reused results:
Recomputed results:
Global reductions:
Equivalence check:
Snapshot/version:
425. Capacity Plan Template
## Normal / Peak / Recovery / Replay Workload
## Size Classes
## Service Rates
## Queue Limits
## CPU / Memory / DB
## External Dependency Limits
## Headroom
## Autoscaling Signals
## Admission / Load Shedding
## Failover Capacity
## Validation Test
426. Large-Deal Manifest Template
Deal/Acceptance:
Quote revision/checksum:
Total items/sites:
Complexity class:
Partitions/groups:
Global pricing/approval:
Generated Orders:
Checkpoints:
Residuals:
Products:
Billing outcomes:
Reconciliation:
427. Performance Test Template
## Scenario / Dataset
## Workload Shape
## Environment / Versions
## Warm/Cold State
## Target SLIs
## Correctness Oracle
## Resource Metrics
## Dependency Limits
## Failure Injection
## Results / Bottleneck
## Regression Decision
428. Performance Invariants
Representative invariants:
- optimization does not alter monetary/configuration result;
- cache keys include all semantic and tenant dimensions;
- incremental calculation equals full calculation for same inputs;
- parallel execution preserves deterministic precedence and rounding;
- large jobs have bounded memory/queue/concurrency;
- retries operate at smallest safe idempotent scope;
- partitioning preserves global commercial invariants through manifests/barriers;
- and overload degrades or rejects explicitly rather than corrupting state.
429. Worked Example: 10,000-Site Quote
Approach:
- item/site partitions;
- shared immutable catalog/pricing context;
- incremental validation;
- async full pricing;
- global discount reduction;
- revision manifest;
- paged UI;
- and checkpointed conversion.
430. Worked Example: Cross-Item Discount
A deal-level discount depends on total recurring amount.
Item pricing runs in parallel.
Deterministic global aggregation applies discount after all required components.
431. Worked Example: Rule Candidate Index
Without index, 50,000 rules × 10,000 items is impossible.
Index narrows rules by offering, market, action, and effective date before evaluation.
432. Worked Example: Configuration Solver
Bundle options cause combinatorial growth.
Constraint propagation prunes invalid options early; solver returns one valid/recommended solution with explanation.
433. Worked Example: Incremental Edit
User changes bandwidth at one site.
System recalculates affected Product subtree, price components, cross-item totals, and approval need—not unrelated sites.
434. Worked Example: Cache Version
Catalog publication v12 becomes active.
New Quotes use v12 keys.
Existing Quote pinned to v11 remains reproducible without global cache deletion.
435. Worked Example: Cache Stampede
End-of-quarter traffic requests same tenant pricing context after expiry.
Single-flight allows one recomputation while others wait/use safe bounded stale data if policy permits.
436. Worked Example: Queue Backlog
Supplier outage reduces service rate below arrival rate.
Admission control pauses low-priority imports, queue age alerts, and retries are budgeted.
437. Worked Example: Large Fan-Out
One Acceptance creates 500 Product Orders.
Creation is staged with per-group idempotency and downstream concurrency limit.
438. Worked Example: Partial Retry
50 of 10,000 sites fail transient qualification.
Only failed sites retry; successful evidence remains pinned.
439. Worked Example: Memory Failure
Full Quote JSON is copied through API, domain, pricing, and persistence models.
Profiling shows 5× graph duplication.
Partitioned/streaming mappings reduce peak heap.
440. Worked Example: DB Lock Contention
One Quote aggregate row/version conflicts for every item edit.
Item partitions reduce conflict; finalization manifest restores revision consistency.
441. Worked Example: Read Replica Lag
Large import commits.
Immediate search on replica appears incomplete.
Operation status and authoritative manifest provide read-your-write; projection catches up.
442. Worked Example: Nondeterministic Parallel Total
Parallel sum applies rounding per arbitrary completion order.
Fix uses exact decimal components, deterministic grouping, and explicit rounding boundary.
443. Worked Example: Replay Storm
New consumer replays a year of events.
Replay uses dedicated low-priority group, rate limit, and no external side effects.
444. Worked Example: Autoscaling Failure
CPU remains moderate while external call queue grows.
Queue-age and active-job metrics become scaling/admission signals.
445. Worked Example: Noisy Tenant
One tenant sends several huge bulk files.
Per-tenant concurrency, quota, and fair scheduling maintain other tenant SLOs.
446. Worked Example: Large Deal Preflight
Preflight calculates:
- 12,000 items;
- high cross-item rule score;
- 800 external qualifications;
- and 35 generated Orders.
Result routes to scheduled async lane with explicit expected duration range.
447. Worked Example: Failure during Conversion
Job fails after creating 20 of 35 Orders.
Checkpoint/manifest and idempotency allow resume from remaining groups, not duplicate all Orders.
448. Worked Example: End-of-Quarter Peak
Forecast pre-scales workers/cache, limits low-priority reconciliation, and reserves DB/downstream headroom.
449. Worked Example: Performance Regression
New rule engine version improves average but doubles p99 for deep bundles.
Size-class regression gate blocks rollout.
450. Senior Engineer Operating Model
Model real workload and complexity
Not only RPS.
Define size-class SLOs and limits
Small interactive versus huge async.
Optimize algorithms and data access first
Before scaling hardware.
Use incremental calculation with equivalence checks
Correctness is non-negotiable.
Cache immutable/versioned semantics
Complete keys and explicit invalidation.
Partition large deals deliberately
Preserve global invariants via manifests/barriers.
Bound queues, retries, concurrency, and memory
Overload must be predictable.
Respect downstream capacity
Application scaling is not enough.
Test tail, soak, failover, replay, and correctness
Representative skewed datasets.
Make large-deal progress and recovery explicit
Checkpoints, partial outcomes, and reconciliation.
451. Internal Verification Checklist
Workload and SLOs
- Apa ukuran Quote/Order terbesar yang nyata?
- What are distributions for items, sites, depth, relationships, rules, and charge components?
- Apa p50/p95/p99 untuk configuration, pricing, save, validation, dan conversion?
- Are SLOs segmented by complexity/size and workload class?
Calculation and rules
- Is recalculation full or incremental?
- Are rule candidates indexed?
- Are cross-item rules causing O(n²) or combinatorial behavior?
- Does parallel/incremental evaluation preserve exact result and explanation?
Data/API
- Are large collections paged and sub-resourced?
- Are object graphs loaded explicitly without N+1?
- Are payload/depth/import limits defined?
- Are large exports/imports asynchronous and streaming?
Cache
- Bagaimana cache diinvalidasi ketika Catalog/Pricing berubah?
- Do cache keys include tenant, effective date, market, currency, and semantic versions?
- Are historical pinned Quotes isolated from current publication invalidation?
- Are stampede, hot-key, and stale-result behaviors controlled?
Database and concurrency
- Which queries/indexes dominate large deals?
- Are transactions/chunks bounded?
- Are aggregate conflicts/locks visible?
- Are replicas/search used only where staleness is safe?
Queues and dependencies
- Apa capacity bottleneck saat bulk atau multi-site deal diproses?
- Are queue depth and age monitored?
- Are per-tenant fairness, retry budgets, and replay throttles present?
- Are downstream concurrency/rate limits part of capacity model?
Memory/CPU/runtime
- What is peak memory per job and concurrent-job envelope?
- Are graph copies/serialization allocations profiled?
- Are thread pools/workload bulkheads bounded?
- Are deep hierarchy/cycle limits enforced?
Large-deal lifecycle
- How are deals partitioned and checkpointed?
- What global price/approval/acceptance invariants span partitions?
- Can partial failure resume without duplicate Orders/effects?
- Is a large-deal preflight and dedicated operational lane available?
Testing/capacity
- Are load, stress, spike, soak, failover, and replay tests run?
- Do datasets represent skew and worst cases?
- Are correctness oracles included?
- What is the tested/supported capacity envelope and headroom?
452. Practical Exercises
Exercise 1 — Workload model
Build distributions and complexity score from real anonymized Quote/Order data.
Exercise 2 — Incremental pricing
Design dirty-set propagation and prove equivalence with full calculation.
Exercise 3 — Cache contract
Specify complete key and invalidation for Catalog, Pricing, and tenant policy.
Exercise 4 — Large-deal partition
Partition 10,000 sites while preserving global discount and approval.
Exercise 5 — Capacity test
Measure normal, peak, outage recovery, replay, and failover capacity.
Exercise 6 — Overload design
Define admission, queue bounds, fairness, load shedding, and graceful degradation.
453. Part Completion Checklist
You are done if you can:
- create a realistic workload and complexity model;
- define size-class latency/throughput/capacity targets;
- avoid loading unbounded Quote/Order graphs;
- design incremental validation/pricing with correctness equivalence;
- index and profile rule evaluation;
- define complete cache keys and invalidation;
- bound queues, concurrency, retries, memory, and payloads;
- partition and checkpoint large enterprise deals safely;
- account for downstream and failover capacity;
- run representative performance/capacity tests with correctness oracles;
- and create an internal performance/scalability verification backlog.
454. Key Takeaways
- Real workload includes size, graph, rule, site, and dependency complexity.
- Large and small operations need different execution modes and SLOs.
- Incremental optimization must equal full computation.
- Cache correctness depends on complete semantic versioned keys.
- Rule indexing and pruning beat brute-force scanning.
- Partitioning must preserve global commercial invariants.
- Queue age, fairness, and downstream limits are core capacity controls.
- Parallelism must remain deterministic for money and rules.
- Performance tests need realistic skew, tail, failure, and correctness checks.
- Internal CSG workload sizes, limits, and bottlenecks must be measured and verified.
455. References
Conceptual baseline:
- Performance engineering, workload modeling, latency/throughput/concurrency/saturation, tail latency, Little's Law, queueing, and capacity planning.
- Large-object APIs, pagination, streaming, incremental computation, dependency graphs, memoization, cache invalidation, and data partitioning.
- Rule indexing, constraint propagation, solver techniques, deterministic parallelism, decimal monetary calculation, and algorithmic complexity.
- Database query planning, indexing, partitioning, connection pools, lock contention, read replicas, materialized views, and search projections.
- Load, stress, spike, soak, scalability, failover, replay, and regression testing for Java/distributed systems.
These references do not define internal CSG production sizes, SLOs, performance limits, cache topology, infrastructure capacity, or bottlenecks.
You just completed lesson 48 in final stretch. Use the series map if you want to review the broader track, or continue directly into the next lesson while the context is still warm.
Keep the momentum while the lesson is still fresh. Move backward for review or continue forward into the next concept.