채용공고 올리기

안성현님을 응원해보세요!

좋은 제안에 열려있어요

미리보기

기본 정보

이름
안성현
직업
백엔드 엔지니어
간단 소개

카카오스타일 검색팀에 초창기에 합류하여 6년 차 검색 백엔드 엔지니어로서 일하고 있습니다. 최대 2억 건에 달하는 대규모 데이터 색인 프로세스 구축, 대용량 사전 데이터 처리 프로세스 구축, 상시 2백만부터 약 9백만까지의 트래픽 성장 등의 기술적 과제들을 담당했습니다. 기능 구현에 그치지 않고, 스스로 개선 포인트를 찾아 적용하며 일합니다. 사용자 데이터를 대시보드화하거나 모니터링 도구를 활용하여 사용성을 개선하고 병목 지점을 찾아내어 최적화하는 역량을 쌓고자 노력했습니다. 개발자가 서비스 개발에 적극적으로 참여하고, 비즈니스에 대해 고민하며 일할 수 있는 환경을 중요하게 생각합니다. 다양한 기술적 도전을 통해 비즈니스 성장에 기여할 수 있는 회사에서 일하기를 희망합니다.

기술 스택

기술 스택

Node.js, TypeScript, Elasticsearch, Kotlin, Spring, MySQL, AWS, Git, React

경력

회사명

주식회사 카카오스타일 (Kakao Style Corp.)

직급 | 부서 | 근무 유형

Search Back-End Engineer | 재직 중

근무 기간

2020.01. ~ 재직 중 (5년 1개월)

담당 업무

2024

상품 검색 서비스 코틀린 전환 (2024.07.~)

  • Node.js, Express 기반 프로젝트를 Kotlin, Spring Boot 기반 프로젝트로 전환

  • Elasticsearch 5.6을 Opensearch 1.3으로 업그레이드하여 성능 최적화 및 유지보수성 향상

    • Nori 형태소 분석기(Opensearch 1.0 이상 사용 가능)를 적용하여 색인/검색 속도 개선

  • 검색과 색인 서비스를 분리하여 단일 장애점(SPoF) 제거 및 서비스 안정성 개선

  • 미사용 필드 제거 및 source 필터링 기능을 통한 네트워크 Payload 사이즈 개선

지그재그 주문 검색 기능 개발 (2024.06.~2024.07.)

  • 기존 주문 조회 페이지에서는 상품명, 브랜드명, 스토어명으로 과거 주문을 검색할 수 없어 사용성 개선과 재구매율 향상을 위해 Elasticsearch를 이용한 주문 검색 기능 개발

  • 약 2억 건의 주문 데이터 색인 및 연도별 색인 Partitioning 처리

    • 주문 생성일을 기준으로 Dynamic하게 Index를 선택하여 색인하는 프로세스 개발

  • 문제 해결 및 성능 최적화: 대량의 데이터가 적재된 DB 환경에서 쿼리 성능 저하 문제 발생

    • 문제: 연도별 색인 데이터를 조회해야 했지만, 생성일 기반 쿼리가 예상된 실행 계획대로 작동하지 않아 성능 저하가 발생

    • 해결: 새로운 인덱스 추가가 불가능한 상황에서 생성일 기반 쿼리로 1차 조회를 수행하고, 연도별 최소, 최대 주문 ID를 활용해 연도별 주문을 효율적으로 스캔하도록 우회

검색 페이지 신규 상품 카드 디자인 적용 (2024.03.~2024.04.)

  • 지면별 상품 카드의 일관성을 위해 신규 디자인 시안을 서버 드리븐 구조의 상품 카드 컴포넌트에 적용

  • 신규 디자인을 통한 사용자 경험 향상 및 일관성 강화

추천검색어 서비스 코틀린 전환 (2024.01.)

  • Node.js, Express 기반 프로젝트를 Kotlin, Spring Boot 기반의 프로젝트로 전환

  • 정렬 로직 개선 및 Local memory cache 적용, Latency p95 기준 90% 속도 향상

2023

검색 상품 API 응답 보정 (2023.12.)

  • 실제 데이터의 업데이트 시점과 Elasticsearch 문서 업데이트 시점의 차이로 인해 민감한 상품 정보(가격, 쿠폰 등)가 일정 시간 동안 과거 데이터로 노출되는 문제 해결

  • 검색 API에서 최종 가격 API를 호출하여 검색 결과 노출 시 민감한 상품 정보를 최신 상태로 보정

스토어홈 검색 기능 개선 (2023.11.)

  • 스토어홈 검색 사용성을 개선하여 검색 사용량 증대

  • 사용자 로그 기반의 스토어홈 인기 검색어 색인 및 API 개발, Local memory cache를 이용한 Latency 최적화

  • 서버 드리븐 구조의 검색 필터를 노출하여 스토어홈 내 다양한 검색 기능 제공

검색 상세 옵션 필터 사용성 개선 (2023.07.~2023.09.)

  • 검색 페이지의 상세 옵션 필터는 카테고리 필터에 귀속되어 카테고리 선택 후 사용 가능하여 다른 필터와의 일관성이 떨어지고 Depth로 인해 사용성이 낮음

  • AWS Athena에 적재된 사용자 클릭 로그를 기반으로 검색 키워드와 카테고리를 매핑한 데이터 생성

    • 예시: 플라워 원피스 - 원피스 카테고리

  • 검색 키워드와 카테고리 매핑 데이터를 기반으로 상세 옵션 필터 사용 시 매핑된 카테고리를 자동 지정하여, 카테고리 필터 선택 없이 상세 옵션 필터 사용 가능하도록 개선

  • 개선 적용 후 실험군 그룹의 필터 적용률 94% 향상, 총거래액 88% 증가

스토어 검색 서비스 코틀린 전환 (2023.07.)

  • Node.js, Express 기반 프로젝트를 Kotlin, Spring Boot 기반의 프로젝트로 전환

  • Elasticsearch 5.6을 Opensearch 1.3으로 업그레이드하여 성능 최적화 및 유지보수성 향상

  • 전환 후 Latency p95 기준 47% 속도 향상

  • 불필요한 로직 개선으로 문서 전체 색인 시간 75% 단축

인기 검색어 개선 (2022.12.~2023.01.)

  • 사용자 로그 기반의 인기 검색어 업데이트 주기를 30일에서 1일로 변경, 랭킹 UI 변경을 위한 인기 검색어 랭킹 데이터 적재

  • 검색창 진입점에 따라 맞춤형 인기 검색어를 제공하는 구조로 개선

    • 예시: 뷰티 검색창 → 뷰티 인기 검색어 노출

  • 추천검색어 기능을 구현하여 기존 인기 검색어 영역을 대체하고, 전략 키워드를 노출할 수 있도록 개선

2022

검색 페이지 서버 드리븐 구조 전환 (2022.07.~2022.11.)

  • 기존 구조의 유지보수 비용 증가 및 유연성 부족 문제를 해결하기 위해 서버 드리븐 구조로 전환

  • 앱을 stateless하게 유지하여 유지보수 비용 절감 및 변화에 신속하게 대응 가능한 유연한 시스템 구현

    • 클라이언트에서 UI 컴포넌트를 앱 업데이트 없이 서버 작업만으로 유연하게 변경 가능

  • GraphQL Schema 설계 및 Kotlin, Spring Boot 기반의 API 구현

통합검색 (2022.04.~2022.07.)

  • 기존의 탭으로 분리된 상품 검색과 스토어 검색 결과를 통합하여, 한 페이지에서 스토어 정보와 상품 검색 결과를 바로 보여주도록 사용자 검색 경로 단순화

  • 서버 드리븐 방식의 스토어 검색결과 제공을 위한 GraphQL Schema 설계 및 Kotlin, Spring Boot 기반 API 구현

  • iOS: 전환율 11%에서 20%로 증가 (약 81% 개선)

  • AOS: 전환율 8%에서 14%로 증가 (약 75% 개선)

에픽 콘텐츠 검색 기능 개발 (2022.02.)

  • 사용자가 패션 콘텐츠를 업로드할 수 있는 에픽 서비스의 신규 검색 기능 개발

2021

자동완성 검색 서비스 개선 (2021.11.~2021.12.)

  • 자소 분리 기능을 자동완성 검색에 적용하여, 입력된 검색 키워드와 자동완성 키워드가 완전히 일치하지 않아도 관련 검색 결과를 제공하도록 개선

    • 예시: 슬랛 입력 시 슬랙스 제안

지그재그 글로벌 (2021.10.~2021.12.)

  • 지그재그 글로벌 서비스 제공을 위해 Elasticsearch에 다국어 데이터 색인 및 글로벌 검색을 위한 색인 프로세스 개발

  • 사용자가 요청한 국가에 맞춘 맞춤형 검색 결과를 제공하여 사용자 경험 최적화

검색 결과 없음 페이지 개선 (2021.11.)

  • 사용자가 검색 결과 없음 화면을 마주하지 않고 연속적인 탐색을 할 수 있도록 개선 작업 진행

  • 검색 결과 로그를 Elasticsearch에 적재, Kibana를 이용한 Search Null Rate 대시보드 구축

  • 대시보드를 토대로 검색 결과에 실제 적용 가능한 필터만 노출, 비정상 형태소 분석 사례 수정, 검색 필드 확장과 같은 개선 작업 진행

  • Search Null Rate: 7%에서 1%대로 감소 (약 86% 개선)

대용량 사전 데이터 처리 프로세스 개발 (2021.05.~2021.06.)

  • AWS Elasticsearch Custom Package 기능을 이용해 등록된 사전 데이터가 포함된 Package를 Index 생성 시 연결하도록 개선

  • 기존 1만 건의 데이터도 처리가 불가능했지만, 개선 이후 10만 건 이상의 사전 데이터를 처리할 수 있도록 개선

신규 상품 검색 서비스 개발 (2021.03.~2021.05.)

  • 더 많은 셀렉션 확보를 위한 통합 상품 DB 구축에 따른 신규 상품 검색 기능 개발

  • Elasticsearch와 Jenkins를 이용해 상품 전체/증분색인 프로세스 구현, 상품 필터/집계 기능 구현

2020

자동완성 검색 개선 (2020.08.~2020.09.)

  • 기존의 Wildcard query 기반 자동완성 기능을 N-gram tokenizer 기반의 검색으로 전환하여 Latency 개선

    • 빈번하게 발생하던 Timeout 에러 해소

  • Elasticsearch Multi search API를 활용해 병렬로 다중 Index 검색 요청을 처리하여 추가적인 Latency 개선

상품 검색 전체 색인 프로세스 개발 (2020.02.~2020.03.)

  • Elasticsearch Index 설정 중 무중단 업데이트가 불가능한 analyzer, shard 등 일부 옵션을 위해 신규 Index 생성 및 데이터 색인 프로세스 개발

  • Elasticsearch의 Alias 기능을 활용한 무중단 Index 교체 구현

회사명

주식회사 카카오스타일 (Kakao Style Corp.)

직급 | 부서 | 근무 유형

Back-End Intern

근무 기간

2019.07. ~ 2020.01. (7개월)

담당 업무

지그재그 상품 연동

  • CoffeeScript와 TypeScript를 이용해 지그재그 서비스의 신규 입점 스토어 상품 정보 스크래핑

  • 상품 미연동 이슈 처리

지그재그 파트너센터 개발 및 유지보수

  • 지그재그 입점 스토어 관리자 페이지인 파트너센터의 신규 기능 개발 및 유지보수

  • 파트너센터 공지 사항/도움말 검색 기능 추가, 메일링 리뉴얼 디자인 적용, 사용 매뉴얼 업데이트 등의 작업 진행

서비스 전반의 레거시 코드 전환

  • CoffeeScript를 TypeScript로, REST API를 GraphQL 기반 API로 전환하여 코드 유지보수성 향상

    • 약 11만 라인의 레거시 코드 제거

댓글