채용공고 올리기

김현진님을 응원해보세요!

지금 만족하고 있어요
책임감
협업 지향
목표 지향적
꼼꼼함
학습 지향

미리보기

기본 정보

이름
김현진
직업
코더가 아닌 프로그래머가 되려 합니다.
간단 소개

# 코더가 아닌 프로그래머로서, 기술의 선택과 효율성을 깊이 고민하며 기능을 설계하고 구현합니다. ex) msa 구조에서 회원가입 기능을 구현했을 때 타 서비스의 데이터베이스에 저장을 하기 위해 인터페이스를 통해 직관적인 코드를 쓸 수 있는 장점을 가진 feign-client를 사용하여 http 통신을 하였으며 여러 쿼리에 대해 일괄적인 처리를 위한 트랜잭션 처리 및 feign-client사용 시에 대한 보상 트랜잭션 처리 또한 진행했습니다. # 문제 해결 상황에서 어떠한 기술을 왜 써야 하는지, 최선의 방법은 무엇인지 따져가며 효율적인 작업을 지향하며 해결한 문제에 대해 방법을 공유하고 피드백 받는 것을 선호합니다. ex) MSA 구조에서 이벤트 기반 알림 기능을 구현하며, 서비스 간 이벤트 체이닝 시 데이터 처리 속도를 개선하고 사용자별로 다르게 캐싱되는 데이터를 위해 어플리케이션 범위의 2차 캐시로 Caffeine을 도입하여 조회 성능을 약 200배 향상시켰습니다. 이후 다중 접속 시 데이터 공유가 필요하다는 피드백을 반영하여, Redis를 통한 캐싱 처리를 개선하였습니다.

교육

소속/기관명

경성대학교

종류 | 전공

대학교(학사) | 소프트웨어학과 (3.64/4.5)

재학 기간 | 재학 상태

2017.03. ~ 2024.08. | 졸업

소속/기관명

신세계아이앤씨

종류 | 전공

사설 교육 | 스파로스아카데미5기

재학 기간 | 재학 상태

2024.08. ~ 2024.12. | 수료

자격증

자격증명

정보처리기사

점수 | 발급기관

. | 한국산업인력공단

취득연월

2024.06.

자격증명

SQLD

점수 | 발급기관

. | 한국데이터산업진흥원

취득연월

2023.10.

대외활동

활동명

자바하자 (java 알고리즘 스터디)

소속/기관명

개인

연도

내용
  • 성과

    • 자료구조 파악을 통해 알고리즘을 떠나 웹 개발 시에도 api 개발, 응답 데이터 또는
      데이터 리스트를 다루기 한층 편해짐

    • 여러 분야의 알고리즘 문제 풀이를 통해 문제 독해 시 어떠한 알고리즘을 이용해야 되는지 파악

  • 스터디 목적

    • java 로 웹 개발을 하는 만큼, 언어에 대한 심도있는 이해를 위함

  • 구성원

    • 5명 (팀장, 모집 후 운영)

  • 활동 기간

    • 2024.08 ~ 2024.11

  • 활동 내용

    • ‘백준’, ‘프로그래머스’ 을 이용한 문제 풀이

    • 주 1회 3시간씩 진행 (토론식: 각자 문제 풀이 후 스터디 때 문제에 대해 강의 후 질의 응답)

    • 자바 자료구조에 익숙해지고, 코딩테스트에 출제되는 다양한 알고리즘 문제 풀이

    • dp, dfs, bfs, 백트래킹, 정렬, 이진탐색 위주로 풀이

활동명

우아한테크코스 6기 프리코스

소속/기관명

우아한형제들

연도

내용
  • 성과

    • 과제를 통한 문제 능력 향상, 알고리즘 및 데이터 구조에 대한 이해, 단위 테스트를 통한 코드의 정확성/신뢰성 판단

  • 활동 기간

    • 2023.10 ~ 2023.11

  • 역할

    • 과제에 대한 기능 구현 및 api 설계, Git을 활용하여 코드 버전 관리 수행

  • 사용 기술

    • java를 이용한 자료구조 활용과 Junit을 통한 단위테스트로 코드의 정확성/신뢰성 높임

활동명

코드어스 알고리즘

소속/기관명

기타

연도

내용

[Python 알고리즘 스터디]

  • 활동 기간

    • 2022.01 ~ 2022.06

  • 코딩테스트에 대비하기 위한 알고리즘 문제 풀이 능력 향상 스터디 (4인 스터디)

  • 1시간에 1문제씩 풀이하는 방식으로 진행하였으나 개인의 실력 및 진도 차이가 발생하여
    각자 적절한 문제를 풀이 한 후 질의응답을 하는 방식으로 변경 의견 제시 후 적용

  • 문제 풀이의 다양화를 통해 기존보다 3배 더 많은 문제 습득

활동명

대학생코딩캠프9기

소속/기관명

코드잇

연도

내용

[ 비대면 학습 프로그램 ]

  • 활동 기간

    • 2021.07 ~ 2021.08

  • 방학 기간 프로그래밍 언어를 추가로 학습하며, 개발자로서 필요한 자기주도적 학습 역량을 강화

  • 주 1회 Zoom을 활용한 스터디 참여로 학습 내용을 공유하고 피드백을 통해 성장 방향을 제시

기술 스택

기술 스택

Java, Spring Boot, MySQL, Docker, GitHub, MongoDB, JPA, REST API, Kafka, Redis, MariaDB, gmail-api, intellij-idea

프로젝트

프로젝트명

LOOKIDS (루키즈, 반려동물 SNS 프로젝트)

소속/기관명

신세계아이앤씨 스파로스아카데미

프로젝트 기간

2024.10. ~ 2024.12.

프로젝트 내용

[성과]

  • 서비스 간 분리로 타 서비스의 DB에 연결할 수 없었거나, 연결 시 책임이 분명하지 않았던 문제

    • Apache Kafka 기반의 메시지 브로커와

      데이터 스트리밍을 통해 서비스 간 독립적인 통신을 실현하고

      책임 모호성을 해결

  • 이벤트 체이닝 과정에서 중간 서비스의 데이터 접근 성능을 개선하고자 Caffeine 캐싱 처리를
    통해 데이터 조회 속도를 

    90% 개선

  • 유저의 어플리케이션 상태에 맞는 알림을 제공하고자 FCM 푸시 알림SSE를 활용해 상황에
    맞는 알림 방식(백그라운드, 포그라운드, 종료 상황)을 제공하여 사용자 경험을 2배 개선

[개요]

  • 점점 늘어나는 반려인구들을 위한 sns, 유저의 펫 프로필을 통해 반려동물과 함께 소통할 수 있는 서비스를 제공


[인원 및 담당]

  • 인원: 7명( BackEnd 4, Infra 1, FrontEnd 2)

  • 팀장, Backend 

  • 알림 서비스, 알림신청(구독) 서비스, Auth(회원가입, 로그인) 

[아키텍처]

  • 서비스들간의 독립성을 유지하고 확장성과 안정성을 위해


    MSA(마이크로서비스아키텍처)를 도입

  • 데이터 통신을 위해 메세지 브로커인 Apache Kafka

    데이터 스트리밍을 통해
    EDA(이벤트드리븐아키텍처) 구축

[역할]

  • JWT 기반 로그인을 구현하여 보안 강화

  • Redis의 메모리 기반, TTL을 활용한 로그인 동시성 문제 방지


    토큰/인증번호 등 임시 데이터를 처리

  • 이벤트 체이닝 시 데이터 조회 효율성을 위한 caffeine 캐싱 처리 적용

  • 서버에서 클라이언트 측으로의 단방향 통신을 위해 SSE(server sent event)를 이용한 알림 기능 구현

    • pwa(progressive web app)의 백그라운드 특성을 활용하여 FCM 을 이용한 푸시 알림 구현

    • 클라이언트 측 전송 시 발생한 직렬화 설정 문제에 대해 json 형변환을 통해 해결하여 이를 공유하여 타 인원들의 문제 재발 방지에 기여

  • Google SMTP를 활용한 메일 전송 기능 개발

[인사이트]

  • 서비스 간 분리로 인한 독립성과 확장성, 부하 분산을 고려한 설계의 중요성을 체감

  • front-end 측과의 데이터 송수신시 직렬화/역직렬화의 중요성 파악

  • 작업 및 트러블 슈팅 문서 59개를 작성하여 협업 효율성이 향상되고, 동일 문제의 재발을 방지하며 해결 시간 단축을 경험

  • 로컬 환경에서는 문제가 없더라도, 배포 환경에서는 프론트엔드 설정과의 불일치나 인프라 접근 설정에 따른 예기치 못한 문제가 발생할 수 있다는 점 인지

프로젝트명

스타벅스 온라인스토어 리빌딩

소속/기관명

신세계아이앤씨 스파로스아카데미

프로젝트 기간

2024.08. ~ 2024.09.

프로젝트 내용

[성과]

  • 무한 스크롤 과정에서의 더 빠른 조회 방식 탐색을 위해 커서(cursor) 기반 페이징 처리동적 쿼리(QueryDSL) 처리를 통해 조회 성능을 개선하여 사용자 경험 향상, Pageable 이용했을 때
    보다 조회속도 약 20배 개선(데이터 5,000,000개 기준)

  • N+1 문제를 해결하기 위해 패치 조인(fetch join)을 적용하여 불필요한 쿼리 실행을 제거하고
    데이터베이스 처리 비용을 절감

  • 영구적으로 저장할 필요 없는 데이터를 Redis TTL을 활용해 관리하여, 만료된 데이터는
    자동으로 삭제되고 메모리 기반 저장소를 통해 빠른 조회 성능을 제공함으로써 시스템 성능을 개선

[개요]

  • 스타벅스 온라인 스토어 리빌딩을 통해 이커머스 서비스 분석 및 설계/개발을 통해 웹 개발에
    필요한 주요 기술 이해하고

    FrontEnd 측과의 협업을 통한 소통능력 강화


[인원 및 담당]

  • 인원: 5명( BackEnd 2, Infra 1, FrontEnd 2)

  • 팀장, Backend

  • 상품 분류/장바구니/리뷰 등 상품 도메인에 관한 api 개발

[아키텍처]

  • 타 서비스와의 연결이 용이한 장점을 가지고, 빠른 개발 진행과 버전 통일을 위해
    모놀리식 아키텍처를 사용

[역할]

  • Redis 메모리 기반, 분산 환경 지원 특성을 이용하여 비회원과 회원의 최근 본 상품 관리 및
    TTL 설정을 통한 효율적인 데이터 처리 구현

  • QueryDSL동적 쿼리 생성 기능을 활용하여 필터링 조건과 조인을 포함한 상품 검색 및
    카테고리 분류

  • 데이터 저장량에 자유로운 AWS S3를 활용하여 이미지 업로드 및 처리

[인사이트]

  • GitHub Issue를 통해 진행할 작업에 대해 명확히 정의하고, 팀과의 효과적인 커뮤니케이션을
    통해 필요한 기능을 구체화

  • 프론트엔드와 협업하며 내가 구현한 기능이 어떻게 전달되는지 확인하고, 알맞고 낭비되지 않는
    데이터를 전달해야 한다는 중요성을 인지

포트폴리오

URL

link

LOOKIDS readme

깃허브
link

팀3355 이커머스 서비스 리빌딩 프로젝트 readme

깃허브
link

LOOKIDS 작업 기록 & 트러블 슈팅 Notion

노션
link

GitHub 프로필

깃허브

자기소개

자기소개

[저는 이러한 사람입니다.]

  • 저는 주어진 일을 끝까지 해결하려는 책임감주인의식을 가지고 있습니다. 문제가 발생하면 해결 과정을 통해 추진력을 얻고, 이를 위해 필요한 시간과 노력을 아끼지 않습니다.

    • 알림 기능을 구현했을 때, 서버의 로그는 정상적으로 출력되나 클라이언트에는 응답되지 않는 현상이 발생하였고, 이에 대한 문제 해결을 위하여 작업 시간외에도 추가적으로 작업하여 데이터의 직렬화 설정 오류라는 것을 찾아내었고, 작업에 대한 문서를 작성하여 문제 재발을 방지했습니다.

  • 새로운 기술 스택을 학습할 때도 깊이 몰입하여 이해하고 익히려는 태도를 가지고 있습니다. 또한, 문제 해결을 위해 주위 인물, 커뮤니티, AI 등 다양한 도구를 활용하는 개방적이고 수용적인 태도를 중요시 여깁니다.

    • 블로그, 팀원, gpt 등 다양한 방식을 활용하여 지식 습득을 하였고. 답변에 대해서 의문을 가지고 추가적인 질문을 하며 관련 지식을 고도화하는 방식으로 학습하였습니다.

  • 피드백을 받아들이고, 이를 바탕으로 계속 개선하려는 태도를 가지고 있습니다. 상대방에 대한 존중을 바탕으로 소통하며, 협력을 통해 문제를 해결하는 과정에서 지속적인 성장을 추구합니다

    • 사용자별 다른 캐싱 처리를 위해 Caffeine 라이브러리를 도입했으며, 조회 시간이 약 200배 향상되었습니다. 그러나 팀원으로부터 다중 접속이 가능한 분산 환경에서의 캐싱에 대한 피드백을 받고, Redis를 이용한 캐싱 방식으로 개선하려고 합니다.

[이러한 경험을 했습니다.]

  • 팀 프로젝트를 진행하며 기능 구현에 대한 다양한 관점을 접하고, 의견을 주고받는 과정을 통해 소통과 협력의 중요성을 배웠습니다. 이 과정에서 상대방을 존중하는 태도를 유지하며 의견을 나누는 것이 중요하다는 것을 깨달았고, 팀의 분위기를 빠르게 파악하고 적응하는 능력을 키웠습니다. 이러한 경험을 통해 협업을 기반으로 문제를 해결하고, 다양한 관점을 수용하면서 기술적 역량을 키울 수 있었으며, 더 나은 개발자로 성장하는 데 중요한 밑거름이 되었습니다.

[아래와 같이 회사에 기여하겠습니다.]

  • 책임에 맞는 품질 높은 코드를 작성하여, 코드가 직관적이고 유지보수가 쉬워지며, 다른 개발자들과 협업할 때 이해하기 용이하도록 합니다.

    • 각 기능과 계층의 책임을 명확히 하여, 코드가 향후 변화나 확장을 염두에 두고 작성될 수 있도록 노력하고 있습니다. 이를 통해 장기적으로 효율적인 시스템 운영을 추구합니다.

  • 업무를 문서화하는 습관을 통해 트러블슈팅과 반복적인 업무에 빠르게 대응하고, 문제 재발을 방지할 수 있도록 합니다.

    • 시스템의 동작과 문제 해결 과정을 문서화하여, 팀 내에서 더 빠르고 효율적인 문제 해결을 도울 수 있습니다. 이를 통해 업무의 반복성과 문제 재발을 최소화하려고 합니다.

    • 최근 경험한 프로젝트에서 약 59개 작업 진행 상황 공유 트러블 슈팅 공유 목적 문서를 작업하였고 이를 통해 backend 팀원 4명 중 2명(50%) , 전체 4개 팀 중 3개의 팀(75%)의 오류 처리에 기여하였습니다.

댓글