핵심요약
꿀템 서비스는 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 및 장애 알림) 등 다양한 사내 인프라 도구를 적극 활용했습니다.