장인환

Backend Developer

총 경력 5년 8개월
1995.02.15
010-4157-8180
서울특별시 강서구

코드아이디어

웹 에이전시 기반 대외 프로젝트 구축 및 운영

2022.09 ~ 2024.11
2년 2개월

OK 인베스트먼트파트너스

금융 자사 앱 플랫폼 서비스 유지보수

2022.05 ~ 2022.07
2개월

유엔비즈

SI 기반 시스템 통합 구축 및 장기 운영·유지보수

2018.06 ~ 2021.11
3년 4개월

Main Stack

Java Spring MySQL MyBatis
JavaScript jQuery

Sub Stack

JPA React HTML
Linux nginx Tomcat

자격증

정보처리기사
한국산업인력공단
2021.12
컴퓨터활용능력 2급
대한상공회의소
2021.06
네트워크관리사 2급
한국정보통신자격협회
2021.06

학력 / 교육

학점은행제 학사
컴퓨터 공학
2021.07 ~ 2022.02
부천대학교 전문학사
디지털 콘텐츠
2013.03 ~ 2017.02
국비 교육과정
자바 기반 모바일 & 웹 개발자 양성과정
2017.01 ~ 2017.06

⭐ Main Project

실무 역량 강화 프로젝트

득근대란 Protein Show

특정 시간에 단백질 상품 한정 수량을 선착순으로 판매하는 고부하 커머스 플랫폼

Overview
Type 개인 프로젝트
AI Tool Claude Code
Period 2026.03 ~ 2026.04
Domain 타임 세일 기반의 커머스 특정시간 · 최저가 · 선착순
Focus 3가지 고가용성 문제 트래픽 폭주 · 재고 동시성 · 장애 격리
Tech Stack
Backend
Java 21 Spring Boot 4 Spring Security + JWT Gradle (Multi-Module)
DB
MariaDB JPA + QueryDSL Redis (String / Streams)
Frontend
Next.js TypeScript
Infra
Docker Nginx
Architecture
CI/CD Pipeline GitHub Actions
Push to main
Docker Build
GHCR Push
SSH Deploy
Production AWS EC2 · Ubuntu
Nginx
: 80 / : 443 · 외부 요청 수신 및 라우팅
ps-front
: 3000
ps-order
: 8080
ps-point
: 8081
Data Stores
MySQL
: 3306
Redis
: 6379
Problems Solved

풀어낸 문제들

플래시 세일에서 반드시 마주치는 핵심 문제들과 해결 접근

01
조회 성능 향상
Redis 캐싱 전략

트래픽 폭주를 대비하여 조회 경로를 Redis로 끊어내 DB 커넥션 고갈 방지

상세 보기
02
재고 동시성 제어
Redis DECR + Fail-Fast

Redis의 원자 연산으로 경합을 해소하여 선착순 초과 판매 차단

상세 보기
03
장애 격리
Transactional Outbox + Redis Streams

주문 서버와 포인트 서버 간 장애 전파 차단

상세 보기
Design Decisions

설계하면서 의도적으로 내린 결정들

재고를 DB에 두지 않는다

동기화 포인트를 없애기 위해 Redis를 단일 진실 원천으로 고정

Redis 장애 대비는 범위 밖으로 뺀다

fallback을 만들면 사실상 별도 시스템이 되고, 플래시 세일에서는 "재고 불일치보다 주문 중단이 안전"하다는 판단

캐시 워밍 시점에 Redis Streams MAXLEN을 미리 계산해 둔다

stream:point:maxlen 키에 총 재고 × 2를 넣어 두고 발행 스케줄러가 이 값으로 trim하도록 위임 — 스트림이 무한정 커지는 걸 이벤트 단위로 자동 제어

Takeaways

배운 것 / 달라진 것

공부로 알던 Transactional Outbox + Stream Consumer Group을, 실제로 "어느 단계에서 중복이 발생할 수 있는가"를 코드 레벨로 따라가면서 추상 개념이 현실 코드와 붙는 지점을 체감했습니다
"복구 가능한 실패"와 "복구 불가 실패"를 분리해 XACK 전략을 나누는 것이 Streams 소비자 설계의 핵심이라는 감을 잡았습니다
1.5년의 공백 기간 동안 오히려 왜 이렇게 짜는가 를 말로 풀어 쓰는 습관이 생겼고, 이 프로젝트에서도 plan.md / tasks.md / ui-logic.md로 의사결정 근거를 남기며 진행했습니다

Portfolio

기타 경력 프로젝트

상세 보기

마켓해머

제조업체 전문 파트너 매칭 및 온라인 계약·관리 플랫폼

기여 30%

배경 반복적인 기능 추가/수정으로 인해 유지보수가 힘들어진 레거시 프로젝트 재구축

Java Spring Boot MariaDB MyBatis WebSocket STOMP JavaScript jQuery
3인 팀 (Backend & Frontend)
상세 보기

SAFFY

안전 작업 허가서 작성부터 다단계 승인, 문서 조회/출력까지 관리하는 통합 결재 시스템

기여 70%

배경 기존 시스템의 복잡하고 불필요한 기능 제거 및 실무자 요구사항을 반영한 전면 재구축

Java Spring Boot MariaDB JPA QueryDSL JavaScript jQuery
2인 팀 (Backend & Frontend)
상세 보기

해리티지 산후조리원

산후조리원 세부 일정 및 현황을 관리하는 관리자 전용 시스템

기여 40%

배경 현행 시스템의 분석 불능 상태 해결 및 신규 비즈니스 요구사항 수용을 위한 전면 재구축

Java Spring Boot MariaDB MyBatis JavaScript jQuery
2인 팀 (Backend & Frontend)
상세 보기

Fashion & Style

글로벌 패션 트렌드 및 셀럽 스타일 정보를 제공하는 매거진 형식의 패션 정보 플랫폼

기여 90%

배경 고객사 개발팀이 백엔드 API를 선구축, 이후 React 기반 프론트엔드 전담 개발

React JavaScript
1인 (Frontend 전담)