조치호 프로필 사진

응답 속도를 96% 단축하는
백엔드 개발자 조치호

Java / Spring Boot

단순 기능 구현을 넘어 시스템의 병목을 분석하고 개선하는 데 집중합니다. N+1 쿼리 문제벌크 조회와 메모리 매핑으로 해결해 응답 시간을 25초에서 0.9초로 단축했습니다.
또한 직접 만든 11종의 템플릿으로 기획·개발·이슈 해결 과정을 기록하며 협업 과정의 정보 손실을 줄이는 개발 방식을 지향합니다.

🔍 성능 병목 분석 및 최적화
N+1 쿼리 개선으로 데이터 조회 응답 속도를 25초에서 0.9초로 96% 단축한 수치적 성과
📝 문서화 중심 개발 습관
직접 제작한 11종 템플릿으로 기획부터 트러블슈팅까지 전 과정 기록
⚙️ 구조화된 개발 프로세스
기획서 → ERD → 아키텍처 순의 표준화된 개발 사이클 준수 및 Daily Log 기록 생활화
🤝 협업 가시성 확보
Git 커밋 컨벤션과 이슈 템플릿 도입으로 코드 리뷰 효율을 높이고 팀 생산성 기여

🛠 기술 스택

Backend
Java 17 Spring Boot Spring Security Spring Data JPA MyBatis WebSocket JWT Swagger Gradle
Database
MySQL Oracle Redis
Infra
AWS EC2 S3 RDS CloudFront Docker GitHub Actions
Frontend
React 18 JavaScript ES6+ Zustand Axios Styled-components HTML5 CSS3
Tools
Git GitHub IntelliJ IDEA Postman Notion Figma Slack
Experience
JSP JSTL Thymeleaf jQuery Bootstrap

💼 프로젝트

CalmDesk 팀 프로젝트 이슈 관리자
2026.01.06 - 2026.02.27  ·  6인 Full Stack · Code808

대규모 실시간 통신 및 상태 관리 최적화를 적용한 단일 기업용 B2B HR·웰빙 SaaS 통합 관리 플랫폼.
다중 접속 환경에서의 WebSocket·SSE 기반 실시간 데이터 스트리밍과 멀티테넌시 아키텍처를 통한 기업 간 완전한 데이터 격리를 구현한 클라우드 구독형 서비스입니다.

CalmDesk 쿨다운 대시보드 CalmDesk 직원 페이지 CalmDesk 관리자 페이지
아키텍처 및 주요 API
  • Architecture
    React ➡️ Nginx ➡️ Spring Boot API ➡️ Redis Cache ➡️ MySQL
  • Key API
    GET /api/employee/dashboard (직원 대시보드 상태 및 통계 데이터 조회)
    PUB /pub/chat/message (WebSocket 실시간 그룹/개인 채팅 메시지 발송)
본인 담당 기능
  • 실시간 채팅
    WebSocket(STOMP) 기반 1:1 / 그룹 채팅, 메시지 수정·삭제·읽음 처리 구현
  • 직원 대시보드
    개인 업무 통계·정서 지수 요약 데이터 조회 및 실시간 현황 화면
  • 출퇴근 로직
    출근·퇴근 체크, 기분(Emotion) 기록, 업무중·회의중·외출중 근무 상태 변경 API
  • 협업 체계 구축
    Git 커밋 컨벤션 · 이슈 템플릿 도입으로 병합 충돌 방지 및 리뷰 효율 향상
주요 트러블슈팅
  • N+1 문제 해결 및 서버 메모리 매핑 최적화 (응답속도 25초 ➡️ 0.9초)
    사내 대시보드 목록 조회 시 반복문(for) 내에서 직원별 휴가, 스트레스, 쿨다운 정보를 3개의 레포지토리로 각각 조회하여 총 150개의 단건 쿼리가 연쇄적으로 발생하는 N+1 구조적 결함을 발견했습니다. 이로 인해 화면 로딩에 25초가 소요되었습니다.
    문제를 해결하기 위해 개별 조회 로직을 WHERE IN 절을 활용한 벌크 조회(Batch Fetch)로 변경하고, 이를 애플리케이션 메모리 단에서 Map 자료구조를 이용해 매핑(O(1))하는 방식으로 리팩토링했습니다. 결과적으로 쿼리 호출 횟수를 150개에서 3개로 단축하고 응답 속도를 0.9초로 대폭 개선하여 DB 부하를 원천 차단했습니다.
  • JWT & 프론트 통신 403 Error 해결
    부서 및 근태 내역 조회 시 발생하던 403 에러 원인으로 프론트엔드의 로컬 키 불일치(token vs authToken)와 순수 Axios 직접 import 휴먼 에러를 교차 분석해 해결했습니다.
기술 스택
Java 17Spring Boot Spring AISpring Security JPAMySQL RedisWebSocket SSEOpenAI Google Cloud STTReact 18 ZustandDocker
MediFlow 팀 프로젝트 DB 관리자
2025.10.23 - 2025.11.19  ·  6인 Full Stack · W3C

수기·엑셀 기반 병원 관리의 비효율을 해결하기 위한 통합 병원 ERP 시스템.
예약, 진료, 근태 관리를 포함한 병원 운영 전 영역을 디지털화.

MediFlow 메인페이지 MediFlow ERP 대시보드 MediFlow ERP 예약관리
아키텍처
  • Architecture
    JSP / JSTL ➡️ Spring Boot API ➡️ Oracle DB
본인 담당 기능
  • DB 모델링 및 설계 (DB Lead)
    ERD 설계부터 CONSTRAINT FK_..., CONSTRAINT CHK_STATUS CHECK (STATUS IN ('Y', 'N', 'R')) 등 데이터베이스 단의 무결성 검증 설정 주도
  • 쿼리 최적화
    Oracle LISTAGG(name, ',') WITHIN GROUP (ORDER BY id) 및 서브쿼리 활용으로 N+1 데이터 병합 해결. View 도입으로 비즈니스별 복잡한 Join 성능 향상 및 SQL 복잡도 감소
  • 근태 자동화
    LocalTime API로 출결 상태(정상/지각/조퇴/결근) 자동 판별 로직 구현
주요 트러블슈팅
  • 데이터 무결성 확보 및 DB 병합 충돌 해결
    로컬 환경 개발 시 상태값 체크 조건(예: A 개발자는 '1, 2, 3', B 개발자는 'Y, N, R' 기반)이 통일되지 않아 DB 병합 시 지속적인 데이터 충돌 및 정합성 오류가 발생했습니다.
    DB 관리자로서 문제 원인이 단순 문서 부재가 아닌 명시적 제약조건 적용 누락에 있음을 파악하고, 상태 컬럼 타입을 통일한 뒤 CONSTRAINT CHK_STATUS CHECK (STATUS IN ('Y', 'N', 'R'))와 같은 데이터베이스 단의 Check 제약 조건을 강제했습니다. 이후 공통 더미 데이터를 배포하여 팀 전체의 개발 환경을 동기화하고 잠재적인 데이터 무결성 훼손을 차단했습니다.
기술 스택
JavaSpring Boot MyBatisOracle JSPJSTL
Cubing Hub 개인 프로젝트 1인 풀스택
2025.10.02 - 2025.10.19 약 3주

파편화된 큐브 기능(타이머·기록·알고리즘·커뮤니티)을 통합한 스피드큐빙 올인원 비동기 웹 플랫폼.
수많은 큐브 이용자에게 필요한 기능성 도구들과 실시간 통계를 집약하여 통합 관리하며 타이머의 누적 오차와 렌더링 성능 최적화에 집중한 1인 기획/개발 프로젝트입니다.

Cubing Hub 경기용 타이머 UX Cubing Hub 3D 알고리즘 시각화 Cubing Hub 개인 기록 통계 Cubing Hub 커뮤니티
아키텍처
  • Architecture
    React ➡️ Spring Boot API ➡️ MySQL
구현 기능 및 기술적 도전
  • 정밀 타이머 — setInterval 누적 오차 문제를 Date.now() Delta Time 방식으로 해결, 0.001초 단위 측정
  • 상태 머신 UX — Stackmat 타이머 UX 이식(idle → holding → running), WCA 규격 20-move 스크램블 생성
  • 3D 알고리즘 라이브러리 — VisualCube API 연동으로 LBL/CFOP 단계별 3D 시각화
  • 상태 최적화 — Zustand 도입으로 빈번한 갱신 시 불필요한 리렌더링 최소화
주요 트러블슈팅
  • 정밀 타이머 오차 문제 해결 (Delta Time 방식 적용)
    브라우저의 setInterval 특성 상 발생하는 밀리초 단위 누적 오차를 발견했습니다.
    단순히 interval 간격 증감 로직에 의존하는 대신 Date.now() 기반의 Delta Time(현재 시간 - 시작 시간) 방식으로 타이머 로직을 전면 수정하여 0.001초 단위의 실제 경기용 정밀 계측을 시현했습니다.
기술 스택
Java 17Spring Boot 3.4 Spring Data JPAMySQL H2React (Vite) JavaScript ES6+Zustand Styled-ComponentsVisualCube API

🎓 학력 · 교육 · 자격증

학력 · 교육 · 수상
세명대학교 스마트IT학부
졸업 2026.02  ·  학점 3.0 / 4.5
KH 정보교육원
AWS 클라우드 기반 DevOps 개발자 양성 과정
2025.07 - 2026.03
Java/Spring · React/JS · Oracle DB · RESTful API · AWS 배포
KH정보교육원 프로젝트 우수상 (팀)
2026.03
수상
자격증
MOS 2016 Excel Expert
2025.12
취득
정보처리기사
2025.08 필기 합격
필기 합격
운전면허 1종 보통
2022.01
취득
🎖️
육군 병장 만기 전역
2022.05 - 2023.11