Chapter 9: Appendices & Reference

9.2 Appendix B: Technology Comparison Guide

These comparison tables help you choose the right technology for a given requirement. They summarize trade-offs covered throughout the handbook.

SQL vs. NoSQL Decision Matrix

FactorChoose SQLChoose NoSQL
Data structureWell-defined schema, stable over timeFlexible, evolving, or varied schema
RelationshipsComplex joins, referential integrityMinimal relationships, self-contained records
TransactionsMulti-row ACID transactions neededSingle-record atomicity sufficient
ConsistencyStrong consistency requiredEventual consistency acceptable
Query patternsComplex queries, ad-hoc reporting, aggregationSimple key-based lookups, known access patterns
ScaleModerate (vertical + read replicas)Massive horizontal scaling needed
Developer familiaritySQL is universally knownVaries by NoSQL type
ExamplesPostgreSQL, MySQL, AuroraDynamoDB, Cassandra, MongoDB, Redis

Message Queue Comparison

FeatureKafkaRabbitMQSQSRedis Streams
ModelDistributed log (pub/sub)Message broker (queues + exchanges)Managed queueIn-memory stream
OrderingPer-partitionPer-queue (single consumer)FIFO queues availablePer-stream
ThroughputVery high (millions msg/s)Moderate (10K-50K msg/s)High (standard), limited (FIFO)High (in-memory)
RetentionConfigurable (days to forever)Until consumed14 days maxConfigurable
ReplayYes (consumers track offsets)No (message deleted after ack)NoYes (by ID)
OperationsSelf-managed or managed (MSK, Confluent)Self-managed or managedFully managed (AWS)Part of Redis deployment
Best forEvent streaming, logs, high throughputTask routing, complex routing patternsSimple queuing on AWSLightweight streaming within Redis

Cache Comparison: Redis vs. Memcached

FeatureRedisMemcached
Data structuresStrings, lists, sets, sorted sets, hashes, streamsStrings only (key-value)
PersistenceOptional (RDB snapshots, AOF logs)None
ReplicationBuilt-in (primary-replica)None (client-side sharding)
Pub/SubBuilt-inNone
Lua scriptingYesNo
Memory efficiencyHigher overhead per key (more features)Lower overhead (simpler data model)
Max value size512 MB1 MB
ThreadingSingle-threaded (Redis 7+ has I/O threads)Multi-threaded
Best forVersatile caching, sessions, leaderboards, rate limitingPure key-value caching, maximum simplicity

Load Balancer Comparison

FeatureNginxHAProxyEnvoyAWS ALB
TypeWeb server + proxyDedicated proxyMicroservice proxyManaged service
Layer4 and 74 and 74 and 77
ConfigurationFile-based (static)File-based (hot reload)API-driven (xDS)AWS Console/API
Health checksBasic (Plus: advanced)Advanced, detailedAdvanced, active + passiveBuilt-in
ObservabilityAccess logs, basic metricsRich stats dashboardDetailed metrics, tracingCloudWatch integration
WebSocket supportYesYesYesYes
Service meshLimitedNot designed for itDefault data plane (Istio)Not applicable
Best forGeneral web serving + proxyAdvanced load balancingMicroservices, service meshAWS-native, zero ops

Container Orchestration Comparison

FeatureKubernetesECSNomad
ComplexityHighMediumLow-Medium
Cloud lock-inNone (runs anywhere)AWS onlyNone
Workload typesContainersContainersContainers, VMs, binaries, Java
Auto-scalingHPA, VPA, KarpenterService auto-scalingBuilt-in
Service meshIstio, Linkerd, ConsulAWS App MeshConsul Connect
Learning curveSteepModerateGentler
EcosystemMassive (CNCF)AWS-integratedHashiCorp ecosystem
Best forLarge-scale, multi-cloudAWS-native teamsSimple orchestration, mixed workloads

Object Storage Comparison

FeatureAWS S3Google Cloud StorageAzure Blob Storage
Durability99.999999999% (11 nines)99.999999999%99.999999999%
Storage classesStandard, IA, Glacier, Deep ArchiveStandard, Nearline, Coldline, ArchiveHot, Cool, Cold, Archive
Max object size5 TB5 TB4.75 TB (block blob)
VersioningYesYesYes
Lifecycle policiesYesYesYes
CDN integrationCloudFrontCloud CDNAzure CDN
Pricing (approx, per GB/month)$0.023 (Standard)$0.020 (Standard)$0.018 (Hot)
Best forAWS ecosystemsGCP ecosystemsAzure ecosystems