한국정보기술진흥원
한국정보기술신문
thumbnail

정보기술 ·

구글, 코드 단순화 위한 '기능형 코어·명령형 셸' 패턴 제시...테스트 가능성과 유지보수성 향상

발행일
읽는 시간1분 28초

구글이 비즈니스 로직과 부작용을 분리하는 소프트웨어 설계 패턴을 공식 테스팅 블로그를 통해 소개했다.

[한국정보기술신문] 구글이 복잡하게 얽힌 코드를 단순화하는 설계 패턴인 '기능형 코어, 명령형 셸'(Functional Core, Imperative Shell) 방식을 10월 자사 테스팅 블로그를 통해 제시했다.

구글은 데이터베이스 호출, 네트워크 요청 등 외부 상호작용을 핵심 로직과 직접 혼합하면 테스트, 재사용, 이해가 어려운 코드가 생성된다고 지적했다. 이에 대한 해결책으로 기능형 코어를 명령형 셸에서 호출하는 방식을 권장했다.

기능형 코어는 부작용이 없는 순수하고 테스트 가능한 비즈니스 로직을 담고 있다. 입출력이나 외부 상태 변경 같은 부작용에서 자유로우며 주어진 데이터에만 작동한다. 반면 명령형 셸은 데이터베이스 호출과 이메일 발송 같은 부작용을 책임지며, 기능형 코어의 함수를 사용해 비즈니스 로직을 수행한다.

실제 적용 사례로 본 효과

구글은 사용자 만료 알림 이메일을 발송하는 코드를 예시로 들었다. 기존 방식에서는 데이터베이스에서 사용자를 가져오고, 구독 종료일을 확인하고, 무료 체험 여부를 검증한 뒤 이메일을 발송하는 모든 과정이 하나의 함수에 혼재돼 있었다.

개선된 코드에서는 만료된 사용자를 필터링하는 기능형 코어 함수와 이메일 내용을 생성하는 또 다른 기능형 함수를 분리했다. 명령형 셸은 이 함수들을 조합해 실제 이메일 발송을 처리한다.

이러한 분리를 통해 새로운 유형의 이메일 발송 기능을 추가할 때 순수 함수만 작성하고 기존의 사용자 필터링 로직을 재사용할 수 있게 됐다. 구글은 5일 후 리마인더 이메일을 발송하는 사례를 통해 이 패턴의 확장성을 보여줬다.

테스트와 유지보수 용이성 확보

구글은 이 패턴이 코드를 더 테스트 가능하고 유지보수하기 쉽게 만든다고 강조했다. 핵심 로직을 독립적으로 테스트할 수 있으며, 명령형 셸은 필요에 따라 교체하거나 수정할 수 있다.

특히 외부 의존성이 없는 기능형 코어는 단위 테스트 작성이 간단하고, 다양한 상황에서 재사용이 가능하다는 장점이 있다. 명령형 셸에서 부작용을 격리함으로써 코드의 예측 가능성과 안정성도 높아진다.

구글의 이번 제안은 소프트웨어 개발 커뮤니티에서 오랫동안 논의돼 온 함수형 프로그래밍 원칙을 실용적인 패턴으로 정리한 것으로 평가된다. 개발자들은 이 패턴을 통해 복잡한 비즈니스 로직을 더 명확하게 구조화하고 장기적인 코드 품질을 개선할 수 있을 것으로 기대된다.

한국정보기술신문 정보기술분과 전호재 기자 news@kitpa.org