채용공고 올리기

전상민님을 응원해보세요!

프로필(이력서) 피드백 원해요

미리보기

기본 정보

이름
전상민
직업
백엔드 개발자
이메일
jsangmin99@gmail.com
간단 소개

"'혼자 개발하는 협력'이 아닌 '문제를 공유하고 함께 해결하는 진정한 협업'을 실천하는 백엔드 개발자입니다. 처음 도입하는 기술도 보일러플레이트 코드를 제작해 공유하며 팀 전체의 성장을 이끌어왔습니다. 새로운 기술을 빠르게 습득하고 지식을 나누는 과정에서 협업의 가치를 체득해왔습니다.

기술 스택

기술 스택

Java, Spring Boot, spring-jpa, MariaDB, Redis, Kafka, Kubernetes, Git, CI/CD, argocd, ubuntu

프로젝트

프로젝트명

COCONOTE

소속/기관명

개인

프로젝트 기간

2024.09. ~ 2024.11.

프로젝트 내용

통합 협업 플랫폼 (노션 + 채팅 + 드라이브)

사용기술

  • Backend: Java, Spring Boot

  • Frontend: JavaScript, Vue3

  • Database: MariaDB, Redis, AWS S3, OpenSearch

  • Infrastructure: Kubernetes, Docker, Nginx

  • Cloud Services: AWS EKS, AWS MSK, Route53, CloudFront, Google Maps

  • CI/CD: GitHub Actions, JIB, Argo CD

주요 역할

BE

백엔드 개발 리드
  • 팀원들의 Kafka, STOMP 개발을 위해 보일러 플레이트를 작성하여 설명 및 예제 제공

데이터베이스 설계 및 최적화
  • 데이터베이스 링크드리스트 기반의 설계를 통해 캔버스(노션 블록) 의 순서를 유지한체로 조회하도록 설계

대용량 파일 시스템 개발
  • AWS S3 + Presigned URL 적용으로 서버 부하 감소 및 대용량 파일 업로드 속도 개선

실시간 알림 시스템 구축
  • SSE(Server-Sent Events) 적용으로 폴링 방식 대비 네트워크 트래픽 절감 예상

  • Redis Pub/Sub 기반 메시지 브로드캐스트로 다중 서버 환경에서도 안정적 실시간 알림 유지

검색 기능 최적화 (OpenSearch 도입)
  • 기존 LIKE 검색 → OpenSearch 기반 역색인 검색으로 속도 10배 향상 (3초 → 0.3초)

  • Nori 형태소 분석기 적용으로 한국어 검색 정확도 개선

CI/CD 파이프라인 구축
  • GitHub Actions + ArgoCD 기반 CI/CD 구축 GitOps 구축 및 쿠버네티스 환경 시각화

  • JIB을 활용한 Docker 이미지 최적화로 빌드 시간 약 40% 감소

스케줄링 및 데이터 관리 자동화
  • Spring Batch + Redisson 분산 락 적용으로 중복실행 문제 해결

트러블 슈팅 및 고민

분산환경에서의 문제

🛑 문제:

  • 분산환경에서 알림이 간혈적으로 누락되는 경우가 발생

해결:

  • Redis Pub/Sub 도입 → 다중 서버 간 알림 및 데이터 동기화 구현

Drag & Drop 시 순서를 유지하는 방법

🛑 문제:

  • ORDER BY + 인덱스 방식을 사용할 경우, 순서 변경이 빈번하면 인덱스 재정렬로 성능 저하

  • Linked List 기반 구현 시, 삭제 시 prev/next 갱신 문제 발생

해결:

  • Linked List 기반 순서 관리 적용prev_id, next_id를 활용하여 순서 변경 시 최소한의 연산만 수행

  • 삭제 시 정합성 유지 → 삭제 시 prev/next를 갱신하는 로직을 트랜잭션 내에서 처리하여 데이터 무결성 유지

배치 스케줄링 시 페이지 시작점 문제

🛑 문제:

  • Chunk 방식 사용 시, Hard Delete 후 OFFSET 변동으로 중복 삭제 또는 누락 발생

  • 다중 서버 환경에서 동일한 배치가 중복 실행될 가능성 존재

해결:

  • Chunk 방식 대신 Tasklet 방식 적용 → 삭제 후 OFFSET이 변하지 않도록 PK 기반 삭제 로직으로 전환

배포 속도 저하 및 테스트 비효율 문제

🛑 문제:

  • Dockerfile 기반 빌드 시 빌드 시간이 오래 걸림

  • ArgoCD가 ECR의 latest 태그를 인식하지 못해 배포 시 변경된 이미지가 반영되지 않음

  • 배포 실패 시 원인을 빠르게 파악하기 어려움

해결:

  • JIB(JVM 기반 빌드 도구) 적용 → 레이어 캐싱 최적화로 빌드 시간 단축

  • 버전 태그를 명시적으로 관리latest 대신 버전을 명시한 형태로 태그를 생성하여 ArgoCD가 인식하도록 변경

  • ArgoCD 알림 시스템 연동배포 실패 시 디스코드 알림 발송하여 실시간 대응 가능

프로젝트명

WANT

소속/기관명

개인

프로젝트 기간

2025.07. ~ 2025.09.

프로젝트 내용

사용 기술

  • Backend: Java, Spring Boot

  • Frontend: Vue3

  • Database: MariaDB, Redis

  • Infrastructure: Kubernetes, Docker, Nginx

  • Cloud Services: EKS, Route53, CloudFront, Google Maps

  • CI/CD: GitHub Actions, JIB


주요 역할 (Backend Lead)

1. 소셜 로그인 및 리프레시 토큰 관리

  • Google OAuth 기반 소셜 로그인 기능 구현

  • JWT 기반 인증 적용 (액세스 토큰 + 리프레시 토큰)

  • Redis를 활용한 리프레시 토큰 저장 및 자동 만료 처리

2. CI/CD 파이프라인 구축

  • GitHub Actions + JIB 기반 빌드 및 배포 자동화

  • 운영/개발 서버 분리하여 환경별 배포 프로세스 적용

  • 블루-그린 배포 및 Health Check 도입으로 무중단 배포 구현

3. HPA를 활용한 자동 스케일링

  • Kubernetes HPA(Horizontal Pod Autoscaler) 적용

  • CPU 사용률 기반 자동 확장 및 리소스 최적화

4. 실시간 블록 이동 및 알림 시스템 구축

  • SSE 기반 실시간 이벤트 처리

  • Redis Pub/Sub을 활용한 블록 이동 및 그룹 초대 알림 기능 구현


트러블슈팅 및 해결 방법

1. HikariCP Connection Pool 고갈 문제

🛑 문제:

  • SSE 요청 증가로 인해 HikariCP Connection Pool이 고갈되는 문제 발생

  • java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available 오류 발생

  • spring.jpa.open-in-view=true 설정으로 인해 트랜잭션이 View까지 유지되면서 Connection 반환이 지연됨

해결:

  • SSE API에서 불필요한 JPA 트랜잭션 제거

  • spring.jpa.open-in-view=false 설정하여 트랜잭션 종료 시 Connection 반환

  • SSE 요청 처리 시 DB 접근을 최소화하고 별도 API에서 데이터 조회하도록 개선

  • GET 요청에 @Transactional(readOnly = true) 추가하여 Lazy Loading 문제 방지


2. 블록 이동 및 알림 시스템 최적화

🛑 문제:

  • 일정 블록을 달력으로 이동 시 모든 사용자에게 새로고침 요청을 전달해야 했음

  • 그룹 초대 시 알림이 사용자에게 제대로 전달되지 않는 문제 발생

해결:

  • SSE(Server-Sent Events) 기반 실시간 블록 이동 이벤트 전송

  • Redis Pub/Sub을 활용하여 모든 사용자에게 동기화된 알림 전송

  • 사용자 그룹 초대 시 알림 시스템 개선


3. 배포 속도 및 테스트 비효율 문제

🛑 문제:

  • 기존 Dockerfile 기반 빌드 시간이 오래 걸림

  • ArgoCD가 ECR의 latest 태그를 인식하지 못해 변경된 이미지가 반영되지 않음

  • 배포 실패 시 원인을 빠르게 파악하기 어려움

해결:

  • JIB 적용하여 Docker 이미지 빌드 최적화 (레이어 캐싱 활용)

  • 버전 태그를 명시적으로 release-{timestamp} 형태로 관리하여 ArgoCD 인식 문제 해결

  • ArgoCD와 Discord 알림 연동하여 배포 실패 시 실시간 알림 전송


4. 무중단 배포 및 블루-그린 배포 문제

🛑 문제:

  • 블루-그린 배포 적용 시 Gradle 실행 시간이 있어 완벽한 무중단 배포가 어려웠음

  • 배포 중 서비스 중단이 발생하는 문제 발생

해결:

  • GitHub Actions을 활용한 CI 자동화 (코드 변경 시 자동 빌드 및 테스트 수행)

  • JIB을 활용한 빠른 컨테이너 이미지 빌드 (Dockerfile 불필요)

  • 운영 서버와 개발 서버를 분리하여 환경별 배포 프로세스 구축

  • 개발 서버에서 Docker Compose와 쉘 스크립트를 활용한 블루-그린 배포 적용

  • 배포 전 Health Check를 추가하여 안정적인 전환 보장


5. HPA 적용 및 서버 자동 확장 문제

🛑 문제:

  • 트래픽 증가 시 서버 부하를 효과적으로 분산할 방법이 필요했음

  • 실시간 알림 기능에서 재연결 시 메모리 해제 문제가 발생

해결:

  • Kubernetes HPA(Horizontal Pod Autoscaler) 적용하여 CPU 사용률에 따라 자동 확장 설정

  • 최소/최대 Pod 개수를 설정하여 비효율적인 리소스 낭비 방지

  • 메모리 누수 발생 시 HPA를 통해 자동으로 재시작하여 문제 해결

자격증

자격증명

정보처리기사

점수 | 발급기관

기사 | 한국산업인력공단

취득연월

2024.06.

자격증명

SQLD

점수 | 발급기관

Developer | 한국데이터산업진흥원

취득연월

2024.04.

대외활동

활동명

구글 연합 동아리

소속/기관명

GDSC(GoogleDevelop ersStudentClub)

연도

2024

내용
  • GDSC 주최 뉴이어 해커톤 참여

    • 백엔드 리드

    • 정기세션을 통한 테코톡 주최

    • 동아리 서버 관리

활동명

구글 연합 동아리

소속/기관명

GDSC(GoogleDevelop ersStudentClub)

연도

2023

내용
  • blended 주류쉐어 플랫폼 개발

  • 서울 경제진흥원 주최 새싹톤 Top 10 진출

활동명

구글 연합 동아리

소속/기관명

GDSC(GoogleDevelop ersStudentClub)

연도

2022

내용
  • Spring Boot를 이용한 ToDoList 프로젝트

  • Google Solution Challenge 참여

활동명

구글 연합 동아리

소속/기관명

GDSC(GoogleDevelop ersStudentClub)

연도

2021

내용
  • java 스터디

  • Spring 스터디

교육

소속/기관명

대진대학교

종류 | 전공

대학교(학사) | 컴퓨터공학과 전공, 산업경영공학과 복수전공

재학 기간 | 재학 상태

2018.03. ~ 2024.08. | 졸업

자기소개

자기소개

자기소개서

안녕하세요, 백엔드 개발자 상민입니다.

"협업을 지향하는 개발자, 끊임없이 성장하는 프로그래머"라는 모토로 꾸준히 발전하며, 문제 해결에 집중하는 개발자로 성장해왔습니다.

성장 과정과 핵심 역량

제 개발자 여정은 의외의 순간에 시작되었습니다. 대학교 수업에서 반복적인 이자율 계산 과제를 Python의 반복문으로 해결하면서 프로그래밍의 매력에 빠졌고, 더 복잡한 시스템을 직접 만들어보고 싶다는 열망이 생겼습니다.

관심을 실천으로 옮기기 위해 GDSC(Google Developers Student Club)에 가입했고, 첫 프로젝트로 ToDoList 애플리케이션을 개발했습니다. 각자 맡은 기능을 개발한 뒤 병합하는 과정에서 충돌이 잦았지만, 팀원들과의 소통을 통해 문제를 조율하며 협업의 중요성을 체감했습니다. 이후 총 7건의 팀 프로젝트중 4건의 프로젝트를 주도적으로 이끌며 협업 능력을 체계적으로 쌓았습니다.

특히 두 번째 프로젝트에서는 로그인 기능 구현에 어려움을 겪었고, 6주간 진전이 없던 문제를 혼자 고민하는 대신 동료들에게 도움을 요청해 단 하루 만에 해결한 경험이 있습니다. 이 경험을 통해 ‘각자 개발하는 협력’이 아닌, 문제를 공유하고 함께 해결하는 진정한 협업의 의미를 배웠습니다.

이후 서버 구축과 배포 과정에서 어려움을 겪으며 인프라와 백엔드 시스템의 본질적인 매력을 느꼈고, 직접 홈서버를 구성해보며 백엔드 개발자로서의 방향을 확립하게 되었습니다.

기술 및 학습 역량

Java와 Spring Boot를 중심으로 한 백엔드 개발에 전문성을 가지고 있으며, Redis, Kafka, Kubernetes 등 분산 환경에서의 실시간 데이터 처리와 시스템 확장성 확보를 고려하고자 합니다.

  • 정보처리기사, SQLD 자격증을 취득하여 기초 이론도 탄탄히 다졌으며,

  • HW BEYOND SW CAMP에서는 짧은 기간 내에 Kafka, WebSocket, Redis 등 생소한 기술 스택을 빠르게 습득하고 실전 프로젝트에 적용하여 우수 수료생으로 선발되었습니다.

낯선 기술도 실전에서 빠르게 습득하고 적용할 수 있는 학습 속도와 응용력이 저의 강점입니다.

프로젝트 경험 및 성과

동아리 및 해커톤, 부트캠프를 진행하면서 다양한 프로젝트를 경험하였습니다.

최근 진행한 COCONOTE 프로젝트에서는 백엔드 개발 리드로서 통합 협업 플랫폼을 구축했습니다. 이 프로젝트는 약 6주간 진행된 팀 프로젝트로, 총 5인의 팀원과 협업하며 백엔드 전반을 책임졌습니다.

  • Kafka, STOMP 등의 기술 도입에 앞장서며, 팀원들이 쉽게 이해하고 사용할 수 있도록 보일러플레이트 코드를 제작 및 공유했습니다.

  • 실시간 알림 누락 문제를 Redis Pub/Sub을 통해 해결하고, Drag & Drop 이슈는 Linked List 기반 정렬 로직을 도입하여 개선했습니다.

  • CI/CD 파이프라인 구축을 통해 배포 속도를 약 30% 단축시켰고, JIB 기반 무중단 배포 환경을 구성했습니다.

  • 대용량 파일 업로드 시스템을 구축하며 Redisson 기반 분산 락을 적용해 데이터 일관성과 안정성을 확보했습니다.

이처럼 프로젝트 전반에서 기술 리더로서 기여했을 뿐 아니라, 실질적인 성능 개선과 문제 해결을 이끌었습니다.

또한, GDSC에서는 여러 프로젝트에서 팀장 및 백엔드 리드 역할을 수행했습니다. 기술적 결정을 내리는 동시에 팀원 간의 원활한 커뮤니케이션을 유도해 프로젝트 완성도를 높였고, 이를 통해 협업과 리더십 역량을 체계적으로 키울 수 있었습니다.

협업과 문제 해결 방식

저는 개인의 성과보다는 팀 전체의 성공을 중시하는 개발자입니다. 문제에 직면했을 때 혼자서 끌어안기보다는, 빠르게 공유하고 함께 해결해 나가는 것을 우선시합니다. 실제로 프로젝트 중 발생한 트러블 상황에서도, 문제 해결을 위한 팀 내 기술 세션을 자주 열어 함께 고민하며 최적의 방향을 도출해왔습니다.

뿐만 아니라, 모든 문제는 단순한 해결에 그치지 않고 팀원들과 지식을 공유하고, 유사 상황에서 반복되지 않도록 체계적인 문제 해결 문화를 만드는 데 기여하고자 노력합니다.

댓글