👨💻 프로필
자기소개
안녕하세요. 개발에서의 성장을 삶의 기쁨으로 느끼며 개발자의 길을 시작한 저는, 얻은 지식과 경험을 블로그를 통해 공유하고 소통하면서 끊임없이 성장하고 있는 개발자입니다. 기술에 대한 거부감이 없고, "일단 해보자"
라는 마음가짐으로 다양한 도전을 즐깁니다.
과거에 팀원들과 함께 수행했던 프로젝트에서 아쉬운 점을 발견하고, 이를 개선하기 위해 혼자서 프로젝트를 진행했습니다. 이 과정에서 테스트 커버리지 100%
를 목표로 147
개 이상의 테스트 코드를 작성하였고, 캐싱, DB 쿼리 최적화, SQL 실행 계획 및 인덱스 개선 등을 통해 TPS를 60.4
에서 841.4
로 14배 향상시키는 성과를 달성했습니다.
또한, Java
와 Spring
에 대한 깊은 이해를 위해 다양한 강의를 수강하며, 코딩 테스트, 컴퓨터 과학, 트러블슈팅, 알고리즘, Kubernetes, Kafka, 아키텍처, CI/CD 등에 대한 공부를 지속적으로 진행하고 있습니다. 학습한 내용을 블로그에 정리하여 다른 개발자들과 공유함으로써, 지식을 나누고 소통하는 기회를 만들어 가고 있습니다.
👨💻기술 스택
상급 |
중급 |
JAVA |
Querydsl |
Spring |
Kafka |
Spring Boot |
Redis |
JPA |
AWS |
Kubernetes |
Jenkins |
MySQL |
ArgoCD |
GitHub |
JavaScript |
Python |
JUnit |
React |
Mockito |
Docker |
|
프로젝트
📑 GCP 기반 MSA 아키텍처의 설문 관리 서비스 <WaveForm> - 개선 프로젝트
- 기간 : 2023년 10월 2일 ~ 2024년 4월 (6 개월)
- GitHub
- 개요 : 카카오엔터프라이즈 SW 아카데미에서 팀원들과 진행했던 설문 관리 서비스 프로젝트의 성능을 개선하기 위해 혼자서 시작한 프로젝트입니다.
- 기술 스택 :
Java, SpringBoot, Spring Cloud Gateway, Spring Security, Gradle, JUnit5, Mockito, queryDsl, Docker, Kubernetes, GitHub, Jenkins, MySQL, MySQLOpretor, Prometheus, Grafana, Elastic, Kibana, Fluentd, GCP, Redis, ArgoCD, Slack, nGrinder
- 문제 상황 및 분석
- 프로젝트 완료 직후 nGrinder로 성능 테스트를 진행한 결과, TPS가 64.4로 실서비스에는 턱없이 부족한 수준임을 확인했습니다.
- 초기에는 구체적 원인을 알지 못해, 캐싱, 인덱스, 쿼리 효율화 등 여러 방면에서 성능 개선 시도를 병행했습니다.
- 성능 개선 과정
- 글로벌 캐시 적용
- 설문 조회가 빈번하게 발생함을 고려하여, Redis Cluster를 도입해 글로벌 캐시를 구현했습니다.
- 설문 ID를 키로 자주 조회되는 데이터를 캐시에 저장, DB 부하를 크게 줄였습니다.
- 복합 인덱스 설계
- SQL 실행 계획 분석 과정에서, 삭제된 데이터(
is_deleted
)를 효율적으로 걸러내는 쿼리가 없었음을 발견했습니다.
- is_deleted + survey_document_id에 복합 인덱스를 추가하여, 일대다 관계(설문-질문)에서 빠른 조회가 가능하도록 설계했습니다.
- N+1 쿼리 해소
- 기존에는 각 설문에 대해 질문을 반복 조회하는
N+1
문제가 발생했습니다.
- QueryDSL의 fetch join과 batch size 설정으로, 한 번의 쿼리로 필요한 데이터를 모두 불러오게 개선했습니다.
- DB 가용성·확장성 확보
- MySQL Operator로 InnoDB Cluster를 구성, MySQL Group Replication(GR) 기반의 다중 노드 환경을 만들었습니다.
- 읽기 부하는 읽기 전용 노드에, 쓰기는 마스터 노드에 분산시켜 데이터 일관성과 확장성을 높였습니다.
- Gateway 인스턴스 확장
- 성능 저하의 근본 원인은 Spring Gateway의 replicas가 1로 고정되어 트래픽이 몰리면 단일 인스턴스가 모두 감당해야 했던 점이었습니다.
- Kubernetes 환경에서 Gateway replica 수를 확장, 수천 명의 동시 접속 부하를 안정적으로 분산 처리할 수 있게 했습니다.
- 최종 결과
- 위의 개선 과정으로 TPS 64.4 → 841.4로, 약 14배 성능을 끌어올렸습니다.
- 서비스의 구조적 문제를 근본적으로 해결하며, 실제 서비스 수준의 안정성과 확장성을 경험할 수 있었습니다.
📑 AWS 기반 MSA 아키텍처의 실시간 해외 공시 기반 트레이딩 시스템 - <FinPago>
- 기간 : 2025년 2월 14일 ~ 2025년 3월 17일 (1 개월)
- GitHub : https://github.com/Pda-Final-Project
- 개요 : FinPago는 미국 SEC(증권거래위원회) EDGAR 공시 데이터를 활용하여 해외 주식 투자자들이 실시간으로 번역 및 요약된 공시 정보를 확인하고, 트레이딩을 할 수 있도록 지원하는 플랫폼입니다. 신한투자증권 프로디지털 아카데미 최종 프로젝트로 진행했으며 저는 공시 백엔드
100%
, 데이터 수집 파이썬 90%
, 인프라 100%
기여하였습니다.
- 기술 스택 :
Java, Spring Boot, Spring Data JPA, MySQL, React, JavaScript, AWS, Kubernetes, Docker, Jenkins, MySQL Operator, Redis Cluster, Kafka, ArgoCD