김현기 ( KIM HYUN GI )

Junior Back-End Developer

Email: rlagusrl928@gmail.com

Phone: 010 9916 1042

Web: https://velog.io/@disdos0928

About Me

개인의 성장과 회사의 발전을 동시에 추구하는 백엔드 개발자 김현기입니다,
기존 문제들을 더 효율적이고 긍정적인 방식으로 해결하고자 노력합니다.
비용 절감, 인프라 개선, 좋은 커뮤니케이션 등 다양한 분야에서 회사의 성장에 기여하고 싶으며,
단순히 좋은 코드를 작성하는것 뿐만 아니라 함께 일하는 동료로서 팀원에게 긍정적인 영향을 주고 싶습니다.
이러한 노력과 고민을 바탕으로 회사와 함께 성장하는 것을 목표로 하고 있습니다.
감사합니다.🙇‍️🙇‍

Github Blog

경력

SGU

IT 2팀 사원

2022.08 ~ 재직중

사내의 인적,물적등 모든 자원을 효율적으로 관리 할 수 있는 ERP
그중 패션 분야에 특화된 ERP 서비스 개발 및 유지보수 전문 회사입니다.
스노우피크,네셔널지오그래픽,네파 등 다양한 패션 브랜드의 ERP 서비스를 개발하고 있습니다.

Java
Spring
Oracle
Mybatis
JavaScript
Confluence
Git/SVN
Jenkins
Linux


Work Experience( 업무 경험 )


조회를 위한 중복 쿼리 최적화

  • 최대 임계치 확인을 위한 불필요한 조회 중복 발생
  • 이를 해결해 기존 800ms 이상 소요되던 쿼리를 400ms 이하로 단축.

ERP 와 Groupware 간 전자결재 연동 기능 개발.

  • 연동에 필요한 각 주요 기능 설계 후 공통 추상화 모듈 개발
  • 성공적인 모듈 개발,설계로 인해 예상 개발 시간을 1/4 수준으로 단축.

통계성 데이터 처리 및 조회 경험

  • 브랜드별 년매출, 품목별 년매출, 시즌별 목표 실적 등등 대규모 데이터를 다루다 보니 많은 통계성 데이터 처리 필요
  • 인덱스,캐시,집계 테이블등을 활용하여 성능과 가독성 향상.

조건 쿼리 개선

  • 사업실적 통계 서비스에 계속 추가되는 서브쿼리 조건으로 인한 속도 저하 발생
  • 서브쿼리를 조인으로 해소하여 기존 2000ms 이상 소요되던 쿼리를 300ms 이하로 단축.

커뮤니티 서비스를 구축

  • 사용자와 기존 서비스간 사용 목적이 매우 상이해 재설계 개발이 필요.
  • 재설계를 통해 기존 중복 설계를 개선하여 10개의 클래스를 3개로 줄이며 효율적인 설계 구현.

공통 기능 리팩토링 구현

  • 많은 서비스가 있다 보니 하나의 공통코드가 너무 무거워지는 문제 발생
  • 공통코드를 분리하여 각 서비스에 맞는 공통코드를 분리하여 리팩토링 구현.
  • 이를 통해 기존 한 클래스에 5000줄이상인 클래스를 각각의 목적에 나눠 분리하며 효율성 증가

물류 I/F 개발

  • 물류 I/F 개발을 통해 WMS와 ERP 물류간의 데이터 연동을 구현

프로젝트

2023-03 ~ 2023-08

https://f-lab-edu.github.io/petLink/


🐕 petLink는 반려동물 용품 구매와 동시에 펀딩에 참여할 수 있는 플랫폼을 구상하고 개발한 프로젝트입니다.


JAVA 17
SpringBoot 3.0
Spring Security
Spring Data JPA
MySql 8.0
Redis
QueryDSL
Naver Cloud Platform
AWS EC2
Ubuntu
Object Storage
GitHub-action
Docker
Restdocs(with openapi)
Junit5


신뢰성과 관리 편의성을 위한 테스트 기반의 API 명세 구현

  • RestDocs와 Swagger-UI를 활용한 테스트 기반의 신뢰성 API 명세 구현
  • Open API Spec을 통한 Swagger UI를 활용한 관리 편의성 증가

중복되지 않는 키를 만들면서 효율성을 극대화

  • 주문번호를 생성하는 기능 구현 중 중복을 방지하려면 DB에 접근하는 문제 발생
  • 중복되지 않으면서 다중화 환경에서도 활용가능하고 성능면에서 효율적인 스노우플레이크 방식 구현

효율적인 배포를 위한 CICD 구축

  • 매번 수작업으로 jar 배포해야하는 반복성 문제 발생
  • GitHub Actions과 Docker를 활용한 안정적인 PR, 자동화된 서버 배포 환경을 구축.

동시성 해결을 위한 Redis 분산 락 서버 구현

  • 클라이언트가 동시에 펀딩에 참여해 재고 감소 로직 수행 시 재고 동시성 문제 발생.
  • DB락 , 서버 제어등 다양한 방식들과 트레이드 오프를 비교 분석 Redis 분산락 서버 구현을 통한 문제 해소.

Junit5를 활용한 테스트 기반의 개발

  • 테스트 기반의 개발을 위해 Junit5를 활용한 테스트 코드 작성
  • Mock를 활용한 단위 테스트 코드 작성

효율적인 쿼리를 위한 QueryDSL 활용

  • JPA를 활용한 쿼리 작성 시 여러 조건을 고려해야하는 문제 발생
  • QueryDSL을 활용한 동적 쿼리 작성으로 효율적인 쿼리 작성

교육

한양사이버대학교

컴퓨터공학과

  • 컴퓨터공학과
  • 2016.03 - 2023.03 (졸업)
  • 리눅스 , DB , 소프트웨어 공학 등등의 분야를 학습

대외활동

플레이그라운드 with TDD, 클린 코드

nextstep에서 진행하는 클린코드 과정

2023.9 ~ 2023.11

  • 테스트 기반으로 리팩토링을 통해 클린 코드를 경험하는 과정
  • 클린코드의 필요성과 리팩토링의 방법등을 학습

F-LAB

Back-End 멘토링 과정

2023.02 ~ 2023.08

  • Back-end 시니어 개발자와 함께하는 백엔드 멘토링 과정
  • 내부적으로 진행되는 다양한 해커톤에 참여

클라우드 AWS 구축/운영

시나리오형 과제를 통해 클라우드 환경 활용 과정

2022.10 ~ 2022.12

  • 클라우드 환경 구축 및 운영을 경험
  • AWS EC2 , EKS, CloudFormation , CloudWatch , IAM 등을 경험

KH 정보교육원

스프링 웹 기반 교육과정

2022.02 ~ 2022.08

  • 팀프로젝트 기반의 교육 Java - Spring 웹 교육과정 수료