선생님 짧게 답해주셔도 되는데 정성스러운 답변 정말 감사드립니다!
아직 개념이 부족하여 염치 불구하고 몇 개만 더 여쭙고 싶습니다!
1. 먼저 API-Layer가 필요한 경우를 정확하게 알고 싶습니다.
제가 이해한 바로는 로컬 어플리케이션 즉, Desktop Application(WinForm, WPF)이나 Mobile Application(Xamarin 등..)을 DB랑 연결시켜야 할 때는 Connection String이 노출되지 않도록 REST API를 구성하여 해당 API 서버를 통해서 데이터를 주고 받는 형식으로 구성한다고 알고 있습니다.
근데 Blazor의 경우 Server 개발과 WASM(Web Assembly) 개발이 나뉘어 있어 헷갈리는데요.
1-1) Blazor Server로 개발할 경우 Web API를 따로 구현할 필요 없이 그냥 Connection String을 통해 DB랑 편하게 연결하면 되는지 알고 싶습니다.
1-2) Blazor WASM(Web Assembly)의 경우 API Layer가 필요하다고 들었는데요.
해당하는 방식은 웹 상에서 실제로 Try.dot.net과 같이 웹에서 컴파일되어 실행되는 구조이므로
Connection String이 필요하고 결국 Client Broswer에 해당 Connection String이 노출되어 API Layer가 필요한 게 맞는 것인지
따라서 이 방식(Blazor WASM)을 쓸 경우에는 REST API 서버나, GRPC 서버를 따로 미리 구축하여 그것을 통해 연결하는 것이 옳은 것인지 알고 싶습니다.
2. 주신 답변을 바탕으로 생각해보니 제가 만약 DB를 지속적으로 모니터링하고 싶다면
Signal-r을 이용하는게 적합하다는 생각이 들었고 마침(?) Azure에서 Signal-R Service를 제공하고 있음에 이를 이용하여 Blazor Server를 개발해볼까 하는 생각중에 있습니다.
따라서 선생님께 정확히 보여드리고자 PT를 작성해보았는데요.
2-1) 기본적으로 아래의 그림과 같이 구성하고자 합니다.
Azure Signal-R Service를 이용하면 VM에서 실시간 동기 요소를 감당하지 않아도 되므로 부하가 적다고 들었습니다!
이와 같은 구성도를 가지고 개발하려고 하는데 혹시 조언해주실 것이 있을까요?
(이미지 1)
2-2) 근데 만약 동시 접속자수가 많아지게 되면 서버에서 클라이언트 쪽에 한꺼번에 보내주어야 할 정보도 많아지게 될텐데 이때 아래와 같이 Docker를 구축하여 개발한 서버 프로그램 각각을 각자의 Container에서 실행시키는 것이 옳은 생각인지 알고 싶습니다.
(이미지 2)
질문이 너무 많아 죄송합니다..
하지만 개발 방향을 맞게 설정하고 배워야 올바르게 배워나갈 수 있을 거 같아서 염치 불구하고 질문 올립니다.
긴 글 읽어주셔서 감사합니다!