Backend Engineer / Portfolio

이성현

Backend Engineer

KISTI 연구 데이터 플랫폼, 공공 정산 시스템, 제조 품질 시스템을 만들었고, SSAFY에서 COIP와 우당탕탕 김밥 지옥 프로젝트를 진행했습니다.

MAU 10배4K → 40K, 2년 (KISTI)
하루 → 즉시통계 산출 시간 (커미조아)
0 다운타임무중단 배포, staging 60% 절감 (COIP)
20Hz실시간 게임 서버 틱 (김밥 지옥)

일하는 방식: 이론으로 이해하고, 재현과 측정으로 검증합니다

  1. 원리 학습공식 문서와 원서를 읽고 예제로 직접 확인해 지식 저장소에 정리
  2. 가설 세우기증상이 생기면 원리에 비춰 원인 후보를 좁힘
  3. 재현과 측정브라우저 재현, 로그 분석, 테스트로 가설을 확인하고 틀리면 버림
  4. 적용과 기록확인된 것만 반영하고, 판단 근거를 커밋과 문서에 남김
01 — Career

이력

경력
(주)알투소프트, 대리 SI 개발2020.03 ~ 2025.12
교육
SSAFY, 마이스터고 트랙2026.01 ~ 2027.01
학력
대덕SW마이스터고 소프트웨어개발과2017 ~ 2020
수상
삼성 SW 역량평가 A+2026.02
자격
정보처리기사2024.06
02 — Stack

기술

언어
Java, TypeScript, Python, SQL
프레임워크
Spring Boot, JPA, QueryDSL, MyBatis, NestJS, Django
데이터
PostgreSQL, MariaDB, Oracle, MySQL, Redis, iRODS, Solr
인프라
Docker, Kubernetes(GKE), Nginx, Jenkins, Kaniko, Trivy
관찰, 테스트
Prometheus, Grafana, Vitest, Testcontainers, pytest
03 — Projects

프로젝트

행을 누르면 구조, 결정, 결과가 펼쳐집니다.

우당탕탕 김밥 지옥SSAFY 2026.08 ~ 09, 6명, 백엔드 / 최대 4인 웹 3D 협동 요리 게임 20Hz실시간 동기화
  • NestJS
  • Socket.IO
  • SSE
  • Redis
  • MySQL, TypeORM
  • Vitest, Testcontainers
  • Docker
맡은 일
담당로비와 대기실(세션 인증, 커서 페이지네이션, SSE 목록), 인게임 통신 계층(20Hz 틱, 입력 검증, 스냅샷 중계), 상호작용 API, 시연용 모드
설계 판단
로비는 단방향이라 SSE로 분리하고 15초 하트비트와 nginx 버퍼링 해제로 즉시 전달. 좌표는 서버가 최대 이동 거리로 검증하고 높이는 서버가 결정
검증
기능마다 단위와 e2e 테스트를 함께 작성하고, 마이그레이션은 실제 MySQL 8.4 컨테이너에서 확인. 서버 코드 약 9,000줄(테스트 포함)
COIP, 암호화폐 모의투자와 자동매매SSAFY 2026, 2명, 백엔드와 배포 / Django, GKE 60% 절감staging 비용
  • Django 5.2
  • DRF
  • Channels (ASGI)
  • PostgreSQL 16
  • PgBouncer
  • Redis
  • GKE
  • Jenkins, Kaniko, Trivy
구조
SSR 기본에 시세와 주문 초기 로드만 DRF, 실시간 시세와 채팅은 Channels. Upbit REST와 WebSocket은 프록시 계층으로 외부 변경 격리
운영
ingress-nginx, HPA, PDB로 무중단 롤링 배포. Jenkins, pytest, Trivy, Kaniko, GHCR, kubectl 파이프라인에 보안 점검 포함
비용
staging은 Spot VM과 CronJob으로 쓰지 않는 시간에 자동 중지해 약 60% 절감
커미조아 품질 전산화 시스템 2025.05 ~ 07, 백엔드 / Spring Boot, QueryDSL 하루 → 즉시통계 산출
  • Spring Boot
  • JPA, QueryDSL
  • MariaDB
  • Spring Security, Cache, Validation
  • Docker
문제
종이, 수기, 스캔, 엑셀의 4단계 입력과 흩어진 관리대장 10종
해결
관리대장 10종을 한 도메인 모델로 통합, QueryDSL 동적 쿼리, Spring Cache와 집계 테이블 분리, 시리얼 변경 이력 기반 추적
결과
통계 하루 이상에서 즉시, 입력 4단계에서 1단계, 시리얼 추적률 0%에서 100%
수자원공사 REC 통합관리 시스템 2024.06 ~ 11, 백엔드 / Java, MyBatis, Oracle, SAP 연동 1 click계약, 전표, 결재
  • Java
  • MyBatis
  • Hasim Framework
  • Oracle
  • WebSquare
  • SAP 연동
  • RPA
문제
REC 발급량 급증 속에 매매계약 검증 뒤 회계전표를 수동 입력해 처리 지연과 입력 실수가 잦음
해결
계약 대조, 전표 생성, 내부 결재를 한 번의 동작으로 묶고 SAP 양방향 연동, 에너지공단과 전력거래소 데이터 RPA 자동 수급
참고
보안상 시스템 구조도는 공개하지 않습니다
KISTI 과학기술 AI 데이터 공유, 활용 서비스 2022.06 ~ 2023.11, 백엔드 / Spring Boot, iRODS, 9개 모듈 MSA MAU 10배4K → 40K, 2년
  • Spring Boot 2.5
  • JPA
  • PostgreSQL 14
  • Redis 6
  • iRODS
  • Solr
  • Docker (MSA)
  • Prometheus, Grafana
규모
iRODS 3대 클러스터에 6,000GB, 200만 건 이상. 외부 기관 OpenAPI 활용 8,000건 이상
맡은 일
담당SAML2 SSO 통합 모듈(kafe)을 비롯한 일부 모듈 개발과 운영
구조
관리자, 사용자, OpenAPI, 경진대회 등 9개 Tomcat 모듈 MSA, Solr 검색과 DOI, Prometheus와 Grafana 모니터링
04 — Trouble-shooting

문제 해결

원인을 어떻게 확인했는지까지 적었습니다.

COIP

Pod을 늘릴수록 DB 커넥션이 먼저 바닥남

원인
HPA로 늘어난 Pod마다 따로 잡은 풀이 합쳐져 max_connections에 도달
해결
PgBouncer transaction mode(pool_size=25)로 풀을 한 계층에 집약
결과
커넥션 점유 5xx 사실상 제거, DB 증설 없이 Pod 확장

검증 스파이크 구간 로그를 분석해 5xx의 가장 잦은 원인이 풀 고갈임을 먼저 확인

SSAFY 김밥 지옥

새로고침하면 빈 방으로 들어옴

원인
새 연결이 먼저 붙고 옛 연결의 끊김이 늦게 도착해, 돌아온 사람을 끊김으로 덮어씀
해결
같은 사람의 소켓이 살아 있으면 끊김을 무시하고, 게임이 없으면 사유와 함께 로비로 안내
결과
새로고침 뒤 원래 자리로 복귀, 재현 시나리오를 e2e로 고정

검증 "유예가 짧다"는 첫 가설로 30초로 늘렸다가, 브라우저 재현에서 1초 새로고침도 10초 안에 복귀하는 것을 보고 되돌림

커미조아

월간 통계에 하루 이상 걸림

원인
통계를 매번 원장 풀스캔으로 집계
해결
Spring Cache 적용과 집계 테이블 분리
결과
통계 산출 즉시, 관리대장 10종을 한 화면에서 운영

검증 입고부터 통계까지 전 흐름을 단위와 통합 테스트 파이프라인으로 보장

KISTI

9개 모듈에 흩어진 다기관 인증

원인
모듈마다 로그인과 권한 정보가 따로 있어 사용자 경험과 감사 모두 불편
해결
SAML2 SSO 모듈(kafe)을 직접 개발하고 Redis 세션으로 9개 모듈이 세션을 공유
결과
한 번 로그인으로 9개 모듈을 같은 권한으로 이용
05 — Knowledge base

지식 저장소

이론을 예제로 직접 확인하며 정리한 GitHub 레포입니다.

그 밖에 Clean Coders TDD 연습(bowling-game, primefactors, videostore 리팩터링)과 SSAFY 기간 CS 이론 TIL 26일치가 있습니다.

06 — AI workflow

AI 활용

AI가 한 일보다, 확인하는 구조를 설계했습니다.

  1. /be-onboard현황 파악구조, 규칙, 내 이슈를 읽고 브리핑. 확인 안 된 규칙은 "정해지지 않음"
  2. /be-issue이슈 선택스프린트 이슈를 보여 주고 대기. 임의로 고르지 않음사람이 선택
  3. /be-plan계획파일 단위 변경, 테스트 계획, 모르는 것, 범위 밖을 적고 멈춤명시적 승인
  4. /be-dev구현코드와 테스트를 함께. 실제 실행 출력을 보여 줌
  5. /be-mr검수와 MR변경 요약, 테스트 결과, 비밀값 검사 후 대기push 전 승인
도구 선택: ECC (Everything Claude Code)

AI에게 코드를 맡길수록 "실제 팀에서 하듯이" 테스트와 리뷰를 거치게 하는 게 중요하다고 봤습니다. ECC는 테스트 우선 개발, 언어별 코드 리뷰, 검증 루프가 스킬과 에이전트로 갖춰져 있어, AI 작업을 현업 개발 절차에 맞추기 위해 채택했습니다.

  • 테스트 먼저TDD 워크플로로 실패하는 테스트를 먼저 쓰고, 통과시킨 뒤 커버리지를 확인하는 순서를 AI에게 지키게 함
  • 커밋 전 리뷰TypeScript, Python 등 언어별 리뷰 에이전트로 변경분을 한 번 더 검토한 뒤 커밋
  • 근거부터 요구AI가 파일을 만들거나 고치기 전에 호출처와 지시 내용을 먼저 밝히게 하는 훅을 켜 둠
  • 비용 관리세션별 사용 비용을 기록해 무거운 작업과 가벼운 작업을 구분