서브원, Server Developer

끊임없이 도전하는 8년차 소프트웨어 엔지니어, 지원자 정승환

안녕하십니까, 이번 서브원 서버 개발자 포지션에 지원하게된 8년차 소프트웨어 엔지니어 정승환입니다.
지금부터 그동안 제가 문제를 해결했던 경험을 중심으로 포트폴리오 발표를 시작하도록 하겠습니다.
02

핵심 역량

🔧

변경에 강한 구조 설계

헥사고날 아키텍처 적용

외부 의존성 변경 시 비즈니스 로직 수정 없이 어댑터만 교체하는 구조 설계

성능 최적화

응답 시간 3~10초 → 1초 이내

외부 블록체인 호출 비동기 분리, 지수 백오프 재시도로 안정성 확보

🤖

AI/LLM 서비스 설계

답변 정확도 42% → 91%

RAG 파이프라인·쿼리 라우팅·Rerank, Spring AI 기반 단독 설계/운영

📊

시스템 모니터링 & 운영

응답 시간 15초 → 3초

ELK 스택 구축, LLM 성능 지표 체계화, 시멘틱 캐싱 직접 제안·적용

👥

팀 리딩 & 문화 구축

테스트 커버리지 0% → 70%+

파트장으로 TDD·코드 리뷰·아키텍처 기준 단계적 도입, 퇴사 후에도 유지

🚀

AI Vibe Coding

개발 사이클 2~3일 → 1일

Claude Code 기반 SDD, 설계→구현→테스트 자동화, 일 다회 배포

먼저 저의 핵심 역량을 간략히 말씀드리겠습니다.

저는 그동안 외부 의존성이 복잡한 시스템에서 변경에 강한 아키텍처를 반복적으로 설계해왔습니다. 블록체인 외부 API처럼 수시로 바뀌는 환경에서 헥사고날 아키텍처를 적용하여 비즈니스 로직을 보호하는 구조를 만든 경험이 대표적입니다.

그리고 외부 시스템 의존성을 분리하는 비동기 처리와 성능 최적화 경험이 있습니다. 응답 시간을 80%까지 단축한 사례를 이후 슬라이드에서 자세히 말씀드리겠습니다.

또한 파트장으로서 TDD 도입, 코드 리뷰 문화 정착 등 팀 전체의 개발 문화를 직접 만들어온 경험이 있고, 현재는 Claude Code를 활용한 AI Vibe Coding으로 설계부터 배포까지의 사이클을 기존 대비 절반 이하로 단축하고 있으며 이를 팀에도 전파하고 있습니다.

이제 구체적인 프로젝트 경험을 말씀드리겠습니다.
03

블록체인 기부 시스템

백엔드 리드 · 3명

기술적 목표

현금 기부 + 코인 기부(BTC, ETH) 추가 + 향후 신규 체인 추가 → 변경에 강한 구조 필요

레이어드 아키텍처

외부 블록체인 API 변경 시 서비스 레이어까지 영향 전파

헥사고날 아키텍처

포트/어댑터로 외부 의존성 격리. 비즈니스 로직은 동일하게 유지

REST API [Core: 기부 접수 → 처리 → 완료] BTC Adapter
            Inbound Port  |  Outbound Port     → ETH Adapter
                                                  → COSMOS Adapter NEW
✓ 코스모스 체인 추가 시 기존 코드 수정 0 — 어댑터만 추가
첫 번째 프로젝트는 블록체인 기부 시스템입니다. 백엔드 리드로서 3명의 팀을 이끌었습니다.

기술적 목표부터 말씀드리면, 기존에 현금 기부만 지원하던 시스템에 비트코인, 이더리움 같은 코인 기부가 추가됐고, 향후에도 새로운 체인이 계속 추가될 예정이었습니다. 문제는 체인마다 API 스펙과 데이터 형식이 전혀 달랐다는 점입니다.

처음에는 레이어드 아키텍처를 검토했습니다. 하지만 팀 내 회의를 거치면서 외부 블록체인 API가 바뀔 때 서비스 레이어까지 영향이 전파될 수밖에 없다는 문제를 발견했습니다.

비즈니스 로직을 보면 결국 "기부를 접수하고 처리한다"는 것은 동일하고, 호출하는 체인만 다른 상황이었습니다. 그래서 포트와 어댑터로 외부 의존성을 격리하는 헥사고날 아키텍처를 채택했습니다.

실제로 이후 코스모스 체인이 추가됐을 때, 기존 비트코인과 이더리움 관련 코드는 한 줄도 수정하지 않고 코스모스 어댑터만 새로 구현해서 연동할 수 있었습니다.
04

기부 시스템 — 성과

백엔드 리드 · 3명
🔄

디지털 전환

1시간 → 수분

수기 중심 기부 프로세스를 디지털 전환하여 처리 시간 대폭 단축

🧪

TDD 도입 주도

커버리지 70%+

테스트 코드 0%에서 시작. 세미나 준비 + 커버리지 기준 수립

🔒

보안 설계

Pre-Signed URL

기부자 개인정보 암호화 처리. 서명 이미지 접근 보안성 확보

역할 및 역량 발현

역할

백엔드 리드 (3명 중 설계/구현/코드리뷰 주도)

필요 역량

아키텍처 설계 판단력, 팀 기술 의사결정 리딩, TDD/코드리뷰 문화 정착

Tech Stack

GoFibergRPCPostgreSQLDockerAWS EC2S3CloudFrontSESGitLab CI/CD
같은 프로젝트에서의 주요 성과를 정리했습니다.

첫째, 기존에 수기로 처리하던 기부 프로세스를 디지털 전환하여 건당 처리 시간을 약 1시간에서 수분 이내로 단축했습니다.

둘째, 제가 합류했을 때 백엔드 파트에 테스트 코드가 하나도 없는 상태였습니다. 이걸 해결하기 위해 TDD를 직접 도입했습니다. 세미나를 준비해서 팀에 공유하고, 테스트 커버리지 70% 이상이라는 구체적인 목표를 세웠습니다.

셋째, 기부자 개인정보 암호화 처리와 서명 이미지 접근에 Pre-Signed URL을 적용해서 보안성을 확보했습니다.

하단에 정리한 것처럼, 이 프로젝트에서 저의 역할은 백엔드 리드로서 아키텍처 설계 판단, 팀 기술 의사결정 리딩, 그리고 TDD와 코드 리뷰 문화를 정착시키는 것이었습니다.
05

설문 서비스 성능 개선

백엔드 리드

기술적 목표

설문 응답 시 NFT 발행이 동기 처리 → 응답 시간 3~10초. 1초 이내로 단축 필요

블록체인 호출 자체 최적화

네트워크 자체의 레이턴시는 통제 불가. 속도 들쑥날쑥 → 근본적 해결 불가

응답과 NFT 발행을 비동기 분리

DB 적재 후 즉시 반환 + 워커 서버에서 비동기 처리. 기존 인프라 활용

BEFORE — 동기 처리

설문 응답 NFT 발행 대기 (3~10초) 응답 반환

AFTER — 비동기 처리

설문 응답 DB 적재 즉시 응답 (< 1초)
           ↓ 비동기
   워커 서버 → NFT 발행 | 실패 시 Backoff 재시도
✓ 응답 시간 80% 단축
두 번째 프로젝트는 블록체인 설문 서비스의 성능 개선입니다. 마찬가지로 백엔드 리드를 맡았습니다.

기술적 목표를 먼저 말씀드리면, 사용자가 설문에 응답하면 블록체인에 NFT를 발행하는 구조였는데, 이게 동기적으로 처리되다 보니 응답 시간이 3초에서 길게는 10초까지 걸렸습니다.

해결 방향을 두 가지 검토했습니다. 하나는 블록체인 호출 자체를 최적화하는 것이었는데, 네트워크 자체의 레이턴시는 제가 통제할 수 없는 영역이었습니다. 그래서 응답 처리와 NFT 발행을 완전히 분리하는 비동기 구조로 전환하기로 판단했습니다.

Before/After 흐름을 보시면, 변경 후에는 응답을 DB에 적재한 뒤 즉시 반환하고, NFT 발행은 기존에 운영 중이던 워커 서버에서 비동기로 처리하도록 구성했습니다. 별도 메시지 큐를 도입하는 방법도 있었지만, 이미 워커 서버가 있는 상황에서 기존 구조를 활용하는 것이 합리적이라고 판단했습니다. 워커에서 블록체인 호출이 실패하는 경우에는 Exponential Backoff 기반 재시도 구조를 적용했고, 결과적으로 응답 시간을 80% 단축했습니다.
06

커머스 도메인과의 구조적 유사성

구분 커머스 플로우 설문 서비스 플로우
서비스 조회 상품 조회 설문 조회
사용자 액션 주문 (구매) 설문 응답 제출
즉시 응답 필요 결제 처리 → 즉시 확인 응답 저장 → 즉시 반환
비동기 처리 배송 → 외부 물류 연동 NFT 발행 → 외부 블록체인 연동
장애 대응 물류 시스템 장애 시 재시도 블록체인 장애 시 재시도

사용자에게 즉시 응답해야 하는 영역외부 시스템에 의존하는 영역을 분리하는 판단 — 도메인이 달라도 설계 패턴은 동일

이 경험이 커머스 도메인에서도 그대로 적용될 수 있다고 생각한 이유를 정리했습니다.

표를 보시면, 커머스에서 주문 후 배송이 외부 물류 시스템에 의존하는 것과, 설문 응답 후 NFT 발행이 외부 블록체인에 의존하는 것은 구조적으로 동일합니다. 사용자에게 즉시 응답해야 하는 영역과 외부 시스템에 의존하는 영역을 분리하는 판단, 그리고 외부 시스템 장애 시 재시도 전략까지 — 도메인은 다르지만 설계 패턴은 같습니다.
07

시스템 모니터링 구축

문제

'응답이 느리다'는 피드백은 있지만, 체감이 아닌 데이터로 병목을 파악할 수 있는 환경이 없었음

구조화 로깅

LogstashMarker
숫자 타입 유지

Filebeat

JSON 로그
수집/전송

Logstash

파싱/변환

Elasticsearch

인덱싱/저장

Kibana

대시보드
시각화

TTFT

첫 번째 토큰까지의 시간

TPOT

토큰당 생성 시간

TPS

초당 토큰 처리량

에러율

에러 발생 비율 추적

핵심 KPI 시계열 트렌드 분포 분석 (P95) 에러 타임라인
다음은 시스템 모니터링 구축 경험입니다.

AI 챗봇을 운영하면서 "응답이 느리다"는 피드백이 있었는데, 문제는 체감으로만 느리다는 거였지 데이터로 어디가 병목인지 파악할 수 있는 환경이 없었습니다.

그래서 ELK 스택을 직접 구축했습니다. 먼저 뭘 측정할지를 정의하는 게 중요했는데요, 첫 번째 토큰이 나오기까지의 시간인 TTFT, 토큰당 생성 시간인 TPOT, 초당 처리량 TPS, 그리고 에러율을 핵심 지표로 잡았습니다.

Spring AI 기반 서비스에서 구조화 로깅을 구현하고, Filebeat에서 Logstash를 거쳐 Elasticsearch에 적재하고 Kibana로 시각화하는 파이프라인을 구성했습니다.

이 대시보드 덕분에 실제로 시멘틱 캐싱 도입 전후의 성능 차이를 데이터로 비교 검증할 수 있었고, 측정하고 분석하고 개선하고 다시 검증하는 사이클의 기반이 됐습니다.
08

개발 문화 구축

01

TDD 도입

세미나 준비 및 공유. 테스트 커버리지 70% 기준 수립. 백엔드 오류 감소 → 협업 속도 개선

02

코드 리뷰 문화

스프린트 단위 코드 리뷰 시작. 테스트 코드 의도 공유. 팀 코드 품질 표준화

03

아키텍처 표준화

헥사고날 아키텍처 문서화. 예시 프로젝트 제작/공유. 장단점 논의 후 팀 합의로 도입

핵심: 강제가 아닌 공감 → 떠난 뒤에도 문화가 유지

파트장으로서 가장 신경 썼던 건 개별 기술 도입이 아니라 팀 전체의 개발 문화를 만드는 것이었습니다.

제가 합류했을 때 백엔드 파트에는 테스트 코드도, 코드 리뷰도, 아키텍처 기준도 없는 상태였습니다.

그래서 세 가지를 순서대로 도입했습니다. 첫째, TDD를 세미나를 통해 공유하고 커버리지 70% 기준을 세웠습니다. 둘째, 스프린트 단위 코드 리뷰를 시작해서 서로의 코드를 보고 의도를 공유하는 시간을 만들었습니다. 셋째, 헥사고날 아키텍처를 도입할 때는 문서화와 예시 프로젝트를 먼저 만들어서 팀 전체가 납득한 뒤 적용했습니다.

여기서 중요했던 건 한꺼번에 바꾸지 않고, 팀이 소화할 수 있는 속도로 하나씩 도입한 것이었습니다. 강제로 시키는 게 아니라 왜 필요한지를 먼저 보여주고 공감을 얻은 뒤 적용했고, 제가 떠난 뒤에도 이 문화가 유지되고 있다고 들었습니다.
09

기술 스택 & AI Vibe Coding

기술 스택

  • BackendJava, Kotlin, Go, Python
  • FrameworkSpring Boot, Spring AI, WebFlux, FastAPI
  • DatabasePostgreSQL, MySQL, Redis, MongoDB, PgVector
  • InfraAWS (EC2, S3, SES, SQS), Docker, Nginx
  • CI/CDJenkins, GitLab CI/CD, GitHub Actions
  • MonitorELK Stack, Kibana, Grafana, Prometheus

AI Vibe Coding 활용

  • Claude Code + SDD

    스펙 정의 후 AI와 함께 구현

  • 코드 자동화

    커밋, MR, 코드 리뷰 스킬 등록

  • 업무 자동화

    Jira + Notion 연동 일일 관리

  • 배포 주기 혁신

    2~3일 → 하루, 일일 다중 배포

팀에 공유하고 전파하는 문화
좌측에는 그동안 사용해온 기술 스택을 정리했습니다. Java와 Spring Boot를 메인으로, Go, Python도 프로젝트에 따라 활용해왔고, PostgreSQL, Redis, MongoDB 등 다양한 데이터베이스 경험이 있습니다. 인프라는 AWS 환경에서 Docker 기반으로 운영해왔고, CI/CD는 Jenkins, GitLab CI/CD, GitHub Actions를 사용해왔습니다.

우측은 AI Vibe Coding 활용 현황입니다. 현재 Claude Code를 활용해 SDD 방식으로 개발하고 있고, 코드 작성뿐 아니라 커밋 메시지, MR 작성, 코드 리뷰까지 스킬로 등록해서 활용하고 있습니다. 지라와 노션 연동으로 업무 관리도 자동화했고, 가장 큰 변화는 기존 2~3일 걸리던 기능 개발을 하루 만에 끝낼 수 있게 된 것입니다. 이 방식을 팀에도 공유하고 전파하고 있습니다.
10

서브원에서의 포부

단기

핵심 플로우 안정화

주문/결제/배송 비즈니스 플로우 파악. 안정성과 성능 개선에 집중

중기

아키텍처 & 문화 구축

팀 확장을 고려한 아키텍처 정비. TDD, 코드 리뷰 문화 구축

장기

기술 리드로 성장

AI/자동화 활용 생산성 혁신. 도메인 전문성 + end-to-end 오너십

마지막으로 서브원에서의 포부입니다.

단기적으로는 주문, 결제, 배송 같은 핵심 비즈니스 플로우를 빠르게 파악하고, 안정성과 성능 개선에 집중하겠습니다. 그동안 외부 시스템 연동이 많은 환경에서 비동기 처리와 장애 대응 구조를 만들어온 경험이 있기 때문에 이 부분에서 빠르게 기여할 수 있다고 생각합니다.

중기적으로는 팀이 커져도 유지될 수 있는 아키텍처를 정비하고, TDD와 코드 리뷰 같은 개발 문화를 구축하겠습니다.

장기적으로는 커머스 도메인을 깊이 이해하면서 기술적 방향을 이끌 수 있는 기술 리드로 성장하는 것이 목표입니다.

감사합니다

커머스 도메인의 복잡한 비즈니스 플로우를 안정적으로 지탱하면서도 빠르게 확장할 수 있는 백엔드 구조를 만드는 데 기여하겠습니다.

정승환 · 8년차 백엔드 엔지니어

이상입니다. 감사합니다.
1 / 11