서정민

서정민

백엔드 개발자

안녕하세요, 개발자 서정민입니다.
주로 백엔드 개발 업무를 맡아왔으며, 스프링 혹은 코드이그나이터 기반의 프로젝트를 중심으로 경험을 쌓아왔습니다.
Vue.js 등 프론트엔드 개발도 조금씩 경험해보았고, 현재도 꾸준히 개발 전반에 대한 이해를 넓혀가고 있습니다.
개발 과정에서는 동료들과의 원활한 소통 업무 도메인에 대한 이해를 중요하게 생각합니다.
무엇보다 사용자에게 더 나은 서비스를 제공하고, 불편함을 해소해주는 과정에서 큰 보람을 느끼고 있습니다.

기술 스택

Frontend

Vue.js TypeScript jQuery Thymeleaf SCSS

Backend

Kotlin Spring Boot JPA QueryDSL MyBatis CodeIgniter

Database

MySQL

Other

WebSocket Aligo

경력

누아

2022.02 ~ 2024.03 (2년 1개월)

Nuua Flights 백오피스

항공 발권 뿐만 아니라 여행사에게 필요한 다양한 기능을 제공하는 서비스

위주 (현 마켓트리)

2021.02 ~ 2022.02 (1년)

놀장 웹앱 프론트엔드 리뉴얼

전통시장의 상품을 앱을 통해 주문하고 배달 받을 수 있는 서비스

놀장 크루 앱

배민/쿠팡 라이더처럼 일반인도 배달 업무를 할 수 있도록 하는 서비스

놀장 백오피스 유지보수

놀장 서비스 운영 관리 및 고객 지원(CS) 처리를 위한 백오피스

지후소프트

2018.10 ~ 2020.12 (2년 2개월)

JCloud9 Collabo (현 PLJEC.Colavo)

프로젝트의 현황 파악 및 업무 관리 기능과 전자결재 기능을 제공하는 서비스

JCloud9 @T

출퇴근 시간과 위치를 기록 기능을 제공하는 웹앱

HR JCloud9 v2.0

윈도우 응용프로그램으로 제공되던 HR 서비스를 웹으로도 제공하기 위한 프로젝트

사내 프레임워크를 이용한 외부 기관/업체 서비스 개발 및 유지보수

서비스 개발 및 유지보수

프로젝트

Nuua Flights Backoffice

누아
Backend

항공 예약 발권 업무뿐만 아니라 상품 관리, 판매 관리, 정산 및 통계, 채널관리, 고객관리 등 여행사에 필요한 기능들을 하나의 시스템으로 통합한 서비스

기술 스택

Kotlin Spring Boot JPA QueryDSL MyBatis MySQL WebSocket
주요 업무
항공 예약 관리
  • 예약 검색
  • 예약 상세 조회
  • 여정표/이티켓/인보이스 발급
조직 관리 기능
  • 기업 정보 관리
  • 조직 관리
  • 신규 워크스페이스 생성
  • 구성원 초대/관리
  • 권한 그룹 관리
월렛 기능 (헥토파이낸셜)
  • 가상 계좌 매핑/조회
  • 사용 내역 및 월별 통계 조회
  • 인출 신청 기능
이메일/SMS/알림톡 발송 (Aligo)
  • 구성원 초대
  • 예약 관련 안내
  • 여정표/이티켓/인보이스 전송

예약 검색의 성능 저하 문제 해결, 코드 가독성 및 유지보수성 향상을 위한 SQL 쿼리 최적화

기존 예약 검색 시스템
  • 복잡한 데이터 모델 및 과도한 조인: 주문, PNR, 항공편, 승객, 결제 등 정보가 여러 테이블에 분산되어 있었습니다. 이로 인해 사용자의 검색 조건(예: 티켓 번호, 승객명, 출도착지, 결제 정보 등)에 따라 최대 10개 이상의 테이블과 동적으로 JOIN 연산을 수행해야 했습니다.
  • 성능 저하: 데이터량이 증가하고 동적 조인이 많아짐에 따라 쿼리 실행 계획이 복잡해졌습니다. 특히 최악의 경우 풀 테이블 스캔을 10회 실행하는 비효율적인 동작을 보이기도 했습니다.
  • 유지보수 및 확장성의 어려움: SQL 쿼리가 길고 복잡한 분기를 다수 포함하고 있어, 새로운 검색 조건을 추가하거나 기존 로직을 수정하는 등 유지보수에 불편함이 있었습니다.
개선된 예약 검색 시스템
  • 검색용 인덱스 테이블 도입: 검색 조건에 대한 값들을 예약 ID로 바로 조회할 수 있는 인덱스 테이블을 설계했습니다.
  • 기존에 여러 테이블을 조인해야만 가능했던 검색을, 인덱스 테이블과의 단순 조인으로 대체하여 검색 경로를 최적화했습니다.
  • 기존에는 풀 테이블 스캔이 10회 발생했지만, 개선 이후 Driven table에서만 풀 테이블 스캔이 1회 발생하면서 효율성이 높아졌습니다.
  • SQL 쿼리 구조 재설계: 인덱스 테이블을 중심으로 조인의 수와 깊이를 최소화해 가독성과 효율성을 높였습니다.
  • JOIN 대상 테이블의 수가 12개에서 4개로, 최대 깊이가 6에서 3으로 줄어들었습니다.
  • 조회용 데이터 비정규화: 예약 정보 테이블에 주문 관련 핵심 정보 외에도, 자주 함께 조회되는 승객 정보 요약(승객명, 승객 수), 여정 정보 요약, 항공편 번호, 세그먼트 상태, 캐빈 타입, 출발 예정 시각 등의 데이터를 통합하여 저장했습니다.
  • 불필요한 조인을 제거하고 데이터 접근 속도를 높였습니다.

예약/발권/문의 등 각종 시나리오별 메시지 발송을 위한 알림 서버 개발

기능 및 특징
  • 고객이 발권에 실패하거나, 예약 건의 항공사 결제 시한이 임박한 경우와 같은 중요한 사항을 관리자에게 즉시 전달하고 그 외에도 다양한 시나리오에 알림을 전송할 수 있도록 웹소켓 기반의 알림용 서버를 개발하고 연동했습니다.
  • 필수적인 알림을 제외하고는, 유저가 알림 카테고리 별로 수신여부를 지정할 수 있도록 구현했습니다.
플로우
  • 예약/발권 이슈, 고객 문의 등 다양한 도메인 서비스(Producer)에서 발생하는 이벤트를 Kafka 메시지 큐로 발행합니다.
  • 알림 서버는 Kafka 토픽을 구독하며 실시간으로 메시지를 수신하고 처리합니다.
  • 수신된 메시지의 내용에 따라 수신 대상 사용자 또는 그룹 세션을 식별합니다.
  • 조회된 세션들에게 WebSocket을 통해 실시간으로 알림 메시지를 전송합니다.
  • 사용자는 알림 카테고리(예약/발권, 인출 신청 등)별 수신 여부를 설정할 수 있습니다.
아쉬운점
  • 지금 되돌아보면, 해당 기능의 중요도가 Kafka의 기능과 관리 리소스를 투입할 만큼 높지 않다 느꼈습니다.
  • 이 경우, 개발 및 운영 효율성 측면에서 더 단순한 Pub/Sub 도구나 Spring ApplicationEvent와 같은 더 경량화된 방식을 우선 고려해볼 것 같습니다.

좌석 선택 기능 구현을 위한 항공기 좌석 배치도 좌표 생성 로직 개발

기능 및 특징
  • 부가 서비스의 주요 기능인 좌석 선택 기능을 위해, 항공기 좌석 배치도 시각화에 필요한 동적 좌표 생성 작업을 수행했습니다.
  • 이를 위해 IATA Seat Characteristics 표준을 참조하여 항공기 구조(층, 행/열 구성) 및 좌석별 특성(창가, 복도, 날개 인접 여부 등)을 해석했고, 이 정보를 기반으로 좌석, 텍스트 라벨, 주요 시설물(날개, 화장실, 갤리 등) 등 시각적 요소의 좌표를 동적으로 생성하는 로직을 개발하여 다양한 항공기 레이아웃에 대한 유연한 대응이 가능하도록 했습니다.

항공사, 공항, 국가, 도시 등 누아의 항공 기초 데이터 관리를 용이하게 만든 사이트

배경
  • 신규 항공사 추가 및 국가, 공항 표기 방식 변경과 같은 기초 데이터 수정 시, 기획 및 운영팀이 데이터 수정 요청 사항을 시트에 추가하면, 저는 그 내용을 개발 DB에 반영한 뒤 회신하는 방식으로 수정을 진행해왔습니다.
  • 기초 데이터의 수정이 잦아지면서 이 과정이 작업 내용에 비해 비효율적이고 번거롭다고 생각했습니다.
개선사항
  • 기획/운영팀이 기초 데이터를 수정할 수 있도록 기초 데이터 및 다국어 관리가 가능한 사이트를 개발했습니다.
  • 직접 수정이 가능해지며 저와 기획/운영팀 간의 요청 및 반영 과정을 간소화했고, 변경 내역과 작업자, 실행 쿼리를 기록하는 로그 관리 기능도 함께 구현했습니다.
  • 이를 통해 기초 데이터 관리 작업의 편의성과 효율성을 조금 더 향상시킬 수 있었습니다.
  • 개인적으로 업무 외 시간을 활용하여 개발했습니다.

놀장 앱 리뉴얼

위주 (현 마켓트리)
Frontend

전통시장의 상품을 앱을 통해 주문하고 배달 받을 수 있는 서비스. 기존 놀장 앱의 UI/UX를 개편한 하이브리드 앱

배경
  • 기한 내 효율적인 개발을 위해 당시 React에 비해 비해 학습 곡선이 완만하다고 평가받던 Vue.js를 선택했습니다.
  • 이후 개발이 진행되며 컴포넌트 간 복잡한 데이터 전달로 인해 기존 props와 event 방식만으로는 상태 관리에 어려움이 있었고, 이러한 문제 해결을 위해 상태 관리 도구인 Vuex 도입을 제안했고, 팀과 함께 상태 관리의 복잡도를 낮추고 유지보수성을 향상시킬 수 있었습니다.
기능 및 특징
  • 카메라/갤러리 접근, 결제 모듈 SDK 등 네이티브 기능은 앱에서 처리하고, 그 외 UI 중심의 대부분 화면은 웹(WebView)으로 구성했습니다.
  • 대부분의 페이지가 웹에서 처리되므로, 기능이나 UI 변경 시 앱 재배포 없이 서버 배포만으로 빠르게 반영 가능한 경우가 많아 유지보수와 운영 효율 측면에서 유리한 구조였습니다.

기술 스택

Vue2 Vuex SCSS
주요 업무
기본 레이아웃 설계 및 구현
화면 마크업 및 API 연동
  • 배송지 설정 및 관리
  • 주문내역
  • 마이페이지 (환경설정, 쿠폰관리 등)
  • 상품/상점 정보
네이티브 연동
  • 네이티브-웹 환경 간 양방향 통신 브릿지 인터페이스 개발

놀장 크루 앱

위주 (현 마켓트리)
Frontend

배민/쿠팡 라이더처럼 일반인도 원하는 시간에 원하는 만큼 배달 업무를 할 수 있는 서비스. 일반인도 원하는 시간에 자유롭게 배달 업무를 수행할 수 있는 온디맨드 배달 플랫폼

배경
  • 빠른 개발을 위해 기존 놀장 리뉴얼 앱의 구조를 기반으로 초기 뼈대를 구성했고, Vue3로의 버전 업과 TypeScript를 도입해볼 기회가 있어 좋았지만, 개발 중 내부 사정으로 인해 서비스 최종 출시까지는 이루어지지 못했습니다.

기술 스택

Vue3 Vuex TypeScript SCSS
주요 업무
화면 마크업 및 API 연동
네이티브 연동
  • 네이티브-웹 환경 간 양방향 통신 브릿지 인터페이스 개발

놀장 백오피스 유지보수

위주 (현 마켓트리)
FrontendBackend

놀장 서비스 운영 관리 및 고객 지원(CS) 처리를 위한 백오피스

기술 스택

Java Spring Boot MyBatis MySQL Thymeleaf
주요 업무
배달 권역 시각화 및 설정 화면 개발
배달 권역 관련 API 설계 및 구현
CS팀 피드백 기반 불편 사항 개선 및 관련 기능 유지보수
  • CS팀에서 환불 금액을 산출할 때, 할인이나 포인트 등 결제에 적용된 상세 정보가 표시되지 않아 불편이 있었습니다. 이를 해소하기 위해 결제 금액뿐 아니라 할인 및 혜택 상세 내역을 함께 확인할 수 있도록 기능을 개선하여, 업무의 정확성과 효율성을 높였습니다.

JCloud9 Collabo (현 PLJEC.Colavo)

지후소프트
FrontendBackend

프로젝트의 현황 파악 및 업무 관리 기능과 전자결재 기능을 함께 제공하는 서비스

기술 스택

CodeIgniter jQuery SocketIO MySQL
주요 업무
초대 메일 발송 및 가입 프로세스 구현
프로젝트 현황 관리 기능 개발 참여
업무 현황 관리 기능 개발 참여
전자결재 화면 및 기능 개발 참여
배운 점
  • 초기 단계부터 참여해본 첫 프로젝트로, 기능의 흐름과 도메인 구조를 파악하는 것이 얼마나 중요한지 깨달았습니다.
  • 실제 사용 맥락을 고려하면서 비즈니스 로직을 코드로 풀어내기 위해서는 도메인에 대한 깊은 이해가 필수적이라는 점을 경험했습니다.

JCloud9 @T

지후소프트
FrontendBackend

출퇴근 시간과 위치 기록 기능을 제공하는 웹앱

기술 스택

CodeIgniter jQuery MySQL
주요 업무
API 구현 및 연동
화면 마크업 진행
네이버 맵 API 연동

HR JCloud9 v2.0

지후소프트
FrontendBackend

윈도우 응용프로그램으로 제공되던 HR 서비스를 웹으로도 제공하기 위한 프로젝트

기술 스택

CodeIgniter jQuery MySQL MsSQL
주요 업무
마크업 및 MySQL -> MsSQL SP 마이그레이션 참여
  • 인사관리 (인사정보 조회, 학력사항 조회, 가족사항 조회 등)
  • 근태관리 (교대조정보, 근무조별 사원 편성정보 등)
  • ESS[셀프서비스] (급여내역조회, 연말정산 결과조회 등)
  • 정산관리 (퇴직연금(DC형) 관리 등)
  • 연말정산 (종전근무지등록, 원천징수조회영수증 조회/출력 등)
  • 약 50개 화면 QA 진행

외부 업체 서비스 개발 및 유지보수

지후소프트
FrontendBackend

서비스 개발 및 유지보수

기술 스택

CodeIgniter jQuery MySQL MsSQL
주요 업무
외부 기업 및 기관용 서비스 개발
  • 기존 서비스 유지보수 및 기능 개선