development

솔로 개발자에게 지속적인 통합이 중요한가요?

big-blog 2020. 11. 24. 08:15
반응형

솔로 개발자에게 지속적인 통합이 중요한가요?


전에 CI 도구를 사용해 본 적이 없지만 읽은 내용으로는 매일 코드를 작성하지 않는 솔로 개발자에게 어떤 이점도 제공 할 수 있을지 모르겠습니다.

첫째-CI는 프로젝트에 어떤 이점을 제공합니까?

둘째-누가 CI를 사용해야합니까? 모든 개발자에게 도움이됩니까?


CI의 기본 개념은 누군가가 버전 제어 시스템에 커밋 할 때마다 코드를 빌드하고 자동화 된 테스트를 실행하는 시스템이 있다는 것입니다. 이러한 테스트에는 단위 및 기능 테스트 또는 동작 기반 테스트가 포함됩니다.

이점은 누군가가 빌드를 망가 뜨렸을 때 즉시 알 수 있다는 것입니다. 이는 A) '업데이트'를 한 사람을 망칠 수있는 컴파일을 막는 코드를 커밋했거나 B) 수정해야 할 버그를 도입했음을 의미하는 일부 테스트를 위반 한 코드를 커밋했거나 코드의 변경 사항을 반영하려면 테스트를 업데이트해야합니다.

당신이 솔로 개발자의 경우, CI가없는 아주 커밋하기 전에 당신은 당신이 무엇을하는 테스트를 실행하는 좋은 습관에있는 경우 유용으로 해야 일을. 즉, CI가 테스트를 수행하도록하는 나쁜 습관을 개발할 수 있습니다.

솔로 프로그래머로서 그것은 주로 규율로 귀결됩니다. CI를 사용하는 것은 유용한 기술이지만 팀 환경으로 변환되지 않는 나쁜 습관을 개발하지 않으려 고합니다.


다른 사람들이 언급했듯이 CI 솔로 개발자에게 이점 있습니다. 하지만 스스로에게 물어봐야 할 질문은 다음과 같습니다. 오버 헤드의 가치가 있습니까? 당신이 저와 같다면 서버를 할당하고 모든 네트워킹을 설정하고 소프트웨어를 설치해야하기 때문에 프로젝트에 대한 CI 시스템을 설정하는 데 한두 시간이 걸릴 것입니다. CI 시스템은 한 번에 몇 초만 절약 할 수 있습니다. 솔로 개발자의 경우이 시간은 CI 설정을 수행하는 데 걸린 시간보다 더 많지 않을 것입니다.

그러나 이전에 CI 시스템을 설정 한 적이없는 경우에는 방법을 배우기 위해 설정하는 것이 좋습니다. 학습 경험의 가치가 없을 정도로 오래 걸리지 않습니다.


CI의 이점은 체크인으로 빌드가 손상되었을 때 조기에 발견 할 수 있다는 것입니다. 또한 빌드에 대해 자동화 된 테스트 모음을 실행할 수있을뿐만 아니라 메트릭 등을 제공하는 모든 종류의 도구를 실행할 수 있습니다.

분명히 이것은 커밋 팀이있을 때 매우 가치가 있으며, 모두가 부지런히 변경 사항을 확인하는 것은 아닙니다. 솔로 개발자로서는 그다지 가치가 없습니다. 아마도 단위 테스트를 실행하고 통합 테스트를 실행할 수도 있습니다. 그러나 개발자가 세트에서 파일을 체크인하는 것을 잊는 경우를 많이 보았습니다.

CI 빌드는 "릴리스"빌드로 간주 할 수도 있습니다. 환경은 안정적이어야하며 컴퓨터에 추가 한 개발 기즈모의 영향을받지 않아야합니다. 항상 빌드를 재현 할 수 있어야합니다. 프로젝트에 새 종속성을 추가하고이를 고려하여 릴리스 빌드 환경을 설정하는 것을 잊은 경우 유용 할 수 있습니다.


여러 컴파일러를 지원해야하는 경우 하나의 IDE에서 개발하는 동안 CI 빌드 시스템을 통해 모든 작업을 수행하는 것이 편리합니다. 내 코드는 x86에서 Vc6부터 VS2008까지 빌드되고 x64는 VS2005 및 8에서 빌드되므로 프로젝트 구성 당 프로젝트 당 7 개의 빌드입니다. CI 시스템이 있으면 하나의 IDE에서 개발할 수 있고 CI 시스템이 모든 것을 증명할 수 있습니다. 내가 지원하는 컴파일러는 여전히 빌드합니다.

마찬가지로 여러 프로젝트에서 사용되는 라이브러리를 빌드하는 경우 CI는 현재 작업중인 프로젝트가 아닌 모든 프로젝트에서 작동하는지 확인합니다.


사실 지속적인 통합은 팀에서 가장 의미가 있습니다. 단일 개발자도 몇 가지 이점을 얻을 수 있습니다. CI 시스템 설정에 투자하는 시간에 대처할 수있을만큼 충분한 지 스스로 결정해야합니다.

  • 필요한 파일을 체크인하는 것을 잊은 경우 저장소에는 컴퓨터에서 작동하더라도 손상된 버전이 포함됩니다. CI는 그 사건을 감지합니다.
  • CI 서버가 다른 머신에서 실행되는 경우 빌드 환경에 대한 종속성을 나타낼 수 있습니다. 즉, 빌드 및 모든 테스트가 dev-box에서 작동 할 수 있지만 다른 컴퓨터에서는 일부 종속성이 충족되지 않고 빌드가 중단됩니다.
  • 일일 빌드는 이전 소프트웨어가 OS / 컴파일러 / 라이브러리의 최신 업그레이드와 함께 작동하지 않음을 나타낼 수 있습니다.
  • CI 시스템에 빌드 아티팩트 아카이브가있는 경우 이전 버전의 소프트웨어를 쉽게 배포 할 수 있습니다.
  • 일부 CI에는 빌드에 대한 메트릭을 표시하는 멋진 인터페이스가 있고 자동 생성 문서에 대한 링크가 있습니다.

CI 시스템을 사용하여 릴리스 빌드 (일반적인 자동 "커밋시"빌드)를 수행합니다.

설정을 릴리스하기위한 모든 프로세스를 단계별로 진행하는 릴리스 빌드를 시작하는 버튼을 클릭 할 수 있다는 것은 다음과 같습니다.

  • 빠름 (다른 작업을 계속할 수 있으며 별도의 컴퓨터에서 실행되므로 속도가 느려지지 않습니다.)
  • 반복적 (설정을 릴리스 폴더에 복사하고 알아야하는 모든 사람에게 알리는 것을 포함하여 아무것도 잊지 않음)
  • 신뢰할 수 있습니다 (인간과 달리 실수가 없습니다!).

2-4 주마다 작동하는 소프트웨어를 제공 할 것으로 예상되는 애자일 환경에서는 1 인 팀에서도 확실히 가치가 있습니다.


CI는 확인하는 것을 잊은 경우 (빌드가 손상되기 때문에) 알고 있다는 점에서 솔로 개발자에게 도움이됩니다. 그러나 다른 개발자가 없으면 그것의 통합 가치가 감소합니다.

참고 URL : https://stackoverflow.com/questions/130592/is-continuous-integration-important-for-a-solo-developer

반응형