최근 저는 금융 분석 도구를 개발하는 과정에서 코드베이스의 규모가 커지면서 여러 도전 과제에 직면했습니다. 이 글에서는 업무 분담 전략부터 아키텍처 설계, 코드 리팩토링, 그리고 최종 결과까지의 여정을 공유하고자 합니다.
프로젝트 진행 중 특별한 문제에 직면했습니다. 팀원이 서로 다른 API(Alpha Vantage, 한국투자증권 API 등)를 사용하면서도 비슷한 금융 분석 영역을 다루고 있었던 것입니다. 이로 인해 기능 중복과 코드 충돌 가능성이 높아졌습니다.
이 문제를 해결하기 위해 분석 관점을 세분화하는 전략을 채택했습니다:
이러한 접근 방식의 장점은:

이 아키텍처의 주요 구성 요소:
1. API Layer: 사용자 요청 처리 및 응답 관리
2. Data Processor: 외부 금융 API(Alpha Vantage 등)와의 통신 및 데이터 정제
3. Analysis Engine: 수익성, 안정성 분석 로직 수행
4. Presentation Layer: 분석 결과를 사용자 친화적 형태로 변환
프로젝트가 진행됨에 따라 특히 alpha_vantage.py 파일이 1,000줄에 가까워지면서 코드 관리의 어려움이 발생했습니다. 이는 개발 속도 저하와 버그 발생 가능성 증가로 이어질 수 있었습니다.
src/
tools/
us_stock/
alpha_vantage.py # ~1,000줄의 복잡한 코드
tool.py
src/
tools/
us_stock/
alpha_vantage_client.py # API 호출 및 데이터 가져오기
alpha_vantage_profitability.py # 수익성 분석 로직
alpha_vantage_stability.py # 안정성 분석 로직
alpha_vantage_formatters.py # 결과 포맷팅
__init__.py # 패키지 내보내기
tool.py # 기존 코드 호환성 유지
이러한 구조 변경은 다음과 같은 이점을 가져왔습니다:
리팩토링 과정에서 가장 큰 도전은 기존 코드와의 호환성을 유지하는 것이었습니다. 특히 다음과 같은 오류가 발생했습니다:
ModuleNotFoundError: No module named 'src.tools.us_stock.alpha_vantage_analyzers'
이는 모듈 구조 변경으로 인한 임포트 경로 문제였습니다. 해결 방법으로:
tool.py 파일을 유지하며 내부적으로 새 구조 사용__init__.py에서 필요한 기능 노출특히 alpha_vantage_client.py 파일에서 다음과 같이 임포트 구문을 수정했습니다:
# 수정 전
from .alpha_vantage_analyzers import analyze_financial_data
# 수정 후
from . import analyze_financial_data
리팩토링을 통해 코드 구조만 개선한 것이 아니라, 실제 기능도 강화했습니다:
# 개선된 ROE 평가 예시
if roe_value > 20:
analysis["roe_evaluation"] = "Exceptional ROE - Top tier profitability"
elif roe_value > 15:
analysis["roe_evaluation"] = "Excellent ROE - Strong profitability"
elif roe_value > 10:
analysis["roe_evaluation"] = "Good ROE - Above average profitability"
elif roe_value > 5:
analysis["roe_evaluation"] = "Average ROE - Moderate profitability"
else:
analysis["roe_evaluation"] = "Below average ROE - May indicate profitability concerns"
리팩토링과 기능 개선의 결과로, 다음과 같은 형태의 더 상세하고 유용한 분석 결과를 제공할 수 있게 되었습니다:

전반적인 평가: 업계 최고 수준의 수익성. 매우 뛰어난 실적을 보이고 있습니다.
자기자본이익률(ROE): 3710%
총자산이익률(ROA): 1690%
이익률 분석:
수익성 추세:
전반적인 평가: 매우 안정적인 재무 구조, 흔히 말하는 ‘요새 같은 재무제표’입니다.
유동성 분석:
부채 및 레버리지 분석:
현금흐름 분석:
이번 리팩토링 경험을 통해 몇 가지 중요한 교훈을 얻었습니다: