- 안녕하세요! 4년차 백엔드 개발자 황준호입니다!
- 우아한테크코스(백엔드 교육과정)를 통해 본격적인 백엔드 개발을 시작했습니다.
- 공부한 내용을 나의 언어로 정리하여 GitHub에 기록하며 공부하는것을 좋아합니다.
- 스터디를 통해 함께 성장하는 것을 좋아합니다. 현재 ‘대용량 트래픽 / 데이터 처리 스터디’ 진행중 입니다. (2024.12.02 기준)
- 읽기 좋은 코드를 작성하려고 노력하고, 유닛테스트를 통해 코드가 의도한 대로 동작하는가에 대한 불안감을 해소하고 있습니다.
- Mobile : 010-2018-6324
- Email : [email protected]
- GitHub : https://github.com/hwanghe159
기술스택
백엔드
- Java, Kotlin, Gradle
- Spring Boot, Spring MVC, Spring WebFlux, Spring Data JPA/Redis, Spring Batch, Spring for Apache Kafka
- Aurora MySQL, ElastiCache(Redis), MSK
- JUnit5, Mockito
- Bitbucket Pipeline, ArgoCD
모니터링
- Grafana, Loki
- Datadog
- Sentry
- Redash, Presto
협업 툴
- Jira, Confluence, Slack
- Git, Bitbucket
경력 및 개인 프로젝트
경력 휴식기 (2024.02.08 ~ 현재)
재정 악화로 인한 대규모 구조조정으로 인한 퇴직. 자기 개발(개인공부, 스터디 등)과 토이 프로젝트 진행중.
기술블로그
구독 / AI 요약 서비스 blogzip
기술스택
- Kotlin, Spring Boot, Spring MVC, Spring Data JPA, Spring Batch, MySQL, Selenium
- React, TypeScript
- EC2, SES
아키텍쳐 → GitHub
서비스 링크 → URL
블로그 크롤러 및 AI 요약기 구현 (기여도 100%)
상세 설명
매일 자정에 블로그에 새로 올라온 글을 크롤링합니다. RSS를 제공하는 블로그는 RSS를 사용하고, 제공하지 않는 블로그는 Selenium을 활용한 크롤러를 통해 가져옵니다. 블로그 글 요약을 위해선 ChatGPT API와 연동했습니다.
트러블슈팅
- 크롤링 로직 및 설정 최적화로 배치 시간 감축 (20분 → 3분)
- 매 크롤링마다 chrome driver 인스턴스를 생성 / close 하던 로직을 인스턴스를 빈으로 등록하여 thread safe하게 재사용하도록 수정했습니다.
- 이미 크롤링한 URL이라면 더이상 탐색하지 않도록 했습니다.
- 특정 요소가 나타나기까지 대기할때 Thread.sleep()이 아닌 명시적 대기를 사용했습니다.
- chrome driver를 사용하지 않는 앱에서 driver를 초기화하는 이슈 해결
- 크롤러 관련 모듈에서 chrome driver 인스턴스를 빈으로 등록했더니 크롤러 모듈에 디펜던시가 있다면 driver를 사용하지 않더라도 초기화하는 이슈가 있었습니다. (예: 이메일 발송 batch에서 driver를 초기화하는 상황 발생)
- 크롤러 관련 모듈에 spring 디펜던시를 제거함으로써 크롤러 내부에서 빈으로 등록하는 게 아니라 크롤러 모듈을 사용하는 모듈에서 빈을 정의하도록 했습니다.
- 문체 스타일 통일을 위한 fine tuning
블로그 구독 기능 구현 (기여도 100%)
상세 설명
원하는 블로그만 구독할 수 있도록 구현했습니다. 블로그를 검색할 수 있고, 없다면 URL로 직접 추가도 가능합니다. 구독한 블로그들에 새로 올라오는 글들을 매일 아침 이메일로 받아볼 수 있습니다.
키워드 추출 및 관리 기능 구현 (기여도 100%)
상세 설명
ChatGPT을 사용하여 요약을 할때, 키워드도 함께 추출합니다. LLM으로부터 추출한 키워드는 전적으로 신뢰하기 어렵기 때문에 내부적으로 필터링하여 노출합니다. 유사한 키워드를 위한 병합 기능이나 비노출 기능 등 내부 관리 기능들을 구현하여 키워드 조정이 필요할 때 빠르게 적용할 수 있도록 했습니다. 키워드 데이터가 충분히 쌓인다면 추후에 “키워드별 모아보기” 기능을 제공할 수 있도록 기반을 마련했습니다.
백패커 (2021.01.25 ~ 2024.02.07)