구글(Google)의 소프트웨어 엔지니어링(Software Engineering) 비법, 무엇이 다를까?

by DD
3개월 전
조회수 28

구글(Google)의 소프트웨어 엔지니어링(Software Engineering)은 단순 코딩을 넘어, 코드의 수명주기 전체를 고려하는 접근 방식을 강조함

Hyrum's LawBeyoncé Rule을 통해 테스트의 중요성을 강조하며, 테스트 부재 시 발생할 수 있는 문제점을 지적함

코드 리뷰(Code Review)를 지식 공유 및 팀 문화 개선의 핵심 요소로 활용하며, 작은 변경 사항(Small Changes)을 권장함

GSM 프레임워크(Goals, Signals, Metrics)를 활용하여 측정의 목적성을 명확히 하고, 개인 생산성 지표(Individual Measurement)의 함정을 경계함

Hyrum's Law과 테스트의 중요성

책에서는 Hyrum's Law을 언급하며, API의 모든 관찰 가능한 동작은 사용자에 의해 의존될 수 있음을 강조한다. 이는 문서화되지 않은 동작조차도 예외가 아님을 의미한다. 따라서, Beyoncé Rule을 통해 모든 중요한 동작에 대한 테스트를 작성하여, 예상치 못한 변경으로 인한 문제를 사전에 방지해야 한다고 주장한다. 이는 대규모 코드베이스에서 유지보수성(Maintainability)을 확보하기 위한 핵심 전략이다.

코드 리뷰(Code Review)의 목적과 효과

구글(Google)은 코드 리뷰(Code Review)를 단순히 코드의 정확성을 검증하는 수단이 아닌, 지식 공유(Knowledge Sharing)와 팀 문화 개선의 핵심 요소로 활용한다. 코드 리뷰는 코드의 이해도를 높이고, 장기적인 유지보수를 용이하게 하는 데 기여한다. 구체적으로, 변경 사항을 200라인 이하로 유지하고, 24시간 이내에 피드백을 제공하는 시스템을 통해 효율성을 극대화한다. 이는 코드 품질(Code Quality) 향상에 기여한다.

작은 변경(Small Changes)과 릴리스(Release) 전략

구글(Google)은 작은 변경(Small Changes)을 통해 릴리스(Release)의 빈도를 높이는 전략을 사용한다. 작은 릴리스는 문제 발생 시 원인을 파악하기 쉽고, 롤백(Rollback) 또한 용이하다. DORA 연구 결과에 따르면, 지속적인 배포(Continuous Delivery)를 통해 개발 속도, 품질, 안정성, 개발자 만족도를 향상시킬 수 있다. 이는 개발 생산성(Development Productivity) 향상에 기여한다.

GSM 프레임워크(Goals, Signals, Metrics)를 활용한 측정

구글(Google)은 GSM 프레임워크(Goals, Signals, Metrics)를 사용하여 측정의 목적성을 명확히 하고, 측정 대상의 우선순위를 정한다. 목표(Goal)를 설정하고, 이를 달성하기 위한 신호(Signal)를 정의한 후, 측정 가능한 지표(Metric)를 선택한다. 이는 측정의 효율성을 높이고, Goodhart's Law의 함정을 방지한다. 또한, 개인 생산성 지표(Individual Measurement)보다는 팀 전체의 효과를 측정하는 것을 권장한다.

What I learned from the book Software Engineering at Google

댓글 0

첫 번째 댓글을 남겨보세요!