연봉 수백만원 프로그래머들이 쓰는 낚시법인데...

정보 기술의 지속적인 발전으로 인해 기존의 많은 워크플로우가 자동화로 빠르게 변화하고 있습니다. 과거에는 개발자가 코드 작성을 마친 후 프로덕션에 코드를 배포하기 위해 일련의 작업을 수동으로 수행해야 했습니다.

이는 간단해 보이지만 실제 운영에서는 다양한 인적 오류가 발생할 가능성이 있을 뿐만 아니라 개발자의 많은 시간과 노력을 소모하게 된다. 또한 문제가 발생하면 롤백 작업이 필요하므로 성공할 때까지 위 단계를 다시 수행해야 합니다.

베테랑 테스터로서 이 슬픔과 고통은 이루 말할 수 없습니다. 이러한 문제를 해결하기 위해 자동화된 배포 기술이 점차 등장했습니다. 간단히 말해서 자동 배포는 코드 버전 제어, 구성, 테스트부터 최종 릴리스까지 이러한 복잡하고 지루한 단계가 수동 개입 없이 자동으로 완료됩니다.

나는 이미 아침에 일을 마쳤는데 갑자기 내 "낚시"기술을 여러분과 공유하고 싶었습니다. 이 문서에서는 자동화된 배포의 장점과 사례를 소개합니다. 자동화된 배포의 기본 원칙과 도구를 이해함으로써 효율적이고 안정적인 소프트웨어 릴리스 프로세스를 달성하는 데 도움을 드릴 수 있습니다.

 

1. 자동화된 배포가 중요한 이유

1. 적시에 피드백을 제공하고 출시 빈도를 높입니다.

자동화된 배포는 배포 프로세스를 크게 단순화합니다. 새로운 기능과 수정 사항을 사용자에게 신속하게 제공할 수 있을 뿐만 아니라 사용자로부터 적시에 피드백을 얻을 수도 있습니다. 빠른 피드백을 통해 팀은 제품 변경이 효과적인지, 사용자의 요구 사항을 충족하는지 즉시 파악하고 사용자 피드백을 기반으로 조정할 수 있습니다.

Facebook 모바일 애플리케이션은 매우 자주 업데이트됩니다. iOS 및 Android 애플리케이션은 평균 한 달에 한 번씩 업데이트됩니다. 각 업데이트에는 새로운 기능, 성능 개선, 버그 수정 등이 포함될 수 있습니다.

Facebook에서는 배포된 소프트웨어 업데이트당 평균 92줄의 코드가 추가되거나 수정되며, 각 개발자는 매주 평균 3.5개의 업데이트를 프로덕션에 푸시합니다. Facebook 엔지니어링 팀의 규모를 고려하면 이는 매일 1,000건의 프로덕션 배포를 의미하며 배포 자동화만으로는 이를 달성할 수 없습니다.
 

시장은 자주 변화하고 유사 제품 간의 경쟁은 치열합니다. 자동화된 배포를 통해 새 버전의 신속한 출시를 촉진하고 제품이 시장 변화에 빠르게 적응하도록 돕고 사용자의 관심을 끌 수 있습니다.

페이스북

2. 효율성 향상 및 인적 오류 감소

개발자는 매일 새로운 기능을 개발하거나 버그를 수정하고 있으며 매일 새로운 코드를 프로덕션 환경에 배포해야 합니다. 코드를 업로드하거나 시작하는 과정에서 오류가 발생하면 제품이 제대로 작동하지 않고 사용자 경험에 영향을 미칠 수 있습니다.

자동화된 배포를 사용하는 경우 버전 제어 시스템에 코드를 제출하고 자동화된 배포 도구가 다음 단계를 완료할 때까지 기다리면 되므로 인적 오류가 발생하지 않습니다. 빌드나 테스트 과정에서 오류가 발견되더라도 자동화된 배포가 중단되고 개발자에게 통보되므로 개발자는 오류가 프로덕션 환경에 영향을 미치기 전에 즉시 수정할 수 있습니다.

또한 자동화된 배포는 그레이스케일 릴리스 전략과 결합될 수 있습니다. 개발자는 먼저 서버의 하위 집합에 새 코드를 배포하여 문제가 있는지 확인할 수 있습니다. 문제가 없으면 코드를 모든 서버에 배포하십시오. 이렇게 하면 새 코드에 문제가 발생하더라도 전체 사용자가 아닌 일부 사용자에게만 영향을 미치게 됩니다.

많은 회사가 자동화된 배포를 성공적으로 구현한 후 상당한 결과를 얻었습니다. 예를 들어 Google은 Cloud Build 및 Cloud Deploy를 사용하여 배포 시간을 최대 80%까지 줄였습니다. Amazon은 AWS CodeDeploy를 사용하여 수백만 달러의 가동 중지 시간 없이 배포를 자동화했습니다. 코드 변경.

자동화된 배포는 인적 오류를 어느 정도 줄이고 배포 속도와 안정성을 크게 향상시킨다는 점을 인정해야 합니다.
 

3. 반복적인 디버깅을 피하는 장기적인 안정성

수동 배포 프로세스는 종종 문서화되어 유지 관리에 추가 시간이 필요하며 업데이트로 인해 버전 배포가 일관성이 없거나 불완전한 경우가 많습니다. 직원 이직이나 사직이 발생하면 배치 프로세스에 심각한 영향을 미칩니다. 또한, 장기간 수동 배포 작업을 수행한 사람의 작업 효율성은 작업 상태, 집중력 등의 요인에 의해 쉽게 영향을 받습니다. 한편으로는

자동화된

자동화된 배포

2. 자동화된 배포를 구현하는 방법

1. 적절한 자동 배포 도구를 선택하는 방법

디지털 전환의 발전으로 기업의 오프라인 비즈니스가 점차 온라인으로 이동하고 있으며 애플리케이션 수가 날로 증가하고 배포 활동이 더욱 빈번해지고 있습니다. 현재 시장에는 다양한 자동화 배포 도구가 있습니다. 개발 프로세스에 적합한 도구를 어떻게 선택합니까?

  • 프로젝트 요구사항

우리는 프로젝트에 필요한 것이 무엇인지 정확히 알아야 합니다. 개발, 테스트, 프로덕션 환경 등 다중 환경 배포를 지원해야 합니까? Windows, Linux, Mac 또는 클라우드 서비스(AWS, Azure, GCP)와 같은 다중 플랫폼 배포를 지원해야 합니까? 우리 프로젝트가 어떤 언어나 프레임워크로 개발되는지... 이는 배포 도구 선택에 영향을 미칩니다.
 

  • 사용의 용이성

배포 도구는 특히 초보자가 이해하고 사용하기 쉬워야 합니다. 도구에 상당한 학습 및 구성 비용이 필요한 경우 최선의 선택이 아닐 수 있습니다. 또한 도구의 문서화 및 커뮤니티 지원도 고려해야 할 요소입니다.
 

  • 확장성

프로젝트가 성장하거나 변경될 가능성이 있는 경우 프로젝트의 요구 사항에 따라 확장할 수 있는 도구가 필요합니다. 여기에는 새로운 배포 대상(예: 새로운 운영 체제 또는 클라우드 서비스) 지원과 보다 복잡한 배포 전략(예: 블루/그린 배포 또는 카나리아 배포) 지원이 포함됩니다.
 

  • 통합

배포 도구는 개발 및 운영 프로세스에 쉽게 통합되어야 합니다. 여기에는 소스 코드 관리 시스템(예: GitFox), 지속적 통합/지속적 배포(CI/CD) 도구(예: Jenkins, GitHub Actions, GitLab CI/CD), 모니터링 및 로깅 시스템과의 통합이 포함될 수 있습니다.
 

  • 비용

배포 도구 비용도 중요한 요소입니다. 여기에는 도구를 구입하고 유지 관리하는 데 드는 직접 비용과 도구를 학습하고 사용하는 데 드는 간접 비용이 포함됩니다. 일부 도구는 무료이지만 상당한 구성과 유지 관리가 필요할 수 있고, 다른 도구는 유료이지만 더 많은 기능과 지원을 제공할 수 있습니다.
 

일반적인 자동 배포 도구로는 Jenkins, Ansible, Docker, Kubernetes 등이 있습니다. 각 도구에는 장단점이 있으며 팀은 위의 요소와 특정 요구 사항을 기반으로 올바른 도구를 선택해야 합니다.

자동화된 배포

2. 자동 배포 프로세스 구현 방법

자동화된 배포는 DevOps 방식을 지원하고 CI/CD 파이프라인을 관리하는 데 중요한 부분입니다. ZenTao DevOps 플랫폼을 예로 들어 자동 배포 프로세스를 구현하는 방법은 다음과 같습니다.

  • 버전 제어: 개발 프로세스 중에 개발자는 소스 코드 관리를 위해 자신이 작성한 코드를 버전 제어 도구(예: GitLab 및 GitFox 소프트웨어)에 제출하고 코드 변경 사항을 실시간으로 추적합니다.
  • 지속적인 통합: 코드가 제출되면 ZenTao의 지속적인 통합 도구는 정적 코드 분석을 위한 SonarQube, 단위 테스트를 위한 ZTF 자동화 테스트 관리 프레임워크 등을 포함하여 빌드 프로세스를 자동으로 트리거합니다. 빌드 중에 문제가 발생하면 개발자에게 즉시 통보됩니다. 테스트가 완료되면 병합 요청을 시작합니다.
  • 지속적인 테스트: 개발 팀은 지속적인 통합 도구(GitFox 파이프라인, GitLab CI)를 사용하여 ZTF가 특정 유형의 자동화된 테스트를 수행하도록 유도할 수 있습니다. 테스트 프로세스 중에 스크립트는 생성된 데이터 파일 또는 API 인터페이스에 액세스하여 구조화된 테스트 데이터를 얻습니다. 젠데이터.
  • 지속적인 배포: 빌드가 성공하면 ZenTao와 통합된 지속적인 배포 도구가 테스트 환경이나 프로덕션 환경과 같은 지정된 환경에 새로운 코드 변경 사항을 자동으로 배포합니다.
  • 피드백 및 개선: 배포가 완료된 후 ZenTao 플랫폼은 팀이 애플리케이션의 실행 상태를 이해하고 필요한 경우 조정 또는 수리를 수행하는 데 도움이 되는 자세한 배포 로그 및 애플리케이션 성능 모니터링 데이터를 제공할 수 있습니다.

실제 배포 프로세스는 특정 프로젝트 요구 사항과 팀 습관에 따라 조정될 수 있다는 점은 주목할 가치가 있습니다.

ZenTao DevOps 플랫폼

3. 원클릭 자동 배포로 낚시 계속 가능

자동화된 배포는 많은 이점을 제공하지만 복잡한 환경 구성, 보안 문제 등과 같은 과제를 무시할 수 없습니다. 따라서 특정 프로젝트 요구 사항 및 환경에 따라 자동화된 배포 도구를 선택하고 구성해야 합니다.

자동화된 배포 도구가 만병통치약은 아니지만 자동화된 배포는 실제로 소프트웨어 개발 및 테스트에서 중요한 부분입니다. 내가 자동화 배포의 수혜자임을 확인하는 것은 어렵지 않습니다.

말할 것도 없이, 새로운 작업이 다시 여기에 있습니다. 다음에는 시간을 절약하고 노동을 절약해 주는 다른 "낚시" 기술을 알려드리겠습니다.

"Celebrateing More Than Years 2"의 불법 복제 리소스가 npm에 업로드되어 npmmirror가 unpkg 서비스 를 중단해야 했습니다. Microsoft의 중국 AI 팀은 수백 명의 사람들을 모아 미국으로 떠났습니다. 프론트엔드 시각화 라이브러리와 Baidu의 유명한 오픈 소스 프로젝트 ECharts - Fish 사기꾼을 지원하기 위한 "going to the sea"는 TeamViewer를 사용하여 398만 개를 전송했습니다! 원격 데스크톱 공급업체는 무엇을 해야 합니까? Zhou Hongyi: Google은 시간이 얼마 남지 않았습니다. 모든 제품을 오픈소스로 만드는 것이 좋습니다. 한 유명 오픈소스 회사의 전직 직원이 소식을 전했습니다. 부하 직원의 도전을 받은 후 기술 리더는 분노했습니다. Google은 Android 가상 머신에서 ChromeOS를 실행하는 방법을 보여주었습니다. 여기서 time.sleep(6)은 어떤 역할을 합니까? 마이크로소프트, 중국 AI 팀이 "미국을 위해 준비 중"이라는 루머에 대응 사무용 소프트웨어의 마트료시카 같은 충전에 대한 인민일보 온라인 논평: "세트"를 적극적으로 해결해야만 미래를 가질 수 있다
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/candou/blog/11181106