특정 데이터베이스에 대한 문제보다도, 아키텍처 관점으로는 캐싱 서버와 API 서버를 잘 활용해서 읽기가 빈번한 데이터는 캐시를 통해 제공될 수 있게 해주시고, 쓰기 작업의 경우만 그 빈도를 측정해서 얼마나 데이터베이스에 성능 상의 임팩트를 주겠는지를 체크해보시는 것이 중요하지 않을까 생각합니다.
거기다, 일단 NGINX를 프론트 웹 서버로 따로 두는 이유도 실제 애플리케이션을 담고 있는 ASP.NET 서버가 처리해야 할 요청이 아닌 기타 나머지 모든 요청 (파비콘 요청, 검색 엔진 크롤러 대응 등)은 특별한 연산이 필요하지 않은 NGINX 같은 평이한 웹 서버가 대행하도록 역할 분리를 하기 위함인 것도 있습니다.
그래서 실제 비즈니스 요구 사항이 어떤지에 따라 다른 상황이 펼쳐지겠지만 대부분의 경우 우려하시는 만큼의 성능 문제는 구현 관점에서의 문제가 아닌 경우 크게 문제가 될 가능성은 높지 않다고 생각합니다.
그리고 블레이저 타입의 애플리케이션 중에서, WASM 비중이 높은 경우에는 WASM 콘텐츠 자체를 CDN 등의 네트워크 가속 인프라를 사용해서 빠르게 딜리버리할 수 있도록 구성하는 것이 좋습니다. 이 부분은 서버의 부하도 있겠지만, 사용자가 "체감하는 성능"에 영향을 주는 부분이 큽니다.
안타깝게도 현재 블레이저 구현체는 닷넷 런타임의 상당 부분을 거의 그대로 패키징해서 웹 어셈블리로 만드는 방식을 취하다보니 초기 콜드 로딩에서 전달받아야 할 내용이 상당한 편입니다. 그나마 이 부분에 대한 경험을 완화시켜줄 수 있는 것은 CDN 같은 수단을 쓰는 것이 방편이 될 것 같습니다.
반면 WASM에 의존하는 비율을 줄이고 서버 렌더링 우선으로 간다면, 서버에 부하를 좀 더 얹어주고 콜드 로딩 경험은 개선할 수 있을 것 같습니다. 양쪽이 트레이드 오프가 어느 정도 있는 것이라고 할 수 있겠습니다.
(덧: 콜드 로딩이란 아무런 사전 준비없이 아주 맨 처음 사용자가 경험하게 되는 로딩 상황을 말합니다.)
서버 렌더링을 사용할 경우, 기본적으로 서버형 가비지 컬렉터를 사용하게 되므로, 클라이언트 실행 때와는 달리 어그레시브하게 가비지 컬렉션을 시도하지는 않을 것입니다.
정확한 메모리 소비량 측정은 프로파일러를 통해서 재보는 것이 필요할 것입니다. 그러나 이런 특성에 비추어봤을 때, 사용하는 개체가 많다면 메모리 소비량이 일반적인 웹 요청에 비해서는 "많을 수 있음"을 가정하고 상대적으로 넉넉한 메모리 크기를 갖춘 서버를 구성하는 것이 유리할 것으로 예상됩니다.
그리고 객체의 라이프사이클을 안전하고 정확하게 관리하기 위해서는 ASP.NET의 Scoped DI를 적극 사용하는 것이 좋습니다. 이런 조건을 충족하도록 애플리케이션을 개발한 이후에 프로파일링을 해보면서 실제로 어떤 사양을 필요로 할 지 확인해보셔야 하지 않을까 싶습니다.