none
MVC4 프로젝트 Azure 포팅 관련 질문드립니다. RRS feed

  • 질문

  • 안녕하세요. MVC4로 만든 웹페이지를 호스팅 서버에서 Windows Azure로 이전 하려고 하는데 구조적으로 문의 드립니다.

    현재 웹 구조가 디비는 sdf를 사용하고 있고 App_Data에 Config 파일이 존재합니다.

    그리고 첨부파일은 디비를 사용하지 않고 서버에 파일로 써서 관리를 하고 있습니다.

    Azure로 옮길시 디비는 상관이 없는거 같은데 아래와 같이 질문드립니다.

    1. Azure에서 App_Data 영역을 사용할 수 있나요?? 사용할 수가 있다면 어떤 방법을 사용해야 하나요?

    2. 첨부파일 또는 이미지 파일 관리시 파일 저장소가 따로 있는지 아니면 디비로 파일을 관리해야 하나요?

    또는 파일을 디비로 관리시 디비 로드 할때 트래픽 요금이 추가되나요?

    (이 항목은 조언 부탁드립니다.)

    3. MVC프로젝트 안에 웹서비스(WCF)를 포함하여 배포했을때 적용이 되는지 알고 싶습니다.

    2012년 11월 27일 화요일 오전 4:50

답변

  • Windows Azure에서는 웹 사이트의 경우 3 가지 유형을 제공하고 있습니다.

    종류는 Windows Azure Web Site와  Cloud Services, Virtual Machine 입니다.

    -가상 머신을 만드셔서 MVC4의 기존 소스를 그대로 올리셔서 웹사이트를 구동해도 됩니다. 추가로 Cloud Services로 배포해도
    됩니다.

    -또는 Azure Web Site로 게시할수도 있습니다.

    아래는 MVC4를 Windows Azure Web Site 로 게시했을 때 내용이므로 참고하십시오.

    1. SDF 파일을 통해서 배포하면 문제가 발생합니다.

    Unable to find the requested .Net Framework Data Provider.  It may not be
    installed.

     SQL Azure 에 ADO.NET Entity 모델을 구성하실수 있습니다. SQL Azure 를 사용시에는 별도로 사이즈별 월별
    비용,  아웃바운드요금이 청구됩니다.

    2. 파일의 저장소로는 Windows Azure의 Blob 을 사용하실수 있습니다.

    4. MVC 4 같은 경우 WebAPI 를 사용하시면 굳이 WCF 를 생성하지 않으셔도 됩니다. Azure Web Site에 게시할 경우
    MVC 4에서 WCF를 생성할 수 있습니다.



    Hong-ju


    2012년 11월 27일 화요일 오전 8:14
    중재자

모든 응답

  • Windows Azure에서는 웹 사이트의 경우 3 가지 유형을 제공하고 있습니다.

    종류는 Windows Azure Web Site와  Cloud Services, Virtual Machine 입니다.

    -가상 머신을 만드셔서 MVC4의 기존 소스를 그대로 올리셔서 웹사이트를 구동해도 됩니다. 추가로 Cloud Services로 배포해도
    됩니다.

    -또는 Azure Web Site로 게시할수도 있습니다.

    아래는 MVC4를 Windows Azure Web Site 로 게시했을 때 내용이므로 참고하십시오.

    1. SDF 파일을 통해서 배포하면 문제가 발생합니다.

    Unable to find the requested .Net Framework Data Provider.  It may not be
    installed.

     SQL Azure 에 ADO.NET Entity 모델을 구성하실수 있습니다. SQL Azure 를 사용시에는 별도로 사이즈별 월별
    비용,  아웃바운드요금이 청구됩니다.

    2. 파일의 저장소로는 Windows Azure의 Blob 을 사용하실수 있습니다.

    4. MVC 4 같은 경우 WebAPI 를 사용하시면 굳이 WCF 를 생성하지 않으셔도 됩니다. Azure Web Site에 게시할 경우
    MVC 4에서 WCF를 생성할 수 있습니다.



    Hong-ju


    2012년 11월 27일 화요일 오전 8:14
    중재자
  • 안녕하세요. Windows Azure MVP 남정현입니다.

    정홍주 MVP님의 답변을 기준으로 좀 더 드리고 싶은 말씀이 있어 답변 스레드를 하나 더 추가합니다.

    질문하신 문제에 관한 실행 환경에 따라 답은 전부 다를 수 있습니다. 그러나 보편적으로 권장되는 Scale-Out이 편리한 형태의 웹 사이트 개발, 즉 Stateless한 웹 사이트 개발을 기준으로 놓고 말씀을 드리겠습니다.

    1. Scale-Out을 쉽고 안전하게 적용하려면 데이터베이스는 웹 사이트 외부로 배치된 상태에서 운용되는 것이 좋습니다. App_Data 폴더의 사용 여부 자체는 문제가 되지 않지만, App_Data 폴더 안에 SDF나 ACCDB, MDB 혹은 이에 상응하는 로컬 데이터베이스 파일을 배치하고 사용하는 경우 Azure Web Site나 Azure Virtual Machine 및 Cloud Service 앞에 배치될 수 있는 Load Balancer에 의하여 컴퓨터가 동적으로 선택되는데, 이 과정에서 일관성없는 웹 사이트의 모습이 보여질 수 있습니다. 여기에 더불어서 세션 관리에도 문제가 발생합니다. 이러한 문제를 해결하기 위하여 데이터베이스의 경우 SQL Server를 실행하는 별도의 VM을 배치하거나, SQL Database를 사용할 수 있습니다. 또한 캐시, 세션 상태 관리 등을 위하여 Windows Azure Distributed Cache를 활성화하여 사용하시는 것을 권합니다.

    2. 1의 답변과 연결되는 부분입니다. Scale-Out이 쉬운 웹 서비스를 만들기 위해서는 역시 웹 사이트와 별도로 파일이나 BLOB 저장소가 분리되어있어야 합니다. 이 문제를 해결하기 위하여 Windows Azure Storage의 BLOB 저장소 기능을 활용할 수 있습니다.

    위의 1과 2에 대한 내용은 각 서비스의 사용량에 따라 과금이 이루어지는 것이므로 사용량에 따른 요금 시뮬레이션은 http://www.windowsazure.com/ko-kr/pricing/calculator/ 에서 확인하실 수 있습니다.

    3. 정홍주 MVP님의 말씀대로 Web API가 WCF와 WCF Data Service의 대체제가 될 수 있습니다. 그러나 만약 Windows Azure Cloud Service 상에서 WCF를 호스팅하려는 경우 On-Premise 환경에서 WCF를 호스팅하던 것에 비하여 기능 상에 제약이 따를 수 있습니다. 그리고 TCP Binding을 사용하시려는 경우 Windows Azure Cloud Service 네트워크 설정의 포트 정의 등을 추가로 확인하셔야 합니다.

    감사합니다.


    남정현 (rkttu@rkttu.com) - Windows Azure Cafe SYSOP - http://cafe.naver.com/wazure | DEVPIA C# Forum SYSOP - http://www.devpia.com/CSharp.MAEUL | ContentStory (http://www.ineat.co.kr)

    2012년 11월 27일 화요일 오전 10:53
    중재자
  • 답변에 많은 도움이 되었습니다. 

    감사합니다. ^^


    2012년 11월 28일 수요일 오전 12:28
  • 남정현님 답변감사합니다.

    조금 고민이 되는 부분이 있었는데 해결이 되었습니다. ^^

    2012년 11월 28일 수요일 오전 12:29