'.NET/TFS / Team System'에 해당되는 글 47건

  1. 2013.07.04 [TFS] 팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #2 (3)
  2. 2013.06.18 [TFS] 팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #1
  3. 2013.06.12 [TFS] 팀 파운데이션 서버(Team Foundation Server)의 $tf 폴더의 정체
  4. 2013.06.11 [TFS] 팀 파운데이션 서버(Team Foundation Server) 의 다양한 오류 유형 및 정보
  5. 2013.05.31 [ALM] 13. 불완전한 통합, 팀 파운데이션 서버(Team Foundation Server)
  6. 2013.01.13 [TFS] 어떤 개발자의 외침. "왜 TFS를 쓰기 싫을까? - TFS is suck." [2/2] (2)
  7. 2013.01.10 [TFS] 어떤 개발자의 외침. "왜 TFS를 쓰기 싫을까? - TFS is suck." [1/2] (4)
  8. 2012.03.25 TFS2010, MSDN Virtual Lab: Team Foundation Server 2010, 가상에 환경의 실습해 보자
  9. 2011.01.18 VSS 마이그레이션 전략
  10. 2011.01.07 Visual Source Safe 사용자를 위한 TFS2010 시리즈
  11. 2011.01.05 Team Foundation Server 2010으로 업그레이드, 마이그레이션, 동기화
  12. 2010.08.16 [HowTo] TFS2010 의 Tfs_Analysis 웨어하우스 데이터베이스가 망가졌을 경우
  13. 2010.06.17 [HowTo] SCVMM 의 Install Virtual Guest Service 작업 중 2941 오류
  14. 2010.06.16 [HowTo] SharePoint 2010 Beta 깨끗하게 제거하기
  15. 2010.06.16 [HowTo] Team Foundation Server 의 로컬 매핑 캐시 제거하기
  16. 2010.04.06 Visual Studio 2010을 활용한 ALM (1-5) - ALM 이란 무엇인가 (2)
  17. 2010.04.06 Team Foundation 트러블 슈팅 가이드
  18. 2010.04.06 [HowTo] Work Item 쿼리를 Excel 로 내보내기 할 수 없는 경우 TF80012 에러
  19. 2010.04.01 [HowTo] Team Foundation Server 2010 FQDN 설정 방법
  20. 2010.04.01 [HowTo] SCVMM 에서 암호화된 파일 전송을 사용하지 않으려면?
  21. 2010.04.01 [HowTo] Lab Manager 환경 구성 중 TF260078 오류 해결하기
  22. 2010.04.01 [HowTo] 가상 Lab 배포 중 오류 해결하기 TF259115
  23. 2010.04.01 [HowTo] 가상 Lab 환경의 가상 머신 시작하기
  24. 2010.04.01 [HowTo] TFS 설치 중 Reporting Services 관련 오류 Error 28805
  25. 2010.04.01 [HowTo] Lab Manager 에서 가상 Lab 환경 만들기
  26. 2010.04.01 [HowTo] SCVMM 의 라이브러리 템플릿 배포 작업이 무한 대기하는 문제
  27. 2010.04.01 [HowTo] SCVMM 라이브러리 템플릿 만들기
  28. 2010.03.31 [HowTo] Team Project Collection 옮기거나 복원하기 TF246081
  29. 2010.03.30 [HowTo] Team Project Collection 이름 변경하기
  30. 2010.03.30 [HowTo] TFS 2005/2008 데이터베이스를 TFS 2010 으로 마이그레이션

팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #2

팀 파운데이션 서버(Team Foundation Server) 는 2005년 처음 시장에 공개되었다. 이 시기에 많은 버그와 설치 자체가 매우 난이도가 높아서 많은 사람들의 원망을 샀다.

참고 - TFS를 쓰지 말아야 하는 진짜 이유 #1 (링크)

TFS를 쓰지 말아야 하는 진짜 이유 #1을 정리해 본다.

  • 통합? 모든 것을 만족할 수 있지만, 어느 것도 만족할 수 없다.
  • 특정 제품(Visual Studio)에 완벽하게 통합되어 외부와 완벽하게 격리된 솔루션이다
  • 우리나라에는 전문가가 없다
  • 전문가적인 서비스를 제공하는 업체도 없다
  • 마이크로소프트 제품으로 발라야 한다
  • 예측할 수 없는 잦은 장애, MS 제품에 잔지식이 많아야 한다
  • 제대로 된 기능이 하나도 없다

TFS를 쓰지 말아야 하는 이유 중 기능적인 요소로는 다음과 같다. (차후에 자세히 다루겠다)

  • 데이터베이스에 소스 코드가 저장되다보니 DB 로그 사이즈는 DB 용량(데이터)의 수십 배가 넘어간다
  • 모든 서버 통신은 SOAP 프로토콜을 사용하므로 매우 느리다
  • 작업 항목(WorkItem) 관리, 이슈/버그/개발 등을 관리하기에 매우 비효율적이고 쓰는 것 자체가 스트레스로 발전할 수 있다. (다른 이슈 관리 툴에 비해)
  • 모든 기능에 제한이 너무 많다

1. 팀 파운데이션 서버(Team Foundation Server)[1]

구글 트랜드(Google Trends)는 아래의 그래프와 같이 새로운 버전이 나올 때 조금씩 치고 올라가는 것을 알 수 있다. 하지만, 시간이 지날수록 이탈하는 사용자가 많을 것이고, 현재는 엉망으로 만들었던 TFS 2005 버전보다 더 관심이 줄어든 것으로 보인다.



2. TFS vs SVN

필자도 사실 이걸 보고는 깜짝 놀랬다. SVN(아파치 서브버전)이 알려진 시기는 TFS 2005와 몇 년 차이가 나지 않지만, SVN은 그야말로 LTE처럼 뻥 뚫린 고속도로처럼 고속으로 성장을 했다. 반면에 Team Foundation Server는 바닥에서 지렁이 기듯이 기어다닌다.



3. TFS vs SVN vs GIT

SVN과 GIT이 끼니 더이상 TFS에 대해서 할말을 잃게 만든다. 이쯔음 되면 TFS를 쓰는 사람들은 분명 M빠거나 멋모르고 쓰는 것이 분명하다.



4. TFS vs SVN vs GIT vs Mercurial

따로 TFS는 해설이 없어도 될 것 같다. 아래의 그래프가 여실히 보여주고 있으니 말이다.



결론

99% 중에 1%라면 매우 희소성이 있고 가치가 있어 보일 수도 있다. 필자가 그랬다. 스스로 가치 있다고 판단한다면 분명 그것은 가치가 있는 것이다.

하지만 소스 제어를 비롯한 ALM은 혼자만 가치를 느껴서는 절대로 공존할 수 없는 도구의 집합이다. 통합이 완벽해서 완전히 격리된 ALM 제품은 소프트웨어에 생명을 불어 넣기에 바라보는 안목을 작아지게 만든다. 툴에 종속되어 생각을 제한해서는 안된다.

100명 중 99명이 No 라고 말할 땐 그만한 이유가 있다. TFS는 2005년부터 시작되었고 현재 2013년이다. 횟수로 8년이 되었지만, TFS는 여전히 고질적인 문제를 해결하고자 하는 노력을 하지 않는 것 같다. 현재의 TFS 2012/2013 은 TFS 2005 초기 버전 그 이상을 아직도 뛰어 넘지 못했고, 앞으로도 뛰어 넘지 못할 것이다.

  • 성능
    점점 느려진다. 28GB 넘는 바이너리가 없는 소스코드를 인트라넷 네트워크에서 10시간 넘게 받은 적이 여러번이다.

  • 확장성
    SDK로 깨잘되는 것 말고 할 수 있는 확장 포인트가 거의 없다.

  • 사용성
    애자일보드/칸반(Kanban), 드래그&드롭, 이런거 보여주면서 사용성이 좋다고 하면 오류다. 실무에서 거의 쓸 일도 없고 더 불편하다.

  • 크로스플랫폼
    Team Explorer EveryWhere 가 크로스플랫폼을 지원한다고? 만약 이클립스를 안쓰면 어쩔건데…? 답이 없다. 다양한 개발툴 대부분이 TFS를 지원해 주는 플러그인이 없고, 지원이 된다고 해도 소스 제어 수준에서만 지원을 한다. 그러므로 통합의 의미 자체가 희석되어 버린다.


  1. ‘TFS’ 트랜드 검색 시 merida/matts 등의 통계에 방해되는 데이터가 포함되어 Team Foundation Server 로 탐색을 하였음.  ↩


Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 조경민 2014.05.14 18:36 Address Modify/Delete Reply

    참 안타까운 현실이네요.. 안타까운 마음에 글 남겨봅니다..
    저희 회사에서는 아직도 TFS 2010을 사용하고 있습니다. 물론 제가 서버 구축(MOSS연동까지..)부터 관리까지 다 하고 있는 상태이구요. 용도는 이슈(요구사항, 버그) 및 개발작업(릴리즈, 로드맵, 사이트모듈, 회의록, QA요청) 관리 위주로 사용하고 있습니다. 소스관리는 시도를 했다 결구 SVN으로 갈아탔지요.. 요즘 SVN은 AD와 연동이 되서 그나마 다행이었네요.
    제가 기존 TFS에 매력을 크게 느꼈던 부분은 양식의 커스터마이즈와 한글화 때문이었습니다.
    위에 언급한 이슈(요구사항, 버그) 및 개발작업(릴리즈, 로드맵, 사이트모듈, 회의록, QA요청)모두 양식을 커스터마이즈 해서 사용하고 있습니다. 필드까지 싹 변경 할 수 있기 때문에 저에게는 엄청난 강점으로 느껴졌었습니다. 아주 심플한 혹은 강제화 할 수 있는 양식으로 탈바꿈할 수 있다는 부분은 큰 매력이였네요. 지금도 물론 잘 사용하고는 있지만 근래 JIRA 등의 동향을 보고 싶어 검색하다 여기까지 오게 됬네요.
    지금으로써 제일 불편한점은 간트차트를 사용하지 못한다는 것 외에는 크게 없는데.. JIRA를 데모해보면 또 어떻게 바뀔지 모르겠네요.
    환경적인 내용 외에 위 언급드린 내용 기준으로 비교되는 글이 더 있음 정말 좋을 듯 합니다. ^^

    아 그리고 한글화는 아직도 TFS가 최고라고 생각되네요 ㅋㅋ이넘의 짧은 영어는 언제나 발목이..

    좋은 글 잘 읽었습니다. 앞으로도 좋은 정보 부탁드립니다.
    감사합니다.

  2. 남뉴 2014.07.02 11:21 Address Modify/Delete Reply

    재밌는 글 감사합니다. 전 오히려 개발소스버젼관리시스템 자체에 회의감이 듭니다. 여러 사람이 쉽게 소스를 관리하는건 장점이고 권한에 따른 제한도 있어서 장점일 것 같지만, 오히려 잘못된 버젼 관리로 인한 문제가 더 많아 질때가 있습니다.(이건 직급이 높아도 경험이 많아도 문제가 발생합니다. )
    덕분에 압축과 시스템을 병행하고 있습니다. 마치 종이로 인쇄하고 다시 PDF나 문서파일로 웹에도 올리는
    형상이죠

  3. 지나가는이 2015.04.20 16:06 Address Modify/Delete Reply

    훌륭한 정보 잘보고 갑니다. 감사합니다.

팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #1

필자는 얼마 전에 다음과 같은 글을 썼다. TFS를 그다지 좋아하지 않는 분의 글을 검색 중에 우연히 찾게 되었고, 이에 대해 필자의 의견을 남긴 적이 있다.

개인적인 의견에 필자가 반박한 것이기도 했지만, 필자는 기능적인 면에서 반박을 한 것이라 상대방의 마음이 상할지 몰랐으나, 다시 돌이켜보면 미안한 맘이 계속 든다.

과거 필자는 MS Visual Studio ALM MVP 로서 이 제품을 써야할 이유를 말할 수 있었으나, 지금은 중간적인 입장에서 TFS를 쓰지 말아야 하는 진짜 이유도 써보고 싶었다. 최근 필자는 TFS 이외의 다양한 제품을 접하면서 TFS를 쓰지 말아야 하는 이유에 대해 더욱 확신이 들었다.

우리나라에는 전문가가 없다

우리나라에 팀 파운데이션 서버(Team Foundation Server) 전문가가 없다. 그러므로 당신에게 도움이 될 만한 전문가의 손길은 없을 것이다. 팀 파운데이션 서버(Team Foundation Server) 는 모든 것을 통합한 ALM(Application Lifecycle Management) 제품이다. ALM(Application Lifecycle Management)을 이해하려면 가장 먼저 소프트웨어 공학부터 시작하고 이해해야 한다. 그리고 사용자 측면과 관리적 측면 모두를 이해하고 솔루션 환경을 제공해야 한다.

ALM 제품을 쓰기전에 소프트웨어 공학을 설명하지 못하면 왜 팀 파운데이션 서버(Team Foundation Server)를 써야 하는지도 설명할 수 없다. 소프트웨어 공학은 50년도 되지 않는 짧은 역사를 가졌지만 공학적인 분야에서 이만큼 빠르게 변화하고 발전한 공학도 없을 것이다. 그래서 소프트웨어 공학이란 것이 정확한 기준을 섣불리 경계를 짓기도 애매한 학문이다.

그리고 소프트웨어 공학과 최근 빠르게 확산되는 애자일(agile)에도 많은 시간을 쏟아서 경험을 축척해야 한다. 소프트웨어 공학은 정량적인 측정이 가능하지만 애자일은 다르다. 팀원간의 관계와 팀이 축척한 또는 개개인의 경험이 큰 작용을 하고 애자일이란 툴적인 측면에서도 적극적이어야 한다. 필자도 소프트웨어 공학과 애자일을 공부하면서 처음 블로그에 쓴 글로부터 불과 4년 밖에 채 되지 않는다. 학문이라는 것은 알면 알수록, 배우면 배울수록 모르는 것이 점점 더 많아지는 것은 왜그럴까 ^^;

TFS 전문가는 골고루 다 알아야 한다. 이것 저것 모두 통합된 제품이므로 당연한 것이다. Team Foundation Server, Visual Studio Ultimate 외에 알아야 할 것들이 더 많다.

전문가적인 서비스를 제공하는 업체도 없다

한 마디로, 팀 파운데이션 서버(Team Foundation Server) 기술을 서비스하는 업체들은 다 망했다. 그러므로 만약 당신의 회사에서 TFS 컨설팅이나 서비스를 받고자 한다면, TFS 전문가가 올 확률은 거의 없다고 봐도 된다.

실제로 운영하다 장애가 생겨도 우리나라에서는 제대로 된 서비스를 받기 힘들다. 국내 팀 파운데이션 서버(Team Foundation Server) 전문가가 있는 업체가 한 군데도 없다. 한 곳의 전문 업체가 있었지만 TFS 사업을 접었다고 전해들었다.

필자의 과거 전 회사에서는 TFS 컨설팅을 했었고, 그런 업체가 몇 군데 더 있었지만 지금은 TFS의 수요도 없을 뿐더러 한 번 도입하면 다른 솔루션으로 갈아탈 수 없는 폐쇠성을 가지고 있어 도입의 실효성에 대해서도 논란이 있다.

image-1
이미지 링크

마이크로소프트 제품으로 발라야 한다

TFS 도입을 결정하는 순간 마이크로소프트(Microsoft)의 제품으로 완전히 발라버려야 한다.

가장 먼저 발라야 하는 것은 윈도우 서버(Windows Server) 이다. 가장 최신의 버전인 Team Foundation Server 2012는 윈도우 서버 2008 R2 부터 설치할 수 있다. 항상 최신 버전에 잘 적응을 하는 것이 이로울 것이다.

두 번째로 발라야 하는 것은 엑티브 디렉토리(Active Directory; AD)이다. 다른 LDAP(Lightweight Directory Access Protocol; 경량 디렉터리 액세스 프로토콜)의 OpenLDAP 은 전혀 지원하지 않는다. 예를 들어, 사내에서 리눅스(Linux) 서버에 OpenLDAP을 쓴다면 당장 OpenLDAP 데이터를 Active Directory로 마이그레이션을 해야할 지도 모른다. 좀 더 똑똑한 방법으로는 Active Directory와 OpenLDAP을 동기화 하는 방법도 있지만, 결국 유지 관리의 피로도는 급격하게 늘어날 것이다. (물론, AD 없이 쓸 수도 있지만, 없이 쓸 생각을 하면 앞이 캄캄하다)

세 번째로 발라야 하는 것은 Microsoft SQL Server 데이터베이스 제품이다. 왜 MySQL을 지원하지 않는지 기술적으로 이해하기가 힘들다. 물론 이 제품에서 분석 서비스(Analysis Services)와 리포팅 서비스(Reporting Services)를 제공하는데, 이거 안쓰고 싶어도 써야 한다. 이거 안쓰면 TFS가 매우 초라해 지기 때문이다.

네 번째로 발라야 하는 것은 IIS(Internet Information Services; 인터넷 정보 서비스)이다. 너무도 당연한 이야기지만…

다섯 번째로, 옵션으로 쉐어포인트(SharePoint)를 바를 수 있다. 이것을 바르려고 하는 순간 전용 서버를 고려해야 할 것이다.

예측할 수 없는 잦은 장애, MS 제품에 잔지식이 많아야 한다

모든 것이 통합된 TFS 구동하는 환경은 또 매우 복잡하고 오류의 원인을 찾는 것이 매우 힘들 수도 있다. 그러므로 MS 제품 이것 저것을 알아야 하고 계속…….. 배워야 하는 악순환이 계속된다.

필자는 6년이 넘게 거의 논스톱으로 직접 운영하는 TFS 서버가 있다. 서버도 직접 구매했었고, 소음 때문에 코로케이션으로 쓰다가 서버는 팔고, 결국 규모를 데스크탑 두 대로 줄여서 집에서 돌린다. 자동 업데이트가 설정이 되었는지 원인은 모르겠으나 서버 재부팅 후에 TFS 서비스들이 먹통이 되는 경우가 많았다.

실무에서도 많이 겪는 문제 중 하나가 윈도우 업데이트(Windows Update) 서비스이다. 필자가 몸담았던 회사 중에 운영 조직에서 윈도우 서버 전문가들이 직접 관리했지만, 가끔은 윈도우 업데이트 후에 정상적인 서버 작동이 되지 않아 윈도우 업데이트를 롤백(rollback) 하는 경우가 다반사였다.

대충이라도 모르면 어디서 튀어나온 트러블인지도 예측할 수 없다. 권한 구성만 해도 엑티브 디렉토리, IIS, MSSQL, 쉐어포인트 다 따로 해줘야 하는데 이 제품들이 서로 자기 오류가 아니라는 듯한 메시지만 보여준다.

제대로 된 기능이 하나도 없다

얼마 전에 필자가 쓴 글이다. 글의 요지는 ‘모든 것을 만족할 수 있지만, 어느 것도 만족할 수 없다.’ 이다.

[ALM] 13. 불완전한 통합, 팀 파운데이션 서버(Team Foundation Server)

크로스 플랫폼(Cross Platform)을 지원하는 Atlassian 의 제품 몇 개와 비교해 보자.

  • TFS 이슈관리 vs JIRA (atlassian)  
    음.. 이건 알만한 사람이면 다 안다. TFS를 JIRA와 비교하는 것이 실례이다. redmine과 같은 오픈된 제품에 비해서도 TFS는 장점보다는 단점이 더 많다. TFS 이슈관리가 MS OFFICE 플러그인을 제공하긴 하지만, MS OFFICE에서 플러그인으로 다루는 것이 더 불편하다. 플러그인을 너무 대충 만들어놓고 OFFICE 통합이라고 하는 것은 좀 무리수다.

  • TFS 코드뷰어 vs STASH (atlassian)
    이것도 TFS는 STASH에 비교하는 것이 실례이다. STASH의 특성이 조금 다르긴 하지만, github 의 인트라넷 버전이라고 봐도 무방할 것이다. 그만큼 TFS 코드뷰어에 비해 잘 만들어 졌다.

  • TFS 팀 빌드 vs BAMBOO (atlassian)
    TFS 팀 빌드는 할 수 있는 것이 거의 없다. BAMBOOJenkins에 비교 자체가 실례이므로 넘어간다. 이미 BAMBOO는 Amazon EC2 같은 클라우드와 통합이 되었다. 이에 비해 TFS는 이제 베타 버전으로 인터넷을 통해 서비스를 테스트 중이다. 특히 BAMBOO는 다양한 소스 제어를 지원하는 것도 장점이다.

Atlassian의 통합성은 TFS의 복잡한 구성보다 더 간단하다. Atlassian 제품은 각 제품간에 긴밀하게 통합이 되어있으며, 다른 3rd party 제품까지 다양하게 통합할 수 있다. Atlassian 은 제품마다 REST 형태의 API 를 제공하는데, 제품간에 응용 프로그램 수준의 인증이나 Oauth 인증 등 다양하게 각 제품을 연결할 수 있다.

필자는 Atlassian 제품은 모든 제품을 라이센스를 직접 구매하여 집에서 호스팅을 하면서 공부하는데, 서로 간에 긴밀하게 잘 통합되어 있으며, 상당히 많은 Addon이 제공되어 매우 쉽게 기능을 확장할 수 있다.

#1의 결론

이번 #1에서 이야기한 ‘팀 파운데이션 서버(Team Foundation Server) 를 쓰지 말아야 하는 진짜 이유 #1’은 주로 TFS의 외적인 부분에서 언급하였다. 앞으로 TFS 제품을 Atlassian과 다른 오픈된 ALM 솔루션과 기능적인 면으로도 비교해 볼 예정이다.

이슈 관리/ 소스제어/ 빌드/ 테스팅/ 릴리즈, 그 외에 다양한 면에서 비교해 보면서 진짜 이유를 조금씩 파헤쳐 볼 것이다.

image-2
이미지 링크, 이런 것도 통합인가?

Posted by 땡초 POWERUMC

댓글을 달아 주세요

$tf 폴더

팀 파운데이션 서버(Team Foundation Server) 2012 버전부터 로컬 워크스페이스(local workspace) 에 매핑된 폴더 중 $tf 파일이 생긴 것을 알 수 있다. 이 폴더는 숨김(hidden) 속성이 적용되어 있어 안보인다면 숨김 폴더도 보이도록 윈도우 익스플로어(Windows Explorer) 에서 설정을 변경하면 된다.

이 폴더는 여러분이 주로 작업하는 작업 영역(Workspace)일 경우 생각하는 것 보다 훨씬 많은 용량을 차지하고 있다. 이 폴더는 특성상 늘어나면 늘어나지 절대 줄어들 일이 없다. 대부분의 시간이 지날수록 코드의 라인은 늘어나고 변경이 일어나는 부분도 많아진다.

이 폴더가 내심 꺼림직해서 지워도 또 다시 생긴다. 이 폴더는 Team Foundation Server 2012 버전을 쓰고 + 로컬 작업 영역(Local Workspace)로 매핑된 폴더에 생긴다. 이게 의외로 골치 이프기도 하고 문제가 되기도 한다.

$tf 폴더, 왜 생기나…

이 폴더은 네트워크가 오프라인(offline) 상태로 중앙 서버에 연결할 수 없는 경우 스텐바이(standby)하고 있다. 물론 오직 오프라인(offline)을 위한 폴더는 아니다.

팀 파운데이션 서버(Team Foundation Server) 2012 + 로컬 작업 영역(local workspace) 조합이면 백퍼 생기는 폴더다. 일종의 소스 코드의 스냅샷(snapshot) 과 메타데이터(Metadata) 정보를 가지고 있다. [1]

image-1
[이미지 참조 링크]

이 폴더가 생기는 주된 이유 중 하나가 네트워크가 오프라인(offline)이 될 때 서버로 연결할 수 없으므로 이 로컬 작업 영역을 참조하게 된다. 팀 파운데이션 서버(Team Foundation Server)는 변경집합(change set) 단위로 데이터베이스(MSSQL)에 저장하는데, $tf 안에 변경집합(change set) 정보를 데이터베이스 처럼 활용하여 저장하게 된다.

image-2
[이미지] $tf 폴더 내부 구조, 각 파일은 zip 압축이 되어있다.

정체성을 잃은 TFS 소스 제어

이런 오프라인 기능을 지원하는 건 반갑다만 팀 파운데이션 서버(Team Foundation Server) 는 처음부터 오프라인을 고려하고 만들어지지 않았다. 전략적으로 비주얼 스튜디오(Visual Studio) 를 사용하는 기업이나 단체를 대상하기 때문에 오프라인(Offline) 가능성이 매우 낮은 환경을 대상으로 하는 솔루션이다.

필자의 경우 예전부터 작업하던 모든 $tf 폴더의 용량이 1GB를 훨씬 넘었고, 이런 빈번하게 작업하는 폴더를 여럿 가지고 있다. (최근 용량이 많이 차지해서 과감하게 $tf 를 지워버렸다.)

SVN 또한 .svn 이라는 숨김 폴더가 있는데 이를 ‘Administrative Directory’ 라고 부른다. 이 관리 디렉토리는 SVN을 사용하면서 변경되는 파일의 정보를 저장한다. SVN도 마찬가지로 .svn 폴더의 용량이 증가하게 되는데, 이런 경우 작업 중인 디렉토리를 복사할 때 .svn 디렉토리도 함께 복사가 된다. 최근 SVN은 이 폴더가 최상위 루트에 하나만 생기도록 변경되어 작업 디렉토리마다 .svn 폴다를 신경써야 할 필요가 사라졌다.

git 으로 잘 알려진 대표적인 분산 제어 방식의 소스제어(Distributed Version Control) 또한 로컬의 스테이징 저장소(Staging Area)를 이용한다.

사실 팀 파운데이션 서버(Team Foundation Server) 는 애시당초 오프라인에 대한 대안이 없었다. 네트워크가 오프라인이 되고 파일을 체크아웃을 하면 로컬 작업 파일이 읽기 전용(Read Only) 파일 속성이 해제되고 서버와 연결이 끊겨도 수정이 가능하다. 다시 네트워크가 사용이 가능할 때 ’온라인 상태’로 변경할 수 있는데, 이 때 체크이웃된 사실을 서버에 통보하게 되고 서버는 이 때 체크이웃 상태로 변경한다. 오프라인 상태일 때의 변경 집합은 온라인 상태에서 병합하게 되는 시나리오를 가지게 되는데, 로컬에 저장했던 변경 기록은 병합할 때 충돌(conflict)를 줄일 수가 있다.

하지만 좋은 오프라인 정책이 있더라도 경험적으로 알 수 있은 것은 오프라인(서밋이 일어나지 않는)이 오래될 수록 충돌(conflict)은 피할 수 없다. 비교적 간단하게 병합(merge)할 수 있는 어느 정도의 단계를 넘어서면 병합 도구는 변경이 일어난 부분과 일어나지 않은 부분을 제대로 분간하지 못하는 상황까지 온다.

$tf 폴더는 생기는데, 이를 제한할 수 있는 방법이 없어…

어떤 이유던 간에 $tf의 용량은 점점 커진다. 그러나 이 폴더의 용량을 제한할 수 있는 설정은 존재하지 않는다. 그리고 git 을 함께 사용하는 개발자는 소스 코드가 보관된 폴더에서 .gitignore 에 $tf 를 제외할 수 있도록 설정을 하기 바란다.

다만, $tf 폴더가 가지는 몇 가지 장점이 있다. 그러나 오프라인(offline) 일 때 굳이 파일의 버전을 비교할 예외적인 상황도 없었고, 오프라인 일 때 파일 이름을 변경한 경우도 있으나 다시 온라인일 때 무리 없이 파일의 상태가 반영이 되었다. 그러므로 필자는 수 년을 사용하면서 이 장점을 얻기 위한 예외적인 상황을 거의 몇 번밖에 만나보지 못했다.

MSDN 에서 $tf 폴더에 대해 자세하게 기술이 되어 있지 않으나 참고가 필요한 분은 이 링크[2]를 통해 확인하기 바란다.


  1. References - Team Foundation Server - Trying to understand Server versus Local Workspaces
    http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/11/30/team-foundation-server-trying-to-understand-server-versus-local-workspaces.aspx  ↩

  2. References - Team Explorer Everywhere의 새로운 기능
    http://msdn.microsoft.com/ko-kr/library/jj155781.aspx%23local  ↩


Posted by 땡초 POWERUMC

댓글을 달아 주세요

들어가기 앞서

팀 파운데이션 서버(Team Foundation Server) 는 구성과 운영이 매우 까다로운 ALM(Application Lifecycle Management) 솔루션 중의 하나다. 그간 오류에 대해 정리하는 의미로 팀 파운데이션 서버(Team Foundation Server) 를 운영하면서 겪을 수 있는 여러 가지 경우의 오류를 리스트업 해본다.

앞서, 마이크로소프트(Microsoft)의 제품이 가지는 여러 통합 제품은 공통적인 단점을 가지는데 그것은 통합되는 요소들이 모두 자사 제품임에도 불구하고 환경적인 요소에 매우 민감하다는 점이다.

image–1

통합된 만큼 오류 유형도 광범위

팀 파운데이션 서버(Team Foundation Server)는 윈도우 서버, SQL 서버, 웹 응용 프로그램 서버(IIS, Inernet Information Services), 그리고 쉐어포인트(SharePoint) 등과 통합이 되는데 심각한 경우 매우 작은 요소들로 인해 일부 서비스의 작동 자체가 멈춰버린다.

예를 들어 엑티브 디렉토리(Active Directory)나 데이터베이스 서버가 변경되거나 백업(Backup), 복원(Restore) 계획, 그리고 서버간의 인증이나 그룹, 맴버, 역할 그리고 시스템의 환경적인 변수 등 큰 범위부터 작은 범위까지 다양하게 나타난다.

때문에 매우 구체적으로 자원을 운용할 수 있는 장점과 함께 운영 규모가 커질수록 통합된 각 제품에 대해 매우 깊은 솔루션 지식이 요구된다. 대부분 상세한 오류 메시지를 제공하지 않고 추상적인 메시지를 제공하기 때문에 통합된 제품의 상호 관계를 확실히 이해하고 ‘감(Feeling)’으로 잘 때려 맞춰야 하는 경우도 생기게 된다.

단, 필자가 나열한 것 보다 더 많은 오류 발생과 해결이 있었으나 사소하거나 기억할 필요가 없다고 생각한 것들은 블로그에 올리지 못한 것도 다수 있다.

팀 파운데이션 서버(Team Foundation Server) 오류 해결

팀 파운데이션 서버(Team Foundation Server) 운영 정보


Posted by 땡초 POWERUMC

댓글을 달아 주세요

불완전한 통합, 모든 것을 만족할 수 있지만, 어느 것도 만족시킬 수 없다.

팀 파운데이션 서버(Team Foundation Server)는 모든 것을 통합한 마이크로소프트(Microsoft)의 ALM(Application Lifecycle Management) 솔루션이다.

통합… 모든 것을 만족할 수 있지만, 어느 것도 만족시킬 수 없다.이 통합이라는 것은 이 시대엔 단점으로 작용될 수도 있다는 생각이 든다. 지난 2005년부터 2010년까지 ‘통합’ 이라는 것이 장점이라고 생각했었다. 모든 것을 올인원(All in One) 해 놓았다는 것만으로 주목을 끌 수 있었지만, 2013년 최근에는 이제 더 이상 ‘통합’이 장점이 될 수 없다는 결론을 내렸다.


[이미지] 통합... 현실적인 통합과 이상적인 통합


(현실적인 통합?)
출처 : 이미지 링크

(이상적인 통합?)
출처 : 이미지 링크


필자는 비주얼 스튜디오 팀 시스템(Visual Studio Team System) 2005 버전부터 팀 파운데이션 서버(Team Foundation Server)를 사용해왔다. 필드에서는 이와 관련된 다수의 기업 컨설팅과 강의를 진행하였고, 그 외 레거시 개발 환경과 소스 컨트롤(Source Control)을 커스터마이징한 소프트웨어를 납품하는 등 대략 8년을 넘게 비주얼 스튜디오(Visual Studio)와 팀 파운데이션 서버(Team Foundation Server)와 동거동락하며 지냈다. 물론, 8년을 넘게 사용하면서 좋은 점도 많지만 그렇지 않은 점도 확실히 있다.

그 동안 한 가지 ALM 솔루션만 사용할 때는 미처 몰랐던 것들이 많았지만, 여러 가지 ALM 제품을 접하면서 ALM 솔루션 간에 장/단점을 필자의 기준에 좀 더 객관적으로 판단할 수 있는 계기가 되었다.

과거 ALM은 오픈 소스 진영을 중심으로 조금씩 발전해 왔다. SVN 소스 제어 컨트롤을 중심으로 각각 독립적인 유닛(Unit)으로 배포가 되고 플러그인 등을 활용하여 조금씩 연동을 할 수 있었다. 그런 와중에 마이크로소프트(Microsoft)는 개발툴과 ALM을 통합한 ‘팀 시스템(Team System)’ 발표하였고, 그 당시 여러 오픈 소스가 가진 것들을 한 곳에 통합하여 사용할 수 있었다. 이 때까지는 ‘통합’ 이라는 것 자체가 장점이던 시대이다.

하지만, 최근 ALM은 조직의 성숙도에 맞는 전문적인 ALM 툴을 사용하는 추세이다.

아쉽게도 팀 파운데이션 서버(Team Foundation Server)는 각각의 모든 기능들이 전문성을 갖추기에는 매우 부족한 것도 사실이다. ‘이슈 관리, 빌드, 소스 제어’, 아마도 딱 떠오르는 대표적인 벤더 및 오픈 소스들이 있을 것이다. 이슈 관리(Issue Managements), 빌드(Builds), 소스 제어(Source Control) 등, 타 벤더의 전문적인 툴과 비교하면 각각의 기능은 타 벤더에 비해 열악하다.

대표적인 ALM 벤더들과 차이가 나는 것은 마이크로소프트(Microsoft)의 팀 파운데이션 서버(Team Foundation Server)는 범용성을 추구하고, 전문적인 것들은 SDK(Software Development Kit)를 사용하여 커스터마이징을 하거나, 3rd party 벤더의 몫으로 남긴다. 대인배적인 모습이긴 하지만, 현재까지도 여전히 팀 파운데이션 서버(Team Foundation Server)를 중심으로 한 생태계가 형성되지 않았다는 것 또한 단점으로 작용한다.

필자는 최근 아틀라시안(Atlassian)의 ALM 제품에 매력을 느끼고 있다. 각각의 기능들이 매우 뛰어나고, 필요하다면 언제든지 필요한 기능의 소프트웨어와 통합이 가능하다. 설치부터 통합까지 매우 간단하다. 그리고 어떤 운영체제에서도 설치와 운영이 가능한 ‘크로스 플랫폼(Cross-Platform)’ 이라는 점은 팀이나 조직에서 선택의 폭이 넓고, 또 하나, 데이터베이스, 웹 서버 등 선택의 폭도 넓다. (반면, 팀 파운데이션 서버(Team Foundation Server)는 설치는 쉽지만 구성(Configuration)이 복잡하고 운영(Operation)에 더 많은 리소스가 필요하다)

그리하여 앞으로 필자는 여러 ALM 솔루션을 벤치 마킹하면서 ALM 솔루션들 간에 장단점 등을 비교/분석하여 함께 공유할 예정이다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

[TFS] 어떤 개발자의 외침. "왜 TFS를 쓰기 싫을까? - TFS is suck." [1/2]
[TFS] 어떤 개발자의 외침. "왜 TFS를 쓰기 싫을까? - TFS is suck." [2/2]


지난 1편의 글에 이어, 어떤 분이 원문을 쓰신 분에게 이런 말을 남겼다.

이 코멘트에 대해 원문을 쓰시는 분은 아래의 링크로 반박의 글을 작성하셨다.

원문 : http://imjuni.tistory.com/488

   


필자의 입장에서는 상용 솔루션이 커스터마이징을 해야 쓸만한 제품이란 것은 제품을 구매한 사용자 입장에서는 그리 달갑지는 않을 것이다. 대신 3rd party 벤더나 오픈 소스를 이용하여 기능을 더 보탤 수 있고, SDK API를 이용하여 직접 도메인 제약에 맞게 만들 수도 있을 것이다.

원문을 읽어보면 저 분은 TFS에게 어떻게 데였는지 모르겠지만, 병적으로 거부하는 것 같다. 그렇다고 싫어하는 이유에 대해 근거가 있거나 정확하게 잘못된 정보를 바탕으로 작성이 되었다는 것에 매우 안타까움을 느낀다.



첫 번째로, 위의 원문에서 아래와 같이 잘못된 정보를 가지고 있다.

   

일단 TFS에서는 VCS 기능을 어느 정도 확장을 할 수 있다. 이때 TFS Server는 물론이고, 클라이언트인 Visual Studio Extensibility를 이용하여 클라이언트도 확장할 필요가 있다. 이는 비단 TFS 뿐만이 아니라 SVN도 마찬가지다. 고로 어느 범위까지 확장할 것인가 결정에 따라 개발을 해야 할 범위가 틀려질 수 있다.

   

두 번째로, TFS를 Git와 비교한다는 것은 좀 무리가 있다고 본다.

Git는 유명한 리눅스를 개발한 리누스 토발즈에 의해 분산 버전 관리할 수 있는 소스 제어 솔루션이다. 분산 버전 제어가 자칫 매우 유연해 보일 수 도 있을 것이다. 이에 반해, TFS는 중앙 집중 방식의 소스 제어 솔루션이다.

기업에서 통제가 되지 않는 소스 제어는 보안적인 이슈나 소스 코드 유출 등의 사고가 생기가 마련이다. 이런 점에서 분산 버전보다 중앙 집중 방식이 기업에서 개발 환경 조건에 더 부합한다고 본다.

이런 장단점 등으로 오픈 소스를 지향하는 사람들은 분산 버전 관리 방식인 Git를 선호한다.

반면에, TFS는 TFS란 제품이 나오기 전부터 Microsoft 내부적으로 이슈 관리와 소스 제어를 할 수 있는 솔루션을 만들어 사용하고 있었다. Microsoft는 소프트웨어 기업이다. 소프트웨어를 잘 개발할 수 있도록 Team Foundation이라는 제품으로 발전하면서 상당히 많은 노하우가 녹아있는 제품이다.

SVN는 CVS가 Atomic Transaction(원자성)이 보장되지 않는 이유의 심각한 문제로, SVN으로 다시 태어났다.

   

원문을 쓰신 분은 필자가 이해하기 힘든 이유로 CodePlex와 Git를 비교하는 것은 '중국이 한국보다 인구가 많으니 강대국이다.'라는 논리와 같다.

잘못된 정보만을 가지고 TFS를 혐오하는 것은 바람직하지 않다고 본다. 안된다고 하는 많은 기능들이 이미 예전부터 지원했던 것인데 원문을 쓰신 분은 이런 기능을 이용하는 방법을 몰랐던 것이지, TFS 자체의 문제는 아니다.




이런 말을 해주고 싶다.

도구는 단지 도구일 뿐이다.
쓰는 사람이 잘 써야 좋은 도구이다.
잘 쓸 수 없는 도구는 그 사람의 잘못이지 도구의 문제가 아니다.
 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 나그네 2013.01.13 17:36 Address Modify/Delete Reply

    git 든 svn 툴이든 오픈소스 제품군만으로도 충분 해서. .굳이 tfs 도입할 이유가 생각나지 않는군요.

    vs 플러그인으로 연동하면 그만이라서..

  2. JIN 2016.08.29 11:56 Address Modify/Delete Reply

    정성스레 작성하신 글 잘 보고 갑니다..
    TFS를 프로젝트에 처음 적용해 나가면서 어떤것인가 하고 경험해 가는 중에 포스팅 하신 몇몇 글들을 읽었습니다. ALM툴/서비스는 처음인지라 TFS가 정말 적당한지 어떤지에 대한 개념도 없이 아래의 몇가지 장점만으로 선택을 했습니다.
    처음엔 제목만 보고 아뿔싸 'TFS' 문제가 많은가보다 하고 심장이 쫀득해졌다가,
    객관적으로 분석해주신 내용을 보고 오히려 최고는 아니었어도 현재로써는 적절한 선택이었다는 생각이 들더군요..

    1. 현재 팀원이 1.2(12명 아닙니다 ㅎㅎ)명.. TFS 정책상 부담없이 쓸수 있고, 중장기적으로 팀이 5명까지 커질일이 없다는점
    2. 현재 Visual Studio를 사용중이며
    3. 1의 이유로 새로운 툴/서비스에 대한 시장조사/검증 자체가 부담
    4. 중앙 집중식 버전 컨트롤
    5. 그나마 접하고, 본게 이것
    6. 처음엔 단지 소프트웨어 버전컨트롤 이상도 이하도 아닌 이유로 사용함
    7. FDA 승인을 필요로 하는 제품 개발과 깊은 관련이 생기면서 Validation 문제에 봉착
    (FDA regulation 의 Validation 입니다 이는 Software의 Validation과는 다른 훨씬더 확장된 내용을 다루고 있습니다. 첨언하면, Software의 Validation하면 Software의 Specification과 Use case를 따르는 기능의 검증이 촛점이라면, FDA의 것은 SDLC를 어우르는 광범위한 Traceablity, 시스템 검증, 변경 관리 등등.. 전사적으로 등골빠지는 것중의 하나가 FDA 승인이죠..)
    8. 다만 7의 결과물이 Documented Evidence 가 되어야 하는게 FDA의 요구사항입니다. TFS내의 WORK ITEM과 Design Specification, Code, Test, Debug(issue) 등의 결과물이 문서상에 존재해야 한다는것이었죠.. 이 작업은 사람을 미치게도 할수 있는 부분입니다.. ㅎㅎ 이부분은 TFS에서도 직접적으로 문서화를 위한 솔류션을 통합한것은 아닌거 같더라구요 때문에 Modern Requirements라는 솔루션을 채택했습니다.. 이는 TFS상의 WORK ITEM의 부모자식관계 변경 이력, User Requirements, Design Specification, Code, Test, Debug(Issue) 의 Traceability등을 자동으로 생성해주는 역할을 합니다..
    9. 그 외에도 TFS가 'Microsoft' 라는 알려진 기업의 솔루션이기에 직접 구축한 Opensource based 시스템이나 시장에 인지도가 없는 회사의 솔류션일 경우 FDA의 Audit시에 수없이 많은 질문을 야기할 가능성을 줄여줄수 있다는 점도 큰 몫이었습니다.

[TFS] 어떤 개발자의 외침. "왜 TFS를 쓰기 싫을까? - TFS is suck." [1/2]

[TFS] 어떤 개발자의 외침. "왜 TFS를 쓰기 싫을까? - TFS is suck." [2/2]





 
예전에 인터넷에서 자료를 찾는 중에 Team Foundation Server를 무척 혐오한다는 사람의 글을 읽게 되었다. 매우 잘못된 정보로 Team Foundation Server와 Visual Studio를 바라보는 것을 매우 안타깝게 생각한다. 이 글을 작성된 지 1년 정도 되었는데, 필자는 오늘에야 비로서 이 내용을 바로 잡고자 한다.

필자는 Microsoft 제품과 직접적으로 관련되지도 않았고, 더 이상 Microsoft MVP도 아니다. 그러므로 필자의 답변은 최대한 중립적인 입장에서 작성하였다. 물론, 필자는 Team Foundation Server를 사용한다. 하지만, 반드시 Team Foundation Server만 사용하지는 않는다.

그리고 글의 작성자는 Team Foundation Server의 기능과 Visual Studio IDE 기능을 모두 Team Foundation Server의 문제로 지적하고 있다. 이런 툴의 기능에 대한 혼돈이 있어 필자의 답변 또한 편의상 글 작성자의 의도에 맞게 Team Foundation Server로 통일하였다.

아래의 원문의 글을 작성하신 분의 글은 검은색이고,
필자가 답변한 글은 어두운 붉은 색으로 표시하였다.




원문 : 
http://imjuni.tistory.com/464 


 

단순한 거부 반응이 아니라 왜 TFS를 쓰기 싫을까? 개인적으로 TFS를 정말 오랫동안 써보고 또 TFS를 이용하여 공동 작업을 해보기도 한 결과 TFS는 정말 사용해서는 안될 도구라는 사실을 지속적으로 느꼈고, TFS를 제발 쓰지 않았으면 하는 생각을 계속 하게 되었다. 하지만 TFS는 생각보다 사용되는 곳이 많다. 그 이유는 가장 적은 비용으로 ALM 도구를 도입할 수 있다는 것 때문에 TFS를 도입하게 된다. 그런데, 가장 큰 문제는 ALM을 위해서 TFS를 도입하면 반대 급부로 TFS 때문에 개발자의 생산성이 저하되어 TFS를 도입한 비용만큼 개발자의 생산성이 저하된다. 그리고 제발 TFS가 가지는 ALM 기능이 VCS에 포함된다는 착각은 하지말자. Work item을 생성하거나 체인지 셋을 묶거나 추적하는 등의 기능은 ALM이면서 Issue Tracker이기 때문에 가능한 기능들이다. 이러한 기능은 Jira 또는 Code Beamer, Trac, Launchpad 와 같은 도구에서 제공하는 기능이지 SVN이나 Mercurial에서 제공하는 기능이 아니다. 정말 이런 대착각은 하지말자. 또한 Martin Fowler가 조사한 Vcs Survey에 따르면 TFS의 인지도는 0%다. 정말로 0%다. 링크를 따라가면 확인할 수 있다. 설마 Martin Fowler가 이름 없는 사람이고 그래서 그 조사를 믿을 수 없다는 이야기는 하지말자. Martin Fowler는 그 유명한 Refactoring의 저자이자, 애자일과 관련하여 아주 유명하신 분이다.


왜 TFS를 쓰면 안될까? 번역과 경험을 토대로 이 글을 써보자.

1. 크기: 이 부분은 MS가 참 미쳤다. SVN은 TortoiseSVN을 쓰면 15MB 많아야 20MB면 충분하다. 심지어 자체 웹서버가 내장된 tortoiseHg도 24MB면 충분하다. 웹서버도 없고 아무것도 없는 TFS는 Visual Studio Extension이라는 이유로 VS 필수 구성요소를 모두 설치해야 되기 때문에 200MB가 넘는다. 솔직히 요새 200MB면 껌이기 때문에 그리 부담도 되지 않지만 타 시스템과 비교하였을 때 10배 이상 크기가 큰 것은 확실하다. 넷북이나 가벼운 시스템에서 구동시키는 것은 확실히 부담되는 크기임이 자명하고, 부인해서도 안될 것이다. 뿐만 아니라 덩치가 크다는 것은 그만큼 메모리를 많이 소비한다는 뜻과 동일하다. TFS는 그만큼 가볍지도 않고, 용량도 많이 차지하는 거대 도구라는 것을 인정해야 한다.

SVN의 용량과 TFS의 설치 용량을 비교하는 것은 의미가 없다.

 
Team Foundation Server(이하 TFS)는 설치 시에 소스제어 기능만 선택적으로 설치할 수 없다. 그래서 설치 시에 모든 기능이 포함하여 설치하게 되는데, 이 중에는 소스제어, 작업항목, 빌드, 팀 탐색기(소스제어 클라이언트) 등이 모두 포함된다. 그리고 이 기능이 원활하게 동작하기 위해서 VC++ 재배포 패키지, .NET Framework 재배포 패키지 등이 설치 파일에 모두 포함이 된다.

 
마찬가지로 SVN을 소스제어로 이용하고, 그 외에 빌드, 이슈 트래킹 툴  등을 모두 갖추고 설치한다면 TFS보다 설치 용량이 더 많아질 지도 모른다.


그래서 용량이 크다는 이유로 TFS가 싫다는 이야기는 이야기의 논재에 벗어난 것 같다.





2. 읽기 전용 파일: 왜 이런 구조로 개발 되었는지 이해할 수 없지만 TFS에서 관리하는 모든 파일은 읽기 전용이다. 파일을 고쳤다고 하더라도 실제로 체크 아웃을 한 것이 아니라면 전혀 반영되지 않으며 이를 알 수 있는 방법은 Visual Studio 탭에 표시된 잠금 표시와 저장할 때가 되어서야 나오는 읽기 전용이므로 이를 해제해 달라는 말을 보았을 때다. 이 경우 일단 저장을 하고 다시 체크인을 한 뒤 다시 또 저장을 해야 한다. 만약 이 와중에 충돌이 발생하면 끔찍한 결과를 초래 한다. 읽기 전용 파일이 문제가 되지 않는다고 주장하는 사람은 빈번하게 충돌이 발생하는 환경에서 개발을 해보지 않은 것으로 판단 된다.

TFS의 소스를 파일을 내려받은 클라이언트의 파일은 읽기 전용이라는 점은 필자로 여러모로 불편한 점이 있다고 생각한다. SVN과 비교하자면 불편한 점이 확실히 맞다. 

 
TFS는 윈도우 탐색기나 커맨드 라인을 통해 파일을 수정하려 한다면 읽기 전용 파일이기 때문에 수정하여 저장할 수 없다. 이 경우 읽기 전용 파일 속성을 해제해 주어야 한다. 하지만, 수정하려는 파일을 체크인 하려고 한다면, 먼저 체크아웃을 해 주어야 한다. 체크 아웃을 하지 않으면 체크인 시에 수정된 파일로 간주하지 않기 때문에 변경 집합에서 제외되므로 체크인을 할 수 없다.

반면, SVN또는 기타 소스제어에서는 윈도우 탐색기 등에서 파일을 수정하면 알아서 체크아웃을 시키거나 체크아웃 과정을 자연스럽게 유도한다. 

이 부분에서 불만을 주장하신 분은 '일단 저장을 하고 다시 체크인을 한 뒤에 다시 저장을 해야 한다'는 방법은 잘 이해하기도 어렵거니와 잘못된 방법이다. 이 경우 필자가 이야기 한 것처럼 강제로 수정한 파일은 언제든지 다시 체크아웃을 한 후에 체크인을 하면 된다. 단, 특정 버전 받기를 하게 되면 모든 파일을 덮어씌우기 떄문에(Overwrite) 체크인 전에 특정 버전 받기를 실행하면 안된다. 물론 이런 경우는 극히 드물겟다. (최신 버전 받기는 변경된 파일만 덮어씌우므로 최신 버전 받기는 강제로 수정한 파일이 안전하게 수정된 내용으로 보존된다.)

하지만, 불만을 주장하신 분의 이야기 처럼 빈번하게 충돌이 발생하는 환경이라면 어떤 소스제어 솔루션을 사용하더라도 빈번하게 충돌이 발생하게 되어있다. 이런 충돌 상황을 빈번하게 겪어 충돌을 피할 수 있는 경험적인 감각을 익힐 수 있을 정도의 지능을 가진 사람이라면 대부분의 충돌이 발생하는 상황을 최대한으로 피할 수 있다.





3. 솔루션 파일 수정 무한 반복: 몇 가지 상황이 되면 이 경우를 만나게 된다. 예를 들면 VPN으로 사내 망에 접근할 때 TFS 서버 이름이 변경되는 경우 이다. 이 때 VPN으로 접근한 사람이 솔루션 파일에 TFS 이름을 바꾸면 나머지 사람은 그 솔루션 파일을 받은 뒤 다시 바꿔야 하고, VPN 작업자는 또 바꾸고, 이러한 무한 반복이 실행 된다. 또 다른 경우로는 솔루션 파일이 바인딩 되지 않은 경우 솔루션 파일을 바인딩 하기 위해서 솔루션 파일을 변경하고 다른 사람은 그 바인딩 정보를 솔루션 파일에 기록하기 위해서 변경하고 그러면서 자신에게 바인딩 하는 과정을 또 거치는 등 역시 무한 반복이 실행 된다. 발생하는 일 자체는 그리 짜증나지 않지만 무한한 반복으로 인해서 체인지셋 관리에 어려움을 겪게 된다. Subversion 또는 Mercurial은 근본적으로 이러한 일이 발생하지 않는다. 두 VCS에서 프로젝트 파일이란 단순히 관리가 필요한 텍스트 파일에 불과하기 때문이다.

이 부분은 글을 작성하신 분의 의견에 공감한다.


다만, SVN의 경우는 소스제어 바인딩 정보가 .svn 숨김 폴더에 저장되기 때문에 이런 문제가 발생하지 않지만, 폴더마다 .svn 숨김 폴더에 캐시된 데이터가 쌓이는 문제도 함께 가지고 있다. SVN 최신 버전에서는 폴더마다 .svn 숨길 폴더가 만들어 지는 문제를 최상의 폴더 한 곳에만 생기게 하도록 수정되었다고 한다.




4. .net 안쓰는 사람: Java 또는 PHP, Ruby, Python 등을 이용하여 개발할 경우 TFS로 인해서 얻는 반사 이익이 급격히 줄어든다. 솔루션 파일을 통한 간편한 프로젝트 추가 기능을 사용할 수 없고 디렉토리를 통채로 삽입할 경우 바이너리 파일이나 의미 없는 파일을 일일히 GUI로 제거해 주어야 한다. 반면 TortoiseSVN 또는 TortoiseHg는 Ignore list를 편집하여 간편하게 복수 파일을 관리하지 않을 수 있다. 또한 다른 도구와 다르게 비교 도구를 자체적으로 지정할 수 없고, 체인지셋 간 비교가 원활하지 않다. 이와 같은 단점으로 인해서 생산성이 저하 된다. 또한 Maven, Ant와 같은 오픈 소스 빌드 도구를 사용할 수 없고 MSBuild와 같은 도구만 사용가능하여 TFS 장점을 취하기 힘들다. 만약 Eclipse, Aptina 등과 같은 도구를 사용할 때는 2개의 IDE를 사용하거나 Teamprise를 사용해야 하는데 Teamprise는 MSDN Account가 있을 때 무료이다. Visual Studio Ultimate with MSDN 라이센스가 필요하다. 따라서 .net을 사용하지 않는 사람은 추가 비용이 발생할 수 있다는 것을 확실히 인지해야 한다.

필요 없는 파일의 확장자를 필터링하여 통채로 소스제어에 바인딩 또는 체크인할 수 있는 기능은 예전부터 TFS에 있는 기능이다. 그리고 비교 도구로 파일이나 체인지 셋, 폴더 등 비교하는 기능도 사용자가 별도로 설정할 수 있는 기능이 예전부터 존재한다.

그리고 라이센스 부분에서 TFS가 상용 솔루션인 점을 감안하면 당연히 클라이언트 라이센스 정책이 있다는 점은 당연하지 않을까?

이 부분도 다시 확인해 보시길...





5. Same Directory Archive: 사용자 디렉토리 경로와 TFS 경로를 일치 시키는 일을 한다. 사실 SVN과 Mecurial, Git와 같은 도구는 Point to Point, Central Repository의 특정 지점과 지점을 프로젝트로 연결함으로서, TFS 처럼 경로를 강제하지 않는다. TFS가 경로를 강제한다는 말은, Repository에 만들어진 Directory structure가 실제 사용자 Directory structure와 일치시킨다는 것이다. 일반적인 VCS에서는 프로젝트 단위로 연결하기 때문에 프로젝트 하위 Directory structure는 관리되지만 프로젝트 상위 Directory structure는 따로 관리하지 않는다. 관리하지 않더라도, VCS 자체에서 branch 별로 Directory를 만들거나 구조적인 관리가 가능하지만 사용자는 최종적으로는 프로젝트와 프로젝트가 연결되는데 반해 TFS는 프로젝트 상위, 하위 모든 Directory structure를 일치 시킴으로서 불편을 유발한다. 예를 들면, A, A', A'' 프로젝트가 있다고 가정하면 A'와 A''는 A 프로젝트 branch일 때 TFS는 관리자가 만든 구조로 세 프로젝트를 관리해야 하지만 SVN 또는 Mercurial은 A와 branch내부에 A'와 A''를 둘 수 있다. 개발자가 원하는 방식으로 프로젝트를 관리할 수 있다.

말씀하신 것처럼 소스제어의 폴더 구조를 반드시 따를 필요가 없다. 사용자가 작업영역(Workspace)를 이용하여 폴더 구조를 정의할 수 있다. 그리고 유용한 것 중, 공개 작업영역을 이용하면 누군가가 정의해 놓은 구조를 모든 사람이 공개 작업영역을 이용하여 같은 개발 구조를 가져갈 수도 있다.

이 부분도 다시 확인해 보시길...





6. 충돌 처리 미흡: 충돌이 일어날 때 TFS는 일반적으로 3가지 선택지를 준다. 다른 사람의 소스를 원복 하는 것, 내 소스를 원복하는 것, 자동으로 머지를 하는 것 3가지 선택지가 있다. 일반적으로 어떠한 도구라도 자동 머지는 믿을 수가 없고, 나 살자고 다른 사람이 작업한 결과물을 버리게 할 수 없기 때문에 내 소스를 버리게 된다. 이 경우 지금까지 작업한 것이 모두 사라지게 되는데 이를 방지하기 위해서는 Local Workspace를 제외한 또 다른 사본이 필요하게 된다. 이는 이중으로 머지를 하게 만드는 수고를 하게 함으로서 정말 고통 스러운 작업을 지속적으로 유발한다. 정말 이 과정에서 수없이 많은 충돌과 누락을 발생시키는데 도저히 이 방식을 용납하기 힘든 정도이다.

이렇게 고생하면서 충돌 처리를 하시는 점이 이해가 가지 않는다. 이런 소스의 버저닝 문제로 소스 제어를 사용하는데, 그 자체가 용납하기 힘들 정도이면 소스제어 기능을 충분히 활용하지 못하는 것 같다.




7. offline 상태에서 완벽한 무력화: 일반적으로 오프라인 상태에서 유효한 SCM은 분산 SCM인 Git, Mecurial을 제외하면 SVN도 유효하다고 보기는 힘들다. 다만, TFS와 SVN이 근본적으로 다른 점이라면, TortosieSVN을 이용한다면 어떤 파일이 수정되었는지 알 수 있다. 또한 작업 이전에 프로젝트를 모두 복사한 뒤 자유롭게 작업하고 그 결과물이 마음에 든다면 그 소스를 바로 커밋할 수 있다. 커밋한다면 실제 Repository에 반영된다. TFS로 동일작업을 해야 한다면 일단 사본을 만들고, 그 사본으로 작업한 뒤 원래 Local Workspace에서 수정한 파일을 "기억을 더듬어서" 일일히 Check out을 한 뒤 하나씩 복사해야 한다. 완벽하게 Check out이 끝난 뒤라면 통채로 복사해도 상관은 없지만 중요한 것은 Check out을 한 뒤 해야 하는 것이다. 만약 당신이 30개의 파일을 수정했다면 30번 Check out을 해야 한다. 만약 Git, Mercurial을 사용한다면 Local Repository에서 revision을 관리하며 작업을 지속하는 것이 가능하다.

TFS와 Visual Studio에서 온라인 상태로 바인딩된 소스제어가 오프라인으로 변경이 되고, 코드 변경 작업이 완료된 후 다시 온라인 상태로 전환이 되면 변경된 파일은 체크 아웃 상태를 유지한다. 그리므로 일일이 기억을 더듬어서 작업할 필요는 없다.

이 부분도 다시 확인해 보시길...





8. 비용: TFS는 단점만 가진 SCM이지만, 자체적으로 ALM 기능을 포함하고 있기 때문에 비용이 수반된다. ALM이 반드시 필요한 경우라면 가장 저렴한 비용으로 구축할 수 있지만 TFS를 사용함으로서 얻는 불이익이 ALM 도입 비용을 상회할 지 모른다. 또한 TFS 사용을 위해서 VS가 전혀 필요하지 않는 사람도 VS를 TFS 라이센스로 모두 구입해야 하므로 사실 비용이 썩 저렴하다고 보기 힘들다. 만약 Issue Tracker 또는 ALM이 필요하다면 Jira와 같은 도구를 도입하고 SCM을 따로 구축하거나 Trac + Mercurial, Launchpad + Mecurial 같은 솔루션을 사용하는 것이 현명한 방법이라 생각한다. 이를 통해서 VS가 필요없는 사람에게 TFS VS를 구입 해줄 필요가 없으므로 비용을 절감할 수 있고, 또한 VS 역시 TFS 버전으로 구매할 필요가 없으므로 비용을 절감할 수 있다. 심지어 SCM 서버도 리눅스 등을 이용하여 구축할 수 있으므로 서버 비용도 절감할 수 있다. (다만 리눅스 엔지니어를 채용하는 비용이 추가적으로 발생할 수 있습니다)

TFS 라이센스 부분에서 TFS를 사용하려는 사용자가 모두 Visual Studio를 구매할 필요가 없다. CAL(Client Access License)만 구입하면 된다.

그리고 오픈 소스를 이용하여 ALM 환경을 구성하는 것은 그 조직이나 그 사람의 자유이다. 그것이 관리하기 편하고, 사용자가 원한다면 오픈 소스를 사용하는 것도 좋은 방법이다. 다만, 오픈 소스를 이용하여 모든 ALM 환경이 구성된 경우, JRE 버전, 새로운 버전으로 업그레이드와 데이터 마이그레이션, 오류 등으로 자유 소프트웨어 진영에서 어떠한 지원도 받을 수 없을 것이다. 이런 점에서 상용 솔루션은 어떤 지원을 받거나, 책임의 소지를 확실히 구분할 수 있다.

이 부분도 다시 확인해 보시길...





 



Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 안들이 2013.01.11 02:25 Address Modify/Delete Reply

    일단 닷넷에서 자바로 넘어 온 입장해서 적자면..

    1. 윈도우 플랫폼이 너무 고가정책이다.
    어떤 걸 도입하든 MS제품으로 도배가 되는데 제품 라이센스 체계가 굉장히 복잡하고 비용또한 유닉스보다 저렴한 정도이지 리눅스의 무료(오픈소스)에 비하면.. 넘사벽입니다.

    흔히 유지비용을 MS에서 더 저렴하다고 하지만 리눅스기반에 오픈소스 제품군에 부분적으로 컨설팅이나 유료제품군을 사용하는게 훨씬 더 저렵합니다.

    2. 사용자 수가 절대적으로 적고 참고할 만한 자료가 없다.(멘토 부족..)
    라이센스 정책이 고가에 인증부분이 강화되면서 불법라이센스가 거의 사라졌지만 비례적으로 관련 정보나 생태계도 같이 사라지고 있습니다.
    (최근 윈도우 서버 2012가 출시 되었지만 네이버에서 검색해보면 아직도 MS에서 출시 이벤트를 한건지 출시 이벤트 정보만이 C&P 하듯이 몇페이지외에 실질적인 정보가 거의 없습니다..)

    3. 리눅스/자바/이클립스 체계가 충분한 개발장비가 되고 있다..
    VS 2012를 잠깐 써본 적이 있는데.. 정말 좋아졌더군요.(사실 경쟁자가 없을정도로 잘 만들었죠.. 무겁다는 것만 빼면..) 하지만 리눅스든 윈도우든 맥이든 자바에 이클립스만 있어도 충분히 개발환경을 만드는데 충분하더군요. 버전업이 되었다고 자바버전이 올라갔다고 이클립스를 갈아 치우지 않아도 되고..
    VS의 경우 이제 매년 갱신해야 하지요..(얼터밋이 1900만원이던가..매년..)


    안드로이나 애플이의 IOS 나 OSX 든 운영체재는 무료나 아주 저렴하게 풀고 개발환경도 무료나 저렴하게 풀고 플랫폼을 확산하는데 주력하고 있는데.. 또 제품들도 충분히 나와주고 있고요.. 그런데 비싼 OS에 개발환경을 갖출 이유는 없겠지요..자바로 만들어도 윈도우 대응도 되고요..-_-

    MS가 부활하려면 OS비용을 아주 낮은 비용으로 책정하고 (연 19800원? 이나 무료) 윈도우 스토어와 모바일 스토어를 통합해서 스토어를 통해서 수익을 적극적으로 만드는게 현실적으로 보입니다..
    하지만 MS는 포기하지 않겠지요.. 점유율이 떨어진 만큼 비용을 올려서 수익을 만들고 있으니까요.. 지금도..

  2. 안들이 2013.01.11 02:33 Address Modify/Delete Reply

    윈도우 블루(차기버전)가 무료정책이고 윈도우 서버도 비용이 실 웹서비스나 웹서버로 도입가능할 정도로 저렴해지고 비주얼 스튜디오가 10만원 이하로 책정 되면 다시 윈도우 플랫폼을 써보고 싶네요..

    (도대체 받지도 않을 기술지원은 왜 포함하는건지.. msdn 문서도 문서화 제공부분에서 필수적인 것인데.. 장점이라며 비싸게 책정되고 있는 msdn 구독료는 이해하기 힘드네요..-__- 요즘 게임업체들도 모바일로 전환하거나 외국으로 나가면서 리눅스 플랫폼에 오픈소스 제품군을 적극적으로 준비하는 업체가 많더군요.)

  3. 아름드리 2013.01.11 09:36 Address Modify/Delete Reply

    3번 항목의 .svn 숨김 폴더는 근래에 최상위 폴더에만 생성되도록 변경되었습니다.

  4. 공도 2013.01.13 08:42 Address Modify/Delete Reply

    7번에 덧붙여서, Git의 로컬 커밋과 개념이 다르지만 Shelve 기능을 활용하면 팀에 영향주지 않고 개인적으로 커밋하는 효과를 얻을 수 있죠. 몇 번이든지 Shelve Set으로 저장했다가 다시 복원했다가 하다가 메인 트리에 올릴 수 있을 때 체크인 하는 방식으로 쓸 수 있고 또는 아직 체크인 하기 전의 코드를 팀원이 리뷰하는 용도로 쓸 수도 있고요.

MSDN Virtual Lab에서는 Microsoft Team Foundation Server 2010 제품을 온라인으로 트레이닝 받을 수 있는 서비스가 있습니다. Team Foundation Server 2010 을 설치할 여력이 되지 않거나, 제품을 직접 시연하고 싶은 사용자에게 가상 환경을 제공해 주고, 가상 환경에서 여러 시나리오를 따라해 볼 수 있습니다.

이 MSDN Virtual Lab 환경은 Internet Explorer 만 있으면 곧바로 서비스를 체험할 수 있습니다. 다만, 이 서비스는 가상의 환경으로 제공이 되기 때문에 가상 환경에서 실습이 끝난 이후에는 생성된 팀 프로젝트와 데이터는 모두 삭제가 됩니다.

실습은 모두 3가지의 모듈로 제공이 됩니다.

   

먼저 실습을 하고자 하는 모듈의 주소를 Internet Explorer 를 통해 접속을 합니다.

   

Launch Virtual Lab을 선택하면 아래와 같은 팝업이 뜨는데, 실습 환경의 가상 환경을 제공하기 위한 준비를 합니다. 아마도 실습을 하기 위한 스냅샷으로 돌아가고 있겠지요..?

   

이 가상 환경 실습은 원격 데스크톱 연결을 이용하는데, Connect 버튼을 클릭하면 곧바로 가상 환경을 원격 데스크톱 세션을 통해 접속이 됩니다.

   

접속이 되면 가상 환경 접속에 접속할 수 있는데, 마치 Hyper-V 관리 콘솔과 같은 화면이 나타납니다. 물론 단 하나의 VS2010CTP 라는 가상환경에만 접근할 수 있습니다.

   

아래오 같이 가상 환경이 접속이 되면, 텅 빈 윈도우 바탕 화면이 나타나는데, Start 버튼을 클릭하면 우리가 실습에 필요한 모든 소프트웨어가 설치가 되어 있습니다. 우측의 패널에는 실습 단계를 차례대로 진행할 수 있고, 상단에 HTML과 PDF 문서를 다운로드 받을 수 있습니다.

   

사실 Team Foundation Server 2010의 MSDN Virtual Lab 서비스가 나온지는 좀 되었지만, 아직 많이 알려지지는 않은 듯 합니다. 소프트웨어 패키지를 구매하고 설치하고 MSDN을 통해 기능을 익힐 수 있지만, 이렇게 가상화 서비스를 이용해 부담 없이 하드웨어나 환경적인 제약 없이 실습 공간을 제공해 주는 것을 보면 Before Services 가 짱 이네요.

(BE란 ? 고객들이 제품 구매에 앞서 제품을 직접 써보거나 충분히 경험해 본 다음 구매를 결정할 수 있도록 하는 다양한 체험 프로그램 서비스를 말한다. 기존 서비스 방식인 애프터서비스(AS)는 고객들이 제품을 구매한 후 제품에 대한 차후 서비스를 받을 수 있다. )

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Source Safe 마이그레이션 이전에

많은 분들이 예전에 Visual Source Safe(이하 VSS) 를 사용하시면서, 현재는 이 VSS가 많은 골치거리라고 느끼시는 분들이 많이 계실 겁니다. 사실 소스 제어를 떠나서 VSS는 안정성 면에서 굉장히 불리하죠. 가장 흔하게 겪는 안전성의 문제는 파일 시스템 기반의 소스 제어 데이터베이스가 꼬이는 겁니다. 왜 꼬이는지는 알고 싶지 않지만, 오래 쓰면 쓸수록 꼬입니다.

제가 겪었던 꼬이는 대표적인 문제가 체크인 상태가 다른 사람에겐 체크인 상태가 아니라는 것이죠. 아무리 다른 사람이 최신 버전을 가져와도 그 소스 코드는 예전에 체크인 되었던 소스 코드이고, 불가피하게 강제로 다시 체크인해야 하기도 합니다. 뭐, 여기까지는 정말 가벼운 일상적인 문제이죠? 더 심한 경우는 복구 불능..!

최근 들어서, VSS의 이런 문제 때문에 많이 고생하시는 분들이 다른 소스 제어 제품으로 갈아타려는 준비를 많이 하십니다.

   

왜 VSS에서 이런 문제가 발생하나…?

사실 어쩔 수 없습니다. 지금에야 VSS가 실컷 얻어터질 수 밖에 없지만, 사실 예전에도 뚜렷한 대안이 있었던 것도 아닙니다.

VSS아니면 CVS(Concurrent Versions System) 인데, 이 CVS도 그 기능 자체의 구현이 충실하지 않아 문제점을 얘기하자면 VSS나 크게 별반 다를 것이 없었습니다. 참고로 Wikipedia 의 과거 소스 제어 제품을 보면 다음과 같지요. 즉, 당시에 VSS 보다 더 뛰어난 제품도 찾기 힘들었고, 현대의 이슈인 안정성과 성능, 보안의 요소는 어디를 뒤져봐도 없었습니다. 즉, 당시에는 어떤 제품을 선택하든 똑같은 문제를 겪었을 테니까요.

   

다만, VSS 제품은 VSS 2005 버전까지 오면서 많은 부분에서 보완이 되었지만, 사용자의 요구사항에 매우 소극적으로 대응했던 점에서 아쉬움이 남습니다.

아래는 조만간 나오게 될 백서의 내용 중의 일부이니 참고하세요.

   

 

일반적으로 '형상관리'라는 의미의 소스 제어는 소스 제어(Source Control), 버전 컨트롤(Version Control), 소프트웨어 환경 관리(Software Configuration Management)라고 불립니다. 향후 소스제어는 서버/클라이언트 아키텍처로 변경되면서 개발 조직에서 소스를 공동으로 개발하고 공유할 수 있게 되었습니다.

초기 Microsoft 에서는 소스 제어를 위한 소프트웨어로 Visual SourceSafe(비주얼 소스세이프) 를 내놓게 되었습니다. Visual SourceSafe는 처음 One Tree Software 라고 불리는 회사에서 여러 운영체제를 지원하는 소스 제어 솔루션을 만들었는데, Microsoft 는 이를 1994년에 인수하여 즉시 Visual SourceSafe 3.1 버전을 내놓았습니다. 그 이후로, Visual SourceSafe 4.0, 5.0, 6.0, 2005 버전까지 지속적으로 지원을 하다가, Visual SourceSafe 2005버전을 마지막으로 이 제품의 업데이트는 이루어 지지 않고 있습니다.

Microsoft는 그 이후에 내부적으로 소스 제어 뿐만 아니라 버그 추적/품질 관리/제품 계획에 사용되는 솔루션을 만들었고, 그 이름은 "Product Studio" 라는 제품입니다. 이 제품은 Microsoft 내부적으로 사용하기 위한 제품이었고, 이 제품을 통해 노하우를 발전시켜 비즈니스 프로세스, 개발 등 전반적인 모든 개발 활동을 아우를 수 있는 "Visual Studio Team System, Team Foundation Server" 를 시장에 내놓게 되었습니다.

   

VSS to TFS2010 마이그레이션 전략

일단 아쉽지만 VSS와 같은 제품 군은 TFS(Team Foundation Server)에 100% 마이그레이션이 힘들 수 있습니다. 왜냐하면 VSS는 파일 시스템의 파일 단위 체크인 방식인데, TFS제품은 변경 집합(ChangeSet) 기반의 소스 제어 구조를 가집니다. 변경 집합은 변경이 일어난 묶음의 세트를 얘기하며, 이 변경 집합 덕분에 분기(Branch)/병합(Merge)/이력/관리가 매우 용이합니다. 덕분이 3-ways 방식의 병합이 매우 안정적으로 동작할 수 있고요.

VSS to TFS로 마이그레이션이 100% 보장할 수 없는 예를 들자면, 고객의 데이터베이스 스키마에 "주소"가 없는데, "주소" 컬럼이 생겼다고 주소를 가짜 데이터로 입력할 수 는 없는 노릇입니다. 게임을 예로 들면, 게임 시스템에 새로운 스킬이 생겼다고 종족/레벨/서버를 막론하고 모두가 이 스킬을 습득할 수 없는 것과 마찬가지입니다.

기존의 VSS는 레이블(Labeling) 방식의 이력 관리를 하였기 때문에, 이것을 변경 집합(ChangeSet) 기반으로 바꿀 수는 없습니다. 그래서 100% 마이그레이션이 힘든 한 가지 원인이기도 합니다. 그렇게 때문에 VSS to TFS로 마이그레이션을 결심하였다면, "퀑 대신 닭", "짜장면 대신 짬뽕","아이폰 대신 블랙베리" 라는 심정으로 100%를 기대하시면 오히려 독이 될 수 있답니다.^^

아래는 VSS to TFS 마이그레이션 전략을 메트릭스로 표현해 보았습니다. 물론, 이것 보다 더 많은 고려 사항이 있습니다만, 대략 아래의 정보에 답할 수 있다면 마이그레이션은 가능하다고 말씀 드리고 싶네요.

   

   

Team Foundation Server 및 .NET 플랫폼 기술 문의

언제든지 저희 Visual Studio Korea 공식 팀 블로그에 문의를 주시기 바랍니다. 저희가 모든 것을 가이드해 드릴 수는 없지만, 저희 팀의 다양한 분야의 기술 전문가들이 성의껏 여러분들을 도와드리고 있습니다. 저희 팀은 언제나 새로운 기술에 목말라있고, 먼저 고민하고 뼈저리고 값진 노하우를 경험한 컨설팅/개발/교육 및 강사 출신의 분들과 Microsoft MVP 활동을 하고 계신 많은 분들이 계십니다.

더불어, Microsoft 의 Social Forums 인 http://social.msdn.microsoft.com/Forums/ko-kr/categories/ 에 오시면 많은 전문가들의 생생한 고급 답변을 들을 수 있습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

 

여러분에게 안타까운 소식과 좋은 소식 가지를 전해 드리고자 합니다. 먼저 안타까운 소식을 하나 전해드리도록 하겠습니다.

 

안타까운 소식, Microsoft 내놓은 초기 소스 제어(Source Control) 제품인 VSS(Visual Source Safe) 지원이 중단 되었습니다. 들어가기 앞서, 일반적으로 '형상관리'라는 의미의 소스 제어는 소스 제어(Source Control), 버전 컨트롤(Version Control), 소프트웨어 환경 관리(Software Configuration Management)라고 불립니다. 향후 소스제어는 서버/클라이언트 아키텍처로 변경되면서 개발 조직에서 소스를 공동으로 개발하고 공유할 수 있게 되었습니다.

초기 Microsoft 에서는 소스 제어를 위한 소프트웨어로 Visual SourceSafe(비주얼 소스세이프) 내놓게 되었습니다. Visual SourceSafe 처음 One Tree Software 라고 불리는 회사에서 여러 운영체제를 지원하는 소스 제어 솔루션을 만들었는데, Microsoft 이를 1994년에 인수하여 즉시 Visual SourceSafe 3.1 버전을 내놓았습니다. 이후로, Visual SourceSafe 4.0, 5.0, 6.0, 2005 버전까지 지속적으로 지원을 하다가, Visual SourceSafe 2005버전을 마지막으로 제품의 업데이트는 이루어 지지 않고 있습니다.

 

하지만, Microsoft 이후에 내부적으로 소스 제어 뿐만 아니라 버그 추적/품질 관리/제품 계획에 사용되는 솔루션을 만들었고, 이름은 "Product Studio" 라는 제품입니다. 이 제품은 Microsoft 내부적으로 사용하기 위한 제품이었고, 이 제품을 통해 노하우를 발전시켜 비즈니스 프로세스, 개발 전반적인 모든 개발 활동을 아우를 있는 "Visual Studio Team System, Team Foundation Server" 를 시장에 내놓게 되었습니다.

 

즐거운 소식은, VSS 사용자를 위한 TFS2010 시리즈가 나왔다는 것입니다. 한국 MSDN 페이지에 대문짝만하게 걸려있는 문서가 바로 그것입니다.

 

 

http://msdn.microsoft.com/ko-kr/vstudio

 

 

 

이런 이음매가 없는 것을 연결시키는 하나가 영화에서 "To be continue…" 자막이죠… ^^ 마치 지금과 같은 VSS TFS2010 과의 이음매처럼 말입니다. Microsoft 에서 지원이 중단된 제품은 최대한 빨리 최신 버전으로 옮기는 것이 좋습니다. 유예기간과 지원에도 불구하고 버전을 쓴다는 것은 장애에 대해 이상 Microsoft 지원을 받지 않는다는 것과 마찬가지이고, 어떤 솔루션을 사용하든 이러한 절차는 대부분 통용되기 때문입니다. (물론 장애에 대해 그에 상응하는 비용을 지불하면 지원은 받을 있을 것입니다.)

 

 

그럼 간단히 "VSS사용자를 위한 TFS2010 시리즈" 목차를 살펴볼까요?

 

1. 일단 설치부터 해야 하겠지요?

1.        Visual Studio Team Foundation Server 2010 개요

2.1        Team Foundation Server 소개

2.2        Team Foundation Server 논리적 구조

2.3        Team Foundation Server 물리적 구조

2.        Visual Studio Team Foundation Server 2010 설치

3.1        설치 준비

3.1.1        Visual Studio Team Foundation Server 2010 설치에 필요한 필수 소프트웨어

3.1.2        Visual Studio Team Foundation Server 2010 필요한 최소 하드웨어 구성        

3.2        설치 전 필요 소프트웨어 구성

3.3        인터넷 정보 서비스(IIS 7.X) 설치하기

3.4        .NET Framework 3.5 설치하기

3.5        Visual Studio Team Foundation Server 2010 설치

3.6        Visual Studio Team Foundation Server 2010 Basic(기본) 구성

4.        사용자 계정 관리

4.1        Visual Studio Team Foundation Server 2010 보안

4.2        Visual Studio Team Foundation Server 2010 사용자 이해

4.3        Visual Studio Team Foundation Server 2010 역할

4.4        Visual Studio Team Foundation Server 2010 사용자 권한

4.5        Visual Studio Team Foundation Server 2010 사용자 추가하기        

4.5.1        Visual Studio Team Foundation Server 2010 사용자

4.5.2        팀 프로젝트 모음 사용자 추가

4.6        Visual Studio Team Foundation Server 2010 사용자 삭제하기

4.7        Windows 사용자 그룹 활용하기

4.7.1        Windows의 사용자를 그룹으로 연결하기

4.7.2        Visual Studio Team Foundation Server 2010 그룹 이용하기

 

 

2. 그럼 VSS TFS2010으로 마이그레이션도 해야하는데… 다음 목차를 보시죠.

1.        Visual Source Safe 개요        

1.1        Visual Source Safe 소개        

1.2        소스관리와 소스코드 형상관리

1.3        사용자 계정 및 보안

1.4        Visual Source Safe 사용과 개발환경 변화

2.        Visual Studio Team Foundation Server 2010 개요

2.1        Team Foundation Server 소개

3.        Visual Source Safe 마이그레이션 작업하기

3.1        Visual Source Safe 에서 Visual Studio Team Foundation Server 2010 이전

3.2        Visual Source Safe 사용자 정보 이전하기

3.3        자동화 마이그레이션 VSSConverter 사용

3.4        Visual Source Safe 정보 자동 이전하기

3.4        Visual Source Safe 소스 코드만 이전하기

3.4        Visual Source Safe 마이그레이션 주의사항과 문제 해결

 

 

3. 이제 적극적으로 활용해 봅시다.

1.        사용자 계정 관리

1.1        Visual Studio Team Foundation Server 2010 사용자 계정관리

1.2        Visual Studio Team Foundation Server 2010 사용자 이해

1.3        Visual Studio Team Foundation Server 2010 역할

1.4        Visual Studio Team Foundation Server 2010 사용자 권한

1.5        Visual Studio Team Foundation Server 2010 사용자 추가하기

1.5.1        Visual Studio Team Foundation Server 2010 사용자

1.5.2        팀 프로젝트 모음 사용자 추가

1.6        Visual Studio Team Foundation Server 2010 사용자 삭제하기

1.7        Windows 사용자 그룹 활용하기

1.7.1        Windows의 사용자를 그룹으로 연결하기

3.7.2        Visual Studio Team Foundation Server 2010 그룹 이용하기

2.        팀 프로젝트 구성

2.1        팀 프로젝트 소개

2.2        Visual Studio Team Foundation Server 2010 “팀 프로젝트 모음” 만들기

2.3        Visual Studio Team Foundation Server 2010 팀 프로젝트 만들기

2.4        Visual Studio Team Foundation Server 2010 팀 프로젝트 삭제하기

3.        작업 항목

3.1.        작업 항목 소개

3.1.1        작업 항목 이용하기

3.2.        Visual Studio Team Explorer 내 작업 항목

3.3.        Visual Studio Team Explorer 팀 작업 항목

3.4.        작업 항목 만들기

4.        소스 코드 관리

4.1.        소스 코드 관리소개

4.2.        소스 제어 탐색기 사용하기

4.3.        소스 코드 체크인 / 체크아웃

4.3.1        Visual Studio 에서 소스 코드 체크아웃

4.3.2        Visual Studio 에서 소스 코드 체크 인

4.4.        소스 코드 버전관리

4.5.        소스 코드 최신 버전 가져오기

4.6.        소스 코드 체크인과 작업 항목 연결

4.7.        소스 코드 체크인 정책

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Team Foundation 2010 으로 업그레이드? 마이그레이션? 동기화?

많은 원성을 샀던 Team Foundation 2005 버전과 안정화된 Team Foundation 2008, 그리고 놀라우리만큼 강력해진 Team Foundation 2010… 약 5년 동안 Team Foundation Server 제품은 상당히 안정화되었고 테스트 분야에 상당히 공을 많이 들인 제품이 Team Foundation 2010 버전입니다. 더불어 함께 어울려야 하는 Microsoft SQL Server 2008 R2, SharePoint 2010, 그리고 함께 어울리면 간지나는 SCVMM 2008 R2(System Center Virtual Machine Manager), SCCM 2007 R3(System Center Configuration Manager) 등 모두 새로운 마이너버전으로 업그레이드 되었습니다.

특히 최근에 새롭게 Team Foundation 2010 을 도입하는 곳과, 이전에 쓰던 하위 버전에 대해서도 상위 버전으로 옮기기 위해 많은 문의를 주고 계십니다.

Team Foundation 2010 을 도입하거나 상위 버전으로 갈아타기 위해 업그레이드를 선택할지, 마이그레이션을 선택할지 현명한 선택을 위해 가이드해 드립니다.

   

제한 사항

본 포스팅에서 다루는 범위는 소스 제어에 국한된 범위입니다. SharePoint, MSSQL Reporting Services는 추가적인 업그레이드/마이그레이션 작업이 필요할 수 있습니다.

   

Team Foundation 2010 으로 업그레이드

가장 쉬운 방법이고, 데이터손실을 크게 걱정하지 않는 것이 업그레이드 입니다. 업그레이드는 TFS와 연동되는 SQL 서버의 데이터베이스 스키마가 일부 변경이 되면서, 이 범위의 데이터를 TFS2010 용 SQL 데이터베이스 스키마로 자동으로 변환하여 줍니다.

기존의 데이터베이스의 스키마를 변경하는 작업이므로 이전에 저장되었던 변경 집합(Changeset), 분기 및 병합(Branch and Merge) 의 정보를 그대로 안정하게 상위 버전으로 업그레이드할 수 있습니다.

이전에 사용하던 TFS AT(Application Tier) 는 없어도 무관하며, SQL Server의 데이터베이스만 있으면 업그레이드를 진행할 수 있습니다. 이 방법은 일전에 필자의 블로그에 포스팅으로 자세하게 가이드 하였으니 아래의 필자 포스팅을 참고하시기 바랍니다.

[HowTo] TFS 2005/2008 데이터베이스를 TFS 2010 으로 마이그레이션
http://blog.powerumc.kr/276

단, 업그레이드는 단어에서 의미하듯이 1회의 업그레이드 작업으로 상위 버전으로 업그레이드가 완료됩니다. 하위 버전에서 발생하는 추가적인 데이터의 업그레이드는 업그레이드 작업을 처음부터 다시 시작해야 한다는 의미이기도 합니다. 그렇기 때문에 전사적으로 TFS를 적용한 조직에서의 업그레이드는 일정시간의 TFS가 중지가 필요할 수 있습니다.

   

Team Foundation 2010 으로 마이그레이션

일단 골치 아픈 부분이 바로 마이그레이션 입니다. TFS 이전 버전의 AT(Application Tier)와 DT(Database Tier)가 모두 고스란히 존재해야 합니다. 양측의 TFS AT의 TFS API를 호출하여 서로간의 데이터를 마이그레이션하기 때문에 여차하면 일부 데이터 손실이 있을 수 도 있다고 합니다. (너무 겁먹지는 마시고요^^)

다만 이 마이그레이션은 One-Way 방식이기 때문에, TFS의 원본 서버(Source Server)와 대상 서버(Target Server)로 구분하여 진행하면 됩니다.

 글로벌 팀인 Visual Studio Ranger 에서 이 마이그레이션 작업을 쉽게 할 수 있는 도구를 CodePlex 사이트에 공개를 하였습니다. (http://tfsintegration.codeplex.com/) 이 TFS Integration 사이트에서 Download 로 이동하신 후에 설치 패키지를 설치하시면, 마이그레이션을 도와주는 도구를 설치하셔서 사용하시면 됩니다.

 마이그레이션은 TFS로 마이그레이션 이외의 File System, IBM Rational, SVN 제품간의 마이그레이션도 지원합니다.

   

   

   

Team Foundation 버전간의 동기화

Visual Studio Ranger 팀이 동기화까지 지원해 줄지는 몰랐습니다만, 참으로 기쁘기도 하네요. 동기화는 양측 TFS 서버간의 변경 이력이 생기면 이 데이터를 주기적으로(변경 즉시 동기화가 아님) 대상 TFS 서버와 동기화를 시도합니다.

 기존의 TFS<->TFS 간의 동기화도 지원하지만, File System, IBM Rational 제품, 그리고 SVN 간의 동기화도 지원합니다. 일전에 TFS<->TFS, TFS<->File System 간의 동기화는 잘 동작하는 것으로 확인을 하였습니다. (소스 제어 및 작업 항목간의 동기화)

   

참고

아래의 붉은 마킹을 한 다운로드 문서는 마이그레이션/동기화 작업을 하기 전에 반드시 필독하시기 바랍니다.

 

 

 

   

   

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

문제 발생

얼마 전, 집에서 몇 번의 누전 사고로 인해 집 서버의 컴퓨터가 여러 번 꺼지는 충격을 받았습니다. 그 이후로 잘 동작하는 줄 알았지만, Team Foundation Server 의 웨어하우스가 제대로 동작하지 않았습니다.

Team Foundation Administration Console 을 통해 확인해 본 결과 Warehouse Database 의 구성이 올바르지 않아 Rebuild 가 되지 않는 현상을 발견했습니다.

   

SQL Server 의 DT(Database Tier) 에서 확인해 본 결과, 아래와 같이 웨어하우스 파일에 오류가 발생하였습니다.

   

문제 해결

여러 번 집 서버 컴퓨터가 꺼지는 현상이 발생하여 이 파일을 복구 하기에는 좀 힘들어 보였습니다. 그래서 Tfs_Analysis 웨어하우스 데이터베이스를 새로 생성하는 방법이 어떨까 하고 검색을 해 보았습니다.

Failed to Process Analysis Database 'Tfs_Analysis'
http://social.msdn.microsoft.com/Forums/en/tfsgeneral/thread/9a2e4292-a719-43df-8757-dd90d5f60ab0

위 내용에서 확인할 수 있듯이, 기존 웨어하우스 데이터베이스를 삭제하면 자동으로 다시 만들어준다고 합니다. 하지만 위와 같은 오류가 나면 삭제도 안됩니다. 다른 데이터베이스 이름을 사용하기도 싫군요^^; 선뜻 데이터베이스를 삭제하기도 그렇고, 백업 오류도 발생하여 Hyper-V 의 스냅샷을 찍어두고 데이터베이스를 삭제하고 다시 만들어 보았습니다.

1. SQL Analysis 데이터베이스를 정지합니다.

   

2. 아래의 폴더로 이동한 후, Tfs_Analysis.0.db 폴더의 이름을 변경합니다.
%ProgramFiles%\Microsoft SQL Server\MSAS10.MSSQL2008\OLAP\Data

   

3. 다시 MSSQL Analysis 서비스를 시작합니다.

   

4. Tfs_Analysis 데이터베이스에서 마우스 오른쪽 버튼을 클릭한 후, 삭제를 선택합니다.

   

5. 개체 삭제에서 확인을 클릭합니다.

   

6. Team Foundation Administration Console 의 Application Tier-Reporting 메뉴로 이동한 후, Edit 를 클릭합니다.

   

7. 각 탭 메뉴에서 Test Connection 을 클릭하면, '기존의 데이터베이스가 없는 경우 새로 생성된다는' 메시지와 함께 테스트가 성공합니다.

   

8. 모든 구성을 완료하였으면, OK 버튼을 클릭합니다. 그럼, 새로운 Analysis Database 가 생성이 되는 작업을 진행합니다. 
   

9. MSSQL Analysis 서버에 Tfs_Analysis 데이터베이스가 새로 생성된 것을 확인할 수 있습니다.

   

10. Team Foundation Administration Console 의 Reporting 메뉴에서 Start Job 과 Start Rebuild 메뉴를 차례로 클릭해 줍니다.

   

11. 모든 웨어하우스와 관련된 서비스가 정상적으로 동작하는 것을 확인하고 작업을 완료합니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

문제 발생

SCVMM 에서 Install Virtual Guest Services(가상 게스트 서비스 설치) 작업 시 2941 오류가 나는 경우가 발생 합니다..

해결 방법 1

이 문제는 HTTP 통신 (80, 443 포트) 가 방화벽으로 제한된 경우에 발생합니다.
본 문제로 아래의 URL 을 통해 문제가 해결되지 않는 경우가 발생합니다.
http://srvcore.wordpress.com/2010/04/11/error-2941-when-moving-vms-accross-hyper-v-servers/

해결 방법 2

이 문제를 해결하기 위해 여러 가지 방법을 수행해 보았으나, 아래의 작업으로 해결되지 않았습니다.

  • 가상 네트워크 삭제 및 재설정
  • 네트워크 위치(Network Location) 삭제 및 재설정

아무리 생각해 봐도, 방화벽, WS-Management 서비스 및 네트워크 문제가 발생할 소지가 없음에도, 제대로 기능이 실행되지 않았습니다.

이 경우 Active Directory 기반의 호스트를 제거한 후, 다시 호스트를 추가하고, 다시 Install Virtual Guest Services(가상 게스트 서비스 설치) 작업을 시작합니다.

아래와 같이 올바르게 작업이 진행된다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

SharePoint 2010 Beta 버전은 아쉽게도 SharePoint 2010 RTM 버전으로 마이그레이션을 할 수 없습니다. Microsoft 에서도 이 버전의 Beta 를 RTM 으로 공식적으로 지원하지 않는다고 합니다.

저처럼 SharePoint 2010 Beta 버전이 Go-Live 로 알고 있었던 분이라면 좀 난감하겠네요, Beta 버전을 삭제하는 방법이 아마도 가장 빠른 방법일 겁니다. 하지만 인터넷을 찾아보시면 강제로 Beta to RTM 으로 마이그레이션 하는 방법이 있습니다. http://blogs.breezetraining.com.au/mickb/2010/04/23/UpgradingFromSharePoint2010Beta2ToRTM.aspx

하지만 필자는 위의 방법을 사용하지 않고 기존 SharePoint 2010 Beta 버전을 말끔하게 삭제하는 방법으로 RTM 버전을 설치하고자 합니다.

1. 기존의 SharePoint 2010 RC 버전을 프로그램 추가/제거에서 삭제합니다.

   

2. 레지스트리 편집기(regedit.exe) 를 실행하여, HKLM\Software\Microsoft\Shared Tools\Web Server Extensions 키를 삭제합니다.

   

3. C:\Program Files\Microsoft Office Servers 폴더를 삭제합니다.

   

4. C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions 폴더를 삭제합니다.

   

5. SQL Server 의 다음의 데이터베이스를 삭제합니다.

   

6. 모든 과정을 정상적으로 삭제 되었으면, SharePoint 2010 RTM 버전을 설치합니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

발생 문제

Team Foundation Server 2010 을 재설치 한 후에, 로컬에서 소스 코드를 바인딩 하기 위해 작업 영역(Workspace) 를 매핑하고자 합니다.

하지만 아래와 같은 메시지로 작업 영역과 로컬 폴더간의 매핑이 이루어 지지 않습니다.

   

   

발생 원인

이 문제는 Team Foundation Server 의 정보의 일부를 로컬에 Cached 하고 있습니다. 로컬 컴퓨터에 Cached 가 되는 이유는 서버가 접속할 수 없는 경우 또는 오프라인일 경우에도 매핑 정보를 유지하기 위함입니다.    

매핑 파일의 정보는 아래의 경로에서 찾을 수 있습니다.
C:\Users\사용자 폴더\AppData\Local\Microsoft\Team Foundation\3.0\Cache

   

해결 방법 

이 문제를 해결 하기 위해 로컬에 Cached 된 정보를 삭제합니다. 아래의 경로로 이동합니다.
C:\Users\umc\AppData\Local\Microsoft\Team Foundation\3.0\Cache

   

이동한 폴더의 VersionControl.config 파일을 아래와 같이 삭제합니다.

또는

VersionControl.config 파일의 repositoryGuid 등을 현재의 Guid 로 변경해 주시거나, 매핑하고자 하는 TFS 서버의 정보만 삭제한다면 기존의 매핑 정보를 그대로 사용할 수 있습니다.

또는 아래와 같이 문제가 발생되는 선택 영역의 부분의 XML Element 만 삭제하시면 됩니다.

위와 같은 방법으로 해결 된 경우, Visual Studio 를 재시작하지 않고 바로 적용이 가능합니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

본 원고는 월간 마이크로소프트 2010년 3월호에 기고한 원문입니다.

 

Visual Studio 2010 활용한 ALM(Application Lifecycle Management)

 

 

 

 

 

  1. ALM 이란 무엇인가?
  2. 효율적인 프로젝트를 위한 애자일한 프로세스 프로세스 강요
  3. 명확한 작업의 관리와 지속적인 통합 추적성
  4. 과거와 현재를 알면 미래가 보인다 가시성
  5. ALM 가상화의 만남 Test and Lab Management

 

엄준일 : 닷넷엑스퍼트(.NETXPERT) 선임 컨설턴트로 재직 중이며, Microsoft Team System MVP 활동하고 있다. 많은 대기업 프로젝트와 컨설팅 경험을 바탕으로 좋은 소프트웨어를 만들기 위한 기반을 만들며, .NET 우리의 미래 동반자임을 확신하고 꾸준히 새로운 기술을 전파하고 있다. (http://blog.powerumc.kr)

 

 

 

 

작성자: 엄준일 선임/ Microsoft MVP

감수자:안재우 수석/Microsoft MVP


ALM(Application Lifecycle Management) 의 개요

 

최근 몇 해 사이에 ALM(Application Lifecycle Management)라는 용어를 자주 듣게 되었고, ALM에 대해 논의를 하게 되고, ALM 을 해야 한다라는 말을 자주 듣게 됩니다. 최근 들어, 실제로 많은 기업이나 조직에서 ALM 도입을 검토하고 있고, 왜 ALM에 대해 열광하는지에 대해서도 궁금한 부분이 아닐 수 없습니다. 그렇다면 우리는 이제 ALM이 무엇이고, 왜 등장하였으며, ALM에 대한 오해와 진실에 대해서 충분히 이야기를 나눌 가치가 있다고 생각합니다.

   

ALM 이란?

ALM(Application Lifecycle Management, 이하 ALM)을 한글로 번역하면 "응용프로그램 수명주기 관리" 라고 합니다. 현대 사회는 문화, 언어, 가치관, 기술 등이 빠르게 발전하고 있습니다. 문명의 발전이 없다면 죽은 문명이고, 마찬가지로 소프트웨어가 변화하고 발전하지 않으면 죽은 소프트웨어나 마찬가지 입니다. ALM 을 쉽게 말하면 바로 이런 소프트웨어가 생산되고 릴리즈, 유지, 관리하기 위한 기술을 총칭합니다.

   

ALM 등장배경

예전부터 소프트웨어를 개발하는 방법이 꾸준히 연구되었으며, 그 중 가장 대표적인 방식이 SDLC(Software Development Lifecycle) 입니다.

   

SDLC 의 대표적인 개발 방법론 중에 폭포수 모델(Waterfall Model)이 있는데, 로이스(Royce) 라는 사람에 의해 정의된 폭포수 모델은 요구사항, 디자인, 구현, 통합, 테스트, 릴리즈, 유지보수라는 단계로 구분이 되며, 각 단계는 순차적으로 진행되게 됩니다. 요구 사항이 없으면, 디자인을 할 수 없고, 디자인을 하지 않으면 구현을 할 수 없는 형태의 개발 방법으로 현 단계에 문제나 오류가 발생하게 반드시 위험 요소를 제거한 후에 다음 단계로 이동하게 됩니다. 이러한 개발 방법은 각 단계별로 상하 연관성이 없고 명확하게 구분되어 있으며, 최근에도 이러한 개발 방법으로 많은 프로젝트가 진행됩니다.

   

그림 1 일반적인 폭포수(Waterfall) 모델

   

하지만 최근 이러한 Top-Down 방식의 수직적인 개발 방식에 많은 비판을 받고 있습니다. 초기 계획이 완벽하지 않으면 전체 일정 또는 계획이 완벽하지 않다는 의미이기 때문입니다. 고객도 자신의 정확한 요구 사항을 알지 못합니다. 이런 과정에서 프로토타입(Prototype) 을 고객에게 시연하고 고객의 정확한 요구 사항을 도출해야 합니다. 하지만 고객의 요구 사항은 언제나 변할 수 있습니다. 즉, 완벽한 요구 사항을 정의한 후에, 다음 단계로 넘어간 이후에도 고객의 요구 사항은 변할 수 있고, 그렇다면 어찌되었건 초기 계획이 잘못될 수 밖에 없습니다. 이미 구현과 테스트로 검증이 끝난 기능에도 기능적인 기능의 추가 및 변경, 디자인 요소의 변경 등을 이유로 고객의 요구 사항은 변할 수 있고, 그렇다면 다시 원점으로 돌아가 이전의 계획은 수정이 되어야 하며, 이미 이러한 경우는 최초 계획이 잘못되었다고 생각할 수 밖에 없습니다.

   

그 이외에도 초기 계획을 얼마나 정확하게 수립할 것인지는 굉장히 민감한 문제이기도 합니다. 초기 계획 단계를 지나치게 명확하게 강조할 경우 그만큼의 비용이나 시간이 추가되는데, 전체 프로젝트의 일정과 대비하여 그것이 지나칠 경우 실제로 구현이나 테스트를 해야 할 시간은 촉박해 질 수 밖에 없습니다. 프로젝트의 기간은 6개월인데 정확한 프로젝트의 계획 수립을 위해 3개월의 시간을 소비한다면 분명 구현이나 테스트를 여유 있게 할 수 없을 것입니다. 고객을 이해시킬 수 있는 신뢰된 계획안을 보여줄 수 있겠지만, 오히려 불필요한 문서의 양산할 수 있을 가능성이 충분합니다. 이런 경우 프로젝트의 단계별로 거꾸로 기간을 산정하는 역산법 등을 이용하기도 합니다.

   

폭포수 모델(Waterfall Model)은 여러 가지의 문제 제기를 통해 다양하게 변형된 모델로 발전해 왔습니다. 여기에서는 설명하지 않을 예정이지만, 소프트웨어 개발 방법론은 여러 가지 변형된 형태로 발전해왔음을 알 수 있습니다.

   

그렇다면, ALM 의 등장 배경을 얘기 하기 위해 왜 이렇게 긴 SDLC(Software Development Lifecycle) 이야기를 했을까요? 위의 이야기에서 볼 때 SDLC 는 바로 소프트웨어를 개발하기 위한 방법론이라는 것입니다. SDLC 는 소프트웨어 공학에서 정의하는 용어로써, 소프트웨어를 효과적으로 개발하기 위한 다양한 방법을 이야기 한다는 것입니다. 즉, SDLC 은 소프트웨어를 개발하는 기술적인 관점을 이야기 합니다.

   

ALM 은 바로 소프트웨어를 개발하기 위한 기술적인 관점과 더불어 비즈니스적인 가치를 융합하도록 합니다. 소프트웨어의 개발은 기술적이거나 방법적인 문제와 더불어, 실제로 조직 간의 이해 관계, 그리고 비즈니즈 관계의 영역까지 확대됩니다. 소프트웨어를 개발하기 위해 프로젝트의 비전이나 목표 그리고 이것을 이행하기 위한 여러 방법론적인 단계는 통합되고 유기적인 관계입니다. 단지 기술적인 관점에서 바라보는 것이 아닌, 비즈니스 관점에서의 이해 관계나 조직의 측면도 ALM 에서 포괄하고 있습니다.

   

그렇다면 ALM 은 전혀 새로운 기술이 아님을 알 수 있습니다. ALM 은 이미 오래 전부터 조직적으로 알게 모르게 수행하였고, ALM 을 수행하기 위해서는 어떠한 프로세스적인 요소를 강제하고 있었습니다. 마치 군대에서 기상->아침 구보->보고(점호)->아침 식사-> … -> 저녁 식사->청소->보고(점호)->취침 과 같이 매일 반복되는 프로세스와도 유사할 수 있습니다. 그리고 이런 프로세스가 잘 진행되는지의 여부를 알기 위해 상사에게 "보고" 하는데 소프트웨어 개발 측면에서는 각종 산출물이나 보고서가 필요합니다. 그리고 병사들이 야간 근무를 교대하고 활동을 추적하기 위해 교대 시간마다 기록을 하게 됩니다.


 

프로세스 강요(Process Enactment)

일관된 프로세스를 강요해야 함

가시화(Visibility)

모든 전반적인 활동에 대한 진행 상황을 볼 수 있어야 함

추적성(Traceability)

모든 활동이나 산출물 등 연관 관계를 추적할 수 있어야 함

1 ALM 3대 구성 요소

   

   

하지만, 이러한 일련의 통일되고 융합된 활동을 한다는 것은 쉽지 않습니다. 문서화나 정형화된 프로세스조차 없는 팀이나 조직이 있는 경우도 있고, 암묵적인 프로세스가 존재하지만 어쨌든 이런 프로세스를 강요한다는 것은 쉽지 않습니다. 또한 팀의 매니저 또는 PM(Project Manager) 나 그 위의 상부 조직은 일이 잘 진행되는지 궁금해 하기 때문에, 이러한 이유로 개발자는 팀장 또는 상사에게 일일 보고서나 주간 보고서를 작성하고, 이것을 다시 취합하여 최종 보고서로 작성합니다. 프로젝트의 단계가 진행될수록 보고서의 양은 늘어나고, 그 종류도 다양해질 것입니다. 어찌 보면, 프로젝트를 위한 프로젝트가 아닌, 보고서를 위한 프로젝트가 되어버리는 셈입니다.

   

이젠 활동이나 작업을 추적하는 것도 어려울 것입니다. 수십 수백의 여러 가지 종류의 보고서는 이제 버전 관리 하기 조차 버거워질 수 있습니다. 또한 각 역할 담당자들은 결과물, 인도적 차원, 유지보수 차원에서 다양한 산출물을 양산해 냅니다. 필요에 의해 과거의 산출물을 찾는 것도 어렵고, 산출물 자체를 유지 보수 하는 것도 어려워 집니다. 그 외에도 변화하는 모든 활동들은 어떻게 변화했는지조차 알 길이 없습니다. 다양한 산출물과 활동, 그리고 변화에 대한 추적이 불가능 하다면 이미 양산된 문서를 관리하는 것은 결국 의미 없는 활동일 수 있습니다. 실제로 컨설팅 의뢰로 기업을 방문하여 문제를 진단하기 위해 몇 가지 산출물을 요청하여 받은 적이 있으나, 아키텍처가 실제 시스템과 너무 달랐고, 언제, 어떻게 달라졌는지 아는 사람은 아무도 없었던 적도 다반사이기도 합니다.

   

ALM 의 3대 구성 요소를 조직 전반적으로 융합하기 위해서는 ALM 솔루션이 필요합니다. 관리가 어렵고 정확성을 요구하는 ALM 을 좀 더 쉽게 실현할 수 있는 도구가 필요하다는 것입니다. 초기의 ALM 은 마케팅적인 용어로 사용되면서 초기 ALM 솔루션도 매우 난해했습니다. 단순히 이슈 추적 기능과 소스 제어 기능을 합하여 ALM 이라고 하였으며, 어떤 ALM 솔루션은 테스팅 도구만을 통합하여 ALM 솔루션이라고 하기도 하였습니다.

   

그림 2 ALM 의 전체적인 컨셉

   

최근에 ALM 이 정착하는 단계에 들어서면서, 현재의 ALM 과 미래의 ALM 을 분류하기도 합니다. 그리고 아직 이러한 분류 단계는 미성숙한 단계이므로 여러 방면으로 각기 해석을 하고 있습니다. 내용을 정리해 보면 아래와 같이 요약할 수 있습니다.

   

ALM 0.5 (미성숙 단계)

단순히 여러 가지 소프트웨어 개발 도구를 통합한 제품

ALM 1.0

개발 프로세스의 일관성과 소프트웨어 개발 도구를 통합하고, ALM 실현이 가능한 제품

ALM 2.0

다양한 플러그인의 조합 가능하고 크로스 플랫폼 간의 표준적인 방안을 제시.
조직 내부 뿐만 아니라 시장에서의 각종 요구 사항 또는 변화에 대응

표 2 ALM 의 단계별 정의

   

위의 내용으로 볼 때, 앞으로 알아볼 Visual Studio 2010 과 Team Foundation Server 2010 은 이미 ALM 2.0 에 매우 근접해 있습니다. 기본적인 ALM 1.0 요소를 충분히 충족하고 있으며, 각 제품은 확장성이 뛰어나고 다양한 클라이언트를 지원하기 위한 크로스 플랫폼을 실현하였습니다.

   

ALM 의 오해와 진실

ALM 은 아직까지도 많은 오해와 진실 속에 자주 언급되는 용어입니다. 사실 ALM 을 알고 보면 SDLC(Software Development Lifecycle) 처럼 정형화된 어떤 유형의, 또는 무형의 지식으로 갑자기 나타난 기술이 아닙니다. 그리고 무언가를 해결하기 위한 완벽한 솔루션도 아닙니다. 아직도 마치 ALM 에 대해 뜬 구름 잡는 듯한 느낌이 든다면 아래의 몇 가지 질문 답변 형식으로 좀 더 ALM 에 대해 오해와 진실을 이야기 해보도록 하겠습니다.

   

Q: 그럼 도대체 ALM 은 무엇인가요?

A: 마치 Web 1.0 과 Web 2.0 을 비교하는 것과 같습니다. 기존 Web 1.0 은 기업이나 서비스 제공자에 의해 제공되고 그 주체가 바로 기업이나 서비스 제공자였습니다. 하지만 Web 2.0 의 컨셉은 개방, 협력, 참여, 공유라는 요소를 중심으로 차츰 주체가 사용자에게로 이동하는 트랜드화된 용어이기도 합니다. Web 2.0 의 대표적인 것이 바로 UCC 나 위키피디아(Wikipedia) 와 같은 것들이 있습니다.

   

ALM 도 이런 트랜드에 크게 벗어나지 않는 용어입니다 ALM 은 궁극적으로 3대 구성 요소를 쉽게 실현할 수 있도록 하였지만, 이것을 실현하기 위해 설계, 개발, 테스트, 유지 보수 등 개발 조직, 운영 조직, 비즈니스 조직 등 여러 조직간에 의사 소통이나 각 단계별로 독립적인 활동을 유기적으로 통합하고 신뢰할 수 있는 데이터를 제공할 수 있도록 ALM 솔루션은 여러 가지 도구와 연동하거나 통합하고 자동화하였습니다.

   

최종 소프트웨어를 사용할 고객은 품질 좋은 소프트웨어를 사용하길 기대합니다. 요구 사항, 아키텍처, 개발, 테스트, 릴리즈, 유지 및 관리, 추적 등 모든 과정을 ALM 솔루션 안에서 이루어 집니다. 이후에 설명한 Visual Studio 2010 과 Team Foundation Server 2010 을 이용하여 개발 프로세스가 어떻게 개선되고 편리해지며, 어떻게 ALM 을 실현하는지에 대해 천천히 짚고 넘어갈 예정입니다.

   

Q: 그럼 ALM 을 실현하려면 ALM 솔루션이 필요한가요?
A: 아닙니다. ALM 을 실현하기 위해서 반드시 ALM 솔루션이 필요하지 않습니다. 위에서 군대를 예로 든 ALM 의 3대 구성 요소를 설명한 바 있습니다.

   

실제로 여러 프로젝트를 경험하면서 ALM 과 유사한 경험을 많이 해 보았을 것입니다. UML 도구를 사용하고 엑셀로 요구 사항이나 개발 진행 관리, 그리고 엑셀의 함수나 스크립트를 이용하여 보고서를 만들고, 테스트와 테스트 문서 및 코드 리뷰 과정을 수동적으로 한 바 있습니다. 사실 관리적인 부분만 본다면 엑셀만큼 뛰어난 도구도 없을 것입니다.

   

하지만 실제로 수동적인 ALM 실현은 많은 어려움이 따릅니다. 가장 먼저 문서를 매번 업데이트해야 하는 시간적인 문제와 문서의 버저닝(Versioning), 변화에 따른 계획의 수정 및 문서 수정, 테스트를 위한 테스트 케이스 관리 및 테스트 결과 문서화, 그리고 수동적인 코드 리뷰는 사실상 있으나 마나 한 단계이기도 합니다. 특히 반복적인 짧은 릴리즈는 밤을 새게 하는 주요 원인 중의 하나이기도 합니다. 릴리즈 계획도 문제였지만, 버그의 발생은 곧바로 버그의 상황을 문서로 만들어져야 하는 산출물이 되기도 하기 때문입니다.

   

분명 ALM 솔루션은 여러 가지 어려웠던 요소들을 통합하고 자동화하였습니다. 결과적으로 ALM 은 도구가 없이도 가능하지만, 실현하기 위해서 훨씬 많은 노력이 필요하다는 것입니다.

   

Q: 우리 팀은 형상 관리(소스 제어) 만으로도 프로젝트가 잘 됩니다. 과연 ALM 솔루션이 필요한가요?

A: 맞습니다. 현재 자신의 팀이나 조직에서 정형화된 프로세스나 암묵적인 프로세스가 존재하고, 개별적인 문서 관리와 소스 제어만으로 ALM 을 실현할 수 있습니다. 그렇다면 현재 자신의 조직이나 팀은 ALM 레벨은 ALM 0.5 세대에 있다고 보시면 됩니다.

   

소프트웨어의 품질을 높이기 위해서는 많은 노력이 필요합니다. 소스 코드나 문서의 버전 관리, 테스트, 보고서, 빌드, 이슈나 작업의 추적은 한 두 명의 개인이 수행하기는 매우 힘듭니다. 그렇기 때문에 보다 도구를 통합하고 자동화된 솔루션을 통해 ALM 을 수행한다면 훨씬 많은 이점이 있습니다.

   

Q: 그럼 ALM 을 원활하게 수행하기 위해서는 통합된 ALM 솔루션이 필요한가요?

A: 그렇지 않습니다. 현재 소프트웨어를 개발에 필요한 많은 도구들이 오픈 소스 또는 무료로 제공이 되고 있습니다.

   

아래는 오픈 소스 중에 .NET 환경에서 사용할 수 있는 도구들을 정리한 표입니다.

  

Feature

Visual Studio

Team Foundation Server

Open Source

요구 사항 및 변화 관리

요구 사항 관리

이슈 관리

제품 관리

TFS Work Item Tracking

Trac

Trac Explorer

Redmine

설계

모델링

디자인

Visual Studio UML

Objecteering

StarUML

UmlDesigner

구현

개발

Visual Studio

SharpDevelop

MonoDevelop

소스 관리

TFS Source Control

SVN

TortoiseCVS

테스트

단위 테스트

Visual Studio

NUnit

NUnit Addin for Visual Studio

Test Driven.NET

성능 테스트

Visual Studio

FWPTT load testing web applications

NTime

테스트 관리

Visual Studio

Test and Lab Management

?

UI 테스트

Visual Studio

.NET Framework UI Automation Library

Avignon (HTML, Winform Test based java)

지속적인 통합

빌드 자동화

TFS Team Build

NAnt

통합

TFS Source Control

TFS Team Build

CruiseControl.NET

코드 리뷰

코드 인스펙션

Visual Studio

FxCop

StyleCop

코드 메트릭스

Visual Studio

Reflector Addin

코드 커버러지

Visual Studio

NCover

팀 코드 리뷰

Visual Studio

Review Board

SmartBear

프로세스

프로세스 강요

TFS Process Template

?

보고서

SQL Server Reporting Service

?

역할 구분/보안

TFS

?

팀 포털/정보 공유

Sharepoint

FlexWiki

ScrewTurn Wiki

다른 도구와 통합

Microsoft Office

Sharepoint 등

?

확장성

TFS Object Model

Visual Studio Extensibility

?

표 3 Team Foundation Server 와 오픈 소스 기반의 도구를 통한 ALM 도구 비교

   

하지만 오픈 소스를 사용하는 것은 저렴하게 ALM 환경을 갖출 수 있지만, 이음매 없는 매끈한 끈과도 같습니다. 도구들 간에 서로 연관성이 없거나 업그레이드가 되지 않는 것들도 상당히 존재하기 때문입니다. 통합되지 않은 각 도구들은 누가 관리를 할 것이며, 연관성이 없는 각 도구들 간의 프로세스를 어떻게 강요할 것인가도 고민해 보아야 할 부분입니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 머샤머샤 2010.04.13 17:40 Address Modify/Delete Reply

    ALM 0.5, 1.0, 2.0 마치 CMMI Level 1,2,3... 같은 느낌으로 다가옵니다. :)

    0.5 단계라도 효율적으로 잘 사용 하는 팀도 많을것 같습니다만, (중요한건) 모든 개발팀원들이 ALM에 깊은 관심을 가지고 있는 것은 아니고, 팀이 Long-Run하면서 계속 느낌을 유지하는 것도 쉬운일은 아니기 때문에, TFS처럼 잘 짜여진 시스템으로 잘 세팅해 두면 정말 좋겠지요.

    물론, TFS를 유지하기 위한 팀의 노력은 계속되어야 하겠지만 말입니다.

    • 땡초 POWERUMC 2010.04.13 21:20 신고 Address Modify/Delete

      좋은 의견입니다.
      저 또한 머샤님과 크게 생각이 다르지 않습니다.
      다만, ALM 0.5 세대는 단순히 통합을 위한 의지이지,
      어떠한 가치있는 활동을 위해 ALM 1.0 보다 힘들거라는 생각입니다.
      말씀대로 어떤 것을 선택하셔도 유지 관리하기 위한 노력은 필요합니다.

Team Foundation Server 2010 은 많은 부분 획기적인 변화를 가져왔습니다. 기능적인 부분은 더할 나위 없거니와 관리적인 부분은 이전 버전을 운용해 보신 분이라면 과히 편해졌다고 할 수 있습니다. AT(Application Tier) 와 DT(Database Tier) 전반적인 부분에 걸쳐 한 자리에서 관리적인 부분을 모두 커버할 수 있기 때문입니다.

하지만, Team Foundation Server 2010 의 새로운 기능 중의 Test & Lab 부분이 상당히 강력해졌지만, 새로운 플랫폼과의 결합과 새로운 개념 등으로 환경 구축이 쉽지만은 않습니다. 필자도 이러한 부분에서 많은 부분 시행 착오를 겪으며 정리한 내용을 공유하고자 합니다.

Team Foundation 의 운용을 어렵게만 느끼지 마시고, 문제가 발생하면 바로 아래의 링크를 통해서 확인해 보는 것도 좋은 방법일 것 같습니다.^^

이 문서는 지속적으로 업데이트 될 예정입니다.

마지막 업데이트 : 2010-04-06

   

Test & Lab Manager

[HowTo] 가상 Lab 환경의 가상 머신 시작하기
[HowTo] Lab Manager 환경 구성 중 TF260078 오류 해결하기
[HowTo] 가상 Lab 배포 중 오류 해결하기 TF259115
[HowTo] Lab Manager 에서 가상 Lab 환경 만들기

   

Visual Studio 2010

[HowTo] Work Item 쿼리를 Excel 로 내보내기 할 수 없는 경우 TF80012 에러

   

Team Foundation Server 2010

[HowTo] Team Foundation Server 2010 FQDN 설정 방법
[HowTo] TFS 설치 중 Reporting Services 관련 오류 Error 28805
[HowTo] Team Project Collection 옮기거나 복원하기 TF246081
[HowTo] TFS 2005/2008 데이터베이스를 TFS 2010 으로 마이그레이션
[HowTo] Team Project Collection 이름 변경하기

   

System Center Virtual Machine Manager

[HowTo] SCVMM 에서 암호화된 파일 전송을 사용하지 않으려면?
[HowTo] SCVMM 라이브러리 템플릿 만들기
[HowTo] SCVMM 의 라이브러리 템플릿 배포 작업이 무한 대기할 경우

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

문제

Visual Studio 2010 을 설치하면 기본 요소로 Team Explorer 가 설치가 됩니다. 간혈적으로 Work Items 을 Excel Export 할 경우 아래와 같은 오류가 나타납니다.

TF80012 에러가 아래와 같이 나타납니다.

이 경우, Visual Studio for Office Runtime 을 재설치해도 문제가 해결되지 않습니다.

   

해결 방법

엑셀에서 리본 클릭->엑셀 옵션->추가 기능->관리->COM 추가 기능->이동 버튼

기존의 Team Foundation Add-in COM 추가 기능 모두 제거합니다.

추가 버튼을 클릭합니다.

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\TFSOfficeAdd-in.dll 을 추가한다.

엑셀에서 정상적으로 Team 메뉴가 나타나고, Visual Studio 2010 의 Team Explorer 에서 Work Items 을 Excel 로 내보내기를 수행합니다.. 이제 정상적으로 Excel Export 가 동작합니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

1. SharePoint

SharePoint Central Administration 관리자 사이트에 접속합니다.
Application Management 탭에서 Configure alternate access mappings 를 클릭합니다.

   

Edit Public URLs 를 클릭합니다.

   

Alternate Access Mapping Collection 에서 Change Alternate Access Mapping Collection 을 선택합니다.

   

SharePoint - 80 을 선택합니다.

   

Internet 입력 상자에 http://tfs2010.powerumc.kr 을 입력하고, Save 버튼을 클릭합니다.

   

2. Reporting Services

시작-Microsoft SQL Server 2008-구성 도구-Reporting Services 구성 관리자를 클릭합니다.

   

웹 서비스 URL 탭으로 이동한 후, 고급 버튼을 클릭합니다.

   

추가 버튼을 클릭합니다.

   

Reporting Services 보고서 사이트의 호스트 헤더 이름을 입력하고 확인 버튼을 클릭합니다.

   

보고서 서버 웹 서비스의 URL 이 추가된 것을 확인합니다.


3. SharePoint - Team Foundation Server 설정 변경

Team Foundation 이 설치된 서버에서 시작-Microsoft Team Foundation Server 2010-Team Foundation Administration Console 을 실행합니다.

 

Application Tier-SharePoint Web Applications 탭에서 SharePoint 웹 응용 프로그램을 선택하고 Change 버튼을 클릭합니다.

   

General 탭에서 Web Application URL 을 Public URL 로 변경한 후, OK 버튼을 클릭합니다.

   

4. Reporting Services - Team Foundation Server 설정 변경

Team Foundation 이 설치된 서버에서 시작-Microsoft Team Foundation Server 2010-Team Foundation Administration Console 을 실행합니다.

   

Application Tier-Reporting 탭으로 이동한 후, Edit 버튼을 클릭합니다.

   

Edit 버튼을 클릭한 경우, 아래의 대화 상자가 나타나면 OK 버튼을 클릭합니다.

   

Reports 탭으로 이동한 후, Web Service 주소를 Public URL 로 변경합니다. URL 이 변경되면 Account for accessing data sources 의 Password 항목을 다시 입력하고, OK 버튼을 클릭합니다.

   

정보의 입력이 정상적으로 완료되었으면, Start Jobs 버튼을 클릭합니다.

   

다시 Reporting Services 를 시작합니다.

   

   

5. 설정 완료

모든 구성이 완료되었으면, 원격 머신에서 Visual Studio 2010에서 Team Foundation 로 연결합니다.
문서 항목과 보고서 항목이 올바르게 Public URL 로 변경되었습니다.

   

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

암호화된 파일 전송은 가상 머신의 배포 또는 템플릿 만들기, 배포 작업을 하기 위해 네트워크 트래픽이 증가하고 작업의 성능이 떨어질 수 있습니다. 암호화된 파일 전송을 사용하지 않으려면 아래의 단계를 수행해야 합니다.

Hosts 또는 Virtual Machines 탭으로 이동합니다. 암호화 전송을 사용하지 않은 Hosts 또는 Virtual Machine 을 선택한 후 마우스 오른쪽 버튼을 클릭하고 Properties 메뉴를 클릭합니다.

   

General 탭의 'Allow unencrypted file transfers' 항목의 체크를 해지하고, OK 버튼을 클릭합니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

문제

다음은 Team Foundation Console 에서 Lab Management 환경을 구성하는 중, TF260078 오류가 발생하는 문제의 해결 방법입니다.

1. Lab 관리자의 계정을 Administrator 로 변경

Configure Lab Management 에서 서버를 등록할 때, SCVMM 서버에서 TFSService 계정이 로컬 Administrators 그룹으로 등록한다. 그리고 SCVMM 의 관리자 계정으로 등록을 한다.

 

2. Team Foundation 서비스 계정 변경(TFSService)

TFS Admin Console 에서 Application Tier 의 TFSSERVICE 계정을 Change Account 를 눌러서 다른 Admin 레벨의 계정으로 바꾸어 준다. 필자는 POWERUMC\Administrator 계정으로 변경하였다.

   

   

   

그 이후에, Configure Lab Management 의 SCVMM Server Name 의 Test 가 통과되는 것을 볼 수 있다.

  

Posted by 땡초 POWERUMC

댓글을 달아 주세요

문제

가상 랩 환경을 배포하는 중 TF259115 오류가 발생하면서 배포 할 수 없는 경우입니다.

 

1. DNS 설정 문제

TFS Admin Console 의 Lab Management 설정의 Network Location 문제입니다.

이러한 경우 대부분 DNS 상의 설정 문제입니다.

   

역시 DNS 상에 호스트 IP 가 잘못 설정되어 있었습니다.

 

2. VMM 템플릿에 네트워크 위치 설정

VMM 템플릿에 네트워크 어뎁터가 구성이 되지 않아 발생하는 문제입니다.
http://blogs.technet.com/chengw/archive/2009/05/08/vmm-network-location-and-network-tag.aspx
http://blogs.blackmarble.co.uk/blogs/rfennell/archive/2010/01/27/so-you-want-to-demo-vs2010-lab-manager.aspx

이 설정이 정상적이지 않으면, 루프백(loopback) 현상이 발생한다고 합니다.

VMM 의 호스트 탭에서 속성(Properties) 를 클릭합니다.

하드웨어 탭에서 "검색된 네트워크 위치 다시 정의(Override discovered network location)" 을 클릭하고, 새로운 네트워크 이름을 입력합니다.

그리고 "네트워크" 탭으로 이동하여 새로운 가상 네트워크를 추가합니다.

아래와 같이 가상 네트워크 이름을 입력하고, 태그로 반드시 함께 입력해 주자.

다시 라이브러리의 템플릿의 하드웨어 구성 탭에서 이전에 지정한 네트워크 이름과 태그를 지정해 줍니다.

TFS Admin Console 의 Application Tier 의 Lab Management 탭으로 이동하고, Reconfigure Lab Management 를 클릭하여 Lab 환경을 다시 설정합니다.

Virtual Machine Manager 탭에서 아래와 같이 Protected Network 를 선택합니다.

이제 Team Project Collections 에서 Configure Host Groups 를 클릭합니다.

Verify 를 클릭하여 점검이 통과하는지 확인합니다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

배포 또는 구성된 가상 Lab 환경을 시작하고 사용하는 방법입니다.

가상 머신 시작하기

   

가상 머신이 시작하는 중

   

가상 머신이 시작 된 모습.

   

   

가상 머신 연결하기

   

가상 Lab 환경에 연결하면 새로운 원격 제어 창이 뜬다. 이 창은 가상 머신을 원격 제어할 수 있는 Microsoft Environment Viewer 창이다.

   

사용 중인 가상 머신은 Marking 을 하여 다른 사람이 볼 수 있도록 할 수 있다.

   

Mark 를 'In Use' 로 설정하면 Lab Center 에서는 사용중이라는 표시가 뜨므로, 공동 작업에 유용할 것이다.

   

Snapshot 을 통해 특정 지점의 상태를 저장하고, 언제든지 이전 또는 이후의 Snapshot 으로 이동할 수 있다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

문제

Team Foundation Server 설치 또는 구성 중에 Reporting Services 와 관련한 Error 28805 오류 해결 방법입니다.

Error 28805 Setup cannot finish the request to the SQL Server 2005 Reporting Service report server. Verify that the report server is installed and running, and that you have sufficient privledges to access it.

   

해결 방법

Rsreportserver.config 파일에서 SecureConnectionLevel = 0 으로 변경한다

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Team Foundation Server Lab Manager 통해 가상 Lab 환경을 구축하는 서버 논리 또는 물리 구조입니다.

다음은 Lab Manager 통해 가상 Lab 환경을 구축하는 순서를 이미지로 캡춰하였습니다. 아래의 이미지는 저희 회사에서 Team Foundation Server 관련하여 가이드 문서를 조만간에 제공할 예정입니다. ^^


   

   

   

   

   

   

   

   

   

   

    

   

Add to environment 를 클릭하여 원하는 클라이언트 대수를 배치한다.

   

마찬가지로 각각의 머신 별로 메모리나 OS 설정을 한다.

   


   

   

아래와 같이 가상 환경이 설정되었고, 가상 환경이 만들어 지고 있습니다.

   

SCVMM 서버에서는 아래와 같은 가상 머신을 생성하는 작업이 진행됩니다. SCVMM Admin Console 을 통해 확인할 수 있습니다.

   

이후 템플릿이 각 호스트로 배포가 완료됩니다.

  

Posted by 땡초 POWERUMC

댓글을 달아 주세요

문제 발생
SCVMM 또는 Team Foundation Lab Manager 이용하여 가상 서버를 배포할 경우, 작업이 완료되지 않고 무한으로 대기하는 경우입니다.

원인
가상 서버의 배포가 무한대로 작업이 끝나지 않는 경우, 윈도우 설치 또는 Sysprep(일반화) 작업 도중 무인 설치 오류가 발생하는 경우입니다. 대부분 이런 경우는 윈도우의 라이센스 키가 잘못 되었을 경우 주로 발생합니다.

해결 방법 MultiActivation 제품 키를 가지고 있으면 그것을 사용하면 됩니다. 하지만 Retail 제품 라이선스와 같이 개인용이나 설치에 인증에 제한이 있는 라이선스는 VMM 라이브러리로 호스트를 만드는 것에 적합하지가 않습니다.

   

보통 제품 키가 잘못되거나 틀렸을 경우 호스트를 생성하면서 작업이 완료되지 않습니다.

   
Windows 2008 R2 인 경우

Windows 2008 R2 의 경우 굳이 키를 입력하지 않아도 됩니다.

만약, 자동으로 로그인 하도록 하여도 템플릿으로 호스트를 만들면 배포 중 오류가 납니다. 예를 들어, control userpasswords2 명령으로 자동 로그인 되도록 하면, 템플릿을 배포할 때 오류가 발생합니다.

Sysprep 이용하여 무인 설치 또는 일반화 작업이 가능하도록 gpedit.msc 로 들어가서 공백 암호를 허용하기 위해, 암호의 복잡성 규칙을 없애야 합니다. 만약 암호를 사용해야 할 경우 logon 명령 등으로 [GUIRunOnce] Command 에 추가하는 작업을 해야 합니다.

   

Windows 7 일 경우

Windows 7 and Windows Server 2008 R2 Volume Activation Deployment Guide Published

http://blogs.technet.com/hectorl/archive/2009/07/20/windows-7-and-windows-server-2008-r2-volume-activation-deployment-guide-published.aspx

Windows 7 일 경우 반드시 제품 키를 입력해야 합니다. 정식 라이센스 키가 없을 경우 위의 Activation Deployment 키를 사용하도록 한다.

만약, PID 가 잘못될 경우 제대로 무인 설치가 되지 않습니다. 이런 경우 차라리 PID 를 사용하지 않습니다.

 

참고 문헌

http://blogs.technet.com/julesman/archive/2009/03/23/creating-a-windows-server-2008-template-in-scvmm-2008.aspx
http://technet.microsoft.com/en-us/library/cc917940.aspx

Volume Activation 2.0 Deployment Guide
http://technet.microsoft.com/en-us/library/cc303280.aspx

   

Deploying a new VM from template in VMM requires a PID for Windows Vista and Windows Server 2008... but your environment uses KMS for activation
http://blogs.technet.com/hectorl/archive/2008/10/21/deploying-a-new-vm-from-template-in-vmm-requires-a-pid-for-windows-vista-and-windows-server-2008-but-your-environment-uses-kms-for-activation.aspx

Posted by 땡초 POWERUMC

댓글을 달아 주세요

참고 URL

http://technet.microsoft.com/en-us/library/bb963734.aspx

SCVMM(System Center Virtual Machine Manager) 를 이용하여 Library Template 을 만드는 방법입니다.

   

1. 가상 컴퓨터의 속성을 선택하여 '새 템플릿'을 선택한다.

   

2. 아래의 경고를 읽고 '예' 를 클릭한다. (단, 가상 이미지를 Library Template 으로 만들 경우 기존의 가상 이미지를 사용할 수 없습니다)

   

3. 템플릿 마법사에서 템플릿의 이름을 입력하고 다음을 클릭한다.

   

4. 하드웨어 프로필을 입력한다. 새로운 프로필을 만들려면, "[새로 만들기]" 를 클릭한다.

   

5. Library Template 으로 배포할 때 가상 머신의 암호를 입력한다.

   

6. Library Template 을 배치할 서버를 선택한다.

   

6. '찾아보기' 를 클릭하고 가상 컴퓨터의 경로를 선택한다.

   

6. 경로를 선택한 후 '확인' 을 클릭한다.

   

6. '만들기' 버튼을 클릭하면, 가상 머신이 Library Template 으로 변환이 된다.

   

6. Library Template 을 만드는 작업을 시작한다. 모든 작업이 완료되는 것을 확인한다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Team Project Collection 을 다른 물리적인 환경으로 옮기는 방법입니다. 또는, 다른 물리적인 환경의 Team Project Collection 을 복원하는 방법입니다.

사실 TF246081 과 관련된 TFS 오류는 구글신도 모르는 오류이기 때문에, 개인적으로 꽤 잔머리를 굴려서 해결한 방법이랍니다.

1. 기존 Team Project Collection 을 반드시 Detach 한다.

   

2. 옮기려는 Team Project Collection 의 SQL 서비스를 중지하고, MDF, LDF 파일을 옮기려는 서버로 복사한다.

   

3. 옮기려는 SQL 서버에서 데이터베이스를 연결한다.

   

4. 데이터베이스의 이름 SSMS(SQL Server Management Studio) 에서 변경한다.

   

5. 데이터베이스의 속성에서 파일의 '논리적 이름' 을 Tfs_컬렉션이름 으로 변경한다.

   

6. TFS 2010 Application Tire 에서 Attach Collection 을 클릭하여 데이터베이스의 '서버\인스턴스'를 입력하면 정상적으로 목록이 출력된다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

이미 생성된 Team Project Collection 의 이름을 변경하는 방법입니다.

1. Project Collection 의 General 에서 Stop Collection 버튼을 클릭하여 연결을 해제합니다.

2. Edit Settings 를 클릭합니다.

3. 변경할 Collection Name 을 입력한다.

4. Start Collection 을 클릭하여 변경된 이름의 Project Collection 을 시작한다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Team Foundation Server 2010 서비스를 운영하고 관리하는 기능이 기존의 버전보다 크게 향상이 되었습니다. 물론 TFS 2010 에 대한 것에 한정해서 말입니다. 그러나 Test & Lab 과 관련하여 아직 많은 이슈가 존재하긴 합니다.

어쨌든 TFS 2005/2008 버전의 데이터베이스를 업그레이드 하는 방법이 많이 쉬워졌네요.


1. 백업 받은 TFS 2005/2008 데이터베이스를 복원한다.
(, TfsWarehouse 데이터베이스는 필요가 없다)

2. 데이터베이스에 TFSSSERVICE 계정에 권한을 가지고 있어야 한다. 만약 다른 도메인 컨트롤러나 SID 계정인 경우 수동으로 권한을 등록해야 합니다.

3. %Program Files%\Microsoft Team Foundation Server 2010\Tools 폴더로 이동한다.

4. tfsconfig 명령 도구를 이용한다.
SQL Instance 와 New Project Collection 을 입력한다. /Confirmed 는 새로운 Project Collection 이 생성된 후에, 기존 TFS 2008 데이터베이스를 삭제한다.

TFS 2010 의 새로운 Project Collection 에 이전 TFS2008 데이터를 Importing 하는 모습이다

TFS 2008 데이터베이스 Importing 이 완료되었다.

5. Importing 이 완료되면 새로운 Project Collection 이 생성된 것을 볼 수 있다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요