신재윤
Backend Software Engineer
사용자의 입장에서 생각하여 소프트웨어 제품을 개발하는 엔지니어
Contact
- email : wlwhsvkdlxh@gmail.com
- Github : https://github.com/Shin-Jae-Yoon
- 기술블로그 : https://jae-yoon.tistory.com
- 지식저장소 : https://shin-jae-yoon.github.io
Skills
- Backend : Java, SpringBoot, JPA
- Database : MySQL, Redis
- DevOps : AWS, Github Actions, Docker, Nginx
- Etc : Git, Shell Script
Introduction
안녕하세요. 백엔드 개발자 신재윤입니다. 빠르게 변화하는 시대에 유연하게 적응하기 위해 단순히 구현하는 것에서 그치지 않고, 유지보수가 수월하고 확장 가능한 코드를 작성하려고 노력해왔습니다. 이러한 과정에서 객체지향 프로그래밍, 추상화에 큰 매력을 느꼈습니다.
소프트웨어 제품을 개발할 때, 방대한 지식을 가진 것은 중요합니다. 이를 위해 끊임없이 노력하고 특히, 기본적인 원리를 깊게 공부하는 것이 중요하다고 여깁니다. 하지만 그럼에도 모든 지식을 알 수 없기에 팀원들과의 소통으로 문제를 해결하는 것이 제가 보는 핵심입니다. 저와 팀원이 가진 지식이 통합하여 하나의 거대한 집합체가 되었을 때 커다란 희열을 느낍니다.
인사이트 공유와 코드리뷰로 동료와 함께 성장하며, 열린 마음으로 피드백을 수용하는 자세로 사람들의 불편함을 해결하고 더 나은 삶을 살게 해주는 소프트웨어 제품을 개발하기 위해 나아가는 중입니다.
Projects
모아밤 (모두의 아침과 밤) - Github
프론트엔드 4명, 백엔드 5명 구성
2023.10 ~ 2024.03
담당 역할 : 방, 루틴, 이미지 도메인, 검색 도메인, CI/CD 및 인프라 전체 구축
사용 기술 : Java17, Spring Boot, Spring Data JPA, MySQL, Redis, Querydsl, Docker, SonarCloud, Jacoco, Github Actions, AWS Route53, EC2, Cloudfront, ACM, S3, RDS, CloudWatch, VPC(public/private subnet)
- 그룹원을 모아 루틴을 정하고, 보상을 받으며, 커스터마이징 캐릭터를 이용해 동기부여를 강화하는 서비스
Backend
- API 설계 및 구현 (방, 루틴, 이미지 도메인, 검색 도메인)
- 방 목록 검색 시, 커서 기반 페이징 처리
- nGrinder와 scouter 활용 성능 테스트 진행하여 서비스 규모에 맞게 커넥션 풀 튜닝 이후
가상유저 50명일 때 평균 TPS 293.0 → 842.3 성능 향상
- 쿼리 실행 계획 분석 및 검색 쿼리 개선
와일드카드 full like의 검색 쿼리를 full-text-search 인덱싱으로 최적화
더미데이터 100만 건 기준 965ms → 284ms 약 70.6% 성능 향상
- 동시성 문제 발생 지점 비관적 락 이용 해결
- Separated Interface Pattern을 통해 시간에 의존적인 코드 개선
- 테스트 커버리지 80% 적용하여, 447개의 테스트 코드 작성
Infra
- AWS 서비스 활용하여 개발 서버, 운영 서버 인프라 구축
- nginx의 keepalive 설정 및 이벤트 처리 방식 epoll로 튜닝하여 서비스 응답 지연시간 해결
- Github Actions + docker 활용 CI/CD 파이프라인 구축
- SonarCloud + checkstyle + Jacoco 적용
- swap 메모리 할당하여 EC2 메모리 부족 문제 개선
- 도커 이미지 기반 blue/green 무중단 배포 구축하여 downtime 5s → 0s 개선
- graceful shutdown 도입
Service Architecture
CI / CD
JToon - Github
백엔드 5명 구성
2023.09 ~ 2023.09
담당 역할 : 웹툰, 회차, 이미지 도메인, CI/CD 및 인프라 전체 구축
사용 기술 : Java17, Spring Boot, Spring Data JPA, MySQL, Redis, Querydsl, PortOne Iamport, Google SMTP, Docker, Github Actions, AWS Route53, EC2, Cloudfront, ALB, ACM, S3, RDS, Webhook
- 네이버 웹툰 클론 코딩, 멀티모듈 도입
- API 설계 및 구현 (웹툰, 회차, 이미지 도메인)
- 모놀리식 멀티 모듈 환경 세팅
- 최상위 모듈과 하위 모듈간의 순환 참조가 발생 → 해당 클래스 추상화를 통해 DIP로 해결
- AWS ALB + ASG 활용하여 탄력성 향상
- Slack 웹훅 활용하여 오류 알림 시스템 구현
Project Structure
Service Architecture
CI (Continuous Integration)
CD (Continuous Delivery/Deployment)
Fashion Boomer - Github
프론트엔드 1명, 백엔드 1명 구성
2022.10 ~ 2022.12
담당 역할 : 안드로이드 개발, AWS 배포
- 쇼핑몰의 제품 사진, 내가 가진 옷의 사진을 누끼따기하여 마네킹에 대보고 매칭이 잘 되는지 확인해보는 프로젝트
- OAuth 2.0 사용하여 카카오 로그인 구현
- RecyclerView 이용하여 메모리 성능 향상
- 안드로이드 12 이후 Splash API로 인한 스플래시 2번 뜨는 이슈 대응
- 전체 테마를 설정하여, 기본 Splash를 숨기고 커스터마이징 한 Splash Activity 노출
휴대폰 대리점 고객 번호목록 조회 - Github
프론트엔드 1명, 백엔드 1명 구성
2022.04 ~ 2022.05
담당 역할 : 클라이언트 개발, AWS 배포
- React, react-router-dom 이용 구현
- 주소창에 주소 입력 이후 진입하면, 권한에 막혀 라우팅 되지 않게 구성
- Vultr 이용 배포
- RecyclerView 이용하여 메모리 성능 향상
- 안드로이드 12 이후 Splash API로 인한 스플래시 2번 뜨는 이슈 대응
- 전체 테마를 설정하여, 기본 Splash를 숨기고 커스터마이징 한 Splash Activity 노출
Personal Experience
프로그래머스 백엔드 데브코스 4기
2023.06 ~ 2023.12
- 프로그래머스(그렙)에서 진행하는 클라우드 기반 백엔드 개발자 국비교육
- 페어 프로그래밍 및 팀 프로젝트를 통한 팀원과 협업 경험
- Java & Spring, Clean Code, AWS & Docker 등 다양한 지식 습득
- 최종 프로젝트를 통해 개발부문 우수상 수상 ( 16팀 중 1등 )
한국지능정보시스템학회 2022년 추계학술대회
2022.03 ~ 2022.11
- 빅데이터 기반 패션 추천 시스템, Fashion Boomer 논문 초록 작성 (1저자 등재)
- 빅데이터와 AI 세션에 투고하여 학회에서 발표 진행
- Semantic Segmentation의 원리와 U-Net 모델에 대한 질의 답변
소나무정보기술
2022.12 ~ 2023.01
- 계절학기 현장 실습, SI회사에서 1개월 간 인턴 진행
- 2주 동안 ERP/MES 시스템 모바일 애플리케이션 개발
- 기존의 클라이언트에서 Ms-sql에 직접 접근하는 방식을 local.properties에서 따로 접근하도록 변경
- deprecated된 AsyncTask의 성능이 3초 걸리던 것을 RxJava를 이용한 Observable로 리팩토링하여 0.5초로 단축
- 2주 동안 업무 자동화 프로그램을 개발
- 1시간 주기로 크롤링 한 데이터를 배치화 시켜서 DB에 저장하는 로직 개발
Education
국립 부경대학교
- 기간 : 2017.03 ~ 2023.02 (졸업, 취득 학점 165, 총 평점 3.95/4.5)
- 2021.03 ~ 2023.02 컴퓨터공학부 컴퓨터공학 전공
- 2017.03 ~ 2021.02 전기공학부 제어계측공학 전공
Copyright © JaeYoon Shin. All rights reserved.