B사 프로젝트 이력
목차
이더리움 환전 플랫폼 개발
프로젝트 개요
| 항목 | 내용 |
|---|---|
| 기간 | 2022.11 ~ 2023.10 (1년) |
| 업무/프로젝트 | 이더리움 환전 플랫폼 백엔드 Admin API 개발 및 배포 (PM: 1 / BE: 2 / FE: 1) |
| 목적/기술 스택 | 실시간 이더리움 환전 및 관리 시스템 구축 / Python, Django, Pytest |
| 대상/개발 환경 | Linux, PostgreSQL, Docker, AWS |
핵심 성과 및 의사결정 이력
1. pytest 도입 및 Mocking 적용을 통한 테스트 환경 구성
- 문제
- 기존 프로젝트에 테스트 코드가 없어 신규 기능을 추가하거나 배포할 때마다 수동으로 결제 로직의 이상 유무를 확인해야 하는 불안정성이 있었음
- 해결
- 테스트 프레임워크 전환: 기존 Django 기본 Test Suite 대신 간결하게 작성할 수 있는 pytest를 도입하여 테스트 작성 환경을 구성함
- Mocking 적용: 외부 결제망(PG)과 이더리움 노드와의 연동 때문에 테스트가 지연되거나 실패하는 문제를 해결하기 위해 외부 통신을 Mock/Stub으로 대체함
- 성과
- 기능 변경 시 자동으로 회귀 오류를 확인할 수 있는 기반을 마련하였으며, 테스트 커버리지를 52%에서 71%로 향상시켜 배포 과정의 리스크를 줄임
가상화폐 채굴 모니터링 시스템 개발
프로젝트 개요
| 항목 | 내용 |
|---|---|
| 기간 | 2021.12 ~ 2022.08 (9개월) |
| 업무/프로젝트 | 가상화폐 채굴 모니터링 시스템 백엔드 API 개발 및 배포 (PM: 1 / BE: 1 / FE: 2) |
| 목적/기술 스택 | 실시간 GPU 상태 수집 및 모니터링 / Python, Django, Django Channels, Redis |
| 대상/개발 환경 | Linux, PostgreSQL, Docker, AWS |
핵심 성과 및 의사결정 이력
1. Daphne 프로세스 다중화를 통한 데이터 수집 병목 현상 개선
- 문제
- 다수의 GPU 채굴 장비에서 들어오는 상태 데이터를 단일 서버 프로세스가 모두 처리하면서 CPU 병목과 간헐적인 데이터 누락이 발생함
- 인프라 환경상 서버의 스펙을 올리기(Scale-up) 어려운 제약이 있었음
- 해결
- 서버 사양을 높이는 대신, 단일 Daphne 프로세스를 4개로 분할 구동하도록 systemd 설정을 변경함
- 앞단의 Nginx Reverse Proxy를 통해 트래픽이 각 프로세스에 분산되도록 로드밸런싱 규칙을 적용함
- 성과
- 추가적인 비용 없이 프로세스 분산만으로 동시 커넥션 처리량을 확보하였으며, 데이터 수집 누락 문제를 해결하여 수동 보정 작업을 줄임
2. 일일 스탠드업 및 정기 배포 프로세스 도입
- 문제
- 개발자와 기획자가 소규모로 구성된 조직이었으나, 기능 배포 일정과 요구사항이 명확하게 동기화되지 않아 작업 지연이 종종 발생함
- 해결
- Wrike 도구를 활용하여 일일 스탠드업을 진행하고 작업 가시성을 높임
- 매주 정기 배포 후 변경된 API 명세와 릴리즈 노트를 팀에 공유하는 규칙을 마련함
- 성과
- 정기적인 소통과 공유를 통해 요구사항 불일치를 줄이고 협업 과정을 원활하게 개선함
P2P 법인 투자 플랫폼 개발
프로젝트 개요
| 항목 | 내용 |
|---|---|
| 기간 | 2021.01 ~ 2021.11 (10개월) |
| 업무/프로젝트 | P2P 법인 투자 플랫폼 백엔드 API 개발 (PM: 1 / BE: 3 / FE: 3) |
| 목적/기술 스택 | 법인 투자 프로세스 및 보고서 생성 자동화 / Python, Django, wkhtmltopdf |
| 대상/개발 환경 | Linux, PostgreSQL, Docker |
핵심 성과 및 의사결정 이력
1. PDF 보고서 생성 모듈의 인젝션 방어 및 메모리 관리
- 문제
- 투자 보고서를 PDF로 변환하는 모듈을 확인하던 중, 사용자 입력값이 템플릿 엔진(Jinja2)에 그대로 결합되어 처리되는 로직을 발견함
- 이로 인해 SSTI(Template Injection) 공격이 발생하거나, 비정상적으로 긴 텍스트 입력 시 서버 리소스가 고갈(OOM)될 위험이 있었음
- 해결
- 사용자 입력이 템플릿에서 실행 구문으로 인식되지 않도록 HTML 이스케이프(
escape()) 처리를 도입함 - 입력 텍스트 길이에 임계치를 두어 대형 PDF 파일 생성 요청으로 인한 메모리 초과를 방어함
- 사용자 입력이 템플릿에서 실행 구문으로 인식되지 않도록 HTML 이스케이프(
- 성과
- 잠재적인 보안 취약점을 사전 조치하고 대량 데이터 변환 시 발생할 수 있는 장애 요인을 제거함
2. 비관적 락과 상태 머신을 활용한 금융 데이터 정합성 보장
- 문제
- 금융 도메인의 특성상 동시 입출금이 발생할 때 데이터 데드락(Deadlock)이나 잔액 정합성 오류가 발생하지 않도록 제어해야 했음
- 해결
- 정합성 보장: 이체 및 정산 트랜잭션 시 데이터 꼬임을 막기 위해 데이터베이스의 비관적 락(Pessimistic Lock)을 적용하여 동시성을 제어함
- 상태 관리: 가상계좌의 입금 대기부터 결제 완료까지의 복잡한 비즈니스 로직을 상태 머신(State Machine) 패턴으로 구조화하여 상태 흐름을 관리함
- 성과
- 동시성 처리로 인한 데이터 정합성 문제를 예방하여 안정적인 금융 시스템 환경을 구축하는 데 기여함
3. 이메일 클라이언트 호환성을 고려한 템플릿 레이아웃 개선
- 문제
- 고객에게 발송된 이메일 보고서가 수신 클라이언트(Gmail, Naver 등)에 따라 CSS가 깨지는 현상이 발생함
- 해결
- 각 이메일 클라이언트의 렌더링 호환성을 고려하여, 외부 CSS 로드를 배제하고 HTML Table과 인라인 CSS 기반으로 템플릿을 리팩토링함
- 성과
- 다양한 이메일 환경에서도 일관된 레이아웃이 유지되도록 개선하여 관련 오류 문의를 최소화함
기타 업무 및 활동
| 업무 / 활동 | 상세 내역 |
|---|---|
| 비즈니스 용어 기반의 도메인 설계(DDD) 관점 공유 | • 목적: 조직 규모가 커지면서 기획과 개발 간의 용어 불일치로 인한 오해가 발생하여 공통된 이해 기준이 필요했음. • 수행: 비즈니스에서 사용하는 용어를 소프트웨어 모델과 코드에 일치시켜야 한다는 도메인 주도 설계(DDD)의 기본 개념을 정리하여 사내 미팅에서 공유함. • 성과: 기획 문서를 작성하거나 코드를 짤 때 동일한 비즈니스 용어를 사용하도록 유도하여 커뮤니케이션 비용을 줄이는 데 기여함. |
| 투자 분석용 금융 데이터 수집 파이프라인 구축 및 개선 | • 목적: 투자 전략 분석에 필요한 금융 데이터를 수동으로 확보하던 과정을 자동화해야 했음. • 수행: 1. Koscom API와 TradingView를 활용해 주식 및 외환 과거/현재가 데이터를 수집하는 스크립트를 작성함. 2. AWS EventBridge와 Lambda를 연결하여 매일 오전 지정된 시간에 수집 배치가 실행되도록 구성함. 3. 기존에 웹 브라우저를 띄워 외환 데이터를 수집하던 방식을 분석하여, API를 직접 호출하는 HTTP Request 방식으로 코드를 수정함. • 성과: 1. 데이터 수집 과정을 자동화하여 반복적인 수동 작업을 줄임. 2. 브라우저 렌더링 과정을 생략하여 수집 시간을 기존 약 90초에서 10~15초로 단축시킴. |
| 개발 협업 온보딩 가이드 진행 | • 목적: 신규 합류한 기획자나 디자이너가 개발팀의 작업 방식을 이해하고 원활하게 협업할 수 있도록 돕기 위함. • 수행: API의 개념, 프론트엔드와 백엔드의 차이, 요구사항이 개발 태스크로 나누어지는 과정 등 실무 협업에 필요한 기초 개념을 설명하는 시간을 가짐. • 성과: 타 직군 동료들이 개발 흐름을 이해하게 되어 일정 산정 및 요구사항 정의 과정에서의 협업이 부드러워짐. |