함수형 프로그래밍 원리를 적용한 아키텍처

Raymond Yoo·2023년 12월 11일
0
post-thumbnail

함수형 프로그래밍 계층 구조

함수형 프로그래밍 원리를 적용해서 구현하고 나면
전체 프로그램을 함수 호출 구조를 그래프로 나타내면
그림처럼 트리 형태가 된다.
아래쪽에 있는 함수일수록
언어 자체의 내장 라이브러리 기능에 가까워지고
위쪽에 있는 함수일수록
비즈니스 로직을 구현하는 내용에 가까워진다.

이런 계층형 구조는 여러 방식으로 해석할 수 있다.

코드를 수정하기 쉬운가?

이런 그래프에서
위쪽에 위치한 함수일수록 고치기 쉽고
아래쪽에 위치한 함수일수록 고치기 어렵다.
함수를 고친다는건 내부구현 로직을 변경한다는 것이다.
(조부모 함수) -> (부모 함수) -> (자식 함수)
순서로 함수들끼리 호출관계가 있다고 가정했을때
하나의 자식함수를 수정하고 나서도
전체 시스템이 오류없이 동작한다는 것을 보장하려면
그 자식 함수를 호출하는 모든 부모 함수를 확인해야 하고
여기서 확인한 부모 함수 각각을
호출하는 조부모 함수도 확인해야 한다.
그 이유는 아래쪽에 위치한 함수일수록
더 많은 부모함수들에서
그 자식함수를 호출하고 있을 것이기 때문이다.

얼마나 재사용성이 높은가?

앞에서도 언급했지만
아래쪽에 위치한 함수일수록 재사용성이 높아지고
위쪽에 위치한 함수일수록 적은 횟수 사용될 가능성이 높다.
그러므로 함수의 API 를 설계하고 내부 구현을 완료할때
아래쪽 계층에 있는 함수에 대해서 훨씬 더 많이
신경을 쓰는 것이 좋다.

테스트 코드를 작성했을까 얼마나 큰 가치를 지닐까?

이런 그래프에서
아래쪽에 위치한 함수일수록 테스트코드를 작성하기 쉽고
위쪽에 위치한 함수일수록 테스트코드를 작성하기 어렵다.
아래쪽에 있는 함수일수록 더 작은 단위로 잘개 쪼개져 있을 것이고
위쪽에 있는 함수일수록 비즈니스 도메인 로직을 포함해서
복잡한 상태일 것이다.
그러므로 위쪽에 있는 함수는 테스트코드를 작성할때
셋업 과정에서든 검증 과정에서든 고려해야할 사안 목록이 길어지고
아래쪽 함수는 반대가 된다.

추가적으로
아래쪽에 위치한 함수일수록 해당 함수에 대해서 작성한
테스트코드의 가치가 높아지고
위쪽에 위치한 함수일수록 해당 함수에 대해서 작성한
테스트코드의 가치가 낮아진다.
아래쪽의 함수일수록 더 많은 부모함수에서 호출하고 있을 것이므로
해당 함수의 안정성을 보장했을때 더 넓은 범위까지
시스템의 안정성을 보장할 수 있게 된다.
위쪽의 함수들은 비즈니스 로직과 같이
언제든지 변할 수 있는 내용을 담고 있을 가능성이 높다.

파아프라인 구조

함수형 프로그래밍의 약속과 원리를
충분히 따르면서 작성한 프로그램의 전체 구조는
멀리서 보았을때 이런식으로 파이프라인 구조가 된다.

<참조>
책, 쏙쏙 들어오는 함수형 코딩 9장, 에릭 노먼드, 김은민, 2022
아티클, '액션-계산-데이터' 관점으로 보는 함수형 프로그래밍 패러다임 | 요즘IT, 테오의 프론트엔드, 2022

profile
세상에 도움이 되고, 동료에게 도움이 되고, 나에게 도움이 되는 코드를 만들고 싶습니다.

0개의 댓글