본문으로 건너뛰기
버튼 하나 뒤에서
임철순 증명사진

About me

임철순

서비스 10개를 운영하는 회사에서 프론트엔드를 맡아 비용과 속도를 숫자로 줄여 왔고, 이 사이트에서는 서버와 데이터베이스까지 직접 만들고 쟀어요.

2022.06 블록체인(Solidity) 개발 → 2022.09~ 캠퍼스 B2C 모바일 앱 회사 프론트엔드

이력서 (PDF)GitHub블로그

왜 백엔드로

회사에서 충전·포인트·티켓 화면을 만들면서도, 버튼 뒤에서 서버가 한꺼번에 몰린 요청을 어떻게 지키는지는 "API 주소" 너머의 일이었어요.

CloudFront 캐시로 요청을 90% 줄여 본 뒤로, 같은 문제를 서버 쪽에서는 어떻게 푸는지 직접 재 보고 싶어졌어요.

그래서 이 사이트에서 API와 데이터베이스를 만들고, AWS에 올려 끊기지 않게 배포하는 일까지 혼자 해 봤어요.

기술 스택

프론트엔드
  • React
  • TypeScript
  • Vite
  • React Query
  • Nuxt.js
  • Vue.js
  • Next.js
빌드 · 모노레포
  • PNPM workspace
  • Turborepo
프론트 배포 (회사)
  • AWS Lambda@Edge
  • S3
  • CloudFront
품질 · 협업
  • Sentry
  • Storybook
  • style-dictionary
  • Node.js 스크립트
백엔드 (이 사이트)
  • NestJS 11
  • Prisma 6
  • MySQL 8
  • Redis 7
배포 · 운영 (이 사이트)
  • Docker
  • Caddy
  • EC2
  • SSM
  • IAM OIDC
  • GitHub Actions
  • GHCR
  • S3 백업
블록체인
  • Solidity
  • Ethereum
  • Web3.js
  • ethers.js

이 프로젝트에서 한 것

NestJS + Prisma + MySQL 8 + Redis 7로 API를 만들었어요. 장마다 방법을 2~4개 실제 데이터베이스로 재서 고른 이유와 포기한 이유를 남겼고, 커밋마다 GitHub Actions가 포맷 → 타입 검사 → 린트 → 테스트 → 빌드를 돌려요.

  1. 1장선착순 표 100장: 줄 세우기 대신 "남았으면 팔기"를 한 번에"남았으면 1 늘리기"를 데이터베이스 한 문장에 맡겼어요. 500명이 동시에 눌러도 정확히 100장이 나갔고, 줄 세우기보다 약 4배 빨랐어요.
  2. 2장로그인 유지: 손목밴드는 메모리에, 재발급 영수증은 스크립트가 못 여는 쿠키에금방 만료되는 손목밴드는 메모리에만 두고, 재발급 영수증은 쓸 때마다 새것으로 바꿔요. 그래서 복사본은 처음 쓰이는 순간 들켜요.
  3. 3장클릭 기록: 바로 저장 대신 모아서 한 번에클릭 기록을 하나씩 보내지 않고 모았다가 한 번에 보내요. 10,000개를 보내는 데 18.7초 걸리던 게 0.29초가 됐어요.
  4. 4장포인트: 잔액 숫자만 고치지 않고, 통장처럼 내역을 남기기적립·사용 200건이 동시에 몰리자 잔액 숫자만 고치는 방식에선 10,100P가 사라졌어요. 내역을 남기고 잔액과 맞춰 보는 방식은 0P.
  5. 5장결제: 버튼을 잠그는 대신 결제 시도마다 번호표(Idempotency-Key)버튼 세 번에 앱의 자동 재시도까지 요청 4개가 나가면, 번호표가 없을 땐 4번 결제됐어요. 같은 번호표를 붙이니 1번.
  6. 6장맛집 메뉴판: 캐시는 빠르게, 바뀐 메뉴는 제때손님 1000명이 같은 메뉴를 물어도 데이터베이스엔 1번만 가요. 대신 메뉴가 바뀌면 최대 5초 늦어서, 고칠 때 메뉴판을 지워요.
  7. 7장계산대 하나 더: 같은 API를 두 개 켜서 나눠 받기부하 테스트에서 Node 프로세스 하나가 CPU 코어 하나를 꽉 채워 초당 약 620건에서 멈췄어요. 코어가 2개라 API를 2개로 늘리고 Caddy가 나눠 보내게 했어요.
번외배포 및 회고AWS 가입부터 끊기지 않는 배포(배포 중 실패한 요청 0번), 매일 DB 백업까지 혼자 한 기록

회사 경험이 이 사이트의 장으로

장마다 고른 것·포기한 것·배운 것은 첫 화면의 7가지 선택과 저장소 POcodingWER/backend-visualized에 있어요.

경력

  1. 2022.09 ~ 현재

    프론트엔드 개발자 캠퍼스 중심 B2C 모바일 앱 회사

    독립 서비스 10개를 운영하며 기술 전환과 최적화를 맡았어요.

    • 2025.01~11 Nuxt.js → React 전환 리드 (서비스 10개, 2인 팀, Lambda@Edge + S3 페이지 단위 배포)
    • 2025.01~11 CloudFront 캐시 정책 세분화: CloudFront 비용 월 $500 → $120, 요청 월 1,200만 → 100만
    • 2025.04~06 세탁기 블루투스 연결 실패 추적: Sentry 도입, 연결 실패율 80% · 고객 문의 90% 감소
    • 2023.07~2024.08 언어팩(Excel → JSON) · 약관(노션 → HTML) 자동화: 업데이트 시간 70% · 90% 단축
    • PNPM workspace + Turborepo 모노레포: CI 빌드 시간 80% 단축
    • AI 에이전트 하네스: PR 리뷰 Critical/Medium/Low 자동 분류
  2. 2022.06 ~ 2022.09

    블록체인(Solidity) 개발자 NFT 프로젝트

    Solidity 스마트 컨트랙트와 NFT 민팅 플랫폼을 만들었어요.

    • Delica NFT 민팅 플랫폼: 스마트 컨트랙트 설계 + React 화면
    • Bellygom NFT: 이더리움 기반 NFT 발행
88%
AWS 비용 절감
월 $1,500+ → $120, 1년에 약 $16,500. SSR → CSR 전환으로 65%, CloudFront 캐시 정책 세분화로 76% 추가 절감
10개 · 10개월
Nuxt.js → React 전환 리드 (2인 팀)
충전·포인트·티켓 등 서비스 10개를 Lambda@Edge + S3 페이지 단위 배포로 하나씩 옮겼어요 (2025.01~11)
80%
CI 빌드 시간 단축
PNPM workspace + Turborepo 모노레포로 바뀐 앱만 빌드. 배포 시간 35%, 번들 25% 감소
3초 → 1.2초
초기 로딩
CloudFront 요청 월 1,200만 → 100만, 캐시 적중률 90%
회사에서 낸 숫자예요. 출처: 이력서

끝까지 파고든 문제

  • 세탁기 블루투스 연결 실패(하루 40~50건 이상)를 2개월 추적: Sentry 도입을 제안·구축하고 앱 개발자와 로그 구조를 설계해 특정 기기·OS에서만 나는 걸 찾아 타임아웃·재시도를 넣었어요. 연결 실패율 80%, 고객 문의 90% 감소, 장애 대응 2시간 → 40분.
  • AI 코드 리뷰 하네스: PR 리뷰를 Critical/Medium/Low로 자동 분류해, 150개 파일·8,000줄 PR에서 사람이 놓치기 쉬운 Critical 버그를 머지 전에 찾아 고쳤어요.

글 · 활동

AWS · 프론트엔드

MCP · AI 에이전트

공모전

카카오 Agentic Player 10 공모전에 "찾아줘 주차장!" MCP를 냈어요 (PlayMCP 전체 공개 · 예선 접수 완료). PlayMCP에서 보기 →

연락처