When you first use CloudFormation, you stuff everything into one file. VPC, security groups, EC2, RDS, ALB all go into one template, and once it exceeds 500 lines, reading git diff becomes impossible. At some point someone says "let's separate the VPC out," and true modularization begins. But the moment you separate it, two paths appear. One is Nested Stack where the parent template directly calls child templates, and the other is Cross-Stack where completely independent stacks exchange values through Export/ImportValue. Both claim the same purpose of "reuse," but their operational models are exact opposites.