About Me
비즈니스 가치를 이해하고 구현하기 위해 주도적으로 직무에서 전문가가 되려 하는 주니어 개발자입니다.
개발을 좋아해 주 100시간 이상 몰입해야 하는 KAIST의 비학위과정인 SW사관학교 커리큘럼 기반 과정을 자원했고,
Pintos 프로젝트를 통해 몇 만줄의 코드 속에서 문제를 찾아내며 OS 기능을 구현한 경험을 바탕으로
프로젝트 코드 내의 버그를 해결하고 사용자 경험을 개선하기 위해 Redis를 사용해 속도를 크게 개선시켰습니다.
현재도 멈추지 않고 알고리즘 공부와 동시에 혼자 백엔드 프로젝트를 진행하며 역량을 꾸준히 키우고 있습니다.
Core Strength
Backend
- Node.js(JavaScript)
- Nest.js(TypeScript)
- Java(Spring Boot)
- Python(Flask)
Frontend
- React.js
- HTML, CSS, JavaScript
- Flutter
Software Engineering
- C
- Linux(Ubuntu)
- Makefile, GDB
DevOps
- AWS(EC2, RDS, S3)
- Docker
- Git
DB
- MySQL
- MongoDB
- Redis
- Mongoose
Projects
ONCORE - Online Core Time / 이름은 앙코르의 ENCORE에서 따왔습니다.
교육 과정이 끝나고도 계속 온라인으로 함께 알고리즘 공부를 하기 위해 고안 및 배포했던 프로젝트
인원 및 기간 : 5명 / 4주
👨💻 본인 역할 :
🔸백엔드 - CRUD를 포함한 실시간 채팅 및 LLM API를 이용한 AI 서포트 개발
🔸프론트엔드 - 로그인, 회원 가입, 방 참여 페이지의 UI개발
🔧 TroubleShooting :
📌 유저에게 문제를 불러오는 속도 개선
[Before] 문제를 가져올 때, 모든 유저들이 크롤링을 통해 문제를 불러와야 함
- 서버에 부하가 많이 걸리고 문제를 불러오는 속도가 느림
[After] : 실시간 시스템이 가능한 Redis 캐싱을 통해 문제를 불러오는 속도를 개선
- Pub/Sub을 통해 문제가 업데이트 되면 캐시를 업데이트하는 방식 사용
- 한 명만 문제를 불러오면 다른 사람들은 캐시에 있는 문제를 불러와 속도가 훨신 빨라짐
📌 테스트 환경 개선
[Before] : 컴파일 시 에러가 나지 않는다면 일부 주요 기능들만 확인하고 바로 Merge시킴
- 컴포넌트를 나누던 중 원인 모를 Redirect 에러가 몇 번 발생함
[After] : 아무리 급하더라도 작업한 곳의 사소한 기능까지 전부 테스트 후 Merge 및 배포
- 테스트 과정이 복잡해지긴 했으나, 이후 심사위원 중 그 누구도 버그를 겪지 않았음
- 시간이 있었다면, Github action 등의 자동화 Tool을 사용했을 것
💡 기술 의사 결정 :
백엔드 : 타입 검사가 있는 Typescript를 기본으로 사용하면서도 express 등을 그대로 사용 가능한 nest.js를 사용
프론트엔드 : DOM 조작이 가능한 React.js를 사용
DB : 트래픽이 많지 않고, 오히려 데이터의 일관성 유지에 더 초점을 둔 MySQL을 사용
Web Socket : 처음에는 모든 저장된 DB를 다 MySQL에서 가져오는 방식이었으나 Latency가 너무 커 Socket.io를 사용
상위 5개 대학에서만 실시하는, OS의 기능들을 직접 Linux/C 환경에서 구현하는 프로젝트
인원 및 기간 : 3명 / 7주
👨💻 본인 역할 :
🔸각자 개발하면서 시간을 내 서로의 코드를 피드백하는 시간을 가질 수 있게 노력함
🔧 TroubleShooting :
📌 Thread Donation 구현
[Before] : 프로세스 내 쓰레드의 Priority대로 실행하게 했는데, 더 중요한 쓰레드가 Lock 때문에 실행되지 못하고 후순위의 쓰레드가 실행되면서 우선순위의 역전이 일어남
[After] : Lock 되기 전 Priority를 양도하는 Donation 기능을 구현해 우선순위의 역전을 막음
📌 Virtual Memory 구현
[Before] : RAM의 용량을 넘는 S/W의 실행이 아예 불가능하고, 모든 S/W의 내용이 RAM에 적재되기에 부하가 매우 큼
[After] : Lazy Loading을 방식을 통해 최소한의 내용만 적재해 Load할 수 있게 바꿈으로서 과도한 부하를 줄임
팀 프로젝트 전, Node.js, React, AWS 사용 역량을 올리기 위한 단독 프로젝트
인원 및 기간 : 1명 / 2주
👨💻 본인 역할 :
백엔드 : Express.js를 사용해 RESTful API를 구현하고, Socket.io를 사용해 실시간 채팅 기능을 구현
프론트엔드 : React.js를 사용해 SPA를 구현하고, React Router를 사용해 라우팅을 관리
🔧 TroubleShooting :
📌 채팅 속도 개선
[Before] : 채팅을 보내면 서버 DB에 저장되고, 다시 클라이언트에 뿌려지는 방식으로 구현했으나, 실시간성이 떨어짐
[After] : Socket.io를 사용해 실시간 채팅 기능을 구현
📌 배포 보안 환경 개선
[Before] : 로컬에서만 실행되는 서버를 다른 사람들이 접근할 수 있게 만들기 위해 AWS EC2를 사용했으나, 서버를 실행하고 나서도 접속이 안됨
[After] : AWS EC2의 보안 그룹 설정을 통해 포트를 열어주고, 서버를 실행하면 다른 사람들도 접속할 수 있게 함
My Favorite Movie
크래프톤 정글 합류 전, 입학시험으로 진행했던 프로젝트
입학시험을 위해 Ajax, API, DB, AWS 등을 혼자 공부하였으며 입학시험 당일
화면에 있는 모든 기능들(정렬, 휴지통, 좋아요 등)을 7시간 안에 구현 및 배포가 목표
인원 및 기간 : 1명 / 2주(공부 기간, 실제 시험은 7시간)
🔧 TroubleShooting :
📌 배포 시 정렬 기능 개선
[Before] : 로컬에서는 잘 작동하는 정렬 기능이 배포 후에는 작동하지 않음
[After] : 각 페이지마다 정렬 기능을 구현해 배포
Experience
Air Force
항공통제 부사관
2017.03 - 2024.03
고등학교의 특성상, 7년이라는 긴 의무 복무 기간을 보내야 했으며,
이 기간 동안 대한민국의 방공을 수호한다는 생각으로 책임감을 가지고 근무했습니다.
사수나 인수인계가 없는 상황에서도 스스로 해결책을 찾아 임무를 완수했으며,
이러한 노력을 인정받아 2023년 한미연합훈련에 참여하게 되었습니다.
Education
Krafton Jungle
4th / Certified
2024.01 ~ 2024.05
KAIST의 비학위과정 SW사관학교 정글 커리큘럼 기반으로 운영되는 과정으로
Python, 알고리즘부터 시작해 C언어, 자료구조, 네트워크, 운영체제 등 컴퓨터공학과에서 배워야 할 기본적인 지식을
5개월간, 매주 100시간 이상 몰입하여 학습하였습니다.
Computer Science
Graduated
2021.02 ~ 2023.07
7년간의 의무 군대 생활을 하면서 컴퓨터공학과 학위를 3.5점대의
무난한 학점으로 취득하였으며 특히 자료구조, 운영체제 등에서는
높은 성적을 받았습니다.
ADSP
Certified
2019.10 ~ 2019.12
빅데이터의 중요 성격을 이해하고, 데이터를 분석하고 처리하는 능력을 키우기 위해 ADSP 자격증을 취득하였습니다.
A Little More About Me
업무에 필요하다면 능숙한 분야가 아니더라도 적극적으로 배우고, 빠르게 적응합니다. 또한, 팀원들과의 소통을 중요하게 생각하며, 팀원들과의 의견을 존중하고, 팀원들이 더 나은 방향으로 나아갈 수 있도록 도와주는 것을 중요하게 생각합니다.