Email | [email protected]
About Me
Introduction
- 안녕하세요. 2년차 백엔드 개발자 홍찬기입니다.
- 서로 의사소통을 하면서 개발하는것을 좋아하고 더욱 클린한 코드를 작성하려고 노력하고 있습니다.
- 그리고 개발 블로그를 운영하면서 공부한 것을 정리하고 있습니다.
- 제가 관여한 프로젝트로 세상이 더욱 편하고 나은세상으로 가는것을 목표로 하고있습니다.
Blog & Github
Stack
- Python ( flask ), Ruby( Ruby on Rails )
- Sqlalchemy, ActiveRecord
- Sidekiq, Rspec, Devise
- RDBMS ( Mysql , Postgesql )
- Git, Github
- AWS ( EC2, RDS, S3 )
- Slack
Work Experience & Project
엘리스
2020.06 ~ 2020.07
- Github Oauth연동
- Github Oauth를 연동해 로그인을 좀더 쉽게 적용
- Test
- Pytest를 이용한 유닛테스트, Test Covarage향상
휴먼컨설팅그룹
The Plus 팀
2020-08 ~ 현재
-
테스트코드 작성
- Rspec을 사용해 기존의 테스트코드 수정 또는 새로 개발하는 API의 테스트코드 작성
-
API성능개선 및 새로운 Feature 개발
- N+1문제와 중복된 쿼리요청을 야기하는 코드 수정
- Ngrinder를 사용해 TPS 낮은 API 개선 ( N+1쿼리, 중복 쿼리, 반복문 등 )
-
Sidekiq 개선
- 사용자가 많아지니까 sidekiq database connection pool이 계속 마르는 에러가 발생
이유: Sidekiq Concurrency, database connection pool size 을 확인해보니 concurrency 와 pool 설정을 잘못한것을 확인
concurrency ≤ pool size 이어야하는데 반대로 concurrency > pool size어서 에러가 발생하고 있었음
concurrency < pool size 로 변경해 에러 수정 및 작업 효율 증가
- Sidekiq Concurreny Size 증가를 통해 더 많은 백그라운드 작업을 사용함 ( 작업 속도 증가 )
-
데이터베이스 튜닝 및 쿼리 튜닝
- 데이터베이스를 보니 index가 잘못잡힌 케이스를 발견
cardinality 값을 비교해 인덱스 튜닝, SQL query 사용시 설정한 index를 모두 사용할수 있도록 수정
기존 10s 이상 → 200ms 이하
- 조건이 다른 여러번의 Eager_loading을 사용, 결국 데이터가 많아지니 API가 60초 이상 발생하는 경우가 생김
Eager_loading를 사용해 모든 데이터를 가져온다음 조건은 Application에서 해당 조건을 조건문으로 해결
기존 60s 이상 → 5s 이하
-
코드 리팩토링
- 중복적으로 사용되고 있는 코드 및 함수 모듈화
- 조건을 사용해 많은 역할을 가진 API를 역할에 따라 API 분리
-
마이그레이션
- 하나의 테이블에서 여러 역할을 가진 테이블을 각 역할에 따른 테이블로 마이그레이션
- API 성능을 개선시키기 위해 데이터 마이그레이션
Personal Projects
대전버스정류장
카이스트학식 챗봇
한밭대학교학식 챗봇
호랑이의 꽃밭 Demo App