미리보기
- 직업
- 백엔드 개발자
- 이름
- 김만규
- 간단소개
- 안녕하세요, 성능 개선과 문제 해결에 강점을 가진 백엔드 개발자 김만규입니다. - JavaScript, Node.js, NestJS, MySQL을 활용한 RESTful API 설계와 성능 최적화에 능숙합니다. - 주요 프로젝트에서 데이터 최적화, 캐싱, 비동기 처리 기술을 적용하여 메인 페이지 로딩 시간을 5초에서 1.4초로 72% 단축, 사용자 이탈률을 30% 감소시켰습니다. - 블로그를 통해 문제 해결 과정과 새로운 기술 학습을 기록하며 이를 공유하고 있습니다. 이처럼 지속적인 학습과 실험을 통해 문제 해결 능력을 키워가고 있으며, 앞으로도 주도적인 자세로 더 나은 성과를 창출하기 위해 노력하겠습니다.
기술 스택
- 기술 스택
- JavaScript
- Node.js
- NestJS
- MySQL
- GitHub
- aws-s3
- REST API
- Express
- swagger
- Prisma
- aws-ec2
- aws-rds
- artillery
- TypeORM
경력
- 회사명
- (주)펄핏
- 직책 • 부서
- 인턴 • 개발팀
- 근무 기간 (근무 형태)
- 2024.09. - 재직 중
- (2개월 | 인턴)
- 담당 업무
클라이언트에게 TTS 제공 시, S3의 보안을 강화하기 위해
pre-Signed URL
을 생성하여 안전하게 제공Unit Test 18개 작성: TTS 기능의 정확성과 안정성을 검증하여 배포 전 코드 품질을 보장. 테스트 커버리지를 10%까지 향상
기술 스킬: Nest.js, mongodb, AWS Polly, AWS S3
성과:
TTS 기능 개발: AWS Polly
와 Google Cloud Text-to-Speech
를 비교 분석하여 AWS Polly
를 도입, 약 95.4%의 비용 절감 효과를 기대. AWS 리소스 통합을 통해 유지보수 및 관리 비용을 최소화
- 회사명
- wecommit
- 직책 • 부서
- 인턴 • 개발팀
- 근무 기간 (근무 형태)
- 2023.10. - 2023.10.
- (1개월 | 인턴)
- 담당 업무
일반 로그인 및 회원가입 기능 구현:
사용자 요구 사항을 바탕으로 시스템 아키텍처 설계. RESTful API 구축으로 클라이언트(FE)와 서버(BE) 간 원활한 통신 구현. JWT를 사용한 사용자 인증 처리 및 bcrypt로 비밀번호 해시 처리.
카카오, 구글 로그인 통합:
Passport 라이브러리 대신 OAuth 2.0 프로토콜을 기반으로, axios를 사용해 소셜 서버에서 토큰 수신 및 사용자 정보 직접 수집. 수집된 데이터를 DB에 저장하여 기존 로그인 시스템과 통합. 인증 과정의 동작 방식을 깊이 이해하고자 구현함.
비밀번호 재설정 프로세스 제안 :
사용자 요청 시, 비밀번호 재설정 링크를 이메일로 전송하고, 이를 통해 사용자가 비밀번호를 안전하고 편리하게 변경할 수 있도록 했습니다.
비밀번호 찾기 기능 개선 :
기존의 비밀번호 찾기 프로세스는 사용자에게 임시 비밀번호를 이메일로 전송하는 방식이었지만 이를 개선하여, 이메일에 비밀번호 재설정 페이지로 이동하는 URL을 포함하도록 변경
기술 스킬: JavaScript, Node.js, MySQL, TypeORM
역할: Node.js 기반 개발 환경 구축 및 데이터베이스 설계 참여
성과:
프로젝트
- 프로젝트명
- 온라인 도서 판매 플랫폼
- 소속/기관명
- 팀 프로젝트
- 프로젝트 기간
- 2024.09. - 진행 중
- (2개월)
- 프로젝트 설명
목적: 사용자들이 온라인으로 도서를 구매할수있는 플랫폼입니다.
사용 기술: NestJS, TypeScript, MySQL, Redis, AWS EC2, AWS RDB, TypeORM, cache-manager, Elasticsearch, artillery, Vonage
개발 기간 : 진행중
개발 인원: FE 2명, BE 1명, UIUX 1명
일반 회원가입: 사용자에게 핸드폰으로
Vonage
를 사용하여 인증코드를 전송하고, 이를 검증하는 플로우를 구현하여 사용자 등록 과정을 간소화하고 보안을 강화알라딘 API 사용: 알라딘 API를 활용하여 도서 카테고리 및 도서를
Seed
로 DB에 저장, 초기 데이터 구축 시간을 크게 단축. 또한,@nestjs/schedule
을 사용하여 매일 12시간마다 새로운 데이터를 자동으로 저장하고 업데이트함으로써, 수작업 관리에 소요되던 시간과 노력을 절감, 개발 효율성 크게 향상.성능 개선: 메인 페이지에서 3개의 API 데이터 응답 속도를
cache-manager
를 사용하여 평균 691.4ms에서 12.3ms로 최적화, 약 98.25% 감소. 이로 인해 페이지 로딩 시간이 크게 단축도서 검색 기능: DB의 Like 쿼리를 사용하여 부하 테스트를 진행한 결과 10,000ms가 소요되었으나,
Elasticsearch
도입 후 평균 2,500ms로 단축하여 검색 시간을 총 75% 향상시켜 사용자 경험 개선.
프로젝트 개요
성과 :
- 프로젝트명
- 간단한 일거리 매칭 플랫폼
- 소속/기관명
- 팀 프로젝트 / 내일배움캠프
- 프로젝트 기간
- 2024.07. - 2024.08.
- (2개월)
- 프로젝트 설명
목적: 사용자들이 간단한 일손부터 하루 일당 수준의 일감을 빠르고 쉽게 매칭하여, 혼자 해결하기 어려운 일을 일정 급여로 해결할 수 있도록 돕는 플랫폼입니다.
사용 기술 : NestJS, TypeScript, MySQL, Redis, AWS ECS, AWS RDB, AWS S3, TypeORM, Docker, artillery
개발 기간 : 5주
개발 인원: BE 5명
프론트엔드 개발 주도: 사용자 친화적인 UI/UX 설계, 사용자 피드백 반영하여 디자인 개선. UX 테스트를 통해 사용성 향상.
백엔드 문제 해결 및 최적화: 프론트엔드 작업 중, BE에서 전달되는 데이터 누락 및 응답 지연 문제를 발견. FE에서 백엔드 데이터를 제대로 활용하기 위해 직접 BE 코드를 수정하고, API 호출 최적화
부하 테스트 및 성능 개선: 메인 페이지 로딩 시간 최적화를 위해 부하 테스트 수행. Redis를 활용해 job 리스트 데이터를 캐싱, 최신순 유지. 새로운 job이 생성될 때 Redis에 저장된 데이터를 삭제하고, 리스트 조회 시 최신 데이터를 캐싱하여 평균 API Latency를 93ms에서 26ms로 72% 개선.
프로젝트 개요
성과 :
- 프로젝트명
- 실시간 협업 칸반 보드 플랫폼
- 소속/기관명
- 팀 프로젝트 / 내일배움캠프
- 프로젝트 기간
- 2024.07. - 2024.07.
- (1개월)
- 프로젝트 설명
목적: 트렐로와 유사한 협업 사이트를 개발하여 팀원들 간 협업 및 내용 공유할수있는 플랫폼
사용 기술 : NestJS, TypeScript, MySQL, TypeORM
개발 기간 : 1주
개발 인원: BE 5명
파일 보안 관리:
Pre-Signed URL
방식을 도입해 파일 업로드 시 클라이언트에게 파일 저장소 URL이 노출되는 보안 문제를 해결. 이를 통해 파일 저장소 접근 제어를 강화하고 보안성을 높임.데이터베이스 스키마 동기화 문제 해결: 팀원들이 공유 데이터베이스를 사용하면서 발생한 스키마 동기화 문제를 로컬 데이터베이스 환경으로 전환해 해결. 각 팀원이 독립적인 개발 환경에서 작업하도록 개선하여, 스키마 변경이 다른 팀원의 작업에 영향을 미치지 않도록 하여 개발 속도를 향상시키고 협업 시 충돌을 최소화함.
실시간 알림 전송 최적화: WebSocket을 통한 실시간 알림 기능에서 접속 중인 사용자에게만 알림을 보내기 위한 시
스템 구축. 클라이언트로부터 인증 토큰을 받아 사용자 ID를 추출하고 접속 중인 사용자 목록을 관리하여, 특정 사용자에게만 타겟팅된 알림을 전송하는 방식으로 문제를 해결하고 서버 리소스를 최적화함.
WebSocket 연결 상태 확인 문제 해결: 클라이언트의 인증 토큰을 사용해 접속 중인 사용자만 파악하고, 실시간 알림을 필요한 사용자에게만 전달할 수 있도록 시스템을 개선. 서버에서
connection
이벤트 시 사용자 ID를 추출하여 접속 상태를 관리함으로써, 불필요한 알림 전송을 방지하고, 실시간 통신의 신뢰성을 높임.
프로젝트 개요
성과:
교육
- 소속/기관
- 내일배움캠프
- 종류 | 전공명/전공계열
- 사설 교육 | Node.js 백엔드 개발자 교육과정
- 재학 기간 (재학 상태)
- 2024.04. - 2024.08. (졸업)
- 소속/기관
- wecode
- 종류 | 전공명/전공계열
- 사설 교육 | Node.js 백엔드 개발자 교육과정
- 재학 기간 (재학 상태)
- 2023.08. - 2023.10. (졸업)
- 소속/기관
- 초지고등학교
- 종류 | 전공명/전공계열
- 고등학교 | 고등학교 졸업
- 재학 기간 (재학 상태)
- 2017.03. - 2020.02. (졸업)