김현기 ( KIM HYUN GI )

Junior Back-End Developer

Email: rlagusrl928@gmail.com

Phone: 010 9916 1042

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

About Me

개인의 성장과 회사의 발전을 동시에 추구하는 백엔드 개발자 김현기입니다,

저는 기존 문제들을 더 효율적이고 긍정적인 방식으로 해결하고자 노력하며.

비용 절감, 인프라 개선, 좋은 커뮤니케이션 등 다양한 분야에서 회사의 성장에 기여하고자 합니다,

좋은 코드 작성뿐만 아니라, 팀 문화에 긍정적인 영향을 주는 동료가 되고자 합니다

이를 통해 회사와 함께 성장하는 것이 제 목표입니다.

감사합니다. 🙇‍️🙇‍

github : https://github.com/Whale0928

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

경력

SGU

IT 2팀 사원

패션 산업에 특화된 ERP 솔루션을 서비스합니다..
이 서비스를 통해 패션 브랜드들이 자원을 더 효과적으로 관리할 수 있도록 돕고 있습니다.
erp의 특성 상 WMS , CRM , SCM등 다양한 부분의 여러 도메인을 경험하고
서비스 품질 향상을 위해 많은 경험을 해볼 수 있었습니다.
Java / Spring Framework
Oracle
Mybatis
Teams
Gitlab
Jenkins
Scouter


Work Experience( 업무 경험 )

  • ERP 와 Groupware 간 전자결재 연동 기능 개발.
    • 연동에 필요한 각 주요 기능 설계 후 공통 추상화 API 모듈 개발
    • 성공적인 API 모듈 개발/설계로 인해 예상 개발 시간을 1/4 수준으로 단축.
  • 조회를 위한 중복 쿼리 최적화
    • 최대 임계치 확인을 위한 불필요한 조회 중복 발생
    • 이를 해결해 기존 800ms 이상 소요되던 쿼리를 400ms 이하로 단축.
  • 통계성 데이터 처리 및 조회 경험
    • 브랜드별 년매출, 품목별 년매출, 시즌별 목표 실적 등등 대규모 데이터를 다루다 보니 많은 통계성 데이터 처리 필요
    • 인덱스 , 캐시 , 복잡성 해소 테이블등을 활용하여 성능과 가독성 향상.
  • 조건 쿼리 개선
    • 사업실적 통계 서비스에 계속 추가되는 서브쿼리 조건으로 인한 속도 저하 발생
    • 서브쿼리를 조인으로 해소하여 기존 2000ms 이상 소요되던 쿼리를 300ms 이하로 단축.
  • 커뮤니티 서비스 리팩토링
    • 추가적인 목적의 활용도가 대폭 증가 하여 복제된 서비스가 많아짐
    • 리팩토링을 통해 기존 중복 설계를 개선하여 10개의 클래스를 3개로 줄이며 효율적인 설계 구현.
  • 공통 기능 리팩토링 구현
    • 많은 서비스가 있다 보니 하나의 공통코드가 너무 무거워지는 문제 발생
    • 공통코드를 분리하여 각 서비스에 맞는 공통코드를 분리하여 리팩토링 구현.
    • 이를 통해 기존 한 클래스에 5000줄이상인 클래스를 각각의 목적에 나눠 분리하며 유지보수성 증가
  • WMS : ERP 간 물류 I/F 개발
    • 물류 I/F 개발을 통해 자사 WMS와 타사 ERP 물류간의 데이터 연동을 구현
    • 이를 통해 물류 I/F 개발을 통해 물류 데이터의 신뢰성과 정확성을 확보하며 물류 데이터의 신뢰성과 정확성을 확보






사이드 프로젝트

bottle-note

2024-01 ~ 진행중

https://github.com/bottle-note

🍾 술을 리뷰하고 평가할 수 있는 spring boot 기반의 프로젝트입니다.
실제 서비스를 하기 위해 진행중이며 현재 개발중에 있습니다.
총 5명의 팀으로서 진행하였으며, back-end , devops , infra를 담당합니다.

JAVA 17
SpringBoot 3.0
Spring Security
Spring Data JPA
MySql
github Action
Docker
Restdocs
Junit5


  • github projects를 도입
    • 일정 , 이슈 , chart 등 여러 정보를 관리해야하지만 비용적 문제로 인해 고민
    • 개인적으로 활용해본 github projects를 활용하여 프로젝트 관리의 효율성 증가
  • 정적분석을 활용한 소수인원의 단점 보완
    • 팀원이 각각의 개성으로 인해 코드 품질이 일정하지 않은 문제 발생
    • Qudana , SonarQube를 활용한 정적 분석과 CheckStyle 을 통한 일관된 코드 품질 향상

2023-03 ~ 2023-08

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

🐕 petLink는 반려동물 용품 구매와 동시에 펀딩에 참여할 수 있는
플랫폼을 구상하고 진행한 spring boot 기반 사이드 프로젝트입니다.

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을 활용한 동적 쿼리 작성으로 효율적인 쿼리 작성


대외활동

플레이그라운드 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 등을 경험


교육

한양사이버대학교

컴퓨터공학과

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

KH education

스프링 웹 기반 교육과정

2022.02 ~ 2022.08

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