---
tags: [resume, cv]
last_updated: 2026-05-06
name: 손을준
role: Backend Developer
email:
phone:
portfolio: https://dalsu.dev/
github: https://github.com/thsdmfwns
---

# 손을준

**백엔드 개발자** | Java/Spring Boot · C#/ASP.NET Core · Clean Architecture

- Blog / Portfolio: [dalsu.dev](https://dalsu.dev/)
- GitHub: [github.com/thsdmfwns](https://github.com/thsdmfwns)

## 소개

인증/인가, 대용량 업로드, 비동기 작업 처리처럼 서비스 안정성과 직결되는 백엔드 흐름을 설계하고 구현하는 개발자입니다. Spring Boot와 ASP.NET Core 기반 프로젝트에서 Clean Architecture, Redis, Docker Compose, CI/CD를 활용해 동작 가능한 백엔드 시스템을 만드는 데 집중해왔습니다.

## 핵심 역량

- **인증/인가 설계**: OAuth2, Spring Security, Opaque Session Token, Redis Session 기반 권한 제어 경험
- **대용량 업로드 처리**: tus 기반 재개 가능한 업로드, Finalize 상태 전이, Quota 예약 구조 설계
- **비동기 작업 처리**: Redis Queue/Pub/Sub, SSE를 활용한 AI 분석 결과 실시간 전달 구조 구현
- **백엔드 아키텍처**: Clean Architecture, Result Pattern, 계층 분리 기반 유스케이스 중심 설계
- **배포/운영 기반**: Docker Compose, nginx/Traefik, GitLab CI/CD, GHCR 기반 배포 구성 경험

## 기술 스택

| 분류                 | 주력 기술                                         | 사용 경험                                     |
| ------------------ | --------------------------------------------- | ----------------------------------------- |
| **Backend**        | Java 21 / Spring Boot, C# / ASP.NET Core      | Minimal API, Blazor WASM                  |
| **Architecture**   | Clean Architecture, Result Pattern            | Modular Monolith, Domain Modeling         |
| **Database**       | PostgreSQL, MySQL                             | EF Core, JPA, MyBatis, Flyway             |
| **Cache / Async**  | Redis, SSE                                    | Pub/Sub, List Queue                       |
| **Auth**           | OAuth2, Spring Security, Opaque Session Token | Session Cookie, Redis Session             |
| **Infra**          | Docker Compose, GitLab CI/CD                  | nginx, Caddy, GHCR                        |
| **AI Integration** | OpenAI GPT API, Structured Output             | Qdrant, Elasticsearch, Prompt Engineering |
| **Frontend**       | Vue 3, TypeScript, Blazor                     | Pinia, Blazor JS Interop                  |
| **Testing**        | NUnit, JUnit, Selenium E2E                    | Vitest, Playwright                        |

## 프로젝트

### Cloud# (CloudSharp) — 셀프호스트 파일 서비스 플랫폼

*백엔드 · 인프라 · 설계 담당*

Space 단위 격리 저장 공간을 제공하는 셀프호스트 파일 서비스입니다. tus 기반 재개 가능한 대용량 업로드, 단명 다운로드 세션, Quota 정책을 설계했습니다.

- ASP.NET Core Minimal API + Clean Architecture 기반으로 API/Core/Infrastructure 계층 분리
- tus 기반 재개 가능한 업로드 파이프라인과 Finalize 상태 전이 구조 설계
- Quota 예약 경쟁 조건을 `SELECT ... FOR UPDATE`와 상태 기반 CAS UPDATE로 제어
- Opaque Session Token + Redis 세션 구조로 권한 변경 즉시 반영 가능한 인증/인가 구현
- Docker Compose와 nginx 단일 진입점으로 API/tusd 서비스를 분리 배포

`C#` `ASP.NET Core` `PostgreSQL` `EF Core` `Redis` `tusd` `Docker Compose` `nginx`

### Didit — GitHub 통합 팀 협업 플랫폼

*백엔드 · 인프라 · AI 비동기 파이프라인 담당*

GitHub 워크플로우를 OAuth2 인증, 화상회의, AI 이슈 분석, SSE 실시간 이벤트로 연결한 팀 협업 플랫폼입니다.

- Spring Boot 기반 REST API 30+개 설계 및 구현
- GitHub OAuth2와 repo/org 권한을 연계한 SPA 인증 흐름 구현
- Redis List Queue와 Pub/Sub을 활용해 ML 추론 작업과 API 응답 흐름 분리
- Redis Pub/Sub과 SSE를 활용해 비동기 AI 분석 결과를 요청 사용자에게 실시간 전달
- Flyway 마이그레이션과 JPA validate로 스키마 정합성 검증

`Java 21` `Spring Boot` `Spring Security` `MySQL` `Redis` `SSE` `Flyway` `JPA` `OpenVidu`

### 술통여지도 (Sulmap) — AI 기반 술집 추천 플랫폼

*백엔드 · AI 추천 엔진 · 데이터 파이프라인 담당*

위치·날씨·시간·요청사항을 바탕으로 주변 술집 Top 10과 추천 이유를 제공하는 지도 기반 웹 서비스입니다.

- Spring Boot + JPA 기반 REST API와 16개 테이블 중심 도메인 모델 구현
- 반경 내 최대 200개 후보를 2단계 Cascade Ranking으로 줄여 GPT 호출 토큰 약 70% 절감
- Pipe-delimited Domain Format을 적용해 JSON 대비 프롬프트 토큰 약 40% 절감
- Structured Output, 허용 ID 검증, fallback 전략으로 GPT hallucination과 AI 실패 상황 방어
- .NET 9 + Qdrant + OpenAI Embedding 기반 공공데이터 ETL 파이프라인 구현

`Java` `Spring Boot` `MyBatis` `MySQL` `Elasticsearch` `OpenAI GPT API` `Qdrant` `Vue 3`

### TusBlazorClient — Blazor WASM용 tus 클라이언트 라이브러리

*단독 개발 · NuGet 배포*

`tus-js-client`를 C# API로 감싼 Blazor WASM 대용량 업로드 라이브러리입니다. JS 작성 없이 재개 가능한 업로드를 사용할 수 있도록 설계했습니다.

- `TusClient`, `TusUpload`, `TusOptions` 중심의 타입 세이프 Public API 설계
- `AddTusBlazorClient()` 기반 DI 확장 메서드로 Blazor 프로젝트 통합 단순화
- `[JSInvokable]`과 `DotNetObjectReference`를 활용해 JS 콜백과 .NET 델리게이트 연결
- JS ES Module Lazy Loading과 `IAsyncDisposable` 기반 리소스 생명주기 관리
- [NuGet.org `TusBlazorClient` v1.0.1](https://www.nuget.org/packages/TusBlazorClient) 배포 및 Selenium E2E 테스트 검증

`C#` `.NET` `Blazor WASM` `IJSRuntime` `JS Interop` `tus-js-client` `NuGet` `Selenium`

## 교육 및 경력

- **삼성청년SW·AI아카데미 (SSAFY)** | 2025.06 ~ 2026.06 예정
- **한연 인턴** (우송대학교 학생 인턴) | 2021.06 ~ 2021.12
- **태인 인턴** (우송대학교 학생 인턴) | 2021.03 ~ 2021.06
- **우송대학교 비트아카데미 고급 과정** 수료 | 2020.09 ~ 2021.01

## 학력

**우송대학교** IT융합학부 컴퓨터정보보안전공 (4년제 졸업)

## 자격증

- 정보처리기사 | 과학기술정보통신부 | 2023.09
