미리보기
기본 정보
자기소개
저는 어릴 적부터 게임을 정말 좋아했습니다. 다양한 장르의 게임을 즐기면서, 언젠가는 제가 즐겨 왔던 그 게임들처럼 멋진 게임을 직접 만들어보고 싶다는 꿈을 품게 되었습니다.
그러던 중 우연한 기회로 프로그래밍을 접하게 되었고, 개발의 세계에 깊이 빠져들게 되었습니다. 개발을 배우면서 놀랍게도 게임과 프로그래밍 사이에 많은 유사점이 있다는 것을 발견했습니다. 논리적 사고, 문제 해결 능력, 창의성 등 게임을 즐기면서 자연스럽게 익혔던 능력들이 프로그래밍에서도 큰 도움이 되었습니다. 이러한 발견은 제가 개발에 더욱 흥미를 느끼게 된 계기가 되었고, 게임 개발이라는 꿈을 향해 한 걸음 더 나아갈 수 있게 해주었습니다.
이스트게임즈는 오랜 기간 동안 전 세계 유저들에게 사랑받는 게임을 개발해 온 회사입니다. 귀사의 일원으로서 제 게임에 대한 이해와 개발 능력을 바탕으로 혁신적인 게임 개발에 기여하고 싶습니다. 열정적인 게이머이자 개발자로서, 저는 사용자의 관점에서 게임을 이해하고 이를 개발에 반영할 수 있는 독특한 시각을 가지고 있다고 믿습니다.
게임을 사랑하는 마음과 개발에 대한 열정을 가진 저는 이스트게임즈의 게임 서버 개발자로서 큰 가치를 창출할 수 있을 것입니다.
기술 스택
Java, Spring Boot, Spring Security, MySQL, JPA, querydsl, Redis, AWS, Git, GitHub, Docker
프로젝트
Binder
스위프 6기
2024.09. ~ 진행 중
내 주변의 쓰레기통을 찾아주는 서비스(Bin-Finder)
구성 인원: 기획 1, 디자인 1, 프론트엔드2, 백엔드 2
협업 내용:
주 3회 회의를 통해 다른 직군과 협력하며 사용자 경험을 고려한 API 설계
쓰레기통 검색, 공공데이터 기반 쓰레기통 등록을 제외한 대부분 기능 구현
팀 내 의사결정 과정에 적극적으로 참여하며 기술적 제안(검색 개선)
지속적인 홍보로 일일 사용자 50명 달성
주요 성과:
댓글 좋아요 기능 동시성 테스트 중 발생한 데드락 문제 해결
낙관적 락으로는 해결할 수 없는 데이터베이스 레벨의 락 문제
MySQL 공식 문서를 통해 외래키 제약 조건으로 인한 공유 락 획득이 원인임을 파악
비관적 락을 도입하여 트랜잭션 시작 시점부터 배타 락 획득
데드락 및 동시성 문제 해결로 댓글 좋아요 수의 데이터 정합성 확보
트랜잭션 격리 수준, JPA의 동작 방식, 그리고 데이터베이스 락 메커니즘에 대한 이해 획득
AI를 이용한 욕설 필터링 기능 구현
데이터베이스에서 욕설 목록을 저장하고 비교하는 방식은 필터링을 우회하는 방법에 취약한 문제 발생
ChatGPT API를 이용하여 필터링을 우회하는 방법도 통제
ChatGPT가 잘못된 응답을 반환하는 경우에는 후처리 로직을 통해 오탐 문제 개선
DB 학습 모델 적용으로 GPT 호출 빈도 최적화 및 성능 개선(30배)
관리자의 모니터링 부담 감소 효과
AWS 인프라 환경 구축 및 CI/CD 적용
EC2, ELB, RDS, Route53, S3 등 프로젝트에 필요한 인프라 구축 및 비용 최소화
잦은 API 스펙 변경으로 인해 API 문서 공유를 위한 배포 자동화 필요성 체감
Github Actions를 통한 CI/CD 적용으로 배포 시간 75% 단축 (10분 -> 2분) 및 협업 경험 개선
심사를 위한 관리자 페이지 구현
데이터 정규화를 통해 복잡한 관리자 페이지 구현
3개 이상 누적된 신고만 표시하여 관리자의 업무 효율성 향상
신고 타입별 집계 기능 구현으로 관리자의 심사 및 사유 작성 프로세스 개선
소셜 로그인 시 기존 계정과의 이메일 중복 문제
이메일 기반 사용자 계정 통합 로직 개발 및 적용
사용자 계정 통합으로 중복 계정 생성 방지하여 사용자 경험 향상
Air Dnb
코드스쿼드
2024.05. ~ 2024.06.
에어비엔비를 모방한 숙소 예약 시스템
대규모 트래픽 대응 쿠폰 시스템
선착순 쿠폰 발급 기능에서 쿠폰 초과 발급 및 대규모 동시 요청으로 인한 시스템 부하 문제 발생
Redis의 Queue와 Spring의 Scheduler를 이용해 대기열 시스템을 구현
기존 대비 성능 5배 개선
동시 예약시 오버부킹 문제 해결
낙관적 락, 비관적 락으로는 동시에 여러 날짜를 예약할 수 있는 숙소시스템의 동시성 이슈를 해결하기 어려움
Redis의 분산 락을 활용하여 동시성 제어를 구현
동시성 문제 제어를 통한 오버부킹 0건 달성
숙소 검색시 N+1 쿼리 발생으로 인한 검색 성능 저하 문제 해결
FetchJoin과 스프링 부트의 batch 설정을 활용하여 쿼리 실행 횟수를 감소
쿼리 실행 횟수 감소로 검색 성능 개선
커스텀 WAS
코드스쿼드
2024.03. ~ 2024.04.
순수 Java로 웹 애플리케이션 서버(WAS)를 구현한 개인 프로젝트
중앙 집중식 요청 처리를 위한 프론트 컨트롤러 패턴 적용
분산된 요청 처리 로직으로 인해 코드 복잡도가 증가하고 유지보수의 어려움 발생
중앙 집중식 요청 처리를 위해 프론트 컨트롤러 패턴을 적용
DispatcherServlet과 유사한 구조로 요청 처리 흐름을 일원화하여 유지보수성을 크게 향상시킴
인가 전용 인터셉터 구현
공통적인 권한 검증 등을 각 컨트롤러에서 처리함으로 유지보수의 어려움 발생
인터셉터를 도입하여 중앙에서 공통 작업을 처리하고 특정 URL 패턴에 대해 필터링을 적용
권한 검증 로직을 개별 컨트롤러에서 분리하여 코드 모듈화 및 재사용성을 높임
Multipart 요청 처리를 위한 컴포넌트 구현
파일 업로드 시 메모리 사용량 급증으로 인한 서버 다운, 바이너리 데이터를 처리하지 못하고 무한 로딩 현상 발생
스트리밍 방식으로 파일 업로드를 처리하여 메모리 사용을 최적화, ContentLength 헤더를 읽어 바이너리 데이터도 파싱할 수 있도록 개선
안정적이고 효율적인 파일 업로드 기능을 구현하여 메모리 사용량을 크게 줄일 수 있었음
포트폴리오
교육
코드스쿼드
사설 교육 | 백엔드 개발자 양성 교육
2024.02. ~ 2024.08. | 졸업
인하대학교
대학교(학사) | 경영학과
2011.02. ~ 2015.02. | 졸업
대외활동
스위프 6기
스위그
기획자, 개발자, 디자이너가 한 팀으로 6주간 웹 어플리케이션을 만드는 프로젝트