Career Description
안녕하세요. 이승하입니다.
백엔드 엔지니어로 일하고 문제를 해결하는 시간을 가장 좋아합니다.
개발·엔지니어링 7년차 — Java 백엔드(2년) → AI·GPU 인프라 R&D(약 2년) → Go 백엔드(3년). 현재 직장에서는 결제·알림·트랜잭션 이력·데이터 파이프라인을 다루며 분산 환경에서의 데이터 정합성(선점·멱등·복구 설계)을 주로 설계했고, 담당 서비스의 CI/CD·Kubernetes 매니페스트·게이트웨이·DB DDL 운영까지 해 왔습니다. 실패 경로를 먼저 설계하고, 리뷰에서 나온 원칙을 팀 문서로 남기는 편입니다. 백엔드와 DevOps 양쪽 포지션에 지원합니다.
Skills
2: 운영 경험 있음
3: Production 설계·운영 가능
- 3Go
- 3Java (Spring)
- 3SQL
- 2Python
- 2Shell
- 3gRPC
- 3HTTP / REST
- 3SSE
- 3Kafka
- 2Envoy
- 2Debezium (CDC)
- 2Watermill
- 3PostgreSQL
- 3Redis
- 2MongoDB
- 2DocumentDB
- 2Snowflake
- 3Docker
- 3Kubernetes (EKS)
- 3Helm
- 3GitLab CI
- 2ArgoCD
- 2Rundeck
- 2Ansible
- 3Datadog
- 2Jaeger
- 2OpenSearch
- 2Prometheus·Grafana
- 2Vertex AI (LLM)
- 1Omniverse·IsaacSim
Work Experience
NEXON UNIVERSE — Maplestory Universe
넥슨유니버스(2022년 설립, 넥슨 계열사)는 메이플스토리 IP에 블록체인을 접목한 메이플스토리 유니버스(MSU) 를 만듭니다. 저는 플랫폼개발팀에서 이 Web3 플랫폼의 백엔드를 개발했습니다. 온체인 트랜잭션 동기화에서 시작해 트랜잭션 이력·북마크·거래소 BFF·계정/결제·통합 알림·정책 서비스·데이터 파이프라인·운영 AI까지 담당했습니다.
2023.11 ~ 2026.11
개발·운영
신설 · 초기 참여
dev · test · qa · stage · live
Go gRPC Kafka PostgreSQL Redis MongoDB Snowflake AWS EKS Helm Vertex AI
분산 환경에서 데이터 정합성을 지키는 설계가 주 역할입니다 — 선점 · 멱등 · CDC.
Portfolio — 문제·접근·결과 Design Decisions — 선택의 이유
What did I do
1 온체인-오프체인 동기화 (DE)
주 작업 2023.11 ~ 2024.04 · 자세히 보기 →
GoSagaRedis 분산 락Helm
- 게임 서버가 호출하는 gRPC 서비스(business-provider)에 새 코어 서비스를 연동하면서 입력 유효성 검사 · 요청/응답 변환 · gRPC 에러 처리 추가
- Saga v2 전환에 맞춰 재화(neso/currency)·캐릭터 유효성 검사기 추가, NFT 아이템 검사는 단건 반복 조회 → 목록 조회로 보완
- 캐릭터 민트 닉네임 중복 생성 이슈 수정 — 존재 확인 대신 Redis 락으로 선점, 민트 성공 시에만 해제
- Helm 배포 운영 — 신규 서비스 배포, 장애 재현용 임시 배포/롤백, test/qa 승격 전 dev 선행 배포
2 트랜잭션 이력 · 북마크 · 거래소 BFF
주 작업 2024.06 ~ 2025.09 · 이후 유지보수 · 자세히 보기 →
gRPCKafkaPostgreSQL advisory lockRedis NXCDCSnowflake
- 대용량 트랜잭션 이력 서비스(api-activity) — 레이어 재정비·컨슈머 일반화·메시지 포맷 v2 후 거래/민팅/전송/Swap&Warp/USDT 를 차례로 확장. 트랜잭션 해시 유니크 승격, Redis NX + PostgreSQL advisory lock 으로 동시 적재 정합성, 비정상 이벤트는 DLQ
- 쿼리 튜닝·성능 개선 — DBA 와 협업한 OR → UNION ALL 전환, 커서 기반 무한 스크롤, 조건부 캐싱(공통 라이브러리의 캐시 데코레이터에 옵션 추가)
- 거래 결과 확정 시 알림 이벤트 발행, Snowflake 적재를 Kafka 발행 → CDC 로 전환해 발행 실패 시 유실되던 경로 제거
- 북마크/조회수 서비스(api-bookmark) 개발 — 멱등 처리, Redis 카운트 캐시 → Kafka 이벤트 집계, 하루/총량 제한, 회원 탈퇴 연동
- 거래소 웹 BFF(bff-marketplace) — 북마크·액티비티 호출을 신규 서비스로 이전, 인벤토리 서비스의 북마크·판매중 목록 조회 구현. 간헐적 pod 재시작을 로그 추적으로 비동기 루프 내 gRPC 호출 자원 점유로 좁혀 timeout·chunk 호출로 해결
- 크로스체인 전송 이력·조회 도메인 Swap & Warp 추가(bff-swapnwarp 포함)
- Java/Spring Kafka 컨슈머에 북마크 이벤트 적재 추가, 런칭 전 거래소 BFF·게임데이터 버그 픽스
3 계정 · 결제 · 통합 알림
주 작업 2025.07 ~ 2026.08 · 자세히 보기 →
WorldpayRedis LuaSSEgRPC streamingMongoDB
- 월드페이(FraudSight 3DS) 신용카드 인증 · 재인증 — 벤더 응답 분기(400대는 outcome, 500대는 에러), Redis Lua 로 일일 3회 카운트 증가+만료 원자 처리, 카드 정보 일부 암호화, 결제수단 조합별 이상 시도 차단, OTP 초기화 시 카드로 본인 확인하는 재인증
- 스테이블 코인(USDT) 도입 — 오프체인 선차감·롤백 서비스를 USDT 에 맞춰 확장(토큰 단위 한도 테이블 재설계, 선차감·행 잠금 로직을 토큰별로 일반화), 별도 롤백 토픽 대신 트랜잭션 결과 토픽을 구독해 실패 시만 되돌리도록 단순화, 블록체인 서포터·BFF 지갑주소 유효성 검사 추가
- MSU 통합 알림(SSE) — JWT 검증 자체 흡수로 의존 제거, 백엔드 URL 생성, 대량 수신자를 gRPC streaming RPC(500건 청크·5만 건 상한)로 분리
- KYC 업체 변경(Argos → Sumsub)에 따른 전 사용자 데이터 이관 배치 — 구간 분할 병렬 실행·재진입 가능한 커서·호출 한도 관리, live 이관 완료
- 디스코드 자동 뱃지·역할 동기화 배치 개발, 공지 크롤링 봇에 게시판 추가·실패 지점 재개 확장
- 이메일 변경 후 24시간 보안 옵션 변경 불가 — Redis TTL → DB 컬럼 영속화, 복제 지연으로 잠금이 늦게 보이는 구간은 Primary 조회로 제거
4 정책 서비스 · 데이터 파이프라인 · 운영 자동화
주 작업 2026.01 ~ 2026.11 · 자세히 보기 →
DebeziumSnowflake Stream/TaskVertex AIOpenSearch
- 비즈니스 정책 서비스(api-sentinel) 신설 — 여러 서비스에 흩어져 있던 제어 로직을 단일 서비스로 통합
- ACL (지갑/IP 화이트·블랙리스트), Rate Limit (Sliding/Fixed Window + jitter), Lockout (OTP 반복 실패 시 차단, 실패 횟수 유지/초기화 정책을 설정으로), Feature Flag (런타임 변경)
- PostgreSQL CDC → Snowflake 파이프라인 — Debezium 커넥터, Stream/Task, replication slot keepalive 배치, 조건부 task 로 비용 최적화
- 에러시로봇(운영 AI) — 운영 중 Slack 에러 알림을 LLM 으로 1차 분석해 스레드에 답하는 봇 (GitLab 커밋 대조·OpenSearch 히스토리·escalation). 벤더 모델 폐기 장애를 모델 교체·재시도/백오프·세마포어로 3일 내 대응
5 인프라 · CI/CD · 게이트웨이
전 기간 · 자세히 보기 →
GitLab CIDockerHelm · EKSRundeckEnvoy
- CI/CD · 인프라 운영 — 담당 서비스의 GitLab CI · Dockerfile · Helm/K8s 매니페스트 · DDL 을 운영하고, 신설 서비스는 배포 설정까지 함께 추가
- Envoy 게이트웨이 — 서비스가 늘어날 때마다 gRPC → REST route 와 인증 설정을 추가·정리하고, 팀 단위 gRPC → HTTP 전환에 맞춰 담당 서비스(통합 알림·블록체인 서포터)의 라우팅·포트 설정 이전
- 외부 노출 API(스왑워프·통합알림·BFF) 영향성 전수 조사와 인증 추가(팀 3인)
- 전사 proto 저장소 도메인별 모듈화 주도
6 백오피스 · 운영 도구 · 기타
2025.03 ~ 2026.10 · 자세히 보기 →
- 백오피스 아이템/토큰 제재(단건·일괄·대량) 기능과 제재 이력 조회 화면
- 운영 콘솔 — 디스코드 메시지 재전송, SNS 권한 도메인 분리, 지갑↔SNS ID 조회
- 확률 정보 고지 서비스의 데이터 저장·버전 관리 구현
Tech Stack
Language · Go · Java (Spring)
Communication · gRPC (unary / streaming, buf) · HTTP · Envoy · SSE
Data · PostgreSQL · MongoDB · AWS DocumentDB · Redis · Snowflake
Messaging · Kafka (Watermill · Debezium Connect · Spring Kafka)
Infra / DevOps · AWS EKS · Kubernetes · Docker · Helm · ArgoCD · Rundeck · Jenkins · GitLab CI · Envoy
Observability · Datadog · Jaeger · OpenSearch
AI · Vertex AI (LLM)
UCLICK — AI Engineering R&D
Python ROS NVIDIA Omniverse UnrealEngine4 Ansible Prometheus Grafana Shell Script Linux
1 NVIDIA Omniverse R&D
2022.06 ~ 2023.10
PythonROSIsaacSimUnrealEngine4 (VR)
Description
NVIDIA의 메타버스 제작 및 시뮬레이션 플랫폼인 Omniverse를 조사하고 Omniverse 애플리케이션에서 개발 및 프로젝트, PoC를 수행합니다.
NVIDIA의 Metaverse(Industrial Digital Twin) Solution인 Omniverse 플랫폼에서 Python을 이용해서 협동 로봇 프로젝트를 수행합니다.
What did I do
- NVIDIA Omniverse IsaacSim 에서 로봇 조립 및 시뮬레이션 — ROS 메시지 통신(Python) 이용
- NVIDIA Omniverse CreateXR 에서 VR 장비 연동 및 탐색 — UnrealEngine4 기반 VR 싱글 플레이 예제(C++) 개발
2 GC-GPU 솔루션 장애에 대한 원인 진단 및 해결
2022.04 ~ 2022.05
PHPShell ScriptLinux
Description
GPU를 이용한 학습 및 추론 솔루션(GPU를 여러 개로 분할해서 교육기관 내 다수의 학생이 각자의 계정과 이미지로 AI 학습 및 추론을 할 수 있도록 하는 플랫폼으로, 계정 관리 및 GPU 자원을 모니터링하는 관리자 화면이 포함된 솔루션)에 대해 솔루션 소스를 보유하여 장애 발생 시 원인을 진단하고 해결합니다.
What did I do
- 커널 패닉 발생 관련 로그 분석
- 환경과 솔루션 소스 단에서 분석해 장애 해결
3 NVIDIA GPU MIG 기능 지원
2022.03 ~ 2022.04
NVIDIA GPU MIGShell ScriptKubernetes
Description
NVIDIA GPU를 분할해서 사용 가능한 MIG 기능을 지원합니다.
What did I do
- 국내 금융 고객사의 개발·운영 서버에 NVIDIA GPU MIG 기능 현장 지원
- 시스템 재부팅 후 MIG 프로필을 생성하는 Shell Script 제작·제공
4 NVIDIA deepops 기반 GPU 모니터링 솔루션 재구성
2022.01 ~ 2022.02 · 프로젝트 전체 담당
AnsiblePrometheusGrafanaShell Script
Description
NVIDIA GPU를 사용하는 Kubernetes 및 Slurm 클러스터 용도 인프라 자동화 도구인 NVIDIA deepops(오픈소스)를 이용해서 GPU 모니터링 환경을 자동으로 구축하고, 폐쇄망 환경에서도 구축 가능하도록 패키지를 재구성합니다.
What did I do
- NVIDIA deepops 기반 GPU 모니터링 환경(Prometheus, Grafana)을 Ansible 로 설치하고 가이드로 정리
- 폐쇄망 환경에서도 구성 가능하도록 Ansible 파일 분석 → Shell Script 작성 + 이미지 패키징으로 재구성
UCLICK — Backend Developer
Java Spring Boot Spring JPA MyBatis Oracle PostgreSQL MySQL / MariaDB Kafka Elasticsearch Redis Hazelcast OCI
1 UNO-GATEWAY
2020.09 ~ 2021.12
JavaSpring BootMulti-DBRibbon · EurekaKafkaElasticsearch
Description
동적 API를 생성·수정·서비스할 수 있는 OPEN API 플랫폼입니다. 메시지 검증 및 변환, 인가/인증, 유량 제어, 라우팅 등의 기능을 제공합니다.
What did I do
- 웹 소켓 기능 및 성능 현황 구현
- 다중 Database 연계 — Oracle · MySQL/MariaDB · MSSQL · Tibero · PostgreSQL · Db2 · H2
- 외부 시스템 연계 — Elasticsearch · Hazelcast · Redis
- 로드밸런싱 테스트 — Ribbon with/without Eureka
- 통합 테스트 및 패키지 배포
2 UNO-GATEWAY 국내 증권 고객사 MDB 프로젝트
2021.09 ~ 2021.10 · 프로젝트 전체 담당
JavaSpring BootTCP전문 변환
Description
개발자가 UNO-GATEWAY에 API 요청 시 요청을 전문 데이터로 변환해 고객사 서버에 TCP 요청하고, TCP 응답으로 받은 전문 데이터를 다시 JSON 템플릿으로 변환해서 API 호출에 응답하는 프로젝트입니다.
What did I do
- 샘플 데이터 분석 및 요구사항 명료화
- 사용자 JSON과 MDB 서버 전문 상호 변환 로직 담당
- 추가 요구사항 수용 — 관리 포인트를 EXCEL에서 QRY 파일 형식으로 변경
3 UNO-MSP
2020.02 ~ 2021.12 (1~4차 고도화) · 프로젝트 메인 개발
JavaSpring BootSpring JPAMyBatisPostgreSQLHazelcastOracle Cloud (OCI)
Description
Oracle Cloud Infrastructure를 이용하는 고객사·관리자를 대상으로 클라우드 자원·정보·자원 간 관계를 보여주는 대시보드와, 관리자가 직접 자원을 생성/수정/관리하는 페이지를 보유한 MSP(Managed Service Provider) 플랫폼입니다.
What did I do
- 4차 고도화 (2021.11 ~ 2021.12) — Agent·UI 서버 이중화, 리소스 이력 수집, ZENDESK 연동 및 티켓 현황, JDBC 기반 DB 성능 모니터링
- 3차 고도화 (2021.02 ~ 2021.08) — SLACK/MAIL 알림 전송 자동화, 클라우드 월간 리포트 자동화, OCI 설정(알람·규칙·모니터) 실시간 동기화
- 2차 고도화 (2020.11 ~ 2021.01) — MSP 자체 임계값 설정·알림(메일·슬랙·웹 토스트), OCI 설정 CRUD, OCI 청구서 데이터 무결성 보장
- 1차 개발 (2020.02 ~ 2020.07) — OCI API 실시간 정보 수집, 대시보드(CPU/Memory/Disk/Network I/O), 리소스 포함 관계 Treemap, Health Check, 리소스별 청구 금액 및 Excel 다운로드
4 LISTEN2ME-SURVEY
2020.09 ~ 2020.10
JavaSpring BootSpring JPAOracle
Description
규격 엑셀 시트를 설문조사 페이지로 변환하여 설문 URL 링크를 제공하고, 관리자 화면에서는 설문 결과 통계를 대시보드로 보여주는 웹 애플리케이션입니다.
What did I do
- 백엔드와 프론트엔드 간 데이터 교환 형식 정의
- 설문 결과 및 통계를 효과적으로 보여주는 대시보드 데이터 구성
How I Work
설계
- 실패 경로부터 정합니다. 선차감·롤백, DLQ·재시도, CDC 처럼 “잘못됐을 때 어떻게 복구할지”를 먼저 정하고 구현합니다. 결함 수정은 피처와 분리해 먼저 머지합니다 — 피처가 롤백돼도 수정은 살아남아야 하니까요.
- 잠금과 멱등은 이벤트 성격에 맞춰 고릅니다. 순서 없이 들어오는 요청/결과는 “선조회 후 생성/수정”과 advisory lock 으로, 단건 이벤트는 Redis NX 로 처리하고, 그 위에 유니크 키를 마지막 방어선으로 둡니다.
- 정책은 코드 분기가 아니라 설정으로 받습니다. 정책이 바뀔 때 커밋이 아니라 설정이 바뀌어야 하고, 설정은 요청 경로가 아니라 부팅 시 주입합니다.
- 서비스는 외부에 직접 쓰지 않습니다. 분석·하류 적재는 CDC 로 흘려, 애플리케이션 발행 실패라는 유실 경로 자체를 없앱니다.
- 복잡한 코드는 인터페이스로 쪼개 결합도를 낮추고 레이어 경계를 지킵니다.
운영
- 담당 서비스의 배포·매니페스트·DDL 은 제 일입니다. GitLab CI → Helm/Kubernetes → Rundeck 배포, 대역마다 다른 배포 방식, DBA 검토를 거친 DDL 까지 한 사람이 끝까지 봅니다. 신설 서비스는 파이프라인에 직접 연결합니다.
- 요청 하나를 끝까지 따라갈 수 있어야 합니다. 상관관계 키를 먼저 설계하고, Datadog · Jaeger · OpenSearch 에서 실제로 추적되는지 배포 후 확인합니다.
- 디버깅은 가설부터. 에러가 난 환경과 맥락으로 범위를 좁힌 뒤 로그로 검증합니다. 반복되는 운영 작업은 자동화하고, 재발을 겪으면 종결 기준에 항목을 추가합니다.
협업
- “현재 가정”과 “검증이 필요한 지점”을 분리해 DBA·DE·보안·기획·프론트·블록체인 팀과 공유합니다.
- 설계 의도와 결정의 이유를 문서로 남깁니다. 다이어그램으로 먼저 그려 공유하고, 더 좋은 방향이 나오면 수용합니다. 이 사이트의 Design Decisions가 그 기록입니다.
- 리뷰에서 나온 지적은 팀 원칙으로 승격합니다. 결제·보안 기능은 리뷰 2회차까지 돌리고, “외부 호출은 log-and-swallow 금지”, “설정은 부팅 시 주입” 같은 원칙을 문서화해 다음 작업에 반영합니다.
Other Experiences
자격증
| 자격명 | 발급 기관 | 취득일 |
|---|---|---|
| 정보처리기사 | 과학기술정보통신부 | 2019.08 |
| SQL개발자 (SQLD) | 한국데이터산업진흥원 | 2019.09 |
| 정보보안기사 | 과학기술정보통신부 | 2023.05 |
| 리눅스마스터 1급 | 한국정보통신진흥협회 | 2021.05 |
| 네트워크관리사 1급 | 한국정보통신자격협회 | 2023.05 |
| 리눅스마스터 2급 | 한국정보통신진흥협회 | 2020.07 |
| 네트워크관리사 2급 | 한국정보통신자격협회 | 2020.07 |
한국방송통신대학교 컴퓨터과학과
좋은 개발자가 되려면 컴퓨터 과학 기초가 필요하다고 생각해 입학했고, 전공 과목만 수강했습니다. 운영체제·컴파일러·자료구조·알고리즘·데이터베이스 등 전산 기초와 C/C++/Java 프로그래밍, 컴퓨터보안·클라우드컴퓨팅 과목을 수강했고, 언급한 과목들 모두 A+을 취득했습니다.
한국폴리텍대학교 융합기술교육원 데이터융합 소프트웨어학과
개발자로 전향하기 위해 Java·Spring, Python·R, Linux, Database, 웹 프로그래밍을 실무 중심으로 배운 9개월 과정입니다. 과정 중 만든 것은 다음과 같습니다.
- Oracle SQL로 대용량 고객 데이터에서 신규 회원 유입 통계를 뽑아 R·Excel로 시각화
- JSP와 Open API(날씨 XML·환율 JSON)를 파싱해 chart.js로 보여주는 웹 페이지
- MVC(DAO·Service·UI) 기반으로 DB CRUD와 소비 패턴 통계까지 구현한 가계부
- Ubuntu 서버의 CPU·메모리·디스크를 실시간으로 갱신해 보여주는 모니터링 페이지
- TensorFlow로 공부 시간 → 시험 성적 회귀 예측
이화여자대학교 수학교육과
수학 전공(미분적분학, 선형대수학, 기하학, 확률과 통계, 해석학, 위상수학, 정수론, 현대대수학)으로, 정의와 증명으로 문제를 풀어가는 방식을 훈련했습니다.