💼

직무 경험

생성일
Feb 13, 2022 10:09 AM
편집일
Last updated August 27, 2023
태그

Supertone

2023.1 ~ now
💡
하이브에 인수된 오디오 AI 스타트업
  • 풀스택 개발자 직무로 이직 후 백엔드 개발을 메인으로 일하는 중
상세 작업
  • 23.9~: Admin Frontend & Backend 개발
  • 23.8: B2B용 API 개발 후 배포
    • Job execute manager 개발
      • Why?
        • API에서는 많은 요청을 처리 할 수 있지만, 그 API에서 또 torchserve로 요청을 하고 그 결과를 받아서 사용자에게 보여주기 때문에 torchserve로의 부하가 많았음.
      • How?
        • Typescript로 master node, worker node, queue를 만든 후 많은 요청이 오더라도 queue에 저장하고 worker가 사용 가능할 때만 작업 처리하도록 개발
    • 동기인 API 비동기로 개발 (socket.io로 비동기 작업 완료 후 결과 전달)
    • API stress test
      • nodejs CLI로 동시에 여러 요청하고 그 결과를 socket으로 받은 후 총 걸린 시간을 측정
      • 데이터독 모니터링으로 CPU, Memory 사용량 확인
    • 데이터독 연동 (로그 및 APM 설정)
    • 기타 버그 수정
    • 기술스택: Clean architecture with DDD (nestjs framework)
  • 23.5~23.7: API 리팩토링
    • Before) expressjs로 google cloud function 배포
    • After) nestjs로 도커 이미지 만들어서 EKS 배포
    • How
      • Clean architecture with DDD 스터디
      • 복잡한 의존성 해결을 위해 내부에 있었던 keygen 관련 코드를 별도의 npm package로 빼냄. (keygen-ts)
      • Dockerfile, Github action CI
    • 기술스택: Clean architecture with DDD (nestjs framework)
  • 23.3~23.4: Data crawling
  • 23.1~23.2: Onboarding
    • 개발한 Python 레포지토리 환경설정
      • 기술스택: FastAPI
    • Python 스터디(Fluent Python)하며 Python 3.9에서 3.10으로 업그레이드
    • Python Logging
      • JSON Logging 해서 ElasticSearch 연동 (Istio에서 JSON logging일때만 기록하도록 필터가 있었어서..)
 

텐핑거스

2021.4 - 2022.12 (서울)
💡
500만 다운로드 데이트코스 1위 앱
  • 팀장 직책으로 이직 후 안드로이드, iOS, 서버를 리딩하며 데이트팝 서비스 신규 기능 개발
상세 작업
  • 22.7~22.12
    • 데이트팝 앱 첫 화면 리뉴얼
      • Why
        • 앱의 첫화면이 매우 옛날 UI로 개선이 필요했음.
        • 기존 앱에서 지도에서 지역에 대한 것이 다 앱에서 하드코딩 되어 있어서 수정하기 어려웠음.
        • 서버에서도 하드코딩 되어있어서 새로운 지역 추가하는 것이 어려웠음.
      • How
        • 지역에 대한 설정을 데이터베이스 테이블 만들어 서버에 있었던 하드코딩된 정보 다 제거
        • 새로운 지역을 쉽게 추가 할 수 있게 만들고 여러 지역을 하나로 그룹핑하는 것을 개발함
          • 상품이 너무 없는 작은 지역은 합치도록 구현
          • 예) 부산-영도, 부산-서구, 부산-중구를 부산-(영도,서구,중구)로 하나로 만들고 각각에 포함된 상품이 하나로 합쳐지도록
        • 지도에서 상위에서 하위로 타고 들어가게 되어있는데 그것을 Linked list처럼 구현해서 앱에 내려주고 Admin에서도 연결하는 것을 구현
        • 기술스택: React, FastAPI
    • 데이트팝 외 새로운 서비스 개발
      • Why
        • 데이트팝은 10-20대가 사용하는 앱으로 30-40대를 타켓으로 하는 서비스 필요성 ↑
      • How
        • ‘나들이팝’ 서비스 기획 참여하며 MVP 개발
        • 외부 데이터베이스와 기존 데이트팝 데이터베이스를 활용해서 초기 데이터 확보
        • 네이버와 구글 잘 연동해서 컨텐츠 채워넣도록 구현
        • 기존 데이트팝에서 데이터베이스 설계상 어려웠던 것을 새로 데이터베이스 설계하며 해결
          • 어드민에서 기본 정보 수정 가능하도록 구현
        • 기술스택: Nextjs, React, FastAPI
  • 21.11~22.2
    • 구독 서비스(팝패스) 백엔드 개발
    • Why
      • 신규 기능 개발
      • 기존 서비스는 광고 배너 수익과 상품 판매 수익만 있어서 구독하는 BM이 필요했음.
    • How
      • 구독 결제 구현
        • Nicepay와 구독에 대한 계약 체결 후 연동 (구독 결제는 주기적으로 결제가 이뤄져야하기 때문에 계약도 별도고 API도 따로 있다.)
        • AWS EventBridge, AWS Lambda를 이용해 매일 구독 연장 대상자를 찾은 후 결제 갱신
        • 결제 성공, 실패에 따른 카카오톡 알림톡 전송
      • 구독 컨텐츠
        • 구독한 사람 검증하는 어플리케이션 로직
          • 구독 기간에 포함되어있는지 체크
          • 구독 기간이 끝나더라도 이전 구독 기간에 구매한 것은 확인 가능해서 그걸 볼 수 있는지 권한
        • 구독한 사람이 볼 수 있는 상품
          • 설정 된 상품을 API로 내려주도록 설정
            • 미리보기 상품인 경우 blur 처리해서 이미지 내려주도록 설정
              • blur는 golang으로 CDN 개발한 곳에서 뒤에 URL param으로 수치를 주면 blur된 것을 내려주도록 구현
          • Admin에서 상품 별 설정 가능하도록 개발
      • 기술스택: Golang echo, FastAPI
  • 21.10
    • Storage migration (GCP storage → AWS s3)
      • Why
        • 모든 클라우드 자원을 Google → AWS하는 과정에 스토리지를 구글에서만 사용하고 있어서 불필요한 네트워크 트래픽이 많이 발생하고 그에 따라 스토리지 비용이 많이 나왔음.
      • How
        • API에서 사용하지 않는 이미지 등의 파일은 CLI sync로 맞춤.
        • API에서 사용하고 database에서 파일 path도 같이 기록하고 있는 경우
          • Django ORM에서 ImageField별로 바라보는 스토리지 설정이 가능해서 하나 수정하고 배포하며 Database 업데이트도 같이 진행
      • 기술스택: Django, DRF
  • 21.9
    • 자동 이메일 전송 및 수신확인 서비스 구현
      • Why
        • 큐레이션 상품을 구매하면 PDF를 구매자한테 보내줬는데 이 모든 과정이 수동이였음.
          • 한명의 담당자가 매일 출근하면 전날 구매자 조회 후 그 구매자의 이메일 하나 하나 보고 이메일 개별 전송해서 매일 시간이 최소 30분 이상 소모됐음.
        • 구매 확정을 해야 주문취소를 할 수 없는데 이메일을 보내고 구매 확정 할 방법이 없었음.
        • PDF는 암호화되지 않았기 때문에 무분별하게 유통되는 것을 막을 방법이 필요했음.
      • How
        • 구매하면 구매자의 이메일로 자동으로 PDF 보내는 것을 개발함.
          • PDF는 구매자의 전화번호로 암호화해서 유통하는 것을 조금이나마 막음.
        • 이메일 보내기 성공하면 바로 구매확정하고 이미지를 통해 수신확인하는 기능을 추가해 CS 대응을 원할하게 할 수 있도록 개발함. (어드민 페이지에서 조회해서 확인 가능하게 개발)
        • 초기 개발 시작할 때 필요했던 기능은 아니지만 이메일을 보낼 때 구매하지 않은 큐레이션 상품을 메일 내용에 넣어서 추가 구매하도록 유도함. (이메일에 해당 상품으로 바로 이동하는 딥링크 추가) → 연이어 구매하는 사용자 증가
      • 기술스택: Django, Google mail
  • 21.7~8
    • 데이트팝 기획전 웹 개발
      • Why
        • 이 때 기준 3년전 UI로 업데이트가 안되고 있는 웹이라 UI 업데이트가 필요했음.
        • Angularjs로 되어있는 사이트라 최신 기술스택으로 리팩토링이 필요했음.
        • 웹 구매전환이 낮아서 구매 UX 개선과 앱으로 연결되도록 하는 등 마케팅에서 필요한 기능 개발이 필요했음.
      • How
        • Nextjs 기술스택 도입
          • 이커머스 형태로 상품을 구매하는 웹페이지라 서버사이드 렌더링으로 페이지 캐싱해서 보여주는 것이 적합하다 판단
        • 마케팅팀과 협업하며 필요한 기능(GA, App 딥링크) 개발
      • Result
      • 기술스택: Nextjs (12.x), React
  • 21.4~21.6
    • 매출, 수익을 일별, 월별 보는 통계 어드민 개발
      • Why
        • 기존에도 통계 보는 어드민은 있었지만 3년전 개발 이후 손놓은 상태여서 그 당시 필요한 통계 지표가 없었음. 지표 외 기능도 필요한데 없어서 엑셀로 복붙해 수작업을 했음.
        • 프론트는 angularjs로 개발 된 웹사이트라 유지보수가 어려웠음.
        • 백엔드도 Django 1.x 버전으로 매우 옛날 버전을 쓰고 US 지역에 배포되어 있어서 속도가 느렸음.
      • How
        • 새로운 Admin인 React 기반으로 프론트 개발
        • 새로 필요한 통계 지표를 계산해서 내려주도록 백엔드(DRF, Django ORM) 개발
          • DRF로 개발한 API는 한국 EKS에 배포해서 속도도 개선
      • 기술스택: React, Django ORM, DRF
 

티맥스와플

2020.1 - 2021.4 (경기도 성남)
💡
Tmax WAPL(티맥스와플)은 메신저, 화상회의, 메일, 드라이브, 캘린더, 노트 등 업무 관리가 한 번에 가능한 통합 협업 플랫폼
  • 캘린더노트를 담당하는 팀에서 1년 4개월간 일했습니다. 20년도 9월부터 팀장 직책을 맡았고 캘린더의 개발에 직접적인 관여를 하며 노트는 관리의 역할만 했습니다.
상세 작업
  • 20.9~21.4
    • 캘린더 프론트엔드 위주로 개발 담당
    • 캘린더, 노트 관리하고 데이터베이스 및 인프라 설계
    • 21.2 와플 출시 (https://wapl.ai)
    • 기술스택: React, Tibero(Tmax Database)
  • 20.3~20.8
    • 자사 프론트엔드 프레임워크를 통해 캘린더 개발 → 이후 React로 마이그레이션 완료
    • 기술스택: TOP(Tmax frontend tool), React
  • 20.1~20.2
    • 짧은 기간이지만 TF로 AI (음성인식, 챗봇) 공부
 

대학교

13학번 유니스트 컴퓨터공학 전공 / 경영 부전공
(경영학부로 입학 후 군대에서 개발 접한 후 컴공으로 전과)
 

동아리 활동

  • UNIST Journal (2년)
    • 영자 신문 동아리 기자 활동
  • 탁구 동아리 (3년)
  • 테니스 동아리 (2년)
 

외부 활동

  • LG CNS 중학생 IT봉사활동 (2회 진행)
    • 서울 중학교에서 아두이노로 자동차 로봇 교육
  • 아프리카 가나 IT봉사활동 (2016년에 3주간)
    • 고등학교에서 Python으로 웹사이트 만들어서 GAE(Google App Engine)에 배포하는 것까지 교육
  • 5개 과기원 체육대회 스타디움 참여
    • 17, 18, 19년도 탁구 종목 참여
  • 교내 스타트업 대회 참여해서 1등 → 5개 과기원 스타트업 대회 참여 (공동 창업경진대회 JETS)
    • 아이디어는 소액으로 투자 가능한 로보어드바이저
    • 공동 창업경진대회 JETS 참가해서 발표
    • 스타트업 활동은 CTO로 6개월 ~ 12개월 했음
    • Tensorflow로 예측 모델 만들고 그 결과를 Python library wx 사용해서 GUI로 그래프로 보여주는 작업함
  • 크래프트테크놀로지스에서 학교 다니며 인턴 6개월
    • 주식 정보 크롤링 후 데이터 정제해서 저장
    • LSTM 이용해서 주가 예측 후 포트폴리오 이론 적용
    • ETF로 구성된 포트폴리오 결과물을 은행 2곳에 전달 (3개월마다 리밸런싱)