Microsoft MVP성태의 닷넷 이야기
안녕하세요 windows azure에 관해 질문했던 사람입니다. [링크 복사], [링크+제목 복사],
조회: 20093
글쓴 사람
김형진
홈페이지
첨부 파일
 


 안녕하세요

 지난번에 windows azure vm에 관련하여 질문 드렸던 사람입니다! ^^

 제가 azure를 이용하여 computing 시간을 줄이기 위하여 cloud computing을 이용하려 하는데요

 microsoft 웹상에서 나온 설명들을 살펴보니까 c#을 이용해서 web role, worker role을 지정하여 cloud에 올려서 실행을 하더라구요

 그리고! 저는 c++의 경우 콘솔응용프로그램만 다뤄보았습니다

 
 제가 잘 이해가 안되는 부분은

 1. c++ 같은경우 (콘솔응용프로그램에서) 소스파일에 c++파일을 추가하여 그 파일에 코드를 작성했는데, 여기서는 그런것을 어떻게 해야하는지 모르겠네요

 2. 만약 병렬처리가 가능하다면, cloud computing에서 작업을 나눌때 어떤식으로 해야할까요? 기존 사용한 코드를 다시 web role, worker role로 나눠지도록 변경을 해야하나요?

    아니면 다른 방법이 있는건가요?


 컴퓨터에 대한 지식이 얕은 관계로 많이 헤메이고 있는데 도움 부탁드립니다.




 ++) 질문할 사항이 더 생겨서 수정합니다

 3. http://www.windowsazure.com/en-us/documentation/articles/fundamentals-application-models/?fb=ko-kr에 보면 cloud service를 2가지로 설명하고 있습니다.

    하나는 Grouping VMs, 다른 하나는 지난번에 언급하셨던 PaaS. 그런데 이것의 차이점을 명확하게 설명해 주실 수 있으신가요? 제가 이해하는 것으로는 VM이 여러개가 묶여 있는데

    Grouping VMs에서는 요청을 VM에 뿌려주는것이고 PasS에서는 web role이 받아들여 worker role에게 전달해주는 것이다 이정도인데. 그게 그건것 같아서 혼란스럽습니다.

    저의 목적을 위해서는 어느 종류의 것을 사용하면 좋을까요?
 








[최초 등록일: ]
[최종 수정일: 3/4/2014]


비밀번호

댓글 작성자
 



2014-03-04 12시42분
클라우드 서비스의 관건은 인스턴스를 늘였다 줄였다 할 수 있는 건데요. 사실 마법은 없습니다. 응용 프로그램이 실행되는 VM의 수를 자유롭게 조절하려면 어떻게 해야할까요? 해당 응용 프로그램의 바이너리가 '마스터 원본'으로 하나가 있어야 합니다. 그리고 그 응용 프로그램은 현재 실행 중인 VM 환경에 어떠한 의존성도 가지면 안됩니다. 예를 들어 printf("test")라고 출력하는 응용 프로그램을 만들어 Azure의 PaaS에 등록해 두면, Azure는 사용자가 설정하는 인스턴스의 수에 따라 VM을 동적으로 조정하고 그 안에서 응용 프로그램을 실행시켜 둡니다.

사용자가 직접 구성하는 VM의 경우에는 마이크로소프트가 자동으로 할 수 있는 부분에 한계가 있습니다. 대신 "그룹" 단위를 제공하고 사용자로 하여금 VM을 만들어 해당 그룹에 추가할 수 있는 기능을 제공합니다. 쉽게 생각하면 기존의 L4 스위치로 부하분산하는 웹 서비스들을 생각하면 됩니다. 부가적으로, 실행될 VM의 수를 (추가된 VM들의 범위에서 쉽게) 가변적으로 조정하는 것이 가능합니다.

자, 그럼 이제 질문에 답해볼까요? ^^

1. 현재 C++로는 PaaS 유형에서 지원하지 않습니다. 대신 C# Worker Role에 태워서 C++을 실행시키는 방식으로 가능합니다. 다음의 글에 자세하게 나와 있습니다.

Using C++ in an Azure Worker Role for a Compute Intensive Task
; http://cloud-computing.learningtree.com/2010/10/22/using-c-in-an-azure-worker-role-for-a-compute-intensive-task/

2. 병렬 처리가 자동으로 가능한 것이 아닙니다. 단지 응용 프로그램이 호스팅되는 VM이 동적으로 조절되는 것 뿐입니다. 병렬처리를 위한 것은 스스로 구현해야 합니다. 예를 들어, 프로그램이 실행될 때마다 공용 DB 필드에 그 수를 카운팅하고 서로 그 조절값에 따라 적절하게 작업을 분배하는 처리를 해야 합니다. 즉, 기존 사용한 코드를 수정해야 할 가능성이 큽니다. (기존 코드가 어떻게 되어 있느냐에 따라 수정범위가 틀리겠지요. 기존에도 컴퓨터끼리 병렬처리를 하기 위해서는 서로 공유해야 할 데이터가 있었을 테고, Azure로 옮기게 되면 그 부분만 적절하게 변경해 주시면 됩니다.)

3. 이건 이미 위의 설명에서 답변이 되었습니다. 단지 PaaS에서 WebRole과 WorkerRole은 꼭 의존적인 것은 아닙니다. 서로 단독으로 할 수 있고 쉽게 생각해서 WebRole을 "웹 애플리케이션", WorkerRole을 "NT 서비스 유형의 프로그램"이라고 보시면 됩니다. 단지, PaaS는 정해진 바이너리가 있어서 마이크로소프트 측에서 VM을 동적으로 관리해 Web/Worker Role 프로그램을 실행해 주는 것을 대행해 줍니다.

정리해 보면, PasS로 서비스를 만들어 배포하면 운영체제를 관리할 필요가 없습니다. 그냥 응용 프로그램 바이너리만 통째로 Azure 쪽에 넘겨주면 나머지는 마이크로소프트 측에서 알아서 관리해 줍니다. 하지만 IaaS로 서비스를 만들게 되면 이후부터는 VM 자체를 순수하게 사용자 측에서 관리해 줘야 합니다. 왜냐하면 마이크로소프트는 IaaS에 속하는 VM에 대해서는 그룹핑을 통한 실행될 VM의 수를 관리하는 정도만 해줄뿐 그 안의 내용은 상관하지 않습니다.

질문하신 분의 프로그램이 단독으로 실행되는 경우라면 Worker Role로 하시면 됩니다. 하지만, 만약 MATLAB같은 프로그램에 의존적으로 실행이 된다면 MATLAB을 설치하는 것은 마이크로소프트의 VM 서비스에는 제공되지 않으므로 이런 경우에는 별도 VM 서비스를 사용해야 합니다. 여러개의 VM으로 계산 시간을 절약하겠다고 하셨으니, 원하는 수 만큼의 VM을 만들어서 하나의 "가용성 집합"에 넣고 관리해 주시면 됩니다.

마지막으로... 질문과 웹 검색으로 찾아보는 것도 좋지만 이런 경우는 직접 부딪쳐 보는 것이 좋습니다. Azure Free Trial도 있으므로 간단한 것 하나 만들어서 테스트 해보셨다면, 아마도 벌써 개념을 정리하셨을 것입니다. 직접 해보시면, 1주일씩 걸릴만한 어려운 개념이 아니었음을 아시게 될 것입니다.

정성태
2014-03-06 12시55분
[김형진] 답변 감사드립니다

아마도 정성태님이 생각하시는 것보다 제가 컴퓨터에 대한 지식이 부족해서 그런게 아닌가 싶네요 ㅜㅠ

테스트를 하고싶지만 어떻게 시작을 해야하는지 몰라 질문을 하고있답니다 ㅜㅠ

일단 되는대로 시작을 해보고 알려주신 답변을 참고하여 차근차근 알아가 봐야겠네요 ㅎㅎ

감사합니다~
[guest]

... 61  [62]  63  64  65  66  67  68  69  70  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
1051최정수4/10/201213413WCF 클라이언트 비정상 종료 관련 [1]
1050에슈리온4/6/201215373관리자 권한과 ClickOnce, 그리고 Bootstrapper문제 [6]
1049김성혁4/4/201210101스마트클라이언트 stand-alone 방식의 배포 문제.. [1]
1048C#조으다3/27/201213839어셈블리 로드 / 언로드와 관련해서.. [6]
1047김우형3/23/201211564WCF 서비스를 이용한 데이터 전송 중 Exception 문의 [1]
1044임동찬2/29/201211399웹에서 COM Exception.. [2]
1043박성준2/24/201210223Lazy<T> 의 지연객체 생성 전에 실 객체의 Attribute분석 [2]파일 다운로드1
1042이성환2/20/201210611BlockingMethod에 빠진 스레드를 즉시 죽이고 싶습니다...;ㅅ; [2]파일 다운로드1
1039김재영2/15/20129768어셈블리에 사용자마다 다른 값을 적용하여 자동 빌드 방법이 있을까요? [2]
1037윈드로니2/12/201211259WPF 관련 질문 드립니다. [2]
1035임동찬2/9/20129590XML, XSD, XMLCodeGenerator 관련 [2]
1033곽성현2/7/20129877훔..윈도우 디바이스 드라이버 관련 [1]
1030궁빈2/2/201212265msbuild를 이용한 웹게시 및 자동 Dist 방법론에 대해 질문 드립니다!! [6]
1028신정환1/30/20129583기존 legacy Windows application이 WoA 환경에서 동작되지 않는 이유가 무얼까요? [2]
1026노현철1/19/201211341WPF가 XP에서 느리게 로딩되는 현상에 대해 질문드립니다. [4]
1025궁그미1/18/201212247네이버 소켓 로그인 이해가 안되는점이 있는데요 [2]
1022선무당1/11/201210491TFS 에서 공통 Assembly 공유 방법에 대해서 해결책이 없을까요? [2]
1021김재영1/8/20129661대리자를 메소드 파라메터로 넘겨도 됩니까? [2]파일 다운로드1
1019남산골11/13/201911790안녕하세요!! 성태님~~ [3]
1018강한구12/29/201114924WPF ClickOnce 배포시 콤포넌트 dll 다운로드 문제에 대하여 질문 있습니다. [1]
1017임동찬12/28/201112426smart client와 xbop, silverlight [6]
1015개똥이12/22/201110150RMCLOCK 설정 관련 질문이요ㅜ [2]
1011사길수12/16/20119959hyper-v 이더넷 카드 관련 문의 좀 드립니다. [1]
1006루로니12/13/201112152윈도우7과 XP의 DLL후킹 처리에 관해서 질문입니다. [3]
1005남산골12/13/201111847안녕하세요!! 첫 인사드립니다. [3]
1004뽀로로12/12/20119226Managed 어셈블리에서의 COM EntryPoint procaddress 문제 [1]
... 61  [62]  63  64  65  66  67  68  69  70  71  72  73  74  75  ...