채용공고 올리기

김준호님을 응원해보세요!

이직/구직 중이에요
목표 지향적
커뮤니케이션
적응력

미리보기

기본 정보

이름
김준호
직업
백엔드 개발자
간단 소개

개발보다 '개발 일'을 잘할 수 있는 사람입니다. 단순히 소프트웨어 역량만 높은 것이 아니라, 효과적인 의사소통과 협력으로 팀과 일관된 방향으로 일하며, 주도적으로 목표를 설정하고, 달성을 위해 스스로 의사결정 할 수 있는 능력이 있습니다. 누구보다 강한 추진력과 집중력으로 일합니다. 새로운 일을 추진하고, 실험 및 검증하고, 운영하는 것을 좋아합니다. 팀과 함께 집중력 있게 과제를 완수할 때 가장 즐겁습니다.

기술 스택

기술 스택

C, C++, HTML/CSS, Docker, docker-compose, Linux, Git, Spring Boot, Java, AWS, Flutter, riverpod, Firebase, TailwindCSS

경력

회사명

JUNEAI

직급 | 부서 | 근무 유형

사원 | 플랫폼 개발팀 | 재직 중

근무 기간

2024.10. ~ 재직 중 (5개월)

담당 업무

App : Flutter, Riverpod

BE : Spring boot, PostgreSQL

  • 소셜 로그인시 불필요한 해싱 작업 제거를 통해 유지보수성을 개선했습니다.

  • 사용자 인증 JWT 재발급 API의 보안 이슈를 발견하고, 검증 로직을 추가해 심각한 보안 문제를 예방했습니다.

  • IAP(인앱결제) 구현 및 유효성 검증을 위해 백엔드에서 IAP 제공자 측 영수증 검증을 도입해, 비정상 결제를 차단했습니다.

  • git action과 fastlane으로 CI/CD 파이프라인을 구축해 개발 및 테스트 효율성을 극대화했습니다.

  • admob으로 광고보기 기능을 구현하고, 보상형 광고를 도입해 광고 시청 회피를 방지했습니다.

프로젝트

프로젝트명

LV42

소속/기관명

42Seoul

프로젝트 기간

2024.02. ~ 2024.04.

프로젝트 내용

42Seoul 콘솔 게임 시설 예약 서비스

4인 프로젝트, 팀 리더

GITHUB : https://github.com/Rillmo/lv42-Backend
WEBSITE : https://level42.kr

FE : React, Recoil, TailwindCSS
BE : Express.js, JavaScript, Swagger, MongoDB, Redis
DevOps : Docker, AWS EC2, Git Action


  • Backend을 담당함

  • 현재 예약 현황 조회, 예약 및 취소 REST API 구현

  • 콘솔 게임기 및 컨트롤러 고장 신고 서비스 구현 : 현재 고장 상태 확인, 고장 신고하기 REST API 구현

  • Swagger 로 API 명세를 코드화, 서비스의 특정 endpoint에서 API 테스트가 가능하도록 함

  • 순수 CSS로 반응형 디자인 제작, 이후 Tailwind CSS로 리라이팅해 유지보수 개선

고민했던 부분

  • 초기에는 코드 통합 과정에서 여러 번의 충돌이 발생했습니다. 이를 해결하기 위해 계층형 아키텍처로 코드 구조를 재설계하여 코드 관리의 효율성을 높였고, 이후 코드 충돌을 현저히 줄였습니다.

  • REST API 전반을 설계하고, 이후 확장성을 고려해 mongoDB를 채택하여 CRUD를 구현했습니다. 초기에는 Notion으로 API 명세를 작성했는데, 문서작업의 비효율을 느껴 코드 주석으로 웹 API 명세를 확인하고 테스트할 수 있는 swagger 라이브러리를 도입했습니다.

  • 팀 리더로서 로그인 인증/인가, SEE 도입, 자동완성 설계 등 기술 회의를 주도했고, 팀원들과 함께 고민하며 문제를 해결한 경험이 있습니다.

프로젝트명

LV42 API 업데이트 자동화

소속/기관명

42Seoul

프로젝트 기간

2024.05. ~ 2024.05.

프로젝트 내용

LV42 월간 API key 업데이트 자동화

개인 프로젝트

GITHUB : https://github.com/Rillmo/lv42-api-key-automation

JavaScript, Selenium, Shell, AWS EC2


  • Selenium 으로 42API 페이지에서 API key 갱신 및 크롤링

  • 로컬 환경에 key를 저장, shell script로 aws ec2에 접속해 자동 업데이트 수행

고민했던 부분

  • 팀원들이 매달 수동으로 API 키를 갱신해야 하는 반복 작업이 존재했습니다. 반복 작업의 비효율을 줄이기 위해 작업을 자동화했고, 이를 통해 팀원들의 피로도를 줄이고, 서비스 중단 가능성을 낮춰 사용자 경험을 개선했습니다.

  • 서비스 관리자의 42API 페이지에 로그인 후, 등록된 key를 재발급 및 복사해와야 하는데, 서버에서 안전하게 업데이트 할 방법을 찾지 못해 로컬에서 업데이트 할 방법을 고민했습니다.

  • 로컬에서 Selenium 웹 크롤링 툴을 활용해 환경변수에 저장된 id,pw로 로그인→재발급→변수에 복사하는 과정을 거치고, key를 파일에 저장했습니다. shell script로 ec2 로그인 및 key 재설정 후 key 파일을 삭제하는 방식을 통해 로컬에서 안전하게 자동화에 성공했습니다.

  • API 키 갱신 작업 중 Selenium을 통해 자동화하는 과정에서 종종 페이지 렌더링 지연으로 인해 키 갱신이 실패하는 경우가 있었습니다. 이를 해결하기 위해 페이지 로딩 대기 시간을 조절하고, 실패 시 재시도 로직을 추가해 갱신 성공률을 높였습니다.

  • 매월 해당 script를 수행하기 위해 crontab를 활용해 주기를 설정했습니다.

  • 로컬에서만 동작하기 때문에 서비스 관리자의 로컬 환경에 종속적이라는 단점이 있는데, git action 또는 EC2 환경에서 동작하도록 변경하고, discord/slack API 등을 활용해 알림을 전송할 수 있도록 추후 개선하고자 합니다.

프로젝트명

Inception

소속/기관명

42Seoul

프로젝트 기간

2024.06. ~ 2024.07.

프로젝트 내용

Docker compose를 활용한 웹 애플리케이션 환경 구축

개인 프로젝트

GITHUB : https://github.com/Rillmo/lv42-api-key-automation
Docker, Docker Compose, NGINX, WordPress, MariaDB, Debian, Makefile


  • 멀티 컨테이너 환경에서 wordpress, mariadb, nginx를 사용해 웹 애플리케이션 구축

  • 각 컨테이너의 Dockerfile을 모두 직접 작성함 (base image Debian 제외)

  • Docker network와 Docker volume을 생성 및 관리할 수 있는 Docker compose file 작성

  • 자체 SSL/TLS 인증서를 발급해 HTTPS 환경 구축

고민했던 부분

  • Docker-compose로 각 데이터 영속성을 위해 각 서비스를 host 디렉토리에 바인딩시켜 사용했었는데, docker가 아닌 host에 종속되는 문제가 있었습니다. docker volume을 생성해 각 서비스에 연결하는 방법으로 해결했습니다.

  • Docker-compose에서 프로세스 자원이 제대로 회수되지 않고, 시그널 처리가 불가능하다는 문제를 발견했고, Tini 를 사용해 1번 프로세스의 자식으로 실행되도록 변경해 해결했습니다.

프로젝트명

IRC

소속/기관명

42Seoul

프로젝트 기간

2024.05. ~ 2024.06.

프로젝트 내용

C++로 구현한 IRC 소켓 통신 서버

2인 프로젝트

GITHUB : https://github.com/Rillmo/IRC

C++, Socket I/O, Makefile


  • IRC 프로토콜을 기반으로 한 서버 제작을 담당함

  • IRC 프로토콜이 명시된 RFC 문서를 참고함

  • I/O Multiplexing, Non-Blocking I/O를 구현함

  • Factory Pattern을 사용해 C++의 객체지향적 장점을 활용함

고민했던 부분

  • 서버에 들어오는 입력을 각 커맨드로 변환하고 커맨드를 실행해야 하는데, 커맨드 별로 요구하는 정보가 달라 설계 방식을 고민하던 중, Factory Pattern을 도입하게 되었습니다. 이를 통해 확장성을 확보하고, 객체 생성의 일관성을 확립해 협업과 유지보수 편리성을 개선했습니다.

  • I/O Multiplexing을 도입하면서 동시에 여러 클라이언트를 처리하는 방법에 대해 고민했습니다. 기존의 select() 방식은 모든 소켓을 순회하며 모니터링해 O(n)의 복잡도를 가지고, file descriptor 개수가 제한되는 단점이 있었습니다.

  • kqueue() 시스템 콜을 사용하도록 변경해 여러 소켓을 효율적으로 모니터링하고, Non-Blocking I/O를 설정하여 작업 가능한 경우에만 처리할 수 있도록 했습니다.

  • 이를 통해 서버의 동시 접속 처리 능력과 전체적인 성능을 크게 향상시켰습니다. kqueue()의 사용으로 이벤트 기반 프로그래밍의 장점을 직접 경험할 수 있었고, 대규모 네트워크 애플리케이션 설계에 대한 이해도를 높일 수 있었습니다.

프로젝트명

Minishell

소속/기관명

42Seoul

프로젝트 기간

2023.12. ~ 2024.01.

프로젝트 내용

Bash Shell 구현 프로젝트

GITHUB : https://github.com/Rillmo/Minishell

C, Bash Shell


  • 문자열 입력을 커맨드로 파싱하는 부분을 담당함

  • Lexical Analysis, Syntax Analysis로 요구사항에 맞는 AST를 구현해 사용

고민했던 부분

  • 단순 문자열 입력에서 redirect, command, pipe 등을 구분해 실행해야 하는데, 이를 단순 문자열 순회로 구분하기 어려워 해결 방법에 대해 오랫동안 고민했습니다.

  • GNU Bash 매뉴얼을 참고해 문법 구조를 파악했고, 이를 토대로 Lexical Anaylsis, Syntax Analysis를 수행해 AST를 만들면 일관성 있게 파싱을 수행할 수 있을 것이라고 판단했고, 실행부에서도 쉽게 구문을 파악 가능하기 때문에 이러한 방식을 도입했습니다.

  • 문제를 해결하기 이전에 관련한 매뉴얼이나 공식 문서를 파악하는 습관을 가질 수 있었고, Shell 동작 원리를 대해 깊게 이해할 수 있었습니다.

교육

소속/기관명

42Seoul

종류 | 전공

사설 교육 | 소프트웨어

재학 기간 | 재학 상태

2023.10. ~ 2024.10. | 졸업

대외활동

활동명

이노콘 IITP 원장상 수상

소속/기관명

이노베이션 아카데미 (42서울)

연도

내용

42서울의 게임기 예약 및 관리 서비스를 운영하는 팀 LV42의 리더로, 2024 이노콘에서 교육생 이용률 부문 IITP 정보통신기획평가원 원장상을 수상했습니다.

자격증

자격증명

SQLD

점수 | 발급기관

개발자 | 데이터자격검정

취득연월

2019.12.

자기소개

자기소개

'개발 일'을 잘할 수 있는 사람

단순히 '개발'만 잘하는 것이 아닌 '개발 일'을 잘할 수 있는 사람입니다. 같은 비전과 목표를 공유하고, 소통하며 일할 때 가장 큰 임팩트를 낼 수 있다고 생각합니다. 문제에서 해결방법을 찾고, 일을 추진하고, 완성을 위해 집중력 있고 빠르게 일하는 것을 좋아합니다.

사람들의 문제를 해결할 수 있는 서비스

42서울의 콘솔 게임기에 사람들이 지나치게 몰려 불편함이 있었습니다. 제가 느낀 문제를 해결하기 위해 시작한 프로젝트가 팀이 되어 게임기 예약 웹 서비스 LV42를 개발했습니다. 평균 이용률 30% 이상을 기록했고, 그 성과로 정보통신기획평가원 원장상을 수상했습니다.

필요한 모든 것을 배울 수 있는 사람

서비스에서 기술은 수단일 뿐, 목적이 아니라고 생각합니다. 하지만 목적을 위해 필요한 기술을 배우는 것에는 언제나 자신있습니다. 가장 효과적인 성장 방법은 동료학습이라고 생각해, 개인 학습 뿐만 아니라 스터디처럼 서로 배울 수 있는 환경에 적극적으로 참여해왔습니다.

댓글