미리보기
기본 정보
신입 백엔드 개발자 김진성입니다! "성능과 비용의 균형을 고민하며, 어려운 문제도 포기하지 않고 끝까지 해결하겠습니다."
자기소개
안녕하세요, 성능과 비용의 균형을 고민하는 백엔드 개발자입니다.
퍼즐 게임 프로젝트에서 비싸고 성능이 좋은 서버보다 비용적으로 현실적인 방안인 AWS 프리티어를 활용한 로드밸런서를 구현해 서버 성능을 개선하고, 비동기 코루틴 도입으로 퍼즐 결합 로직 성능을 약 80배(2090ms에서 26ms으로) 향상시켰습니다.
KAIST 정글 9기에서 5개월간 주 100시간 몰입하며 운영체제, 자료구조, 알고리즘 등 전산학 핵심 지식을 학습했으며, 이와 더불어 실제 서비스 개발과 론칭 경험을 쌓았습니다.
C언어 기반 시스템 프로그래밍과 PintOS 운영체제 프로젝트를 통해 어렵고 도전적인 문제에 직면했을 때 포기하지 않고 끝까지 해결하는 끈기와 체계적인 문제 해결 능력을 길렀습니다.
또한, 협업을 통해 팀의 긍정적인 분위기를 주도하며 팀워크를 강화하는 역할을 즐깁니다. 프로젝트와 조직 내에서 밝은 에너지를 더하며, 함께 성장하는 개발자가 되기 위해 노력하고 있습니다. 앞으로도 기술적 역량과 협업 능력을 바탕으로 가치 있는 서비스를 만들어 나가겠습니다.
기술 스택
Spring Boot, Java, Kotlin, Django, Flask, Python, MySQL, Redis, C
프로젝트
Puzzle Share
SW 사관학교 정글(카이스트 정글 9기)
2023.11. ~ 2023.12.
프로젝트 내용
Puzzle Share는 친구나 가족과 함께 즐길 수 있는 실시간 배틀 퍼즐 게임입니다. 사용자들은 퍼즐을 맞추며 아이템을 사용해 상대를 견제할 수 있으며, 완성한 퍼즐은 마이페이지 갤러리에 보관됩니다.
문제 해결 및 장애 예방
1. 퍼즐 결합 로직 성능 개선
문제: Redis에 동기적으로 저장되는 과정에서 메세지 병목 현상 발생
해결: Coroutine async 도입으로 성능 80배 향상 (2090ms에서 26ms으로)
2. 실시간 게임 동기화 최적화
문제: 실시간 멀티플레이어 게임 특성상 지속적이고 빠르고 반복적인 socket 통신으로 메시지 전송 빈도로 인한 CPU 처리 부하 예상
해결: 애니메이션 활용으로 메시지 전송 빈도 조정 및 서버 통제 방식 도입으로 성능과 사용자 경험 균형 확보
결과: 8인 플레이일 때 분당 예상 패킷 수 24배 감소(115,200에서 4,800)
스프린트 초기 : n(게임 진행 인원 수) × n(브로드캐스트) × 30(초당) × 60(1분에) = 115,200
애니메이션 추가로 사용자 경험과 타협 : n(게임 진행 인원 수) × n(브로드캐스트) × 10(초당) × 60(1분에) = 38,400
최종(서버가 통제) : n(브로드캐스트) × 10(초당 메시지 전송 횟수) × 60(1분) = 4800
3. 로드밸런서
문제 : 프로젝트 진행 초기에 서버 부하를 방지하기 위해 API 서버와 Socket 서버를 분리하긴 했지만, 게임 진행 인원이 많아지면 게임 서버인 Socket 서버에 과부하가 발생할 위험이 있었으며, 최악의 경우 서버 장애로 인해 서비스 중단 가능성이 존재
게임 서버를 Scale-Up 하기에는 취업준비생들에게는 비용적 부담이 한계로 작용
해결 : 비용 부담이 없는 AWS 프리티어 서버를 여러 개 두어 로드밸런서 구현을 통해 문제를 해결하고자 함
gameId를 기준으로 같은 게임방은 동일 서버로 연결.
기본적으로 라운드 로빈 방식으로 요청 분산.
서버 장애 시, Redis에 저장된 게임 데이터와 사용자 정보를 다른 서버로 이전해 복구.
4. 퍼즐 결합 문제
문제 : 퍼즐 조각을 맞추는 과정에서 조각 간에 미세한 틈이 발생하여 퍼즐이 딱 맞지 않는 현상 발생.
퍼즐을 결합하기 위해 퍼즐의 중심점 기준으로 일정 거리 계산을 함.
퍼즐 생성 시, 조각의 곡률(볼록한 부분)로 인해 각 조각의 중심점이 미세하게 어긋나는 것을 알고,
볼록한 부분의 크기만큼 1px 보정값을 적용했으나, 정밀한 계산이 어렵고 근본적인 문제를 해결하지 못해 계속 틈이 발생.
해결 :
퍼즐의 곡률을 제거하고, 정사각형 형태로 테스트한 결과 문제 없이 정확히 맞춰짐을 확인.
중심점 변경을 방지하기 위해, 퍼즐보다 큰 정사각형 내부에 퍼즐을 배치하고 큰 사각형 테두리를 숨겨 처리.
이를 통해 중심점을 일치시키고, 조각 간의 틈을 완전히 제거.
기술 스택
Backend
SPRING BOOT, SPRING CLOUD, REDIS, MYSQL, AWS, DOCKER, GitHub Actions
Front
REACT
아래 포트폴리오를 참고해 주시면 감사하겠습니다 :)
포트폴리오
교육
SW사관학교 / KAIST
사설 교육 | 전산학
2024.08. ~ 2024.12. | 수료
경력
씨에스케이주식회사
사원 | 서비스사업부
2020.04. ~ 2022.07. (2년 4개월)
씨에스케이 서비스 사업부(Customer Service) 기술 엔지니어 사원으로 근무
반도체 유해가스 저감 장치장비 유지 보수 및 set-up
개인 성과 : 미래 가치 100억 이상의 매출 효과의 신규 장비 수주 성공
퇴사 사유 : IT 업계 업직종 전환
자격증
SQL개발자(SQLD)
한국데이터베이스진흥센터
2023.10.
네트워크관리사
2급 | 한국정보통신자격협회
2023.04.