Profile

사현진

상명대학교 소프트웨어학과 졸업 수석 1회, 차석 1회, 성적장학금 4회 학점 : 4.07 / 4.5 (2019.03 ~ 2025.02)

INTRODUCE

기술 간 트레이드 오프를 고려하며, 본질적인 개선을 위해 과감히 도전합니다.
인턴 당시, Python Lambda 레거시의 Java Spring 마이그레이션을 제안하고 직접 추진해 모듈화 구조로 확장성을 높였습니다. 이후 2500만 건의 데이터 활용 패턴과 쿼리를 분석한 뒤, 이를 바탕으로 DB 인덱싱과 비동기 병렬 처리를 적용해 성능 병목을 97% 개선했습니다.

사용자 중심의 비즈니스를 고민하고, 아키텍처 관점에서 서비스를 리딩합니다.
3년간 서비스를 직접 운영하며, 고객의 불편을 파악하고 피드백을 적극 반영해왔습니다. 백엔드부터 프론트엔드, 인프라까지 시스템 전반의 문제를 다각도로 분석하고 해결했으며, 현재 가입자 1100명, 실사용자 월평균 230명을 확보하며 안정적으로 성장 중입니다.

CAREER

2024. 07 ~ 2024. 09

(주)파이브웍스 / 백엔드 개발자, 인턴  

- 빅데이터 팀
Omnimix 서비스 : 자사 약리학 서비스의 약재 · 질병 분석 시스템을 구축. > 빅데이터 플랫폼 운영에 필요한 Backend 개발과 Frontend 시각화를 담당. > 2,500만건의 대용량 데이터 처리를 위한 DB 인덱싱과 비동기 최적화를 수행. > Jira 기반의 주간 스프린트 애자일 협업, Confluence 내 데이터 컨벤션 명세.
>  Spring BootJavaSpring SecurityJWTMongoDBReactTypeScript
    대용량 데이터 처리 최적화 (2500만 건)
  • 질병 기능의 DB 조회 성능 개선
    • 문제 : 질병 데이터가 테이블에 2500만 건 이상 적재되며, DB의 Read 부하 증대 및 속도 저하
    • 해결 :  1. 테이블이 오직 Read 전용이며, 해당 기능들이 질병명 기준 WHERE절을 사용함을 파악.
       2. 캐싱 전략은 기능별로 질병명 외 검색 조건이 달라, 캐시 적중률이 낮고 관리도 복잡해 부적합.
       3. 따라서 공통적으로 사용되는 질병명 컬럼에 DB index 생성하는 방안을 채택.
    • 성과 : ’약재의 타겟 질병 분석’ 기능을 평균 36.53초 → 8.15초로 약 78% 개선. (1차 개선)
  • 독립적인 순차 작업의 비동기 병렬 최적화
    • 문제 : 서로 의존성이 없는 약재 추출과 질병 추출의 두 작업을 순차적으로 처리하는 비효율 발견
    • 해결 : 비동기 CompletableFuture로 두 작업을 논블로킹 병렬 처리 후, join으로 블로킹해 데이터 통합
    • 성과 : ’약재의 타겟 질병 분석’ 기능을 평균 8.15초 → 3.31초로 약 60% 개선. (2차 개선, 총 97%)
  • 레거시 아키텍처 재구축
  • 신규 RESTful 서버 개발 & 레거시 마이그레이션
    • 문제 : AWS Lambda 통합 API 운영으로, 확장성 한계와 메인페이지 로딩 지연 발생
    • 해결 : Java Spring 기반의 RESTful 서버 개발, Python Lambda 코드 마이그레이션 후 API 분리
    • 성과 : 분리한 4개의 API를 React Query로 병렬 호출해, 30초 이상 걸리던 페이지를 즉시 로딩
  • 다중 JWT 기반 인증 시스템 개발
    • 문제 : 레거시 비로그인 시스템을 로그인 체제로 전환하며, 새로운 인증 프로세스의 도입 필요
    • 해결 :  1. 구독 고객에 한해 모든 기능을 제공하며, 단일 기기 접속으로 동시 Session 관리는 불필요.
       2. 따라서 Stateless 구조의 JWT(Access & Refresh) 기반 Spring Security 인증을 도입.
    • 성과 : 구독자 권한 기반의 서버 URI 접근 제한과, Refresh 다중 토큰 운용을 통해 보안성 향상

PROJECT

2024. 04 ~ 2024. 06

Dev Race / 백엔드 개발

실시간 코딩 경쟁 및 채팅 서비스 (Github) > STOMP + RabbitMQ 실시간성 기능 개발과 CI/CD 파이프라인 구축을 담당. > Bulk 연산과 N+1 쿼리 최적화를 수행하며, 벤치마킹 테스트를 통한 개선 지표를 측정.
>  Spring BootJavaSTOMPRabbitMQMySQLMongoDBAmazon AWS
    실시간성 메시징 시스템 개발
  • Pub/Sub 단체 채팅 구현
    • 단체 메시지의 효율적인 전송을 위해, 채팅방을 pub/sub 기반 STOMP 실시간 통신으로 구성
    • 외부 RabbitMQ를 broker relay 연동해 인메모리 한계를 극복, 과부하 및 장애 시 메시지 소실 방지
    • DB 용도 분리 : 채팅방 정보는 MySQL, 채팅 내역은 스키마리스 확장성 고려해 MongoDB로 관리
  • GitHub Flow · CI/CD 파이프라인 구축
    • 협업 환경 구성 : WBS 일정표 기획, Git 컨벤션 수립, PR Open/Review 시 팀에 Slack 알림 연동
    • CI/CD 자동화 : 브랜치 merge → GitHub Actions의 Docker image 생성 → AWS EB 환경 구축/배포
    • Docker Network 자동화 : postdeploy로 인스턴스 내 Spring, RabbitMQ 컨테이너 자동 연결
    Bulk 연산 및 N+1 쿼리 튜닝
  • 다수 인원 동시입장 기능의, Bulk Insert 성능 개선
  • N+1 쿼리 문제 해결

2023. 09 ~

온라인 메모장 / 풀스택 개발 · 운영

공동 작성 가능한 메모장 서비스 (Github) / 운영 중 · Web , App > 1인 개발 및 서비스 출시, 유저의 피드백을 반영한 API 구조 최적화 · DB 동시성 제어를 수행. > 2025.07 기준) 가입자 수 1100여명, 실사용자 수 월평균 약 230명
>  Spring BootJavaMySQLRedisAmazon AWSReactJavaScript
    공동메모 동시성 문제 해결
  • 분산 환경의 편집권한 제어
    • 문제 : 현재 메모를 다른 사용자가 편집 중인지 확인할 수 없어, 중복 편집을 시도할 위험 보유
    • 해결 :  1. 스케일아웃 환경에서 편집자 외 수정 접근을 제한하도록, 분산 Lock 기반 편집권한을 도입.
       2. 락 대기와 재시도는 사용하지 않아, pub/sub 기반 Redisson 분산 락은 리소스 낭비로 배제.
       3. 따라서 Lettuce 분산 락으로 {메모 ID: 사용자 정보}를 외부 Redis에 저장해 편집자를 식별.
    • 성과 : 인스턴스 확장에도 서버 간 일관된 권한을 공유해, 편집자를 명확히 알려 수정 시도를 사전에 방지
  • 동시편집 데이터 충돌 방지
    • 문제 : 편집권한 TTL 만료 후 동시에 메모를 수정하면, 마지막 저장 내용으로 덮어써지는 문제 발생
    • 해결 :  1. 편집권한으로 동시 접근을 최소화해 DB 충돌 가능성이 낮아, 선점 방식인 비관적 락은 불필요.
       2. 대신 MySQL 낙관적 락으로 수정 시점에 버전 충돌을 감지하고, 사용자에게 알리도록 구현.
       3. DB 커밋 후 편집권한을 해제하도록, 자식 트랜잭션을 REQUIRES_NEW로 분리해 일관성 확보.
    • 성과 : 5명 동시 편집) DB update 커밋 5회 → 1회로 감소, 4명의 충돌을 차단해 데이터 정합성을 보장
    서비스 대규모 리팩토링
  • 메모페이지 데이터 구조 개선
    • 문제 : 메모 목록을 조회할 때, 각 메모가 비효율적인 작업과 개별 API를 호출해 로딩이 지연됨
    • 해결 :  1. 서비스 전반의 비효율 개선을 위해, 백엔드와 프론트엔드에 걸친 3400줄의 리팩토링 진행.
       2. DB 재설계 및 분산된 DTO의 Inner Class 응집화, 상태별 Exception 추상화로 재사용성 강화.
       3. 페이지 상위 컴포넌트에서 API 단일 호출 후, 결과를 props로 하위에 일괄 전달하도록 재구성.
    • 성과 : 30개 보유 페이지 로딩) API 요청 91회 → 2회로 감소. 속도 11.27초 → 0.19초로 98% 개선.

ACTIVITY

2025. 06 ~ 2025. 07

네이버 부스트캠프 Web. 10기

수료) 풀스택 베이직
  • 페이지 히스토리 기능 개발 · Peer Feedback 협업 진행
    • 코드 리뷰에서 히스토리 검증 시, 기존의 메인 모듈을 변경해야 하는 한계 발견
    • 추상화 Service 계층에 의존하도록 개선, 테스트용 구현체로 유연히 교체해 DIP 준수

2024. 12

SW 코딩프로젝트 공모전, 수상 🏆

SW 중심대학사업단
  • 백엔드 개발 담당 (Spring)
  • 스마트 카트 : 온/오프라인 마트 최저가 비교 서비스
    • 촬영한 가격표를 AI OCR 처리 후, 최저가 도출하는 LLM 전처리 로직 개발

2024. 02 ~ 2024. 08

Kakao x 9oormthon Univ. 2기

수료) 백엔드 개발자
  • 백엔드 개발 담당 (Spring) : 2024 벚꽃톤 본선 진출
  • 가정통신문 : 실시간 웹푸시 알림 공지 서비스
    • PWA 환경의 그룹 승인 및 공지 알림을 위해, FCM 웹푸시 기능 개발

2023. 09

SW 융합 클러스터 2.0 해커톤, 최우수상 🏆

과학기술정보통신부 · 정보통신산업진흥원
  • 팀장 · 백엔드 개발 담당 (Spring, Django)
  • Sock Sense : 시각장애인을 위한 양말 판별/코디 서비스
    • 비즈니스(Spring) · 영상처리(Django) 서버 분리 구축/배포, MSA 방식 연동

2022. 08 ~ 2023. 09

Google Developer Student Clubs. 2기

수료) 백엔드 개발자
  • Spring 백엔드 스터디그룹 운영

SKILL

Back-End

  • Spring Boot, Java
  • Spring Security, JWT
  • MySQL
  • MongoDB
  • Redis
  • AWS

Front-End

  • React
  • TypeScript
  • JavaScript