미리보기
기본 정보
안녕하세요, 성능 최적화된 프로덕트 개발을 리딩할 수 있는 개발자 정종현입니다. 해야하는 일을 넘어 하고 싶은 일을 찾아 실행하고 비즈니스 가치 창출을 중시합니다. 이메일: jjh3543@naver.com 전화번호: 010-8234-9069
자기소개
기술에 종속되지 않고 사용자 만족을 최우선으로 하는 서비스를 구현합니다.
서버 부하 분산, 캐싱 전략, SQL CALL 최소화를 통해 비용 효율적인 고성능 백엔드 시스템을 설계합니다.
개발 능력 뿐만 아니라 겸손한 'Giver'로서 팀과 사회에 선한 영향력을 전파하는 것을 지향합니다.
팀과의 원활한 소통과 협업을 중요시하며 코드 리뷰를 통해 다른 프로그래머들과 의견을 공유하고 협업합니다.
구현 능력 뿐 아니라 제가 가진 생각과 로직을 시각적으로 설명할 수 있는 능력도 함께 만들어 나갑니다.
꾸준함을 스스로 증명하기 위해 매일 깃허브로 기록을 남기며 성과를 만들어 나가는 개발자로서 성장하고 있습니다.
기술 스택
Java, Spring Boot, JPA, querydsl, Kotlin, JUnit, Docker, MySQL
경력
DNX
사원 | 개발팀
2023.01. ~ 2023.08. (8개월)
Java와 Android를 사용해 BLE 연동 및 데이터 타입 변환 프로그램 개발에 기여했습니다.
BLE 연결 안정성 문제 해결
도전 과제: BLE 장치와의 안정적인 연결 유지가 중요한데 특히 저전력 상태에서 BLE 장치가 간헐적으로 연결이 끊기거나 데이터 패킷 손실이 발생했습니다.
해결 방안: 재연결 로직을 구현하여 연결이 끊어질 경우 자동으로 다시 연결하도록 데이터를 안정적으로 전송하기 위해 재전송 메커니즘을 도입했습니다.
구체적 성과: 연결 유지율을
75%
에서95%
로 향상시켰고, 평균 재연결 시간을2.5초
에서1.2초
로 단축시켰습니다.
데이터 타입 변환 효율성 문제 해결
도전 과제: BLE 장치에서 전송되는 데이터가 압축된 이진 포맷 구조로 구현되어 변환 작업이 다소 복잡했습니다. 데이터 타입 변환 시 성능 저하와 메모리 사용량 증가를 확인했습니다.
해결 방안: 데이터 타입 변환을 최적화하기 위해 비동기 처리와 메모리 캐싱을 적용했습니다.
구체적 성과: 데이터 처리 속도를
40%
개선하였고, 데이터 타입 변환에 소요되는 CPU 사용량을30%
감소시켰습니다.
기존 Java 백엔드 레거시 코드 Kotlin 리팩토링 및 쿼리 성능 개선에 기여했습니다.
레거시 코드의 복잡성과 이해 문제 해결 및 시각화
도전 과제:
Java
로 이루어진 기존 레거시 코드에 복잡한 로직과 문서화 되지 않은 코드로 인해Kotlin
으로 리팩토링하는데 어려움이 발생했습니다.해결 방안: Kotlin의 간결하고 직관적인 구문을 활용해 중복 코드를 제거하고, 함수형 프로그래밍 패러다임을 도입하여 코드 길이를 줄였습니다.
구체적 성과: 코드 분석 시간과 의존성 확인 시간을
30%
단축시켰으며, 신규 팀원의 온보딩 시간을 평균2주
에서1주
로 단축했습니다.
메인 화면 배너 API 비효율적인 쿼리 패턴의 개선
도전 과제: 레거시 코드의 배너 API에 반복적인 쿼리 호출이 많아 데이터베이스 부하가 증가하고, 네트워크 트래픽이 과다하게 발생했습니다.
해결 방안: 비효율적인 쿼리 패턴을 개선하기 위해
배치 쿼리
를 도입하고, 중복된 쿼리 호출을 하나의 쿼리로 병합하여 데이터베이스와의 통신 횟수를 줄였습니다. 또한, 데이터베이스와의 연결을 지속적으로 유지하여 연결 설정 비용을 줄였습니다.구체적 성과: 데이터베이스 호출 수를
70%
줄였으며, 전체 응답 시간을 평균2.0초
에서0.6초
로70%
단축했습니다.
프로젝트
치즈마켓
우아한테크코스 취지직
2024.06. ~ 진행 중
경매 조회 성능 최적화
도전 과제: 다양한 조건(카테고리, 가격, 인기도 등)으로 경매 목록을 조회할 때 성능 이슈가 발생했습니다. 특히 대량의 데이터에서 페이징 처리 시 속도가 현저히 느려졌습니다.
해결 방안: QueryDSL을 도입하여 동적 쿼리 생성을 최적화하고, 복잡한 정렬 로직을 애플리케이션 레벨에서 처리했어요. 또한, 자주 사용되는 조회 조건에 대해 복합 인덱스를 적용했습니다. 특히 인기도 기반 정렬 시 서브쿼리를 활용한 효율적인 쿼리 구조를 설계하여 성능을 크게 개선했습니다.
그리고 페이징 처리 시 'No Offset' 방식을 도입하여 대용량 데이터에서도 일관된 성능을 유지할 수 있게 했습니다.성과 측정: 경매 목록 조회 시간을 평균
2.5초
에서0.8초
로68%
단축했고, DB 서버의 CPU 사용률을35%
감소시켰어요. 부하테스트를 통해 1만 건 이상의 데이터에서도 페이징 처리 시간을 일정하게 유지할 수 있게 되었습니다. 추가로, 복합 인덱스 적용으로 인덱스 활용률이40%
에서85%
로 향상되었고, 사용자들의 검색 반응 속도 만족도가60%
에서90%
로 크게 상승했습니다.
메모장 서비스 LBS 배포
명지 대학교
2023.11. ~ 2023.12.
AWS 인프라 구성 및 서비스 배포
도전 과제: AWS에서 다중 가상 서버 인스턴스(t2.micro)로 로드 밸런서를 구성하고, 하나의 데이터베이스 인스턴스를 추가하여, 메모장 서비스를 배포해야 했습니다. 또한, Nginx와 uWSGI를 사용한 웹 애플리케이션 환경을 설정해야 했습니다. 서버 간 통신을 고려한 IP 설정 및 보안 그룹 구성도 문제였습니다.
해결 방안: EC2 인스턴스 2개와 Redis를 사용하는 데이터베이스 인스턴스를 별도로 구성하였습니다.
서버 간의 통신은 프라이빗 IP로 이루어지도록 하고, 각 인스턴스에 대해 Redis와의 통신을 허용하는 보안 그룹을 적용했습니다. 로드 밸런서(ALB)를 설정하여 클라이언트 요청을 자동으로 적절한 EC2 인스턴스에 분산 처리할 수 있도록 했습니다. 마지막으로 CI/CD 파이프라인으로 AWS CodePipeline을 구축하여 개발부터 배포까지의 과정을 자동화했습니다.성과 측정: 애플리케이션의 평균 응답 시간이
800ms
에서300ms
로 약60%
감소하였으며, AWS 리소스 사용량을 최적화하여 월 비용을30%
절감했습니다. 또한 ALB 사용을 통해 갑작스러운 트래픽 증가 시에도 Auto Scaling으로 인해 서비스 중단 없이 원활하게 대응할 수 있게 되었습니다.
C++ 기반 채팅 서버 구축
명지 대학교
2023.09. ~ 2023.10.
메시지 전송 속도와 동시성 최적화
도전 과제: 클라이언트 간 빠른 메시지 전송과 안정적인 동시성을 보장하면서 스레드 간 경쟁 상태를 해결해야 했습니다.
해결 방안: 메시지 전송을 위해
std::condition_variable
을 사용하여 스레드 간 동기화를 관리하고, Producer-Consumer 패턴을 적용하여 메시지 전송의 효율성을 높였습니다. 또한, 특정 스레드에서만 네트워크 I/O 작업을 처리하게 하여 동시성 문제를 해결했습니다.성과 측정: 메시지 전송 속도가
30%
향상되었고, 서버의 동시성 처리 성능이40%
이상 증가했습니다. 서버의 CPU 사용률을25%
감소시켜 시스템 리소스 사용량을 최적화했습니다.
멀티스레드 및 I/O 멀티플렉싱 구현
도전 과제: C++ 기반으로 멀티스레드 환경에서 다수의 클라이언트가 동시에 접속할 수 있는 채팅 서버를 구현해야 했습니다. 스레드 간의 동기화 문제와 I/O 처리를 효율적으로 관리하는 것이 주요 도전 과제였습니다.
해결 방안:
std::thread
와std::mutex
를 사용하여 스레드 간 동기화를 구현했으며,select()
를 사용한 I/O 멀티플렉싱을 도입하여 다수의 클라이언트를 동시에 처리할 수 있도록 했습니다. 또한, 작업 큐와 조건 변수를 통해 메시지 큐 작업을 관리하여 스레드 간 충돌을 방지했습니다.성과 측정: 100명 이상의 동시 접속 클라이언트에서 메시지 전달 시간을
80ms
로 유지하며, 서버 안정성을 확보하였습니다. 스레드 처리 효율을30%
향상시키고, CPU 사용률을40%
최적화했습니다.
블록체인 기반 SNS 챌린지
ABC 아카데미
2023.10. ~ 2023.11.
블록체인 스마트 컨트랙트 기반 챌린지 시스템 설계
도전 과제: 챌린지를 생성하고, 참여자가 이를 완료하면 토큰 보상을 자동으로 지급하는 스마트 컨트랙트를 블록체인 상에 구현해야 했습니다. 챌린지 발행자(Publisher)와 참가자(Participant) 간의 상호작용을 안전하고 투명하게 관리하는 것이 주요 과제였습니다.
해결 방안: ICP(Internet Computer Protocol) 기반의 Canister를 활용해
challenge canister
와token canister
를 구현했습니다.challenge canister
는 챌린지 생성, 참가, 보상 처리 등을 담당하며,token canister
는 토큰 발행 및 전송을 담당했습니다. 각 사용자의 고유 식별자와 참가 상태를 저장해 참가 기록 및 보상을 안전하게 관리할 수 있도록 했습니다.성과 측정: 스마트 컨트랙트를 사용한 토큰 거래의 처리 시간을 15% 단축하였으며, 전체 시스템의 투명성을 유지하면서 사용자 참여율이 25% 증가했습니다.
교육
ICT
사설 교육 | 보안 전문가 양성 교육
2020.07. ~ 2021.01. | 졸업
명지대학교
대학교(학사) | 컴퓨터공학
2016.03. ~ 2024.02. | 졸업
자격증
정보 처리 기능사
합격 | 한국산업인력공단
2018.11.
SQLD
합격 | 한국데이터산업진흥원
2024.09.
정보 처리 기사
합격 | 한국산업인력공단
2024.06.
포트폴리오
대외활동
Naver Boost Camp AI Tech 프리코스
Naver
AI 프로덕트 엔지니어링을 위한 AI 모델링 학습 프로젝트를 3단계로 진행하였습니다.
Google Study Jam Gen AI
GCP 환경에서 제공하는 8가지 AI & ML 어플리케이션 서비스들을 학습했습니다.
우아한 테크코스 6기 프리코스
우아한 테크코스
코드리뷰와 PR을 통해 5가지 Java Spring 기반 프로젝트 미션들을 완료했습니다.
외국어
영어
비즈니스 회화 가능