Heat the oven to 350°F (175°C). Coat two 9-inch round cake pans with nonstick cooking spray and line the bottoms with parchment paper.
In a large bowl, whisk together the all-purpose flour, granulated sugar, unsweetened cocoa powder, baking powder, baking soda, and fine salt until evenly combined.
Add the eggs, whole milk, vegetable oil, and vanilla extract to the bowl. Whisk until the batter is smooth and no dry pockets remain.
Pour in the water (boiling) and whisk carefully until the batter is thin and evenly combined.
Divide the batter evenly between the prepared pans. Bake 30–35 minutes, rotating once, until a toothpick inserted in the center comes out with a few moist crumbs and the tops spring back.
Cool the cakes in the pans for 10 minutes, then turn out onto wire racks, peel off the parchment, and cool completely, about 1 hour.
For the frosting, beat the unsalted butter with a hand mixer or stand mixer on medium speed until smooth and creamy, about 1 minute.
Add the unsweetened cocoa powder, powdered sugar, whole milk, and vanilla extract. Beat on low until combined, then increase to medium-high and whip until fluffy and spreadable, 2–3 minutes.
Assemble the cake: Place one layer on a serving plate, spread about one-third of the frosting over the top, set the second layer on, then spread the remaining frosting over the top and sides. Let set 15 minutes before slicing.