안녕하세요, 이한길입니다.

hangillee

견고하고 유연한 코드를 위한 객체지향 프로그래밍과 테스트에 관심이 많습니다.
기술적 도전을 즐깁니다. 새로운 기술을 배우고 적용하는 것에서 즐거움을 느낍니다.
내가 아는 것을 나누어 동료들과 함께 성장할 때 가장 큰 보람을 느낍니다.

Project

2024.07 ~ 2024.11우아한테크코스에서 진행한 팀 프로젝트입니다. 여행기와 여행 계획을 쉽게 작성하고 상호 전환하며 여행 관련 정보를 공유할 수 있는 커뮤니티 서비스입니다. 프론트엔드 3명, 백엔드 5명으로 구성된 팀으로 서비스를 개발했습니다.

    DB 테이블 반정규화와 컬럼 인덱스 설정을 통한 조회 성능 개선

  • 서비스 QA 과정에서 메인 페이지 로딩 시간이 1초를 초과하는 것을 확인했습니다.
  • 개선 전에는 매번 COUNT 함수를 활용해 각 여행기의 좋아요 개수를 계산했습니다.
  • 조회 성능을 개선하기 위해 여행기와 여행기 좋아요 테이블을 반정규화했습니다.
  • 여행기 테이블에 좋아요 개수 컬럼을 추가하고 해당 컬럼에 인덱스를 설정했습니다.
  • 여행기 10만 건, 건당 좋아요 50개 기준 평균 1.5573초 → 0.0024초로 개선됐습니다.

    Querydsl을 활용한 여행기 제목 및 작성자 기준 검색 기능 구현

  • Querydsl을 이용해 복잡한 검색 조건을 동적으로 처리할 수 있는 쿼리를 작성했습니다.
  • 띄어쓰기 차이로 인한 검색 결과 누락을 방지하기 위해 REPLACE 함수를 활용했습니다.
  • Querydsl 기술 도입을 주도하여 동료들의 검색 기능 확장에 도움을 줬습니다.
  • 검색 결과 필터링과 나라 기준 검색 기능을 추가 구현할 때, 팀원 모두 Querydsl을 활용했습니다.

    핵심 도메인 여행기(Travelogue) 설계 및 테스트 작성

  • 투룻 서비스의 핵심 도메인인 여행기(Travelogue)를 설계하고 REST API를 구현했습니다.
  • JUnit 5REST Assured를 활용해 여행기 도메인에 대한 테스트를 작성했습니다.
  • Test Fixture를 작성해 테스트 데이터를 효율적으로 적재할 수 있도록 했습니다.
  • 테스트를 서로 격리하기 위해 TRUNCATE를 활용한 DB 초기화 유틸 클래스를 작성했습니다.
  • 일대다 관계가 많은 엔티티의 복잡한 생성 로직을 디자인 패턴을 활용해 추상화했습니다.

    AWS 서비스를 활용한 백엔드 인프라 구성

  • 서비스로그인프라 환경의 가용성모니터링하기 위해 AWS CloudWatch를 활용했습니다.
  • 임계치 경보 알림 파이프라인을 구축하기 위해 AWS SNSLambda를 사용한 경험이 있습니다.
  • 서비스 SPOF 분석을 통해 인프라적인 위험 요소를 파악하고 해결하고자 노력했습니다.
  • 저사양 EC2(t4g.micro)의 부하를 분산하기 위해 스케일 아웃AWS ELB를 활용했습니다.
  • 쓰기 작업이 많은 서비스 특성상, DB 부하를 분산하기 위해 DB Replication을 적용했습니다.
  • 예기치 못한 AZ 전체 장애를 대비해 서로 다른 AZ에 EC2를 두어 가용성을 높였습니다.
  • Nginx, Docker와 Github Actions를 활용해 무중단 배포 환경을 구성했습니다.
  • Github Actions의 Self-hosted Runner를 활용해 CI/CD 파이프라인을 구축했습니다.
JavaSpring BootMySQLQueryDSLJUnit 5REST AssuredSwaggerAWSDockerNginxGithub Actions

Activities

2024.02.14 ~ 2024.11.29웹 백엔드 6기

우아한형제들에서 주관하는 개발자 교육 프로그램의 6기 웹 백엔드 과정을 수료했습니다.

  • Java와 Spring Boot를 기반으로 웹 백엔드 기술을 학습했습니다.
  • 객체지향 프로그래밍테스트 주도 개발에 대해 학습했습니다.
  • 동료 개발자와의 페어 프로그래밍코드 리뷰 문화에 익숙합니다.
  • 글쓰기, 유연성 강화 스터디를 통해 소프트 스킬 강화를 위해 노력했습니다.
  • "IoC와 DI"를 주제로 약 10분 간 동료들에게 발표한 경험이 있습니다.
2022.07 ~ 2024.07Core, Lead

Google에서 주관하는 학생 개발자 커뮤니티인 GDGoC의 성공회대학교 챕터를 운영했습니다.

  • Java와 Spring Boot 기반 웹 백엔드 분야 기술 스터디주도했습니다.
  • 교내 개발자 커뮤니티 확대를 위해 여러 행사를 주최했습니다.
  • 타 대학 GDGoC 챕터와 함께 연합 해커톤 행사주최했습니다.
  • 졸업한 선배 개발자를 초청해 컨퍼런스 행사주최했습니다.
  • 코드 리뷰 문화 이식을 위한 스터디를 운영한 경험이 있습니다.

Education

성공회대학교

2019.03 ~ 2026.02 졸업 예정 (취업계 제출 가능하여 업무 지장 없습니다.)소프트웨어공학 전공 (평점 4.21/4.5)
  • 2023학년도 제15회 소프트웨어 경진대회 2위
  • 2022학년도 제14회 소프트웨어 경진대회 2위
  • 교내 전공 과목 멘토링 프로그램 2회 참여
  • 자료구조 멘토 1회
  • C++ 프로그래밍 멘티 1회

Skills

소프트 스킬

  • 회의 시간도 업무의 연장선이라고 생각합니다. 낭비되는 시간이 없도록 회의 분위기를 주도합니다.
  • 기술적 도전을 즐깁니다. 새로운 기술을 배우고 적용하는 것에서 즐거움을 느낍니다.
  • 동료들과의 동반 성장을 추구합니다. 내가 아는 것을 나누어 함께 성장할 때 보람을 느낍니다.
  • 빠른 업무 처리를 중요하게 생각합니다. 다른 팀원에게 불편함을 주지 않도록 최선을 다합니다.
  • 작성한 코드에 대한 근거를 세웁니다. 근거 없는 코드는 위험하다고 생각합니다.

Java

  • Java 8 이후의 문법에 익숙합니다.
  • 객체지향 생활체조를 꾸준히 실천하려 노력합니다.
  • 다양한 디자인 패턴 도입을 통한 코드 품질 향상에 관심 있습니다.

Spring Boot

  • Spring Boot를 활용한 RESTful API 서버를 구축할 수 있습니다.
  • Spring이 제공하는 인터페이스를 재정의해 원하는 기능을 직접 구현할 수 있습니다.
  • Spring Data JPA를 활용한 데이터베이스 연동을 할 수 있습니다.
  • QueryDSL을 활용해 복잡하고 동적인 쿼리를 작성해본 경험이 있습니다.
  • 계층화 아키텍처의 추상화 수준을 통일하기 위한 리팩터링 경험이 있습니다.

Test

  • JUnit 5를 활용한 단위 테스트를 작성할 수 있습니다.
  • REST Assured를 활용한 API 테스트를 작성할 수 있습니다.
  • Mockito를 활용해 모의 테스트 환경을 구축하고 행위를 검증할 수 있습니다.
  • 편리한 테스트 코드 작성을 위한 여러 유틸 클래스를 작성해본 경험이 있습니다.
  • 테스트 실행 속도 향상을 위한 리팩터링 경험이 있습니다.

Infra

  • AWS EC2와 Docker를 활용해 WAS를 배포할 수 있습니다.
  • AWS ALB를 활용해 로드 밸런싱 환경을 구축할 수 있습니다.
  • AWS 배포 환경의 SPOF를 예측하고 해결하기 위한 인프라 구조 변경 경험이 있습니다.
  • AWS CloudWatch를 활용해 모니터링 대시보드 및 경보 파이프라인을 구축할 수 있습니다.