2009-07-06 1 views
2

약 5 곳에 위치하는 대규모 응용 프로그램이 있습니다. 이 위치 중 어느 곳에서도 동일한 버전의 응용 프로그램을 실행하지 않습니다. 이렇게하면 패치 및 업데이트가 매우 복잡해집니다.분기 된 응용 프로그램에서 어떻게 지원하고 개발을 계속해야합니까?

다음 예제를 따르십시오. "응용 프로그램 A"에 대해 이야기하는 응용 프로그램을 호출합니다. 이제 우리는이 위치 중 하나에 응용 프로그램 B를 롤아웃하고 응용 프로그램 A를 구현해야합니다. 우리는 B의 요구 사항을 받아들이도록 A를 수정해야합니다. 그러나 A의 개발 버전 (결국 각 위치에있는 버전)에는 B에 대한 지원도 있어야합니다. 즉, B가 필요한 사이트에서 실행중인 소프트웨어의 상태로 롤백하고 A의 개발 버전을 변경해야한다는 것을 의미합니다. 이는 4 개의 다른 위치에서 B 지원이없는 A 버전을 구현한다는 것을 의미합니다.

이렇게 버전 관리를 제어하는 ​​것이 좌절 할 수 있습니다. 우리가 소스의 개발 버전을 사용할 수없는 사이트 2-5를 지원하려면 해당 사이트의 특정 버전으로 롤백해야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 우리는 Visual Studio 2008과 Team Foundation Server를 사용하고 있습니다.

+2

"Doctor, 이 작업을 수행!" 상태. –

답변

4

내가 권하는 가장 먼저 핵심 제품의 모든 버전을 사용하도록 앱을 리팩터링하는 것입니다.

특정 기능을 자체 모듈로 논리적으로 분리하고 어댑터 유형 패턴을 통해 해당 기능에 액세스하십시오.

+1

용어에 감사드립니다, 존. 정확히 내가 찾고 있던 것 - "포크 응용 프로그램"과 "어댑터 패턴". – Daniel

1

John은 중요한 첫 번째 단계를 지적합니다. 코드베이스가 내부적으로 안정 될 때까지 아무 일도 일어나지 않습니다.

잘 정의 된 인터페이스를 사용하여 재사용 가능한 구성 요소로 응용 프로그램을 분할 한 후에도 많은/모든 구성 요소의 여러 버전 ("포크 (fork)")을 유지하고 병렬로 릴리스를 개발해야 할 것입니다. 그것이 분기가 일어나는 곳입니다.

새로운 TFS Branching Guidance 표지를 읽는 것이 좋습니다. 이전 개정에 대해서는 상당히 비판적 이었지만 문서 작성 팀은 실제로 여기에서 제안을 개선했습니다. (TFS가 더 광범위한 채택을 발견함에 따라 부분적으로 피드백을 얻었지만 ... 마침내 MS의 시장 진출보다 훨씬 앞선 SDLC 규범에 대한 관심을 마침내)

+0

"코드베이스가 내부적으로 안정화 될 때까지는 아무 일도 일어나지 않습니다."- 주석 Richard에게 감사드립니다. 그러나 그것은 제 요점이 아닙니다. 내가 의미하는 바는 핵심 기능을 포킹 해제하고 일부 추가 기능 모델을 통해 추가, 위치 별 기능을 관리하는 것입니다. 따라서 모든 사람들은 동일한 버전의 응용 프로그램 X를 가지고 있으며, 위치 y는 y 개의 추가 기능을 가지고 있으며, 위치 z는 z 개의 추가 기능을 가지고 있습니다. KWIM? –

+0

100 % 분리를 달성 할 수 있다면 좋습니다. 항상 실현 가능한 것은 아닙니다. 또는 실현 가능하지만 훨씬 나중에 특정 loc 특정 포크가 필요한 곳을 찾을 수 없습니다. 분기에 익숙해지면 X + 1에서 작업하는 동안 버전 X를 유지 관리하는 방법과 같이 모듈 방식과 직각을 이루는 병렬 개발도 가능합니다. –

관련 문제