Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 204. Visual Studio Online "Monaco" 서비스와 github 연동 [링크 복사], [링크+제목 복사],
조회: 25014
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

Visual Studio Online "Monaco" 서비스와 github 연동

모나코라는 재미있는 서비스가 이번 Visual Studio 2013 런칭 쇼에서 새롭게 소개가 되었는데요. 실제로 지금 Preview 서비스 상태에 있기 때문에 테스트가 가능합니다.

우선 개념부터 말씀드리면, Windows Azure에서 제공되는 서비스 중에서 "Web Sites" 유형의 서비스를 개발할 때 Visual Studio Online 서비스와 자연스럽게 연동할 수 있는 것이 모나코입니다. 사실 이거 설명하려고 ^^ 지난 2개의 글이 쓰여진 것입니다.

Azure - WEB SITES 서비스 소개
; https://www.sysnet.pe.kr/2/0/1540

형상 관리 서버 운영을 대신해 주는 Visual Studio 온라인 서비스
; https://www.sysnet.pe.kr/2/0/1539

나중에 어떤 식으로 확장할지는 알 수 없으나, 어쨌든 지금은 "WEB SITES" 유형에 대해서만 가능합니다. (기왕이면 클라우드 서비스에도 적용되었으면 좋겠습니다. ^^)

Azure 웹 사이트 유형과 Visual Studio Online 서비스가 .NET Framework에만 국한된 것은 아니기 때문에 이외의 다양한 플랫폼에서 모나코의 편리함을 누릴 수 있는데요. 다음의 channel9 비디오에 각각의 플랫폼에서 활용되는 사례가 소개되고 있습니다.

Visual Studio Online "Monaco" 
; http://channel9.msdn.com/Series/Visual-Studio-Online-Monaco

위의 목록에서 "First Steps"라는 제목이 붙은 동영상에서는 Node.js로 서비스를 개발하는 상황에서 어떻게 Visual Studio Online과 Azure Web Site가 통합되는지를 보여주고 있습니다.

Visual Studio Online "Monaco" - First Steps
; http://channel9.msdn.com/Series/Visual-Studio-Online-Monaco/First-Steps

어디... 그럼 .NET 프로젝트로도 한번 실습해 볼까요? ^^




지난번에 만들어 둔 웹 사이트인 anyconnect.azurewebsites.net으로 이야기를 이어서 진행해 보겠습니다.

우선 Azure 웹 사이트와 Visual Studio Online을 연동해야 하는데요. 이를 위해 "구성" 탭의 "EDIT IN VISUAL STUDIO ONLINE" 설정으로 가서 "Setup deployment credentials now.." 링크를 눌러,

monaco_integration_1.png

Azure의 웹 사이트 서비스 배포에 공통으로 사용될 계정을 설정해 주어야 합니다.

monaco_integration_2.png

정상적으로 계정 정보를 입력한 경우 "EDIT IN VISUAL STUDIO ONLINE" 항목이 선택가능하게 바뀌고, "설정"으로 바꿔준 후 저장 버튼을 눌러줍니다.

monaco_integration_3.png

이어서 웹 사이트의 "대시보드" 탭을 누르고 우측 하단에 "Visual Studio 온라인에서 편집" 링크를 누릅니다. (이 링크가 간혹 느리게 보여지는 경우가 있으므로 잠시 기다려야 할 수도 있습니다.)

monaco_integration_4.png

링크를 누르면 계정 확인창이 뜨고 방금 전 설정에서 입력한 계정 정보를 입력하면 다음과 같이 "Visual Studio Online" 서비스로 연결됩니다. (엄밀히 따지면, 여기서의 "Visual Studio Online" 서비스는 지난번 글에 설명한 서비스와는 이름만 같을 뿐 운영이 다릅니다. 그래서 이름이 다소 혼란스러운데요. 여기서의 "Visual Studio Online" 서비스를 특징지어 Monaco라고 보시면 그나마 자연스러울 것 같습니다.)

monaco_integration_5.png

화면 좌측의 목록을 보면 웹 사이트 운영을 위한 파일이 나오는데요. 여기서 파일을 편집하게 되면 웹 사이트에 바로 반영이 됩니다. 아래에서는 기본 생성된 anyconnect 사이트의 Default.cshtml 파일의 <body />에 "Hello My World"를 편집해서 넣었고 이 상태에서 좌측의 세로 바에서 "Run" 아이콘을 누르거나 단축키로 Ctrl+F5 키를 누르면 사이트에 반영됩니다.

monaco_integration_6.png

FTP 접속도 필요 없고, 곧바로 웹에서 사이트를 수정하고 반영할 수 있기 때문에 Monaco의 도움으로 인해 확실히 개발/배포가 편리해졌다는 것을 알 수 있습니다.




모나코의 기능은 파일 편집만 가능한 것은 아닙니다. 자체적인 GIT 저장소를 제공해 주는데, 혹시나 git에 대해 낯선 분들은 우선 다음의 글을 먼저 읽어보시는 것을 권장합니다.

Visual Studio를 위한 Git 환경 설정
; https://www.sysnet.pe.kr/2/0/1501

Visual Studio - git을 이용한 로컬 소스 컨트롤
; https://www.sysnet.pe.kr/2/0/1502

Visual Studio - github 연동
; https://www.sysnet.pe.kr/2/0/1503

지금부터는 git에 대해 알고 있다는 가정하에 진행합니다.

모나코에 git을 설정하기 위해 다음과 같이 좌측 세로바의 "GIT" 아이콘을 선택하고 "Initialize git repository" 버튼을 누르면,

monaco_integration_7.png

그 즉시 .git 저장소가 생성되고 다음과 같이 commit과 push/pull을 할 수 있습니다. 이 중에서 우선 "Commit all"을 선택해서 로컬 GIT 저장소에 파일을 커밋해 둡니다.

monaco_integration_8.png

이 상태에서 push/pull 메뉴를 선택하면 어떻게 될까요? 당연히 원격 GIT 저장소가 지정돼 있지 않으므로 오류가 발생합니다. 게다가 모든 GIT 명령어를 웹 페이지에서 지원하는 것은 아니기 때문에 다음과 같이 콘솔 창을 띄워 명령행으로 제어를 해야 합니다.

monaco_integration_9.png

실제로 여기서는 외부 git 저장소로 github를 선택해 볼 텐데요. 이를 위해 미리 github에는 제 계정으로 git 저장소를 만들어 두었습니다.

stjeong  / anyconnect 
; https://github.com/stjeong/anyconnect

그런데, (아직 Preview버전이기 때문에) 원격 git 저장소를 인증하는 방법이 다양하지 않습니다. 현재 기본인증만 제공하기 때문에 원격 git 저장소가 반드시 그 인증을 지원해야만 합니다. 가령 github의 경우 다음과 같이 Monaco 콘솔에서 실행해 보면 실패하게 됩니다.

/ (master) $ git remote add origin git@github.com:stjeong/anyconnect.git

/ (master) $ git push -u origin master
Host key verification failed.
fatal: The remote end hung up unexpectedly

/ (master) $ ssh-keygen 
Command not found. Type help for a list of available commands.

/ (master) $ help
Available console commands:
    cd          Directory navigation
    del         Delete file
    dir         Directory browsing
    express     Express node.js MVC framework commanding
    git         Git source control commanding
    help        List of available commands
    jake        Jake commanding
    ls          Directory browsing
    mkdir       Create directory
    msbuild     MSBuild commanding
    node        Node.js commanding
    npm         Node package manager
    nuget       NuGet commanding
    ps          PowerShell commanding
    rm          Delete file
    unzip       Unzip archives

실패 이유는 공개키 인증 방법이 지원되지 않기 때문입니다. 즉, 원격 저장소를 위한 사용자 인증 키 파일을 생성 및 지정할 수 없으므로 아래와 같이 기본 인증을 지원하는 https로 접근을 대신 해야 합니다.

/ (master) $ git remote add github_git https://github.com/stjeong/anyconnect.git
/ (master) $ git push -u github_git master

그럼 다음과 같이 github 계정 정보를 물어보고, 여기에 github 사이트의 로그인 정보를 입력하면 됩니다.

monaco_integration_10.png

정상적으로 계정 정보를 입력했으면 github 측과 파일 동기화가 진행됩니다. 이런 식으로 외부 GIT 저장소와 연동할 수 있기 때문에 팀 내의 다른 개발자는 그러한 저장소를 경유해서 Azure 웹 사이트 개발을 협업하는 것이 가능합니다.

참고로, 원격 저장소 설정은 다음의 명령어로 지울 수 있습니다.

/ (master) $ git remote -v
origin  git@github.com:stjeong/anyconnect.git (fetch)
origin  git@github.com:stjeong/anyconnect.git (push)

/ (master) $ git remote rm origin




정리해 보면, Monaco는 기존 Azure Web Sites 서비스의 파일을 웹 상에서 직접 변경하고 실행할 수 있게 해줍니다. 또한 기본적으로 소스 컨트롤 시스템으로 GIT을 제공해 준다는 특징이 있습니다.

사실, 제 개인적인 생각으로는 Monaco는 .NET 개발자를 겨냥한 지원은 아닌 것 같습니다. 위의 과정대로라면 닷넷 프로젝트를 통째로 웹 사이트와 연동시켜서 서비스한다는 것인데 사실 지금까지의 닷넷 개발은 이런 식이 아니기 때문입니다. 일례로 소스코드를 웹 서버에 올려놓는 것은 익숙하지 않지요. 물론, 이것은 어쩌면 생각의 차이에 있습니다. 모나코 식의 개발이 익숙해지면 서버에 소스코드를 올려놓은 것이 당연할지도 모릅니다. (모나코 콘솔은 msbuild도 지원하기 때문에 소스코드를 그 순간에 빌드해서 적용할 수 있고, 소스코드 파일은 보안상 클라이언트 측으로 다운로드되는 것이 막혀 있다는 점 등을 상기해 볼 필요가 있습니다.)

하지만, 닷넷이 아닌 PHP나 node.js는 어떨까요? 인터프리터 식의 개발이라면 모나코는 적절한 선택일 수 있습니다. 서버에서 직접 개발하면서 소스제어까지 되니 금상첨화입니다. 그런 면에서 봤을 때 모나코는 닷넷 개발자에 대한 손짓이라기보다는, PHP나 Python, node.js 개발자들에 대한 구애라고 봐야할 것 같습니다. ^^

마지막으로, 모나코에 대한 포럼을 소개합니다. 마이크로소프트 직원들과 직접 대화가 이뤄지고 있기 때문에 좀 더 확실한 답변을 받을 수 있습니다.

Windows Azure - CTPs, Betas & Labs forums  >  Visual Studio Online "Monaco" 
; http://social.msdn.microsoft.com/Forums/windowsazure/en-US/home?forum=azuremon




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/27/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  79  [80]  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11936정성태6/10/201918314Math: 58. C# - 최소 자승법의 1차, 2차 수렴 그래프 변화 확인 [2]파일 다운로드1
11935정성태6/9/201919865.NET Framework: 843. C# - PLplot 출력을 파일이 아닌 Window 화면으로 변경
11934정성태6/7/201921197VC++: 133. typedef struct와 타입 전방 선언으로 인한 C2371 오류파일 다운로드1
11933정성태6/7/201919552VC++: 132. enum 정의를 C++11의 enum class로 바꿀 때 유의할 사항파일 다운로드1
11932정성태6/7/201918736오류 유형: 544. C++ - fatal error C1017: invalid integer constant expression파일 다운로드1
11931정성태6/6/201919269개발 환경 구성: 441. C# - CairoSharp/GtkSharp 사용을 위한 프로젝트 구성 방법
11930정성태6/5/201919797.NET Framework: 842. .NET Reflection을 대체할 System.Reflection.Metadata 소개 [1]
11929정성태6/5/201919345.NET Framework: 841. Windows Forms/C# - 클립보드에 RTF 텍스트를 복사 및 확인하는 방법 [1]
11928정성태6/5/201918132오류 유형: 543. PowerShell 확장 설치 시 "Catalog file '[...].cat' is not found in the contents of the module" 오류 발생
11927정성태6/5/201919314스크립트: 15. PowerShell ISE의 스크립트를 복사 후 PPT/Word에 붙여 넣으면 한글이 깨지는 문제 [1]
11926정성태6/4/201919903오류 유형: 542. Visual Studio - pointer to incomplete class type is not allowed
11925정성태6/4/201919718VC++: 131. Visual C++ - uuid 확장 속성과 __uuidof 확장 연산자파일 다운로드1
11924정성태5/30/201921335Math: 57. C# - 해석학적 방법을 이용한 최소 자승법 [1]파일 다운로드1
11923정성태5/30/201920979Math: 56. C# - 그래프 그리기로 알아보는 경사 하강법의 최소/최댓값 구하기파일 다운로드1
11922정성태5/29/201918512.NET Framework: 840. ML.NET 데이터 정규화파일 다운로드1
11921정성태5/28/201924359Math: 55. C# - 다항식을 위한 최소 자승법(Least Squares Method)파일 다운로드1
11920정성태5/28/201916029.NET Framework: 839. C# - PLplot 색상 제어
11919정성태5/27/201920273Math: 54. C# - 최소 자승법의 1차 함수에 대한 매개변수를 단순 for 문으로 구하는 방법 [1]파일 다운로드1
11918정성태5/25/201921128Math: 53. C# - 행렬식을 이용한 최소 자승법(LSM: Least Square Method)파일 다운로드1
11917정성태5/24/201922094Math: 52. MathNet을 이용한 간단한 통계 정보 처리 - 분산/표준편차파일 다운로드1
11916정성태5/24/201919925Math: 51. MathNET + OxyPlot을 이용한 간단한 통계 정보 처리 - Histogram파일 다운로드1
11915정성태5/24/201923051Linux: 11. 리눅스의 환경 변수 관련 함수 정리 - putenv, setenv, unsetenv
11914정성태5/24/201921994Linux: 10. 윈도우의 GetTickCount와 리눅스의 clock_gettime파일 다운로드1
11913정성태5/23/201918752.NET Framework: 838. C# - 숫자형 타입의 bit(2진) 문자열, 16진수 문자열 구하는 방법파일 다운로드1
11912정성태5/23/201918698VS.NET IDE: 137. Visual Studio 2019 버전 16.1부터 리눅스 C/C++ 프로젝트에 추가된 WSL 지원
11911정성태5/23/201917478VS.NET IDE: 136. Visual Studio 2019 - 리눅스 C/C++ 프로젝트에 인텔리센스가 동작하지 않는 경우
... 76  77  78  79  [80]  81  82  83  84  85  86  87  88  89  90  ...