Untitled

Untitled

직무 설명, Backend Tech Leader

founding member 첫 개발자로 시작해 12명(개발자 4명), 첫 시드 투자 부터 TIPS, 다음 라운드 까지 회사와 함께 성장했습니다.

  1. B2B SaaS 플랫폼 steelboso main backend eginner, admin, 비즈니스 로직, API 개발
    1. python based stack, django, drf, celery
  2. 연구소 기업 선정, 소장으로 steelboso 에 필요한 아래 항목 연구
  3. 고객 데이터 수집 및 데이터 분석, EFK 기반으로 데이터 처리와 시각화
    1. elastic search clustering, fluentd, kibana

본인이 기여한 점

  1. B2B SaaS 플랫폼 신규 backend 개발을 0 to 1 으로, 설계부터 구현까지 개발하였습니다. (아래 전체 개괄도)

    Untitled

    1. API & back-office: Django, DRF / TDD
    2. Infra (AWS): ELB, EC2, S3, Route53, RDS(MySQL), Cloud Watch, ElastiCache(Redis)
    3. DevOps
      • sentry, jenkins - On promise
      • Elastic Search & Fluentd & Kibana
  2. R&D “TIPS - 데이터 관리 인프라 기술을 적용한 머신러닝 기반 플랜트 자재 중개 거래 플랫폼 개발” 의 연구개발과제 TIPS 선정 성공

    1. http://www.jointips.or.kr/bbs/board.php?bo_table=contents&wr_id=656&sfl=wr_3&stx=4
    2. 핵심 기술은 아래와 같습니다.
      1. ETRI 의 기술 이전을 기반으로 한 멀티테넌시 형태 데이터 활용 샌드박스, 이를 기반으로 자체 데이터 관리 인프라 기술 도입
      2. 수십억 가지수가 가능한 플랜트 자재에 대해 자동 견적을 위한 KoBERT (pre-trained model) 기반 “어떤 자재인지 파악하는 AI model” 개발
  3. 외주 레거시 코드로 부터, 전체 리뉴얼을 진행하여 평균 API 반응속도 150% 이상 최적화

    1. RPS(Requests per Second)와 Latency를 최적화
    2. ORM 최적화, 캐싱(redis), celery, celery beat 활용
  4. EFK로 web server log 분석, 고객 유입 데이터 분석으로 고객의 행동을 추적했고, 견적요청(구매 전환율)을 5% 에서 20%로 상승시켰습니다.

    1. 그에 따라 매출 10배 가까이 상승
    2. 1건 / 달 에 가까운 온라인 매출을 평균 2건 / 주 이상 매출 달성

어려웠던 점

  1. 플랜트 도메인에 대한 이해
    1. 해당 프로젝트는 플랜트 산업의 “자재 유통” 과 “수-발주, 견적” 이 핵심이었습니다. 그렇기 때문에 현업에 대한 이해가 없이는 B2B SaaS의 서비스로직을 잘 만들긴 불가능에 가까웠습니다.
    2. EPC 산업에 대한 이해부터 출발했습니다. 생소했던 산업에 대해 기본부터, 한국 해양 플랜트의 중추인 부·울·경(부산, 울산, 경주)을 현장답습 하며 이해했습니다. 그리고 사업의 근간이 될 procurement(조달) 에 대해 더 자세히 살펴봤습니다.
    3. 플랜트는 해양플랜트의 파이가 가장 크며, “조달” 이 사업에서 아주 중요한 역할을 합니다. 여기서 수, 발주 - 견적에 대한 이해를 하고, 가장 먼저 한 큰 도전은 “자동 견적 시스템” 이었습니다.
  2. 비동기 작업과 결제 로직
    1. 자재 거래, 발주의 끝은 적게는 몇백, 많게는 억 단위의 결제 시스템이었습니다. 확실하고 신뢰성 있는 결제 제공을 위해 welcome payments restapi 결제 모듈과 연동 했습니다.
      • celeryredis를 활용해 비동기 결제 시스템을 구축했습니다.
      • 웰컴쪽에 결제를 진행하면, 사측에서 웰컴에서 사전에 정의한 url로 push noti를 줍니다. 해당 응답을 trigger로 하여 celery task를 execute하며 django 서버에서 결제 완료까지 진행이 됩니다.
  3. 배치성 작업
    1. 큰 규모의 데이터 대상은 아니었지만, daily, 또는 특정 이벤트를 trigger로 하여 batch 성격의 작업이 필요했습니다.
    2. 검색 순위를 매기는 것, 결제 처리 하는 것, 견적 관련 정상을 하는 것 등에 배치를 활용했습니다.
    3. celey를 활용하고 있었기 때문에 celery beatdjango admin 을 활용해 batch 작업을 구성했습니다.
    4. Task 라는 모델을 기반으로 배치 작업 하나에 대한 추상화 모델을 만들고, Template Method 패턴으로 run() 함수 상속으로 실제 구현하는 method 만 비즈니스 로직으로 따로 구현했습니다.