미리보기
기본 정보
기술 스택
Java, JavaScript, Python, Go, Spring Boot, React, Java, JavaScript, Python, Go, Spring Boot, React
교육
전북대학교
대학교(학사) | 소프트웨어공학과
2018.03. ~ 2024.02. | 졸업
충남고등학교
고등학교 | 자연계
2014.03. ~ 2017.02. | 졸업
프로젝트
Woowak Lab
우아한 테크 캠프
2024.08. ~ 2024.08.
활동을 진행하면서 Java 와 Spring 을 활용한 개발 및 MySql 등 개발 역량을 향상시켰습니다. 단순히 활용 능력이 아닌 동료들과 내부 구현에 대해서 학습하고 이해하며 프로젝트를 진행했습니다.
• 캐시를 활용한 주문 시스템 동시성 제어 및 2-3배 응답 속도 개선
Pocket Restaurant
SW마에스트로
2023.06. ~ 2023.11.
SW마에스트로
스마트 오더 시스템을 개발했습니다. 인프라 구조 설계 및 구성과 Nest.js 기반의 백엔드 비즈니스 로직 구현을 중점적으로 담당했습니다.
JBNU 새탭
기타
2022.09. ~ 진행 중
전북대학교의 학사 공지를 새탭에서 빠르게 볼 수 있는 chrome extension 입니다. 현재 크롬 웹스토어, 웨일 웹스토어에 등록되어 있고 총 70명의 사용자가 있습니다.
대외활동
우아한 테크 캠프
우아한 형제들
활동을 진행하면서 Java 와 Spring 을 활용한 개발 및 MySql 등 개발 역량을 향상시켰습니다. 단순히 활용 능력이 아닌 동료들과 내부 구현에 대해서 학습하고 이해하며 프로젝트를 진행했습니다.
• 캐시를 활용한 주문 시스템 동시성 제어 및 2-3배 응답 속도 개선
• CSV DB의 탐색 속도 1900배 향상
• 간단한 Java Web Framework 구현 maven 에 등록 - jin
SW마에스트로
과학기술정보통신부
소프트웨어 마에스트로 연수생으로 활동하며, 스마트 오더 시스템을 개발했습니다. 인프라 구조 설계 및 구축과 NestJS 기반의 백엔드 비즈니스 로직 구현을 맡았습니다.
• Redis 를 활용한 조회 응답 시간 33프로 감소, TPS 5배 증가
• 리눅스 커널 파라미터 튜닝을 통한 TCP 통신 최적화
자격증
정보처리기사
기사 | 한국산업인력공단
2022.11.
외국어
영어
비즈니스 회화 가능
자기소개
[웹 프레임워크 경험]
🏕 우아한테크캠프 - Java 개발 경험
우아한테크캠프를 진행하면서 Java 를 학습하고 직접 Was 를 만드는 프로젝트도 진행하였습니다. rfc 문서를 참고하면서 HTTP 요청을 파싱하고 멀티파트폼을 처리하는 로직도 구현했습니다. 또한, CSV 파일과 JDBC 드라이버를 활용해 DB를 구성해보았고 탐색 시간 복잡도를 O(N)에서 O(1)로 개선해 1억개의 데이터(약 4GB)에서 탐색 시간을 약 1900배 감소시켰습니다.
링크: https://github.com/kimhyun5u/java-was/commit/47fc17adf3aeff00ef7d0c28ea62a52602746151
또한, 주문 시스템을 개선하면서 레디스 캐싱을 이용해 락을 사용하지 않고 재고를 감소시켜 응답 시간이 2-3배 감소했습니다.
링크: http://blog.kimhyun5u.com/20
🪖 소프트웨어개발병 - 다양한 프레임워크 경험 군대에서 소프트웨어개발병을 복무하였습니다. 2년의 복무기간 동안 다양한 공군 인트라넷 웹 사이트를 개발하고 유지보수하는 업무를 맡았습니다. 당시 프레임워크에 대해 깊게 공부하지는 않았지만 Golang의 gin, NestJS 등 다양한 프레임워크를 사용해 보면서 공부하는 계기가 되었습니다. 또한, Rust 런타임의 Python 비동기 서버 프레임워크 Robyn 오픈소스가 Django에 비해 20배 이상 빠르다는 영상을 보고 사용해 보았는데 버그를 발견해서 수정해 기여한 경험도 있습니다. 저는 프로그래밍 언어와 프레임워크에 많은 관심을 가지고 있어 어떤 프레임워크를 사용하더라도 금방 적응할 자신이 있습니다.
[성능 튜닝에 대한 관심]
클라우드에서 성능은 곧 비용 감소로 이어진다는 생각을 가지고 있습니다. 때문에 다양한 방법을 통해 자원을 감소하고 컴퓨팅 성능을 최대한 활용해 성능을 향상 시키는 것에 관심이 많습니다. SW마에스트로 연수생으로 활동하면서 성능 향상을 위해 다양한 고민을 하였습니다.
첫 번째로 Spring과 NestJS 중 NestJS 를 채택했습니다. JVM 위에서 돌아가는 Spring 보다 NestJS 가 더 적은 메모리를 사용하고 같은 CPU 사용량일 때 더 좋은 RPS를 보였기 때문입니다. NestJS 를 사용한 이유는 그 밖에도 있었지만 위의 이유로 성능에 영향을 미칠 것이라 생각하고 중점적으로 고려했습니다.
또한, API 에 캐시를 적용했습니다. 대부분의 서버의 병목현상은 DB I/O에서 발생합니다. 따라서 인메모리 DB인 Redis를 이용해 캐시를 적용해 DB I/O를 최소화 했습니다. 추가로 리눅스 파라미터 튜닝을 진행했습니다. 대역폭을 향상 시키는 파라미터와 패킷 유실을 방지하는 파라미터를 수정해 TCP 통신을 최적화 했습니다. 위와 같은 선택으로 스트레스 테스트를 통해 많은 사용자가 발생하더라도 에러 발생이 감소하고 지연 속도도 크게 감소하는 결과를 얻었습니다. 저는 다양한 방식으로 성능을 개선하는 것에 관심이 많습니다.
[공유를 통한 성장]
우아한테크캠프를 진행하면서 제가 새로 알게된 사실들에 대해서 정리하고 팀원들과 공유하며 성장하고자 노력했습니다. 제가 혼자 고민하고 해결하는데 그치지 않고 다른 사람들과 소통하고 공유하는 것으로 더욱 성장할 수 있었습니다. 프로젝트를 진행하고 완성한 WAS 를 Maven에 직접 올려 공유를 해보았는데 이 과정에 대한 정보가 많이 없어서 오래 걸린 경험이 있습니다. 이에 대해서 자세히 정리해서 저와 같이 완성한 프로젝트를 Maven에 올리고 싶어하는 팀원들이 1시간이면 올릴 수 있게 도움을 주었습니다. 링크: https://blog.kimhyun5u.com/18
또한, CSV DB를 구현하면서 탐색 시간이 고민이 많았던 팀원들에게 도움이 될만한 성능 개선시도를 기록해 공유했습니다. 팀원들이 저의 경험을 참고하여 다양한 시도를 할 수 있도록 했습니다. 링크 : https://blog.kimhyun5u.com/19
뿐만 아니라 저 또한 팀원들의 공유를 통해 다양한 정보를 습득할 수 있었고 성장하는 계기가 되었습니다. 저는 단순히 스스로의 공부로만 끝나는게 아니라 기록하고 팀원들과 공유하는 습관을 가지려고 노력합니다.
[꾸준한 성취를 통한 성장]
대학 입학 후 개발자로서 성장하기 위해 노력했습니다. 대학교 1학년 아직 개발을 잘 못했던 저는 개발에 도움이 되고자 문제 해결 능력과 창의성을 키우기 위해 아이디어톤과 해커톤에 참가했습니다. 또한, 다양한 개발 경험을 갖고자 안드로이드, Flutter, 아두이노를 공부하기 위해 인터넷 강의, 서적을 찾아보거나 선배에게 찾아가 질문했습니다. 그 결과 간단한 서비스를 만들 수 있게 되었고 해커톤에서 직접 만든 서비스로 수상을 경험했습니다. 대학교 2학년 때도 대회에 참가하고 학교 인재상도 받으며 작은 성취를 계속 쌓으며 성장했습니다. 대학교 3학년 때, 무형문화연구원에서 보조 연구원으로 웹 개발 아르바이트를 경험했습니다. 이때 앞서 언어와 프레임워크를 공부한 경험을 바탕으로 빠르게 Spring Boot를 공부해 프로젝트에 투입했고, 회원가입 폼 부분 수정과 리스트 뷰 부분을 구현했습니다. 대학교 3학년을 마치고 군대에 입대해 공군 소프트웨어개발병으로 복무했습니다. 공군의 진료 예약을 담당하는 공군 진료예약체계, 공군 부대의 미술품을 관리하는 공군 미술품관리체계를 개발하면서 서버 개발에 대해 더 공부할 수 있는 계기가 되었고, 작은 성취가 되어서 또 한 번 성장할 수 있었습니다. 군 전역 후 대학교 4학년 SW 마에스트로 연수생 활동을 시작했습니다. 저는 QR코드를 이용해 음식점에서 메뉴를 주문할 수 있는 서비스를 개발했습니다. 직접 고객의 피드백을 들으며 실제 상용화할 수 있는 서비스를 만들기 위해 노력했습니다. 3곳의 매장과 협의해 제품을 테스트했고, 이 과정을 통해 저는 안정적인 서버를 운영하기 위해 고려해야 하는 부분들에 대해 알 수 있었습니다. 저는 개발을 잘하지 못하는 학생에서 꾸준한 성장으로 안정적인 서버를 운영하기 위한 구조를 생각하는 개발자가 되었습니다. 성장을 위해 계속 도전하고 작은 성취를 이루는 저의 역량은 새로운 업무를 맡을 때 효과적으로 발휘될 수 있으며 이러한 꾸준함은 업무 중 발생하는 문제를 해결하는 데 큰 도움이 된다고 생각합니다.