미리보기
기본 정보

- 한계를 정해놓고 답을 구하지 않고 넓은 시야와 다양한 선택지에서 최선을 찾을 수 있는 개발자를 꿈꿉니다.
자기소개
- 예술(건축)을 전공하고 프랑스 유학까지 준비하였지만, 프로그래밍을 더 좋아하고 더 잘하여 이 길로 들어섰습니다.
- 자바/스프링(AOP, PSA, DI/IoC)를 통해 객체지향 설계를 공부했습니다.
- 서블릿에서부터 스프링MVC까지 올라가며 백엔드 웹서버에 대해 공부했습니다.
- 테스트코드를 통해 견고하고 리팩토링에 자신감을 가질 수 있는 코드를 좋아합니다
- 함수형프로그래밍과 프론트엔드(자바스크립트 생태계)에 관심이 있어 공부하고 있습니다.
- 공부한걸 마크다운으로 정리하고 있습니다.
- https://github.com/honki12345/my-wiki
- 2023년 8월부터 지금까지 책, 강의, 스터디에 관하여 개인 공부를 목적으로 정리하고 커밋하고 있습니다.
- https://github.com/honki12345/my-wiki
- 혼자 공부하는 것보다 함께 공부합니다.
- 아침에 일어나 하루를 계획하고 저녁에 하루를 회고하는 스터디를 운영중입니다.
기술 스택
Java, JavaScript, TypeScript, Spring, Node.js, AWS, MySQL, Git
경력
소울웨어
2024.01. ~ 2024.03. (3개월)
3개월 인턴으로, 레거시 프로젝트의 기능구현과 유지보수 프로젝트에 참여했습니다
(스택: 스프링부트, MyBatis, jQuery, MySQL)
프로젝트
haruharu-bot (node.js)
개인
2024.04. ~ 진행 중
https://github.com/honki12345/haruharu-discord-bot
스터디를 운영하는데 필요한 디스코드 봇(discord.js 활용)을 개발하였습니다.
기상챌린지
- 각 구성원이 기상시간을 설정하여 해당 기상시간에 특정 디스코드 채널에 이미지(타임스탬프)를 올리면 출석/지각/결석을 판별하여 DB에 데이터를 쌓습니다
캠스터디
- 특정 디스코드 채널에 들어와서 캠을 키면 그때부터 시간을 기록하고 캠을 종료하면 하루동안의 시간을 누적하여 계산합니다.
- 일일 공부시간과 주간 누적공부시간을 계산하여 DB에 데이터를 쌓습니다
시스템
- Amazon EC2: discord.js를 활용한 node.js를 배포하기에 프리티어 EC2 서버를 이용했습니다.
- sqlite3: 20명 이내의 소규모 스터디이기에 파일에 기반한 sqlite3 데이터베이스를 선정하였습니다
- 장애 발생시 대응을 위하여 winston 라이브러리를 통해 logging을 관리합니다.
hoon-log (java/spring)
개인
2023.09. ~ 2023.12.
https://github.com/honki12345/hoon-log
velog를 모티브로 한 블로그 플랫폼 백엔드 서버입니다.
기능으로는 회원(로그인, 로그아웃, 회원가입, 조회, 수정), 게시글 CRUD(파일업로드), 댓글 CRUD, 게시글 좋아요 요청/ 취소, 게시글 최신순/트렌딩순/태그별 조회가 있습니다.
- 게시물 검색성능 개선
- MySQL의 like %{word}% 연산자를 사용하여 키워드를 통한 게시물 검색을 하였으나, 저장된 게시물 개수가 100만 건이 넘어가자 응답 시간이 7초 이상 걸리는 문제를 발견했습니다
- 이에 elasticsearch를 적용하여 300만 개의 데이터를 검색하는 속도가 mysql 대비 4000배 가량 좋아졌습니다.
- 테스트커버리지 100% 달성
- 토스 SLASH21 에서 이응준 개발자님의 테스트 커버리지 100% 영상에서 높은 테스트 커버리지의 이점을 소개한 영상을 보고 저의 프로젝트에서도 시도해보았습니다.
- jacoco 기준으로 커버리지 100%를 달성하는 과정 속에서 저의 코드에 대해 불필요한 로직은 아닌지, 더 효율적인 방법은 없는지 고민하는 시간을 가졌습니다. 커버리지를 100% 달성한 후에는 리팩토링시에도 테스트를 통해 사이드이펙트를 체크할 수 있었습니다.
- github actions을 통해 main 브랜치로 merge 시 테스트 자동화를 이루었고 jacoco report도 업로드하여 테스트 커버리지 현황을 체크할 수 있게 하였습니다.
- 게시글 좋아요 동시성 이슈해결
- 게시글에 300개의 쓰레드(요청)로 동시에 좋아요 요청을 해보니 300번의 좋아요 횟수가 아닌 3번의 좋아요 횟수만 올라가는 동시성 이슈가 발생했습니다.
- 이에 대해 RDB 차원에서 비관적 락, 낙관적 락을 50개, 300개, 500개 쓰레드(요청) 환경하에서 성능 테스트를 비교해봤습니다. 최종적으로 게시글 좋아요를 낙관적 락으로 처리할 시 애플리케이션에서 롤백을 구현해야하는 비용을 고려하여 비관적 락으로 동시성 이슈를 해결하였습니다.
교육
NHN Academy
사설 교육 | 자바/스프링 백엔드 3기
2023.02. ~ 2023.06.
부산대학교
대학교(학사) | 건축학과
2010.03. ~ 2023.02. | 졸업