💡 복잡한 기술적 문제 해결과 시스템 아키텍처 설계에 전문성을 갖춘 백엔드 개발자 💡
분산 시스템 설계와 레거시 현대화에 전문성을 갖춘 백엔드 개발자입니다. 복잡한 기술적 문제를 효율적으로 해결하며, 확장성과 유지보수성을 극대화하는 아키텍처 설계를 추구합니다.
Java, Spring, JPA 기반 백엔드 개발에 전문성을 쌓아가고 있으며, 레거시 시스템 현대화 프로젝트를 적극적으로 주도하고 아키텍처 설계에 참여한 경험을 통해 빠르게 성장하고 있습니다.
🔧 Java/Spring 백엔드 설계 백엔드 아키텍처 설계 주도 경험 |
🔄 시스템 현대화 레거시 시스템 재설계 및 구현 |
🔍 문제 해결 복잡한 기술적 문제 식별 및 해결 |
📚 기술 적응력 새로운 기술 스택 신속한 습득 및 적용 |
핵심 전문 분야 |
|
프로그래밍 언어 |
|
프레임워크 |
|
데이터베이스 & ORM |
|
인프라/DevOps |
|
통신/메시징 |
|
기술개발팀 백엔드파트 | 2024.09 - 현재 재직중
팀 구성: 백엔드 6명, DevOps 2명, 프론트엔드 3명, 앱 4명
누적 메모리 사용량 감소 | 피크타임 메모리 사용량 감소 | API 응답시간 개선 |
주요 역할 및 해결 과제
성능 병목 분석: Datadog을 활용하여 응답 시간이 5초 이상 지연되는 API 패턴 분석 및 메모리 사용량 상관관계 발견
문제 식별 및 해결: 특정 Annotation을 조건으로 빈번하게 수행되는 AOP 로직에서 InputStream 사용 후 close 처리 누락을 확인
리팩토링 주도: try-with-resources 구문으로 close 처리 자동화 리팩토링 구현 및 적용
사용자 경험 개선: 응답 시간 개선으로 앱 사용성 향상 및 사용자 만족도 증가에 기여
2022.10 - 2024.09
Java
Spring Boot
PostgreSQL
Docker
K8S
Redis
팀 구성: 백엔드 4명, 데이터 마이그레이션 1명, 프론트 3명, 앱 3명
핵심 성과:
- 🏗️ 서버리스/NoSQL 기반 레거시에서 현대적 아키텍처로 재설계
- 🔄 멀티테넌시 아키텍처 도입으로 고객별 독립 배포 환경 구축
- ⚙️ Github Action, Jenkins, Docker, K8S 기반 CI/CD 파이프라인 구축
주요 역할 및 해결 과제
아키텍처 설계 주도: 시스템 아키텍처 설계를 적극적으로 주도하고 기술 스택 의사결정 과정을 이끔
레거시 시스템 문제점 식별:
- Node.js, Express, AWS Lambda, DynamoDB 기반 시스템의 유지보수 어려움 분석
- 로깅 시스템 미흡으로 인한 문제 추적 한계 발견
- 설계 없이 급하게 개발된 데이터 구조의 복잡성 파악
기술 스택 선택 및 이유:
- Java & Spring Boot: 풍부한 생태계와 개발자 수급 용이성, 견고한 엔터프라이즈 기능 지원을 위해 선택
- PostgreSQL: NoSQL에서 RDB로 전환하여 데이터 무결성 강화 및 개발자 친화적 환경 제공
- Docker: 환경 일관성 보장 및 12시간 이내 On-premise 배포 요구사항 충족 가능성
- Kubernetes: 서비스 이중화, 무중단 배포, 멀티테넌시 지원, 중앙집중식 로깅 환경 구축을 위해 도입
- Redis: 세션 관리 및 캐싱으로 NoSQL→RDB 전환 과정에서의 성능 최적화를 위해 활용
- NCloud: AWS 대비 비용 효율성과 국내 서비스 특성상 지원 용이성 고려
핵심 기술 역량 및 성과:
- 서버리스에서 컨테이너 기반 아키텍처로 성공적 전환 및 최적화
- 분산 시스템 설계 원칙 적용 및 멀티테넌시 아키텍처 구현
- 전체 시스템 아키텍처 설계 주도 및 기술 스택 전략 수립
React
TypeScript
Spring
JPA
RabbitMQ
Redis
Docker
팀 구성: 백엔드 2명, 풀스택 2명, 프론트 2명, APP 1명, 기획자 1명
핵심 성과:
- 📦 분산된 코어 로직을 멀티모듈, Git 서브레파지토리로 통합하여 재사용성 극대화
- 🔐 JPA @Convert 기능을 활용한 DB 개인정보 암복호화 구현
- 🚀 Spring Boot 2.4.x에서 2.7.x로 마이그레이션 성공
주요 역할 및 해결 과제
풀스택 개발: 8인 팀 중 풀스택 개발 및 CI/CD, 인프라 담당
코드 통합 및 관리:
- 여러 서버에 분산된 코어 로직을 식별하고 중복 코드 문제점 발견
- 멀티모듈 아키텍처와 Git 서브레파지토리로 재구성하여 코드 재사용성 및 유지보수성 개선
통신 아키텍처 설계:
- HTTP 기반 동기 통신의 문제점(장애 전파, 높은 결합도)을 인식하고 개선 방향 제시
- OAuth 서버 중심의 JWT 토큰 인증 체계로 보안 강화
- RabbitMQ 기반 이벤트 주도 아키텍처 도입으로 시스템 장애 발생률 크게 감소 및 서비스 안정성 향상
아키텍처 설계 및 구현:
MSA 기반 6개 서버 구성 환경 설계 및 구현
- Account Management Server: 사용자 계정 및 권한 관리
- Authorization Server: 인증 및 토큰 관리 전담
- Batch Server: 예약 업무 및 주기적 작업 처리
- Contents Management Server: 호텔 콘텐츠 및 상품 관리
- Member Management Server: 호텔 회원 정보 관리
- Interface Server: 외부 시스템 연동 전담
핵심 기술 역량 및 성과:
- 멀티모듈 아키텍처 설계와 모듈 간 의존성 관리 최적화
- Spring Boot 버전 마이그레이션 과정에서 변경된 API와 의존성 충돌 해결
- 메시지 기반 비동기 아키텍처 구현으로 서비스 간 결합도 감소 및 전체 시스템 안정성 개선
React
TypeScript
Electron
DynamoDB
AWS Lambda
NeDB
팀 구성: 키오스크 1명, 앱 1명, 백오피스 1명
핵심 성과:
- 💯 월 3~4회 발생하던 중복결제 이슈 100% 해결
- 🔄 오프라인 환경에서도 RFID 기반 결제 지원 및 서버 재연결 시 동기화 구현
주요 역할 및 해결 과제
결제 모듈 문제 분석 및 해결:
- 중복결제 발생 원인을 결제 프로세스의 동시성 제어 부재로 식별
- 결제 프로세스에 로직적 Lock 체크를 구현하여 중복 트랜잭션 방지
트러블슈팅 주도:
- C++ 작성 Van 연동 모듈에 상세 로그 추가하여 문제 식별
- 로그 분석을 통해 네트워크 지연 시 결제 상태 추적 불가 문제 발견
오프라인 결제 시스템 설계:
- NeDB를 활용한 키오스크 로컬 주문기록 저장소 설계 및 개발
- 네트워크 재연결 시 서버와 자동 동기화 메커니즘 구현
핵심 기술 역량 및 성과:
- 결제 시스템의 동시성 제어 및 장애 대응 아키텍처 구현
- 온/오프라인 데이터 동기화 전략 수립 및 성공적 구현
- Electron 애플리케이션 성능 최적화로 사용자 경험 개선 및 클라이언트 안정성 확보
Vue
Spring
Mybatis
팀 구성: 프론트 2명, 백엔드 3명
핵심 성과:
- 🔐 프론트-백엔드 통신간 민감정보(로그인시 비밀번호 등) RSA 암호화 구현
- 🔑 KT LDAP 연동 로그인 구현으로 기업 내부 인증 시스템과의 원활한 통합
주요 역할 및 해결 과제
보안 취약점 식별 및 개선: 민감정보 평문 전송의 위험성을 인식하고 RSA 암호화 도입
인증 시스템 설계: 기업 LDAP 기반 인증 체계와 애플리케이션 연동 아키텍처 설계
핵심 기술 역량 및 성과: 비대칭 암호화 알고리즘의 실무 적용 및 엔터프라이즈 인증 시스템 통합으로 보안 취약점 해소
Spring
Mybatis
Oracle
JSP
팀 구성: 풀스택 개발자 4명
핵심 성과:
- 📊 10초 이상 소요되던 대형 쿼리 실행 시간을 1초 이내로 단축 (90% 이상 개선)
- 🔄 서블릿 기반 레거시 시스템을 Spring 프레임워크로 성공적 마이그레이션
- 🔗 KT사내 업무 통합문서함과 API 연동 개발로 업무 효율성 증대
주요 역할 및 해결 과제
성능 병목 분석 및 해결:
- 1000줄 이상 대형 쿼리의 실행 지연(10초+) 문제 분석
- 단순 쿼리 최적화(Union → Join 변환)로 초기 개선 시도
- 업무 도메인 심층 분석을 통해 승인 프로세스의 직급별 처리 로직을 이해
- 비즈니스 로직과 데이터 액세스 계층 분리 설계로 쿼리 분해 및 Java 코드와 결합
핵심 기술 역량 및 성과:
- 복잡한 레거시 쿼리 분석 및 최적화로 성능 90% 이상 개선
- 비즈니스 로직과 데이터 액세스 계층 분리를 통한 아키텍처 개선
- 레거시 시스템 현대화 전략 수립 및 점진적 마이그레이션 성공
Python
Flask
Kotlin
Spring Boot
React
TypeScript
PostgreSQL
Redis
Docker
OpenAI API와 YOLOv8을 활용한 자동 이미지 분류 및 모델 훈련 시스템
🏗️ 멀티모듈 아키텍처 AiServer, UserServer, Frontend |
⚡ 비동기 처리 이벤트 기반 작업 처리 |
🔒 보안 설계 OAuth2 및 JWT 인증 |
기술 스택 선택 이유 및 구현 세부사항
AiServer (Python, Flask):
- 머신러닝/딥러닝 생태계에 최적화된 Python 선택
- 경량 웹 프레임워크로 Flask 활용하여 API 엔드포인트 구현
- OpenAI API를 활용한 이미지 자동 라벨링
- YOLOv8 모델 훈련 파이프라인 구축
UserServer (Kotlin, Spring Boot):
- JVM 생태계의 안정성과 Kotlin의 현대적 문법 조합 선택
- 사용자 관리 및 OAuth2 인증 시스템 설계로 보안 강화
- PostgreSQL의 관계형 데이터 모델을 활용한 사용자 데이터 관리
- Redis를 활용한 분산 세션 관리 및 캐싱으로 성능 최적화
Frontend (React, TypeScript):
- 컴포넌트 기반 구조와 상태 관리의 용이성을 위해 React 선택
- TypeScript를 도입하여 코드 안정성 및 개발 생산성 향상
- SSE를 활용한 실시간 알림
핵심 기술 역량 및 성과:
- 다양한 언어로 작성된 서비스 간 통신 아키텍처 설계 및 최적화
- 대용량 이미지 처리를 위한 비동기 워크플로우 구현으로 처리 효율성 및 확장성 확보
- Docker를 활용한 개발 및 테스트 환경 표준화로 배포 안정성 확보
🔧 tree-sitter-language-pack:
- Windows 환경에서의 설치 및 작동 문제 해결을 위한 PR 기여
- 경로 처리 정규식 패턴 개선 및 MSVC 컴파일러 옵션 추가
- Windows 테스트를 GitHub Actions 워크플로우에 추가하여 크로스 플랫폼 호환성 보장
🔧 multilspy:
- Windows 환경에서 TypeScriptLanguageServer 사용 시 발생하는 'No module named pwd' 오류 해결 PR 기여
- Unix 시스템에서만 사용 가능한 pwd 모듈을 Windows에서는 조건부로 임포트하도록 개선
오픈소스 프로젝트 기여를 통해 다양한 개발 환경에 대한 이해와 협업 경험을 쌓고 있습니다.
🔍 문제 해결 접근법 | 단순 기술적 해결책을 넘어 업무 도메인을 깊이 이해하고 근본적인 문제 원인을 찾아 해결하는 방식 추구 |
📚 지속적 전문성 개발 | 각 프로젝트마다 요구되는 새로운 기술 스택을 신속하게 습득하고 실무에 적용하는 전문적 역량 보유 |
🔮 미래 목표 | 시스템 아키텍처 설계와 개발을 균형있게 수행하는 백엔드 전문가로 성장하여 복잡한 기술적 문제를 해결하는 시스템 아키텍트 되기 |
🔭 현재 관심 분야 | 대규모 트래픽 환경에서의 시스템 설계, 마이크로서비스 아키텍처, 분산 시스템 최적화 |