T
TechInsights
목록으로
Infra•2024. 06. 30.

신규 서비스 "꿀템"을 만들기 위한 여정(네? 다음달까지요?) -2편

지마켓
지마켓 Engineering Team
신규 서비스 "꿀템"을 만들기 위한 여정(네? 다음달까지요?) -2편

핵심요약

원문 보기

꿀템 서비스는 Typescript, React, Spring, Kotlin 등 최신 기술 스택을 활용하여 개발되었으며, Oracle DB 연동, HTMX를 활용한 Admin UI 구현 등 여러 기술적 도전과제를 해결했습니다.

꿀템 서비스 기술 스택 및 개발 과정 요약

프론트엔드 기술 스택 및 구현

  • Typescript, React 18.2 기반으로 개발되었으며, 기존 event 애플리케이션에 플러그인 형태로 번들링되어 attraction 애플리케이션이 임포트되었습니다.
  • API 데이터 패칭 및 상태 관리에는 Tanstack Query가 활용되었고, 무한 스크롤 기능은 Tanstack Virtual로 구현되었습니다.
  • Fastify 프레임워크와 Vite 번들링을 사용했으며, XSS 방어 및 사용자 입력값 검증 로직이 포함되었습니다.

백엔드 기술 스택 및 Admin 시스템

  • 팀 내 첫 Spring 및 Kotlin 스택을 적용하여 개발되었으며, Oracle DB에 JPA와 QueryDSL을 활용해 데이터에 접근합니다.
  • Admin 서비스는 웹 UI와 API가 동일 도메인 모델을 공유하는 Spring 멀티모듈 구조로, 기존 dotnet 환경에서 Kubernetes(fusion) 기반 java/kotlin 및 node.js로의 전환 가능성을 제시합니다.
  • Admin UI는 HTMX와 Thymeleaf를 사용하여 빠르게 기능을 구현하는 도전적인 방식을 채택, AJAX 통신을 위한 JS 코드량 감소 및 HTML 본연의 목적에 충실할 수 있었으나, 복잡한 데이터 바인딩 및 TypeScript 미지원 등의 단점도 있었습니다.

주요 기술적 과제 및 해결

  • Oracle DB RAC 환경에서 PK 순차 채번 이슈: Oracle RAC 구조의 SEQUENCE CACHE 옵션으로 인해 PK가 순차적이지 않은 현상 발생. 유일성만 보장할 경우 NO ORDER 옵션이 권장되며, ORDER 사용 시 성능 저하 가능성을 인지했습니다.
  • JPA/QueryDSL 복잡한 JOIN 쿼리 처리: 초기 DB Index 미설정으로 인한 Full Scan 및 QueryDSL의 서브쿼리(FROM, JOIN 절) 한계에 직면했습니다. 이 문제는 서브쿼리를 Entity화(View처럼) 하는 방식으로 해결하여 복잡한 링크루 서비스 연동 쿼리를 구성했습니다.

개발 프로세스 및 활용 도구

  • Daily Scrum: 2주간의 짧은 데일리 스크럼을 통해 프로젝트 불확실성을 조율하고 진척 상황을 공유했습니다.
  • 자체 QA: 팀원들의 적극적인 자체 QA를 통해 사소한 버그부터 기획 아이디어까지 높은 수준의 피드백을 받아 서비스 견고성을 확보했습니다.
  • 개발 도구: Git/GitHub (형상 관리), Jira (업무 관리), Saturn Initializr (내부 패키지 포함 백엔드 앱 생성), Fusion(Openshift) 및 사내 VM (클라우드 오케스트레이션 및 가상 서버), Kibana 및 사내 로그 모니터링 (로그 시각화), nGrinder (부하 테스트), Datadog (APM 및 장애 알림) 등 다양한 사내 인프라 도구를 적극 활용했습니다.
#Infra#FrontEnd#Architecture#BackEnd
지마켓
지마켓

지마켓 Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기