B사 프로젝트 이력

목차

  1. 이더리움 환전 플랫폼 개발
    1. 프로젝트 개요
    2. 핵심 성과 및 의사결정 이력
      1. 1. pytest 도입 및 Mocking 적용을 통한 테스트 환경 구성
  2. 가상화폐 채굴 모니터링 시스템 개발
    1. 프로젝트 개요
    2. 핵심 성과 및 의사결정 이력
      1. 1. Daphne 프로세스 다중화를 통한 데이터 수집 병목 현상 개선
      2. 2. 일일 스탠드업 및 정기 배포 프로세스 도입
  3. P2P 법인 투자 플랫폼 개발
    1. 프로젝트 개요
    2. 핵심 성과 및 의사결정 이력
      1. 1. PDF 보고서 생성 모듈의 인젝션 방어 및 메모리 관리
      2. 2. 비관적 락과 상태 머신을 활용한 금융 데이터 정합성 보장
      3. 3. 이메일 클라이언트 호환성을 고려한 템플릿 레이아웃 개선
  4. 기타 업무 및 활동

이더리움 환전 플랫폼 개발

프로젝트 개요

항목내용
기간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 파일 생성 요청으로 인한 메모리 초과를 방어함
  • 성과
    • 잠재적인 보안 취약점을 사전 조치하고 대량 데이터 변환 시 발생할 수 있는 장애 요인을 제거함

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의 개념, 프론트엔드와 백엔드의 차이, 요구사항이 개발 태스크로 나누어지는 과정 등 실무 협업에 필요한 기초 개념을 설명하는 시간을 가짐.

성과: 타 직군 동료들이 개발 흐름을 이해하게 되어 일정 산정 및 요구사항 정의 과정에서의 협업이 부드러워짐.