미리보기
기본 정보

반갑습니다! 꾸준히 잔디를 심는 3년차 백엔드 개발자 차윤범입니다:) - 다양한 도메인에 적응하고자 여러 프로젝트에 참여하여 적응력을 키우고 있습니다. - "코드 리뷰"에 대한 두려움보다는 재미를 느끼며 성장을 하고 있습니다. - 어려운 지식을 저만의 언어로 쉽게 풀어내 많은 사람에게 지식 공유하는 사람이 되고자 합니다. - 다양한 방면의 기술을 공부하고 적용하는 데에 관심이 많습니다. - 비즈니스 문제를 해결하는 데에 초점을 두고자 합니다! - 레거시 프로젝트를 개선하는 것에 보람과 성취감을 느낍니다:)
기술 스택
Node.js, Spring Boot, JPA, NestJS, MySQL, Java, TypeScript, TypeORM, AWS, Go, Kotlin, webflux, PostgreSQL, React, backend
경력
주식회사스터디워크
Backend Developer | 재직 중
2024.12. ~ 재직 중 (5개월)
[Jenkins 도입 및 배치 서버 개발]
배치 서버 도입을 위한 Jenkins 도입
t3.medium 사이즈 EC2 생성 후 Jenkins Docker 컨테이너 실행
추후 실행될 Job 부하 테스트 후 인스턴스 스케일업 예정
Jenkins Agent 실행
파이프라인 스크립트 작성 가이드 문서화
배치 서버 개발
기존
@Scheduled
어노테이션으로 실행되었던 스케줄 분리를 위한 개발 착수Why? 현재 Core 애플리케이션에서 스케줄이 실행되어 CPU 사용률이 지속적으로 상승되는 점을 확인.
B2C 서버에서 사용되는 비즈니스 로직 이관
Jenkins 파이프라인 JobParameter를 받아 로직 실행될 수 있도록 구성
[셧다운 공지 서버 배포]
AWS RDS 업데이트 시 다운 타임 발생으로 인한 별도 공지 서버 배포.
Spring boot 환경보다 비교적 가벼운 Nest.js로 컨테이너 실행
[B2B 프로젝트 촬영 개선 및 배포 방식 변경]
촬영 프레임 업로드 및 시간 갱신 시 DynamoDB 중복 조회 로직 개선.
기존 8080, 8081의 두 port를 수동 배포하는 방식에서 무중단 배포 방식 블루/그린 배포 도입.
다운 타임 최소화
8080, 8081 각 포트에서 배포 번잡성 제거
배포 스크립트 작성 (Graceful)
[챌린지 개발]
영어 숙어 챌린지
기존 스터디 챌린지와 다른 퀴즈 유형 챌린지 개발
15개 혹은 20개 랜덤 숙어 리스트를 외워 3지선다 객관식 10문제 정답을 맞추는 퀴즈
숙어 리스트 조회 시 Jmeter 부하 테스트 시 1500번 동시 요청 시 타임 아웃 에러 해결
숙어 리스트 Redis 캐싱 도입 (TTL: 2일)
인플루언서 챌린지
인플루언서 콜라보 유형의 스터디 챌린지 개발
인플루언서 참여 코드 입장 및 별도의 환급률 정책 수립
기존 챌린지에서 인플루언서에 대한 DB 스키마 정규화 진행
인플루언서
와인플루언서의 챌린지
는 별도의 정책을 가지며, 제 3정규화(3NF) 진행
마케팅 팀에서 사용되는 Notifly, Appsflyer Enum 구분
해당 챌린지 개발 후 DAU 약 5600 → 최대 7700까지 상승
작심칠일 챌린지
7일간의 20시간, 길게는 100시간 공부를 하는 챌린지 개발
7일 신청에 대한 Validation
신청 시간과 달성 시간 비율에 따른 환급액 계산
신청된 챌린지 시간에 따른 환급률 정책 전략 추가
[B2B 프로젝트 리팩토링]
레거시 프로젝트 개선
Gradle Catalog 도입
재사용성, 유지보수 용이성과 모듈간 느슨한 결합도를 위한 개선
Layered → Multi Module 아키텍처 변경
이벤트 발행 로직 도입
Facade 패턴 적용으로 Service 로직은 도메인에만 의존되도록 리팩토링
EC2 → ECS Fargate 서버리스 배포로 전환
TestContainer, Fixture Monkey 도입
테스트 사용성 개선
랭킹 API 개선
N+1 쿼리 사용 부분 삭제
associateBy를 통한 Grouping
Redis Cache 도입 (TTL 10m)
DynamoDB 설정 변경 및 개선
Dynamo Enhance Client, CRUD 활용성 개선
촬영 기록 검수 로직 개선
촬영 종료 시 분석 실행 로직 이벤트 발행
분석 실행 시 푸시 알림 이벤트 발행
촬영 분석 알고리즘에 따른 전략 패턴 적용
[B2C 어드민 개발환경 배포 환경 변경]
React는 정적 build 파일을 사용한 pm2 배포 방식 도입
nohup 백그라운드 실행 → ECR, docker compose 배포로 전환
React, Spring boot 배포 시 workflow 자동화로 develop 브랜치 푸시 시 Github Actions 자동 배포
스페이스워크 주식회사
Backend Engineer | Product
2024.02. ~ 2024.12. (11개월)
어드민 페이지 (React, mui)
장애 모달 작업
관리자가 사용할 모달 CRUD 기능 추가
리스트에서 상세 조회 DIalog 컴포넌트 추가
드래그 앤 드롭으로 모달을 노출할 순서 조정과 활성화 여부에 대한 필드 추가
라이트/플러스 분석 기록 데이터 조회
몇 십만 건에 대한 라이트 혹은 플러스 분석에 대한 기록 조회 API 개발
Full-Scan을 피하고자 페이지네이션으로 개발
리스트에서 페이지네이션 페이지 개발 및 관리자가 쉽게 조회할 수 있는 userId 및 빌드 상태에 따른 조건부 조회 (criteria 사용)
결제 시 잔액 부족 에러 발생 시 예외 처리
잔액 부족 시 멤버십 권한이 그대로 부여되는 현상 발견
발견된 현상에 따라 에러 처리 및 Transactional Rollback 옵션 추가
사업성분석 고도화
기존 간소화된 사업성분석 지표를 상세하게 제공하고자 시세분석 데이터를 활용해 리모델링
대용량 시세분석 데이터를 조회 시 15초 타임아웃 에러를 EXPLAIN을 활용해 무거운 쿼리를 최소하
최소화된 데이터로 불필요한 each 연산 삭제
AI 건축분석 목록 조회 성능 개선
문제: 전체 분석 기록에 대한 연관 테이블을 N만큼 SELECT 하는 성능 이슈
유저별 AI 건축분석하였던 기록를 불러오는 쿼리에서 15~16초가량 응답 시간을 2~3초로 개선
불필요 및 중복 filter, map 메서드 최소화
Cursor 페이지네이션 방식을 채택하여 lastId와 size를 QueryString으로 요청받아 Infinity Scroll 방식에 맞는 로직으로 개선
사업성지표 분석 파일 PDF → JPG 파일 변환 (Serverless)
Spring 프로젝트에서 API 리소스를 줄이고자, Serverless 기술로 해결
AWS의 Lambda, API Gateway, S3를 사용하여 Lambda 함수 작성(Python) 및 계층 구성과 API Gateway를 사용한 배포 구성
S3를 사용한 이유는 List<String>으로 구성된 Base64 코드를 Response 하기엔 제한적이여서 S3의 Put, GetObject를 활용
멤버십 결제 고객 해지 플로우 개선 및 할인 정책 수립
멤버십 이탈율 개선을 위한 멤버십 및 쿠폰 사용 현황 표기
사용자가 어떤 쿠폰을 사용하였고, 잔여 쿠폰의 수를 보여주기 위한 별도 API 개발
멤버십 고객 대상 오픈채팅방 형성
오픈채팅방을 가입한 사용자 대상으로 unique id 생성과 가입한 일자 저장 테이블 구성
첫 멤버십 고객 중 해지 시 50% 할인이 가능한 모달을 통해 전환 시 다음 달 자동 결제 예약 생성
첫 멤버십 결제 고객인 지 주문 테이블 조회 후 별도 비즈니스 로직 진행
MSA 기반의 프로젝트 Gradle Build Cache 도입
Spring 프로젝트 내에 Github Actions
gradle-build-action
도입으로 빌드 시간 7분 → 4분 30초 정도로 시간 단축
연간/주간 Slack 알림 중복 보고 해결
원인: 현재 MSA 구조의 EKS 여러 Pod 내에서
@Scheduled
를 사용하여 k8s 환경 각 Pod에 스케줄러가 실행되어 Pod 수만큼 메세지가 중복 전송되는 현상→ 이를 해결하기 위해 AWS EventBridge 스케줄러와 Lambda를 활용하여 Schedule 어노테이션을 걷어 냈음
B2C 플랫폼 멤버십 에러 대상 Slack 메세지 전송
멤버십 결제 고객 대상으로 에러가 발생된 케이스에 대해 Slack 메세지를 전달하는 API 엔드포인트 설계
기존 Slack 라이브러리에서 attachments 변경 사항을 인터페이스 정의 후 리팩토링
(주)탑코
사원 | 해외백엔드개발팀
2022.04. ~ 2024.01. (1년 10개월)
이상형 월드컵 서비스 개발
백오피스 및 플랫폼 이상형 월드컵 페이지 구성할 CRUD 기능 개발
이상형 월드컵 게임 리워드, 만화 이용권 지급으로, 어뷰징 체크와 동시성 이슈를 해결하여 사용자에게 하루에 한 번만 지급
어뷰징은 기존 fingerprint 라이브러리를 사용한 방문자 고유ID를 검증
검증된 ID 대상의 사용자 ID와 이용권 ID unique-index를 사용하여 동시성 이슈를 임시적으로 해결
이상형 월드컵 진행 중 사용자의 행동 분석 및 지급 내역을 쌓는 로그 데이터를 MySQL 데이터베이스에 축적
초기 MAU 26만 달성
플랫폼 검색 서비스 개발
최근 검색어에 대한 개발은 프론트엔드의 LocalStorage의 가장 최근 순으로 alasql 라이브러리를 활용해 개발
인기 검색어는 DB에 누적된 검색 키워드 히스토리 Count를 SELECT 하여 가장 Count가 많은 순으로 Response
Explain 실행계획으로 다량의 rows와 latency를 확인하여 복합 인덱스를 사용
앱 푸시 기능 개발 및 리팩토링
AWS Lambda 목적인 Go 프로젝트에서 Lambda SDK를 사용하여 주마다 발송되는 푸시 알림 개발
Topic 관리를 위해 백오피스에서 관리할 수 있는 기능 추가하여 Topic을 DB에서 관리
조회된 Topic을 yml에 정의한 CRON 식에 맞춰 푸시 알림 전송
통계 데이터 응답 시간 최소화
원인: 각 이용권, 만화, 회차 등 사용된 결제 내역과 코인에 대한 데이터를 사내 백오피스 통계 페이지에 Response 하였지만, 최대 2000만 건에 달하는 데이터에 대한 지연 Latency 발생
→ 대용량 통계 DB 테이블에서 PK, INDEX, 복합 INDEX 활용 및 코드 리팩토링하여 실제 6~7초 페이지를 3초 정도 감소시켜 최적화
프로젝트
피다
개인
2025.04. ~ 2025.05.
사용자의 현재 위치를 기반으로 가까운 벚꽃 명소를 안내하는 우리 동네 꽃길 안내 서비스
Tech Stack: Kotlin, Spring boot 3.x, Multi Module Architect, Kotlin JDSL
CoRoutine, Redis, PostgreSQL, Swagger, RestDocs
AWS EC2, Elastic Cache, ECS Fargate, RDS, VPC, Load Balancer
개발 내용 및 역할
멀티 모듈 아키텍처 프로젝트 초기 구성
AWS 서버 배포 구축
개발/운영 환경 분리
개발 환경 스펙: Docker Compose, Hub를 사용한 EC2 자동 배포 Workflow 작업
운영 환경 스펙: ECS Fargate를 사용한 자동 배포 Workflow 작업
MySQL 8.x → Postgresql 마이그레이션
Postgresql RDS 구성 및 PostGIS Extension 설치
벚꽃길 경로 및 위치 LINESTRING, 중간 위치 POINT 확장 함수 사용 및 변환
RestDocs 도입
예정
소셜 로그인(애플) 구현
왈왈
디프만
2024.06. ~ 2024.09.
💡 Project: 반려동물과 함께 미션을 수행하는 새로운 펫 커뮤니티 서비스
📌 반려동물과 함께하는 소중한 순간을 모두와 나눌 수 있는 세상으로 CTR(클릭율), CVR(전환율)을 통해 일상 기록뿐만이 아닌 미션을 함께 수행해 피드로 공유하여 커뮤니티 형성
📌 다양한 상호작용은 피드 체류시간을 늘리고 리액션 기능은 흥미를 유발할 것인 가설을 검증하여 리액션 기능 도입
개발 내용 및 역할
Spring 프로젝트 초기 구성
도메인 레이어 아키텍처, 코드 포맷팅 pre-commit hook을 사용한 Spotless 포맷팅, Spring Actuator 구성
코드 스멜 및 버그 체크를 위한 SonarCloud 연동
Redis 로컬 환경 구성
application yml 책임 분리
Querydsl의 버전이 5.0에서 업데이트 Stop되어, Openfeign에서 관리하는 Querydsl 6.0 + 사용
Mocking 데이터 활용을 위한 FixtureMonkey 도입
AWS Elastic BeanStalk 배포
docker-compose 내에 redis, nginx 등 컨테이너 배포 워크플로 작성 및 환경 변수 설정
개발, 운영 서버 분리로, amd64에 따른 운영 서버 워크플로 별도 작성
프리티어 메모리 부족으로 인한 메모리 스왑과 인스턴스 업그레이드
Docker Compose 배포로 전환
EB에서 반복적인 스왑 메모리 사용과 무리한 인스턴스 업그레이드로 인해 Docker Compose 방식으로 전환
ECR이 아닌 Docker Hub를 사용하여 비용 절감
운영, 개발 서버 전환 워크플로 작성
Nginx conf를 사용한 로드 밸런싱을 CloudFlare로 대체
소셜 로그인 및 회원가입 구현 (애플, 카카오)
Spring Security 환경 구성
RestClient 네트워크 통신 라이브러리 구성
Apple 로그인 - authorizationCode를 통한 id_token 추출 및 애플 유저 정보 조회
Kakao 로그인 - 카카오 서버 GET user/me 엔드포인트를 통한 유저 정보 조회
소셜 로그인 유저 정보로 JWT 토큰 발급 및 회원가입 처리
Switch-Case 활용하여 Provider에 따른 소셜 로그인 처리
팀 내 데일리 스크럼 도입 및 개발 문화 형성
Slack 리마인더를 활용해 팀 내부 일정 공유하도록 데일리 스크럼 제도 도입
Slack 스레드를 활용한 내부 커뮤니케이션 형성 및 Merge, CI 단계 Slack 웹훅 알림 이벤트 추가
iOS - Backend 파트 간 작업 단위 스쿼드 형성
Notion 칸반보드를 사용하여 태스크 및 일정 공유 커뮤니케이션 형성
모니터링 구축
Prometheus, Grafana를 위한 별도 모니터링 서버 구축
Grafana 시각화에 대한 UI 커스텀
Loki, Promtail를 통한 logging
댓글 기능 구현
댓글, 대댓글 추가 및 조회 기능
대댓글 시 self join을 통한 부모 댓글, 자식 댓글 추가하도록 설계
세종피어
개인
2024.01. ~ 2024.10.
개발 내용 및 역할
세종대학교 재학생들만을 위한 캠퍼스 네트워킹 서비스
Backend Contribute
Spring 프로젝트 구성
코드 컨벤션 Spotless 도입
세종대학교 학생 인증 Webclient 적용
AWS EC2 + CodeDeploy + Docker 배포 및 Nginx 구성
Spring Actuator 적용 및 Grafana + Prometheus 모니터링 도입
Frontend Contribute
S3 정적 웹 사이트 배포 워크플로 작성
CloudFront, ACM, Route53 구성
아이디/패스워드 검증 방식 수정
eslint, prettier 구성
10분만
디프만 14기
2023.11. ~ 2024.02.
💡 Project: 최대 집중 시간이 짧은 2030을 위한 10분의 미션으로 습관형성하는 서비스
저희는 다양한 목표를 갖고 꾸준히 작은 시간을 투자하면서 자기 발전을 원하는 사람들에게 도움을 줄 수 있는 서비스를 생각했습니다. 그래서 조금 더 쉽게 자신의 목표를 달성하게 하고, 매일매일 유지하며 이를 습관화 하도록 하는 서비스를 디자인하였습니다.
그래서 초기 가설로 10분이라는 짧은 시간이 습관을 형성하기에 최적의 시간이라 생각하고, 부담이 적은 10분이라는 짧은 시간을 투자하여 미션을 수행하는 방식의 자투리 시간 활용 서비스를 서비스의 방향성으로 잡았습니다.
개발 내용 및 역할
Backend Contribute
프로젝트 초기 세팅
Naver Cloud 배포 환경, CORS, 스토리지 환경 구성
Swagger 초기 세팅
Jacoco + SonarCloud 코드 커버리지 분석 도입
미션 및 미션 기록 도메인 개발
DTO 컨벤션 Class가 아닌 Java 17의 Record 사용
Database Clean 중복 코드 개선으로 JUnit Extension 활용 및 AutoDetection 도입
피드 탭 무한 스크롤에 따른 No-offset 구현
여러 Proxy 객체를 참조하는 현상으로 Select 쿼리를 줄이고자 Projections을 활용하여 단 쿼리 Querydsl로 리팩토링
미션 재촉 및 리액션 등 도메인 활용에 따른 FCM 푸시 알림 도입
sendMulticastAsync
Deprecated로 인한sendEachForMulticastAsync
으로 다중 푸시 알림 구현
Naver Cloud → AWS 마이그레이션
Object Storage → S3 데이터 마이그레이션
CloudFront 적용
초기 랭킹 데이터 생성과 갱신을 위해 insert duplicate Native-Query를 활용
Frontend Contribute
문의 채널 버튼 컴포넌트 추가
무한 스크롤 피드 v2 API 연결 및 개선
AWS 마이그레이션 중 점검 시간 활성화
10MM 성과
1차 MVP 이후 141건의 QA 처리
디스콰이엇 트렌딩 프로덕트 2등
Max DAU 440 달성
총 회원 수 800명 이상 유입
Product Link
📌 앱스토어
https://apps.apple.com/kr/app/10분만-10mm-10분으로-시작하는-습관-형성/id6475635740
📌 구글 플레이 스토어
https://play.google.com/store/apps/details?id=com.tenminuteapp&hl=ko
📌 웹 사이트
ESL을 활용한 스마트오피스
세종대학교
2021.09. ~ 2021.12.
스마트 오피스에서 활용하는 기업 내부 좌석 및 회의실 배치와 예약을 관리하는 서비스입니다.
사용자가 예약한 좌석 및 회의실의 정보를 자동으로 읽어서 연결된 ESL Tag에 노출되는 방식입니다.
사용 기술: Typescript, NestJs, AWS
- 좌석, 회의실, 시설 등 DB 스키마 정의
- 회의실 및 좌석 등록, 질의, 답변 등등, REST API 개발
- Swagger API 문서 작성
포트폴리오
교육
세종대학교
대학교(학사) | 컴퓨터공학과
2020.03. ~ 2022.02. | 졸업
숭실대학교 전산원
대학교(학사) | 컴퓨터공학전공
2015.03. ~ 2019.02. | 졸업
여의도고등학교
고등학교 | 인문계
2012.03. ~ 2015.02. | 졸업
대외활동
SIPE 3기
SIPE
2024
1차 미션
어렵게 배워서, 쉽게 사용하는 Webflux + Coroutines
Tech Stack: Kotlin, Spring boot 3.x, CoRoutine
학습 내용
1주차
Thread, Runnable, Callable, ExecutorService, Async, CompletableFuture, ThreadLocal 등등 개념 학습
JVM에서의 Thread 동작 방식 및 컨텍스트 스위칭 내용 학습
2주차
하드웨어적 관점 컨텍스트 스위칭 이해.
JVM에서 제공되는 동기화 방법 학습(
Atomic
,syncronized
,volatile
)Tomcat 네트워킹 중 스프링에서 어떻게 스레드를 처리되는 지
3주차
코루틴의 개념 및 사용 이유
코루틴(경량)과 스레드의 차이점 비교 및 동작 원리 실습
4주차
코루틴 continuation, Dispatchers, async, launch, suspend, coroutineScope, coroutineContext, yield, runBlocking, withContext 키워드 정의 및 실습
간단한 Todo List 애플리케이션으로 코루틴 실습
withContext, Dispatchers.IO를 통해 애플리케이션 단에서 코루틴 도입.
2차 미션
Smart(Spring Modular Architecture Research Team) Payment 파트
Tech Stack: Kotlin, Spring boot 3.x, JPA, Spring Modulith
Modulith를 활용한 이벤트 발행 및 레지스트리를 사용한 핀테크 Demo 프로젝트
학습 내용
모듈러 모놀리스와 스프링 모듈리스의 기본 개념 학습
학습에 필요한 도메인 파트 분리
Modular Monolith Architecture의 기본 구조와 개념 학습
Spring Modulith의 주요 기능 학습
Payment MVP 요구사항에 따른 이벤트 스토밍 진행
송금 관련 이벤트 발행 로직 구현.
글또 10기
글또
2024
글쓰는 또라이 모임이라는 "글또" 커뮤니티 내에 블로그 글 작성
제출한 글 리스트
디프만 15기
디프만
2024
디프만 15기 활동에 참여하여 팀장 및 백엔드 파트 리드를 담당
왈왈이라는 프로젝트로 반려동물 커뮤니티 서비스 개발
주제 선정부터 기획 및 빌딩 후 요구사항에 따른 도메인 개발 및 인프라 구성
인프런 스터디 활동 (스터디장)
IT 동아리 내에 인프런 스터디 구성
Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
강의를 선정하여 스터디 원 모집스터디 그라운드 룰과 코드 실습환경 구성
주 1회 강의 수강 후 한명씩 발표 후 토픽에 대한 의견 제시 및 토론
의존성 역전 법칙에 따른 Testability를 어떻게 올리는가?
도메인과 영속성 객체 분리로 도메인 객체 테스트
왜 헥사고날 아키텍처를 사용하는 지 레이어드 아키텍처와의 비교 후 적용
디프만 14기
디프만
2023
자격증
정보처리산업기사
등급없음 | 한국산업인력공단
2018.11.
정보처리기사
등급없음 | 한국산업인력공단
2021.06.
자기소개
안녕하세요 3년차 백엔드 개발자 차윤범입니다!
💡 반갑습니다! 꾸준히 잔디를 심는 3년차 백엔드 개발자 차윤범입니다:)
다양한 도메인에 적응하고자 여러 프로젝트에 참여하여 적응력을 키우고 있습니다.
코드 리뷰
에 대한 두려움보다는 재미를 느끼며 성장을 하고 있습니다.어려운 지식을 저만의 언어로 쉽게 풀어내 많은 사람에게
지식을 전파
할 수 있는 사람이 되고자 합니다.다양한 방면의 기술을 공부하고 적용하는 데에 관심이 많습니다.
비즈니스 문제를 해결하는 데에 초점을 두고자 합니다!
레거시 프로젝트를 개선하는 것에 보람과 성취감을 느낍니다:)
🛠 Available Skills.
Front-End
: JavaScript, TypeScript, React.js, Next.js, React Query, Vue.js 3.0Back-End
: Java, Kotlin, Typescript, Node.jsSpring Boot, Spring Data JPA, Querydsl, Spring Security, Spring WebFlux, Kotlin JDSL, Nestjs(TypeORM)
AWS: EC2, S3, Lambda, CloudFront, CodeDeploy, RDS, Route53, ACM, IAM, ECS, ALB, DynamoDB, LightSail
Naver Cloud Platform: Server, Container Registry, Source Deploy, Object Storage, Load Balancer, Cloud for Redis
DataSource
: MySQL, Postgres, Redis, AWS RDSMonitoring
: Grafana, Prometheus, AWS CloudWatchIDEs
: IntelliJ, Vscode, WebstormVersion Control
: GitCommunication & Collaboration
: Notion, Slack, Jira