

# OPS05-BP07 코드 품질 개선을 위한 사례 구현
<a name="ops_dev_integ_code_quality"></a>

코드 품질을 개선하고 결함을 최소화하는 사례를 구현합니다. 테스트 기반 개발, 코드 검토, 표준 도입 및 페어 프로그래밍 등을 몇 가지 예로 들 수 있습니다. 이러한 사례를 지속적 통합 및 전달 프로세스에 통합합니다. 

 **원하는 결과:** 조직에서는 코드 검토 또는 페어 프로그래밍과 같은 모범 사례를 사용하여 코드 품질을 개선합니다. 개발자와 운영자는 소프트웨어 개발 수명 주기의 일부로 코드 품질 모범 사례를 채택합니다. 

 **일반적인 안티 패턴:** 
+ 코드 검토 없이 애플리케이션의 기본 분기에 코드를 커밋합니다. 변경 사항은 프로덕션에 자동으로 배포되고 중단이 발생합니다.
+  단위, 엔드 투 엔드 또는 통합 테스트 없이 새 애플리케이션을 개발합니다. 배포 전에 애플리케이션을 테스트할 방법이 없습니다. 
+  팀은 결함을 해결하기 위해 프로덕션에서 수동으로 변경합니다. 변경 사항은 테스트 또는 코드 검토 단계를 거치지 않으며 지속적 통합 및 전달 프로세스를 통해 캡처되거나 기록되지 않습니다. 

 **이 모범 사례 확립의 이점:** 코드 품질 개선을 위한 사례를 도입하면 프로덕션에서 발생하는 문제를 최소화할 수 있습니다. 페어 프로그래밍 및 코드 검토와 같은 모범 사례를 사용하면 코드 품질이 향상됩니다. 

 **이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준:** 보통 

## 구현 가이드
<a name="implementation-guidance"></a>

 배포되기 전에 결함을 최소화하기 위해 코드 품질을 개선하는 사례를 구현합니다. 테스트 기반 개발, 코드 검토, 페어 프로그래밍과 같은 방법을 사용하여 개발 품질을 높입니다. 

 **고객 사례** 

 AnyCompany Retail은 코드 품질을 개선하기 위해 몇 가지 사례를 채택합니다. 전에는 애플리케이션 작성을 위한 표준으로 테스트 기반 개발 방식을 채택했습니다. 일부 새로운 기능의 경우 개발자가 스프린트 중에 페어 프로그래밍을 하도록 합니다. 모든 풀 요청은 통합 및 배포되기 전에 책임 개발자가 코드를 검토합니다. 

### 구현 단계
<a name="implementation-steps"></a>

1.  테스트 기반 개발, 코드 검토, 페어 프로그래밍과 같은 코드 품질 관련 사례를 지속적 통합 및 전달 프로세스에 도입합니다. 이러한 기술을 사용하여 소프트웨어 품질을 개선합니다. 

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 기계 학습을 사용하여 Java 및 Python 코드에 대한 프로그래밍 권장 사항을 제공하면 됩니다. 

   1.  다음 [AWS Cloud9으로 공유 개발 환경을 만들어](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 코드 개발 시 협업할 수 있습니다. 

 **구현 계획의 작업 수준:** 보통. 이 모범 사례를 구현하는 방법에는 여러 가지가 있지만 조직에서 채택하는 것은 어려울 수 있습니다. 

## 리소스
<a name="resources"></a>

 **관련 모범 사례:** 
+  [OPS05-BP06 설계 표준 공유](ops_dev_integ_share_design_stds.md) - 코드 품질 관련 사례의 일부로 설계 표준을 공유할 수 있습니다. 

 **관련 문서:** 
+ [ Agile Software Guide(애자일 소프트웨어 가이드) ](https://martinfowler.com/agile.html)
+ [CI/CD 파이프라인이 릴리스에 매우 중요함](https://aws.amazon.com/builders-library/cicd-pipeline/)
+ [ Amazon CodeGuru Reviewer를 사용한 코드 검토 자동화 ](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/)
+ [ 테스트 기반 개발 접근 방식 채택 ](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html)
+ [ DevFactory가 Amazon CodeGuru를 사용하여 더 나은 애플리케이션을 구축하는 방법 ](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/)
+ [ 페어 프로그래밍 사용 ](https://martinfowler.com/articles/on-pair-programming.html)
+ [ RENGA Inc., Amazon CodeGuru로 코드 검토 자동화 ](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/)
+ [ 애자일 개발 기술: 테스트 기반 개발 ](http://www.jamesshore.com/v2/books/aoad1/test_driven_development)
+ [ 코드 검토가 중요한 이유(그리고 시간이 절약되는 이유) ](https://www.atlassian.com/agile/software-development/code-reviews)

 **관련 동영상:** 
+ [AWS re:Invent 2020: Continuous improvement of code quality with Amazon CodeGuru ](https://www.youtube.com/watch?v=iX1i35H1OVw)
+ [AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development ](https://www.youtube.com/watch?v=1R7G_wcyd3s)

 **관련 서비스:** 
+ [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)
+ [ Amazon CodeGuru Profiler ](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html)
+  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 