업무 경험
📐

업무 경험

 

(주) 그렙

notion image
개발자의 성장을 위한 모든 것을 고민하는 개발자의
교육 / 평가 / 채용 서비스를 제공하는 스타트업
 

채용 서비스팀 SW Engineer

채용 서비스팀은 개발자에게 많은 기회를 제공하는 유용한 채용서비스를 만듭니다.
 
근무 기간: 2020-12 ~ 현재
주 활용 기술: Ruby on rails, Vue.js, Ruby, PostgreSQL
보조 활용 기술: Docker, Aws Personalize
 
주요 업무
  • Ruby on rails 프레임 워크를 활용한 풀스택 개발
  • Jbuilder를 활용한 API 개발 및 Apipie를 활용한 문서화
  • 채용 서비스를 위한 DB/모델 설계
상세 업무
  • 비지니스 프로그래머스 - 개발자 검색 기능 개편
    • notion image
    • 업무 기간: 2021-12 ~ 2022-03
    • 활용 기술: Ruby on rails, Apipie(Swagger Docs)
    • 개발자 검색은 B2B 서비스로, 구직 중인 개발자의 이력서(프로필)를 조회하고, 채용 포지션 제안을 보내는 기능을 제공하는 서비스입니다.
    • 개선 전
      • 1) 기업이 개발자에게 보내는 채용 포지션 제안과 개발자가 기업에 지원하는 지원서 는 서로 다른 역할을 하는 존재임에도, 같은 job_applications 테이블에 Datetime 타입의 컬럼으로 구분되고 있었습니다.
      • 2) 개발자를 숨김 처리하는 기능, 북마크하는 기능 등이 user_company_statuses 라는 단일 테이블로 모델 구분 없이 관리되고 있었습니다.
      • 3) Vue.js 와 API 서버가 분리되어있었음에도, API에 대한 문서화가 없었습니다.
      • 4) 개발자의 프로필의 서로 유사도 혹은 내용에 대해 정성적으로 검색할 필요가 없음에도 ElasticSearch를 활용한 프로필 조회를 통해 검색 결과를 노출하고 있었습니다. 이에, 개발자의 프로필이 1만 건이 넘었기 때문에 ElasticSearch의 max_result_window_size를 넘어서 모든 프로필도 노출하지 못한 채 제한하고 있었습니다.
    • 개선 과정 및 개선 결과
      • 1) 채용 포지션 제안은 job_profile_offers, 지원서는 job_applications로 분리하였습니다. 이를 통해 개발자가 지원을 하지 않고 제안을 했음에도 지원자 가 되는 경우를 막았습니다. 이를 통해, 유저가 제안 프로세스와 지원 프로세스를 별도로 분리할 수 있었습니다.
      • 2) 숨김 처리하는 기능은 blocked_job_profiles로 분리하여 관리하였습니다. 북마크 하는 기능은 기존 기능을 발전시켜 북마크 그룹 기능을 추가하였고, job_profile_bookmarks, job_profile_bookmark_groups 테이블(모델)을 만들었습니다. 이를 통해 사용자가 원하는 개발자를 손쉽게 북마크하고, 분류하면서 채용 포지션 제안을 손쉽게 할 수 있게 되었습니다.
      • 3) 프론트엔드 개발자들과 협업하기 위해 API에 대한 문서화를 진행하고자 했습니다. Apipie ruby gem을 활용해 Swagger Docs를 추가 작성했습니다. 여기에 더해 해당 Gem에서 제공하는 auto_response_validation을 프로그래머스 환경에 맞게 커스텀하여 작성된 문서API Response 결과가 일치하는지 검사하는 자동 검증 테스트를 추가했습니다.
      • 4) ElasticSearch를 통한 인덱싱으로 개발자 검색 결과를 노출하고 있었기 때문에, 여러 테이블(모델)을 n:m 조인하여 정보를 가져오는게 사실상 불가능했습니다. (모든 결과를 인덱싱해야 하기 때문입니다.) 따라서 모든 검색 쿼리를 인기순/추천순 등의 쿼리를 포함해 DB 쿼리로 전환하는 작업을 수행했습니다.
  • 프로그래머스 - Github 분석 기능 개선
    • notion image
    • 업무 기간: 2021-08 ~ 2021-09
    • 활용 기술: Ruby, Docker, Rugged, Amazon ECS
    • Github 분석 기능은 개발자가 자신의 Github 계정을 연결하고, Github에 올려놓은 Repository 들의 분석결과를 확인하는 기능입니다. 또한, 자신의 이력서에 해당 결과를 첨부할 수 있었습니다.
    • 개선 전
      • 1) 프로그래머스 서비스에서 제한한 일부 언어목록에 한해서 분석 결과가 만들어지고 있었습니다.
      • 2) Commit이 1개만 이루어진 Repository가 분석되지 않고 있었습니다.
      • 3) 모든 Repository의 분석결과가 나타나고 있지 않았습니다.
    • 개선 후
      • 1) 분석기에서는 모든 언어를 분석하여 데이터가 내부 DB에 쌓이도록 개선하였습니다. 이를 통해 특정 언어가 분석되지 않아 불편을 겪은 유저의 문의를 해결할 수 있었습니다.
      • 2) 시작점이 되는 HEAD commit의 분석결과를 포함하여 분석 정확도를 올렸습니다.
      • 3) Rugged Gem의 코드가 잘못 활용되어 20개의 Repository만 분석되고 있었으며, 그보다 많은 Repsitory를 가진 유저들의 Github분석 정확도를 올릴 수 있었습니다.
  • AWS Personalize를 이용한 채용공고 추천 포지션 노출 방식 개발
    • notion image
    • 업무 기간: 2021-08 ~ 2021-09
    • 활용 기술: AWS CLI, AWS Personalize, Ruby on rails
    • ElasticSearch를 기반으로 사용자에게 채용 공고(JobPosition)를 노출시키는 방식에서, AWS Personalize를 통해 개인화된 추천 채용공고를 노출시키는 방식을 적용했습니다.
    • 개선 결과
      • 사용자마다 개인화가 제대로 되지않은 포지션을 추천하다보니, 추천 포지션과 일반 포지션의 지원율 차이가 크게 없었습니다. 이에 AWS Personalize를 통한 추천 포지션을 노출하고자 했습니다.
      • 하지만, 오히려 AWS Personalize를 통한 성과가 더 안좋게 나왔습니다. 이에 문제 분석을 하였고, 여타 다른 컨텐츠와 달리 채용공고는 가장 추천되는 채용공고더라도 사용자의 마음에 들지 않는다면 노출이 되지 않아야 하는데, 해당 채용공고를 소비(지원)하지 않으니 계속 같은 채용공고만 추천하고 있는 현상이 있었습니다.
      • 이에 추천 포지션을 노출시킬 때, 최상위 추천 포지션들을 시간에 따라 로테이션하는 로직을 추가하였고, 이전 결과보다 약 2배 높은 클릭율과 지원이 일어났습니다.
기타 사항
  • 2020-12 ~ 2020 - 02까지 인턴 근무 후, 정규직 전환되었습니다.

Algorithm Content Creator(인턴)

근무 기간: 2020-06~2020-08, 2019-12~2020-02, 2019-06~2019-08
주 활용 기술: C/C++, Python, Java
 
주요 업무
  • 프로그래머스 서비스에 사용되는 알고리즘 컨텐츠/문제를 제작했습니다.
  • 타 출제자의 문제를 검수/검증하는 직무를 수행했습니다.