vault backup: 2026-06-01 16:40:05
This commit is contained in:
110
포트폴리오/슬로건.md
110
포트폴리오/슬로건.md
@@ -1,60 +1,96 @@
|
||||
# 자기소개 / 기술스킬
|
||||
|
||||
## 슬로건
|
||||
|
||||
```
|
||||
API 설계부터 Clean Architecture 까지, 서비스 흐름을 구조적으로 설계하는 백엔드 개발자
|
||||
상태 변화가 많은 도메인을 이벤트 흐름과
|
||||
Clean Architecture로 설계하는 백엔드 개발자
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 현재의 나 & 지향하는 바
|
||||
## 한 줄 소개
|
||||
|
||||
Spring Boot와 .NET 기반으로 인증/인가, 비동기 작업 파이프라인, JS Interop 브릿지 등
|
||||
서비스 안정성과 직결되는 백엔드 기능을 Clean Architecture 위에서 설계하고 구현해왔습니다.
|
||||
대용량 파일 업로드 라이브러리 개발부터 Redis 기반 AI 비동기 파이프라인 구축,
|
||||
GPT 추천 엔진 설계까지 도메인 문제를 API와 내부 구조로 풀어내는 경험을 쌓았으며,
|
||||
인프라까지 이해하는 백엔드 개발자로 성장하고자 합니다.
|
||||
ASP.NET Core와 Spring Boot 기반으로 tus 업로드 파이프라인, Opaque Session 인증, Transactional Outbox, Redis 비동기 작업 큐를 직접 설계·구현하며, 서비스의 정합성과 확장성을 함께 고려하는 백엔드 개발자를 지향합니다.
|
||||
|
||||
---
|
||||
|
||||
## 자기소개
|
||||
|
||||
## 기술스킬
|
||||
Spring Boot와 .NET 기반으로 인증/인가, 비동기 작업 파이프라인, JS Interop 브릿지, Transactional Outbox 등 서비스 안정성과 직결되는 백엔드 기능을 Clean Architecture 위에서 설계하고 구현해왔습니다.
|
||||
|
||||
| 분류 | 기술 | 숙련도 | 활용 수준 |
|
||||
CloudSharp에서는 ASP.NET Core 10과 PostgreSQL 기반으로 Space 단위 RBAC 인가, tus 기반 대용량 업로드 finalize saga, Outbox 기반 SSE/Notification/Worker 3-target fan-out 구조를 설계하며 파일 시스템과 DB의 정합성을 CAS + 보상 + 자율 복구 워커 3단 구조로 보장하는 방법을 깊이 다뤘습니다. Didit에서는 Spring Boot와 Redis List + Pub/Sub을 조합해 ML 추론과 API 응답성을 분리하는 비동기 파이프라인을 구축하고, SSE clientKey 매핑으로 특정 사용자에게만 결과를 전달하는 무상태 구조를 구현했습니다. 술통여지도에서는 GPT-5.2 Structured Output 기반 2단계 Cascade Ranking과 Defensive Normalization으로 LLM hallucination을 구조적으로 방어하며 토큰 40%를 절감했고, TusBlazorClient에서는 tus-js-client를 C# API로 래핑한 NuGet 라이브러리를 직접 배포했습니다.
|
||||
|
||||
앞으로는 단순 기능 구현을 넘어 도메인 이벤트 흐름·동시성·관측 가능성·수평 확장성을 함께 고려하며, 인프라까지 이해하는 백엔드 개발자로 성장하고자 합니다.
|
||||
|
||||
---
|
||||
|
||||
## Skills
|
||||
|
||||
### Main Skills
|
||||
|
||||
| Category | Skill | Level | 활용 경험 |
|
||||
|---|---|---:|---|
|
||||
| Backend | C#, ASP.NET Core | ★★★★☆ | Minimal API 기반 REST API 설계, Opaque Session Token 인증, UseCase 중심 구조 구현, NuGet 라이브러리 배포 경험 |
|
||||
| Backend | Java, Spring Boot | ★★★★☆ | 3계층 Clean Architecture 기반 API 설계, Spring Security + GitHub OAuth2, SSE 실시간 이벤트 시스템 구현 |
|
||||
| Architecture | Clean Architecture | ★★★★☆ | Api / Core / Infrastructure 계층 분리, 의존성 역전 구조 설계, Result\<T\> Monad 기반 에러 전파 파이프라인 구성 |
|
||||
| Architecture | Domain Modeling | ★★★★☆ | UploadSession·FileReservation 분리, Space 중심 멀티 테넌트 권한 모델, 상태 머신 기반 도메인 설계 경험 |
|
||||
| Database | PostgreSQL, EF Core | ★★★☆☆ | 12개 엔티티 ERD 설계, Migration 자동화, FOR UPDATE row-level lock 기반 동시성 제어, CAS 패턴 SQL 구현 |
|
||||
| Database | MySQL, MyBatis / JPA | ★★★☆☆ | 16개 테이블 모델링, Flyway 마이그레이션 관리, 복잡 조인 쿼리 작성 |
|
||||
| Upload / Storage | tus, tusd | ★★★★☆ | tusd Hook 연동(pre-create / post-finish), Finalize 중복 방지 CAS Lock, Storage Sharding 65,536 버킷 설계, tus-js-client 래퍼 라이브러리 직접 구현 |
|
||||
| Auth | OAuth2 / Session Token | ★★★★☆ | GitHub OAuth2 인증 흐름 구축, Opaque Session Token + Redis 세션 저장소 + HMAC 해싱 + sliding renewal 정책 구현 |
|
||||
| Infra | Docker, Docker Compose | ★★★★☆ | 5-서비스 오케스트레이션, internal 네트워크 격리, Healthcheck 기반 depends_on, Multi-stage 빌드 이미지 최적화 |
|
||||
| Infra | nginx Reverse Proxy | ★★★☆☆ | tus 헤더 포워딩(Tus-Resumable, Upload-Offset), 스트리밍 버퍼링 해제, 단일 진입점 라우팅 구성 |
|
||||
| Cache / Async | Redis | ★★★☆☆ | 세션 저장소(Hash), Pub/Sub 기반 비동기 작업 결과 전달, AI 작업 큐(List) 구현 |
|
||||
| AI Integration | OpenAI GPT API | ★★★☆☆ | Structured Output 기반 추천 엔진, 2단계 Cascade Ranking, Defensive Normalization으로 Hallucination 방어, Pipe-delimited Format으로 토큰 40% 절감 |
|
||||
| CI/CD | GitLab CI, GHCR | ★★★☆☆ | PR 단위 테스트 자동화, 변경 경로 기반 조건부 빌드, Docker 이미지 자동 푸시 파이프라인 구성 |
|
||||
| Frontend | Blazor WASM, Vue 3 | ★★☆☆☆ | Blazor JS Interop 브릿지 설계, Vue 3 Composition API + Pinia 기반 지도 UI 구현 |
|
||||
| Backend | C# / ASP.NET Core | 3 | CloudSharp에서 Minimal API + Endpoint Filter 기반 3계층(Core/Infrastructure/Api) 구조 설계, Opaque Session Token 인증, UseCase 중심 비즈니스 흐름 구성, TusBlazorClient NuGet 라이브러리 배포 |
|
||||
| Backend | Java / Spring Boot | 3 | Didit·술통여지도에서 30개+ REST 엔드포인트 설계, Spring Security 세션 인증, GitHub OAuth2, BackgroundService 기반 워커 구조 구현 |
|
||||
| Architecture | Clean Architecture | 3 | Api / Core / Infrastructure 3계층 분리, 의존성 역전 구조 설계, Result\<T\> Monad 기반 에러 전파 파이프라인 구성 |
|
||||
| Architecture | Domain Modeling | 3 | UploadSession·FileReservation 분리, Space 중심 멀티 테넌트 권한 모델, upload_sessions 7종 상태머신 + 조건부 UPDATE 기반 race 차단 설계 |
|
||||
| Database | PostgreSQL / EF Core | 3 | CloudSharp 16개 테이블·15개 enum 모델링, partial unique index 7종으로 비즈니스 불변식 DB 강제, 조건부 ExecuteUpdate 기반 낙관적 claim, `xmin` row version 활용 |
|
||||
| Database | MySQL / JPA·MyBatis | 3 | Didit에서 JPA + Flyway V1~V12 마이그레이션 + `ddl-auto: validate` 이중 정합성 보장, 술통여지도에서 MyBatis 기반 복잡 조인 쿼리 작성 |
|
||||
| Upload / Storage | tus / tusd | 3 | tusd Hook 연동(pre-create / post-finish), finalize 중복 방지 CAS UPDATE, storage move + DB 트랜잭션 saga + 보상 처리, tus-js-client C# 래퍼 라이브러리 직접 구현 |
|
||||
| Auth | OAuth2 / Session Token | 3 | GitHub OAuth2 인증 흐름 구축, Opaque Session Token + Redis 세션 저장소 + SHA-256 해싱 + sliding renewal, prefix 기반 토큰 분류(`cs_st`/`cs_mcp`/`cs_dl`/`cs_sh`)로 단일 헤더 라우팅 |
|
||||
| Pattern | Transactional Outbox | 3 | 도메인 트랜잭션과 같은 DbContext에 outbox 기록, partial index 기반 낙관적 claim + 지수 백오프 재시도 + 라우팅 레지스트리로 SSE/Notification/Worker 3-target fan-out 구현 |
|
||||
| Realtime / Async | SSE | 3 | Didit·CloudSharp에서 SseHub/SseEmitter 기반 실시간 이벤트 전달 구조 구현, clientKey 매핑으로 동일 사용자 다중 탭 구분 및 특정 사용자 타겟팅 |
|
||||
| Cache / Async | Redis | 3 | List(작업 큐) + Pub/Sub(결과 전달) 조합으로 ML 비동기 파이프라인 구축, Opaque 토큰 세션 저장소(Hash) 및 Worker 채널로 활용, KeyDelete 한 번으로 logout-all 처리 |
|
||||
| Infra | Docker / Docker Compose | 3 | CloudSharp 6-서비스 same-origin 스택 구성, init-storage one-shot 컨테이너로 동일 UID/GID(10001) bind mount 공유, healthcheck 기반 depends_on 체인, Multi-stage 빌드 최적화 |
|
||||
|
||||
### Sub Skills
|
||||
|
||||
| Category | Skill | Level | 활용 경험 |
|
||||
|---|---|---:|---|
|
||||
| AI Integration | OpenAI GPT API | 2 | 술통여지도에서 Structured Output 기반 2단계 Cascade Ranking 추천 엔진 구현, Defensive Normalization으로 hallucination 차단, pipe-delimited 포맷으로 토큰 40% 절감 |
|
||||
| Infra | nginx | 2 | CloudSharp에서 단일 origin reverse proxy 구성, tus 헤더 포워딩(Tus-Resumable, Upload-Offset), `/files/` streaming 버퍼링 해제 |
|
||||
| CI/CD | GitLab CI / GHCR | 2 | test → build → push → Portainer webhook redeploy 파이프라인 구축, 변경 경로 기반 조건부 빌드, JUnit Report artifact 자동화 |
|
||||
| Realtime | WebRTC (OpenVidu) | 1 | Didit에서 OpenVidu 2.32.1 기반 화상회의·녹화 기능 연동 |
|
||||
| Search | Elasticsearch | 1 | 술통여지도에서 술집 전문 검색 인덱스 클라이언트 구성 |
|
||||
| Frontend | Blazor WASM | 2 | TusBlazorClient 라이브러리에서 IJSRuntime JS Interop 브릿지 설계, `[JSInvokable]` + DotNetObjectReference 콜백 마샬링, DI 통합 |
|
||||
| Frontend | Vue 3 | 1 | 술통여지도에서 Composition API + Pinia + Naver Maps 기반 지도 UI 구현 |
|
||||
|
||||
---
|
||||
|
||||
### 숙련도 기준
|
||||
|
||||
- **Level 1**: 사용 경험 있음 — 문서/예제 참고하여 기본 사용 가능
|
||||
- **Level 2**: 기능 구현 가능 — 일반 요구사항 수준의 기능 구현 가능
|
||||
- **Level 3**: 프로젝트 적용 가능 — 서비스 요구사항에 맞게 구조 설계 후 핵심 기능에 적용
|
||||
- **Level 4**: 문제 해결 가능 — 성능·장애·구조 개선까지 가능
|
||||
|
||||
---
|
||||
|
||||
## 핵심 강점 요약
|
||||
|
||||
1. 두 가지 백엔드 스택을 Clean Architecture 위에서 설계
|
||||
- Java/Spring Boot, C#/ASP.NET Core 모두 실무 수준으로 3계층 구조 적용 가능
|
||||
- Result<T> Monad 기반 에러 전파, UseCase 중심 비즈니스 흐름 구성
|
||||
### 1. 두 가지 백엔드 스택을 Clean Architecture 위에서 설계
|
||||
|
||||
2. 서비스 안정성과 직결되는 백엔드 기능 구현
|
||||
- tus 기반 대용량 업로드: 클라이언트 라이브러리(NuGet 배포) + 서버 파이프라인 양방향 구현
|
||||
- 인증/인가: GitHub OAuth2, Opaque Session Token + Redis 세션, Space Role 기반 인가
|
||||
- 동시성 제어: CAS UPDATE, FOR UPDATE row-lock, Recovery Worker 기반 자동 복구
|
||||
- Java/Spring Boot, C#/ASP.NET Core 모두 실무 수준으로 3계층 구조 적용
|
||||
- Result\<T\> Monad 기반 에러 전파, UseCase 중심 비즈니스 흐름 구성
|
||||
- 150여 개 ErrorCode 상수와 일관된 ErrorResponse 구조로 프론트엔드 분기 단순화
|
||||
|
||||
3. 도메인 문제를 비동기 파이프라인으로 풀어낸 경험
|
||||
- Redis List/Pub/Sub 기반 AI 작업 큐로 ML 추론과 API 응답성 분리
|
||||
- GPT 2단계 Cascade Ranking으로 토큰 70% 절감, Defensive Normalization으로 Hallucination 차단
|
||||
- Blazor JS Interop 브릿지로 .NET ↔ JavaScript 콜백 마샬링 최적화
|
||||
### 2. 서비스 안정성과 직결되는 백엔드 기능 구현
|
||||
|
||||
4. 인프라까지 고려한 백엔드 설계
|
||||
- Docker Compose 멀티 서비스 오케스트레이션, internal 네트워크 격리
|
||||
- nginx Reverse Proxy + tus 헤더 포워딩, GitLab CI 자동 빌드/배포 파이프라인
|
||||
- **tus 기반 대용량 업로드**: tusd Hook 연동 + finalize saga + 보상 처리 + 5분 주기 Recovery Worker, NuGet 라이브러리 배포까지 양방향 구현
|
||||
- **인증/인가**: GitHub OAuth2, Opaque Session Token + Redis 세션, prefix 기반 단일 헤더 라우팅, Space Role 매 요청 재조회로 staleness 0
|
||||
- **동시성 제어**: 조건부 UPDATE 기반 CAS, partial unique index 7종, `xmin` row version, Recovery Worker 기반 self-healing
|
||||
|
||||
### 3. 도메인 문제를 비동기 파이프라인으로 풀어낸 경험
|
||||
|
||||
- **Transactional Outbox**: 도메인 트랜잭션과 원자적 enqueue, partial index 기반 낙관적 claim, 지수 백오프 재시도, 3-target fan-out
|
||||
- **Redis List/Pub/Sub**: ML 추론과 API 응답성 분리, Kafka/RabbitMQ 없이 운영 복잡도 절감
|
||||
- **GPT 2단계 Cascade Ranking**: 200개 후보 → top10으로 압축, 토큰 70% 절감, Defensive Normalization으로 hallucination 차단
|
||||
- **Blazor JS Interop 브릿지**: `[JSInvokable]` + DotNetObjectReference로 .NET ↔ JavaScript 콜백 마샬링 최적화
|
||||
|
||||
### 4. 인프라까지 고려한 백엔드 설계
|
||||
|
||||
- Docker Compose 6-서비스 same-origin 스택, init-storage one-shot으로 UID/GID 공유 bind mount
|
||||
- nginx reverse proxy + tus 헤더 포워딩 + streaming 버퍼링 해제
|
||||
- 자체 개발 벤치마크 도구로 Nextcloud 대비 업로드 2.6배·다운로드 3.86배 성능 측정
|
||||
- GitLab CI + GHCR + Portainer webhook 기반 자동 빌드/배포 파이프라인
|
||||
Reference in New Issue
Block a user