미리보기
기본 정보

💡 반갑습니다! 3년 차 백엔드 개발자 차윤범입니다. - 개발을 수행할 때 개발만을 중시하는 것이 아닌, 서비스의 품질이나 개선 방향, 확장성 등 기획의 방향성을 고려하여 사용자에게 접근하고자 합니다. - 다양한 도메인에 적응하고자 여러 프로젝트에 참여하고 활동하여 적응력을 키우고 있습니다. - `코드 리뷰`에 대한 두려움보다는 재미를 느끼며 성장을 하고 있습니다. - 어려운 지식을 저만의 언어로 쉽게 풀어내 많은 사람에게 `지식을 전파`할 수 있는 사람이 되고자 합니다. - 언제든 `가능하다`라고 말하는 개발자가 되고자 합니다. - 다양한 방면의 기술을 공부하고 적용하는 데에 관심이 많습니다. - 레거시 프로젝트를 개선하는 것에 보람과 성취감을 느낍니다:)
기술 스택
Node.js, Spring Boot, JPA, NestJS, MySQL, Java, TypeScript, TypeORM, AWS, Go, Kotlin, webflux, PostgreSQL
경력
스페이스워크 주식회사
Backend Engineer | Product | 재직 중
2024.02. ~ 재직 중 (1년 1개월)
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를 활용
멤버십 결제 고객 해지 플로우 개선 및 할인 정책 수립
멤버십 이탈율 개선을 위한 멤버십 및 쿠폰 사용 현황 표기
멤버십 고객 대상 오픈채팅방 형성
첫 멤버십 고객 중 해지 시 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. ~ 2023.12. (1년 9개월)
이상형 월드컵 서비스 개발
백오피스 및 플랫폼 이상형 월드컵 페이지 구성할 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초 정도 감소시켜 최적화
프로젝트
왈왈
디프만
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. ~ 진행 중
개발 내용 및 역할
세종대학교 재학생들만을 위한 캠퍼스 네트워킹 서비스
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
📌 웹 사이트
개인 블로그 프로젝트
개인
2023.03. ~ 2023.10.
개요: 개인 블로그를 직접 CRUD 및 AWS 인프라를 구축하면서 학습하고자 하는 프로젝트
사용 기술: Java 17, Spring boot, JPA, AWS, Spring Security
개발 내용
- Spring Data JPA로 게시글, 댓글 API 구현
- 게시글과 댓글 스키마는 1:N 일대다 매핑으로 1+N 이슈를 해결하고자 Fetch join 활용
- 게시글 내용은 MarkDown Editor 라이브러리 사용하여 작성 가능하도록 개발
- Spring Security에서 JWT 토큰으로 인증 구현, 토큰은 Session Storage에서 관리
- Vue.js를 활용하여 게시글, 댓글, 로그인/로그아웃 페이지 기능 구현
- SCSS 활용한 반응형 디자인
- CodeDeploy - EC2를 통한 자동 배포, 프론트엔드는 S3 정적 웹 호스팅을 사용한 자동배포(배포 시 즉시 반영을 위한 CloudFront 캐시 무효화 활용) 구현
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
글또 10기
글또
글쓰는 또라이 모임
디프만 15기
디프만
디프만 15기 활동에 참여하여 팀장 및 백엔드 파트 리드를 담당
왈왈이라는 프로젝트로 반려동물 커뮤니티 서비스 개발
주제 선정부터 기획 및 빌딩 후 요구사항에 따른 도메인 개발 및 인프라 구성
인프런 스터디 활동 (스터디장)
IT 동아리 내에 인프런 스터디 구성
Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
강의를 선정하여 스터디 원 모집스터디 그라운드 룰과 코드 실습환경 구성
주 1회 강의 수강 후 한명씩 발표 후 토픽에 대한 의견 제시 및 토론
의존성 역전 법칙에 따른 Testability를 어떻게 올리는가?
도메인과 영속성 객체 분리로 도메인 객체 테스트
왜 헥사고날 아키텍처를 사용하는 지 레이어드 아키텍처와의 비교 후 적용
디프만 14기
디프만
자격증
정보처리산업기사
등급없음 | 한국산업인력공단
2018.11.
정보처리기사
등급없음 | 한국산업인력공단
2021.06.
자기소개
안녕하세요 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, Nestjs(TypeORM)
AWS: EC2, S3, Lambda, CloudFront, CodeDeploy, RDS, Load Balancing, Route53, ACM, IAM
Naver Cloud Platform: Server, Container Registry, Source Deploy, Object Storage, Load Balancer, Cloud for Redis
Database
: MySQL, Postgres, RedisMonitoring
: Datadog, Prometheus - Grafana, AWS CloudWatch, NewRelicIDEs
: IntelliJ, Vscode, WebstormVersion Control
: GitCommunication & Collaboration
: Notion, Slack, Jira