해스켈(Haskell)로 구축된 핀테크, 머큐리(Mercury)의 기술적 선택

by DD
1개월 전
조회수 14

머큐리(Mercury)는 수백만 줄의 해스켈(Haskell) 코드를 기반으로 금융 서비스를 제공하며, 해스켈(Haskell) 채택의 기술적 배경을 설명함

해스켈(Haskell) 생태계의 유지보수(Maintenance) 문제생산성(Productivity) 저하에 대한 우려가 제기됨

머큐리(Mercury)의 성공 요인으로 해스켈(Haskell) 선택과 엔지니어링 문화가 언급됨

타입 시스템(Type System)을 활용한 안전한 코드 설계가 생산성 향상에 기여한다는 긍정적 평가가 있음

해스켈(Haskell) 생태계의 유지보수(Maintenance) 문제

댓글에서는 해스켈(Haskell) 생태계의 유지보수(Maintenance) 문제를 지적하며, 핵심 라이브러리(Core Libraries)의 유지보수 주체 부재(Lack of Maintainers)로 인한 어려움을 언급한다. 특히, 빠른 변화를 요구하는 프로덕션 환경에서 브레이킹 체인지(Breaking Changes)에 대한 우려가 개발자들의 망설임으로 이어진다고 지적한다. 이러한 문제는 코드 기여(Code Contribution) 없이 기존 시스템을 포크(Fork)하거나 재작성(Rewrite)하는 결과를 초래할 수 있다고 분석한다.

해스켈(Haskell) vs 러스트(Rust) 생산성 비교

한 개발자는 해스켈(Haskell)을 수년간 사용했음에도 불구하고, 러스트(Rust)에서 2배 이상의 생산성(Productivity)을 경험했다고 밝혔다. 해스켈(Haskell)은 학습 곡선(Learning Curve)이 높고, 컴파일러 에러(Compiler Errors)에 익숙해지는 데 시간이 걸린다는 점을 단점으로 꼽았다. 또한, 툴링(Tooling)이 닉스(Nix)에 의존적인 점과 언어 확장(Language Extensions)의 복잡성도 생산성 저하의 요인으로 지적했다.

타입 시스템(Type System)을 활용한 코드 안정성 확보

해스켈(Haskell)은 타입 시스템(Type System)을 통해 코드의 안전성을 높이는 데 기여한다. 특히, 권한 관리(Authorization)와 관련된 버그를 방지하기 위해 User - LoggedInUser - AccessControlledLoggedInUser와 같은 패턴을 활용할 수 있다. 이러한 접근 방식은 웹 애플리케이션(Web Application)에서 흔히 발생하는 인증(Authentication) 및 권한 부여(Authorization) 관련 버그를 줄이는 데 효과적이며, 업계에서 덜 활용되고 있다는 점을 강조한다.

머큐리(Mercury)의 해스켈(Haskell) 선택과 성공

머큐리(Mercury)가 해스켈(Haskell)을 선택한 것은 회사의 성공에 중요한 역할을 했다는 의견이 제시된다. 해스켈(Haskell)을 선택한 것은 기술적 선견지명(Technical Foresight)이었으며, 특히 LLM(Large Language Model) 시대 이전의 결정이라는 점이 강조된다. 머큐리(Mercury)의 엔지니어링 문화(Engineering Culture) 또한 성공에 기여한 중요한 요소로 평가받는다.

A Couple Million Lines of Haskell: Production Engineering at Mercury