미리보기
기본 정보
안녕하세요! 깊이 탐구하는 개발자 강인수 입니다.
자기소개
😊 대규모 트래픽 처리에 관심이 많은 신입 JAVA / Spring Boot 기반의 백엔드 개발자 강인수입니다. 학습한 내용을 실제 프로젝트에 적용해보는 것을 좋아하며 특히 IT 기업의 테크 블로그나 테크톡에 소개된 새로운 방법을 기존 프로젝트에 적용해보려고 노력해왔습니다.
오픈 소스 프로젝트에 관심이 많아 오픈 소스프로젝트에도 기여하고 있으며 Gradle 개발자에게 Shout out을 받기도 했습니다.
자랑하고 싶은 부분은 Bold로 표시했습니다.
교육
경북대학교
대학교(학사) | 컴퓨터학부
2018.03. ~ 2024.02. | 졸업
창녕옥야고등학교
고등학교 | 인문계
2014.03. ~ 2017.02. | 졸업
기술 스택
Java, Kotlin, kotlinx.coroutines, Spring Boot, spring-jpa, MySQL, MongoDB, Redis, Git
프로젝트
Signal
SSAFY
2024.10. ~ 진행 중
질문을 주고 받으며 일대일 채팅과 위치 기반 유저 매칭을 기능을 제공하는 커뮤니티 앱입니다.
기능만 동작하게 개발되어 있는 것에 아쉬움을 느껴 프로젝트가 끝난 이후에 개인적으로 시간을 내서 게시글 조회 및 유저 매칭 부분을 아래와 같이 개선했습니다.
팀원 : 안드로이드(3명) + 백엔드(3명)
What I did
기존에는 인기글 조회 API 호출할 때 마다 모든 게시물의 좋아요 수를 기준으로 정렬하여 상위 게시물을 반환 했지만, 이전에 계산한 인기글을 Redis에 캐싱하여 중복 계산을 없애 120배 성능 향상을 얻었습니다.(643ms -> 5ms)
사용자 매칭 시 모든 사용자의 위도와 경도를 가져와 거리를 계산하던 것을 위도와 경도 데이터를 지오 해시로 변환하여 저장하고 거리 계산에 사용하여 25배 성능 향상을 얻었습니다.(250ms -> 10ms)
채팅메시지 해시 샤딩을 사용하여 분산 저장하였습니다.
게시글의 좋아요 수를 계산하기 위해 게시글-유저 관계테이블을 사용했던 것을 게시글 테이블에 좋아요 수를 담는 컬럼을 추가하여(반정규화) 게시글 좋아요 수 조회 속도를 높였으며 스프링의 스케줄링 어노테이션을 사용하여 게시글 좋아요 수를 갱신하였습니다.
Tech Stack
Backend - Spring Boot(3.x+), Java(17+), JPA, MySQL, redis, websocket, , MongoDB
Infra - Nginx, Docker, Jenkins
Music Auto Tagging
소프트웨어 마에스트로, 네이버 바이브 뮤직
2022.06. ~ 2022.11.
사용자 취향에 맞는 노래를 추천해 주기 위해서는 노래 관련 태그를 생성하는 것이 필요하지만 사람이 직접 태그를 만든다면 사람마다 기준이 달라 태그 노래 태그의 일관성이 떨어지는 문제점이 발생하였고 이를 AI 모델을 사용하여 해결했습니다.
네이버 바이브 뮤직에서 실제 개발하고 있는 AI/ML 프로젝트에 참여하게 되었습니다. 네이버 1784 본사에서 발표도 진행했습니다.
팀원 : ML(1명) + 백엔드(2명)
Github : https://github.com/kin4496/music-tag-predict
App 시연 영상 : https://www.youtube.com/watch?v=V7AepBTX7IU
What I did
노래 가사를 BERT가 이해할 수 있도록 BPE 방식으로 임베딩
가사 분석 시 LSTM 대신에 문장 간의 연관성을 잘 파악하는 BERT를 사용
노래 음원을 가청 주파수 대역을 잘 표현한 멜-스펙토그램으로 분석
가사 특징 벡터와 음원 특징 벡터를 바탕으로 노래와 가사를 동시에 고려하는 모델 개발
Tech Stack
ML - Python, Pytorch, BERT, Sentencepiece
Study Coordinator
경북대학교
2023.07. ~ 2023.08.
챗 지피티 API를 활용하여 영어 학습 자료를 자동으로 만들어주는 앱으로 안드로이드 개발을 담당하였습니다.
Android Compose를 도입해보았고 구글 안드로이드 아키텍처에 맞게 모듈을 구성하여 유지보수성을 높이려고 노력했습니다.
팀원 : 안드로이드(1명) + 백엔드(2명)
What I did
네트워크 통신시에 코루틴을 사용하여 가독성 개선과 API 호출 시간 감소
MVVM + 멀티 모듈 구조 적용
코드간의 결합성을 낮추기 위해 의존성 주입 Hilt를 사용
Tech Stack
Android - Android, Kotlin(1.8+), Coroutine, Android Compose, Retrofit2, Dagger Hilt
Airpods
개인
2020.01. ~ 2020.02.
안드로이드에서 에어팟의 배터리를 측정하는 앱으로 혼자개발하여 구글 플레이스토어에 출시했습니다.
안드로이드 기본 컴포넌트를 이해하고 수명주기에 관해서 배울 수 있었던 프로젝트입니다.
팀원 : 개인(안드로이드 개발)
What I did
BLE 스캐너를 작동하여 에어팟의 배터리 신호를 감지했습니다.
브로드캐스트를 사용하여 블루투스 연결 시에만 BLE 스캐너 작동시켜 배터리 효율성을 높였습니다.
서비스를 이용하여 백그라운드에서도 원할하게 동작하도록 구현했습니다.
Tech Stack
Android - Java, Android
대외활동
Kotest
개인
Kotest는 코틀린을 위한 테스트 프레임워크로 오픈 소스 프로젝트입니다.
이슈 탭을 주기적으로 확인하며 관심 있는 이슈에 대해 PR을 작성하여 프로젝트에 기여하였습니다. 특히 코드 작성 후 이를 테스트할 수 있는 테스트 코드를 작성하는 컨트리뷰션 규칙에 맞춰 PR을 작성했습니다.
작성한 PR 리스트
테스트 실행 시 첫 번째로 발생한 에러가 중요하지 않는 경우가 많아 첫 번째 에러를 표시하지 않는 옵션을 추가하였습니다(https://github.com/kotest/kotest/pull/3904)
의도된 예외가 무시되지 않고 테스트 실패로 간주되는 버그가 있어 이를 수정하였습니다. Gradle 개발자에게 shout out을 받기도 했습니다.(https://github.com/kotest/kotest/pull/3955)
2023 오픈 소스 컨트리뷰션 아카데미 지역 스프린트(Backend.ai)
2023 오픈 소스 컨트리뷰션 아카데미
'2023 오픈소스 컨트리뷰션 아카데미 지역 스프린트'는 오픈 소스 메인테이너와 협력하여 오픈소스 프로젝트에 기여하는 프로그램이며 Backend.ai 프로젝트에 참여하였습니다.
Backend.ai 프로젝트는 AI 개발에 필요한 환경 설정을 자동으로 처리해, 개발자가 오직 AI 개발에만 집중할 수 있게 돕는 오픈소스 프로젝트입니다.
Backend.ai 메인테이너 분과 오프라인으로 협업하여 PR 작성했습니다.
버튼 클릭을 한 이후에 하이라이트 사라지지 않는 버그를 수정하였습니다.
포트폴리오
자격증
Opic(영어)
IM3 | ACTFL
2024.06.
정보처리기사
등급 없음 | 한국산업인력공단
2024.09.
Topcit
3 | 과학기술정보통신부
2023.10.
SQLD
등급 없음 | 한국데이터산업진흥원
2023.10.