윤석찬

윤석찬

Seokchan Yoon

About Me

사용자 경험을 위해 성능의 한계까지 집요하게 파고드는 엔지니어입니다.

초기 번들 96.8% 절감 및 FCP 47% 단축 등 수치 기반의 최적화로 기술이 비즈니스 가치로 이어지는 과정을 경험했습니다. 무한 스크롤과 이미지 최적화 등 렌더링 성능을 개선하는 과정에서 얻은 집요함으로 서비스의 성능을 고민합니다.

사람의 실수에 기대지 않고 '규칙과 시스템'으로 효율과 안정성을 통제하는 아키텍트를 지향합니다.

9가지 인증 엣지 케이스 방어와 45개의 테스트 자동화로 런타임 오류를 차단하고, Atomic Design 기반의 UI 시스템 구축을 통해 팀 전체의 개발 생산성을 향상시키는 구조적 해결에 집중합니다.

PAI 상위 1%의 멘탈과 150명 규모를 이끈 리더십으로 비즈니스 임팩트를 완수합니다.

실사용자 500명 규모의 서비스 운영부터 스타트업 MVP 런칭, 저작권 등록 및 수상으로 이어지는 실행력을 갖췄습니다. 기술적 난관 앞에서도 흔들림 없이 소통하며 팀의 목표를 달성해 내는 동료가 되겠습니다.

Skills

Frontend

JavaScriptReactTypeScriptNext.jsZustand

Infra

GitHub ActionsAmazon S3CloudFront

Collaboration

GitNotionFigmaJira

Languages & Tools

CC++PythonLinuxOpenGLOpenCVPyTorch

Career

넛지(Nudge)

넛지(Nudge)

프론트엔드 개발자 · 수원 · 하이브리드 근무

프리랜서

1개월

2025.02 – 2025.03

useOAuthPopup Custom Hook implements pop-up OAuth without full page reloading, improves login waiting time by 40%

Resolve Fat Component with SRP-based hook separation (useStickyHeader, etc.) and delete legacy code 134 lines

인턴

4개월

2024.08 – 2024.12

Jira-based Agile Sprint-led and Multi-jik Group (Planning and Design) Collaboration to Launch MVP

Accelerate deployment of new pages by 40% with the establishment of an Atomic Design-based design system

Education

아주대학교

소프트웨어학과

졸업

전체평점

3.92/ 4.5

전공학점

4.02/ 4.5

Experience & Activities

Do-iT! (IT 중앙동아리)회장

2024.03 ~ 2025.02

MAIN (소프트웨어학과 학생회)임원

2024.03 ~ 2025.02

넛지 (창업동아리)팀원

2024.01 ~ 2025.03

SWEAT (IT 봉사동아리)회원

2023.03 ~ 2024.12

한터 (소프트웨어학과 소학회)회원

2023.03 ~ 2024.12

UMC (대학생 개발 연합동아리)회원

2023.03 ~ 2024.12

Do-iT! (IT 중앙동아리)학술부 임원

2023.03 ~ 2024.12

ENTER (소프트웨어학과 학생회)임원

2023.03 ~ 2024.02

Awards

2025-1 Ajou SoftCon 개발부문 장려상

2025.06

2025 동아리 소학회·진로 콘테스트 동상

2025.05

2024 AJOU 부스트 스타트업 데모데이 최우수상

2024.12

Certifications

TOPCIT 수준 3 (능숙형)

2025.05

Languages

EnglishOPIc IH

2024.12, ACTFL

Main Project
MangoBoss (망고보스)

MangoBoss (망고보스)

소상공인 사장님을 위한 아르바이트 관리 자동화 솔루션 (SaaS)

2025.03 ~ 2025.06

Project Overview

역할:기획 & Frontend Lead
팀 구성:4명 (디자이너 1, 백엔드 2, 프론트엔드 1)
기술 스택:React 19, TypeScript, Zustand, TailwindCSS, Storybook
빌드 툴:Vite (SWC)
인프라:GitHub Actions, Amazon S3, CloudFront
주요 기술:PWA (Service Worker), Firebase Cloud Messaging (FCM), AWS KMS, AES-256

Results

🏆 2025-1 Ajou SoftCon 개발부문 장려상📜 한국저작권위원회 컴퓨터프로그램 저작권 등록 (C-2026-006475, 2026.02)

System Architecture

System Architecture

Engineering

01Case

9가지 진입 케이스를 커버하는 3단 라우팅 가드 설계

accessToken · user · role · FCM 조합으로 분기되는 9가지 진입 케이스를 처리하는 라우팅 아키텍처

Background

망고보스는 소상공인 사장님의 알바생 관리를 자동화하는 서비스로, BOSS(사장)와 STAFF(알바생) 두 역할에 맞게 출퇴근 관리·자동 송금·스케줄 관리 등의 기능을 제공한다.

랜딩 페이지카카오 OAuth 로그인역할 선택 (BOSS / STAFF)추가 정보 + 약관·위치·카메라 권한회원가입 완료 → 대시보드(최초) 알림 권한 요청

OAuth 인증으로 사용자 정보(이름·전화·이메일·생년월일)는 카카오에서 자동으로 채워지므로 별도 입력이 없다. ADMIN은 일반 사용자와 분리된 별도 경로로 관리된다.

Problem

accessToken · user · role · FCM 4가지 조건의 조합으로 총 9가지 진입 케이스가 발생. 단순 플래그 하나로는 각 케이스를 정확히 구분할 수 없어, 로딩 시점 잘못된 리다이렉트(Flash)부터 역할 불일치 URL 직접 접근까지 라우팅 취약 지점이 다수 존재.

진입 조건

① 비로그인 (accessToken = null)② 권한 확인 대기 (user = null)③ 역할 선택 미완료 (role = UNASSIGNED)

회원가입 완료 시

역할 × FCM

BOSS FCM 있음 FCM 없음
STAFF FCM 있음 FCM 없음
ADMIN FCM 있음 FCM 없음

Action

Step 1. 상태 모델링 — 로딩 중 / 로그인 완료 명시적 분리

isLoggedIn 단일 플래그로 모든 상태를 표현할 때 발생하는 Flash 문제를 분석함. accessToken과 user 객체의 존재 여부 조합으로 로딩 상태를 명시적으로 분리하여 로딩 시점의 잘못된 리다이렉트를 원천 차단함.
// useAuth.ts
isLoading = accessToken !== null && user === null // 케이스 ②
isLoggedIn = !!accessToken && !!user

Step 2. 가드 레이어 3단 분리

단일 가드에 복잡한 분기를 몰아넣는 대신 책임 범위에 따라 세 레이어로 분리함. 비로그인 전용 페이지부터 역할별 접근 제어까지 각 레이어가 독립적으로 검증하는 구조를 구축함.
가드역할처리 케이스
PublicRoute비로그인 전용 페이지 보호①, 역로그인 차단
ProtectedRoute로그인 + 온보딩 완료 검증②, ③
RoleRoute역할별 접근 제어역할 불일치 URL 직접 접근 차단
랜딩·로그인PublicRoute(로그인 상태면 역할별 홈으로 redirect)
signup 이후ProtectedRoute(비로그인 → /login, UNASSIGNED → /signup)
/boss·/staff·/adminRoleRoute(역할 불일치 → /forbidden)

Step 3. AppInitializer — 인증 초기화 단일 진입점

인증 정보 동기화가 파편화되는 문제를 해결하기 위해 앱 최상단에 초기화 전용 컴포넌트를 배치함. 프로필 API 호출은 AppInitializer에서, 토큰 재발급은 Axios Interceptor에서 각각 전담하여 모든 페이지에서 일관된 인증 상태를 보장함.

Step 4. FCM 권한 요청 지연

위치·카메라 권한은 서비스 이용에 필수적이어서 약관 동의와 함께 즉시 요청하되, 알림 권한은 프로필 로드 성공 직후(역할별 대시보드 진입 시점)로 지연하여 회원가입 흐름 단절을 방지함. 로그아웃 시 FCM 토큰을 함께 삭제하여 다중 계정 환경에서의 토큰 오염도 방지함.

State Diagram

다이어그램 로딩 중...

Result

9가지 진입 케이스 전체에 대해 의도하지 않은 화면 노출을 효과적으로 차단하고, 단일 진입점 기반의 일관된 인증 처리 구조 확보.

02Case

모놀리식 번들 4.27MB → 182kB, 이중 Lazy 전략으로 FCP 47% 단축

Problem

랜딩 페이지 배포 후 모바일 환경 FCP 13.3s, TBT 1.4s 지연 측정으로 인한 사용자 이탈 우려. 번들 분석 결과 단일 모놀리식 번들로 인해 메인 스레드가 블로킹되며, 방문자에게 불필요한 전체 코드 및 대규모 SVG가 강제로 로드되는 심각한 초기 로딩 병목 확인.

[Critical] 단일 번들 4.27MB[Performance] 메인 스레드 1.4s 블로킹[Redundancy] 비로그인 시 전체 코드 로드[Resource] SVG 1.7MB 초기 전량 로드

Action

Step 1. 해결 방향 검토

SSR 전환 (Next.js)
코드 스플리팅 + CDN 최적화
FCP의 근본 해결을 위해 SSR 전환을 검토했으나, 기존 S3+CloudFront 인프라 교체 비용이 과도하다고 판단. 현재 파이프라인을 유지하며 병목을 파훼할 수 있는 '코드 스플리팅 + CDN 최적화'를 최종 채택함.

Step 2. 번들 세분화 (manualChunks)

단순 분리가 아닌 '캐시 수명'과 '접근 권한'이라는 명확한 기준을 수립. 자주 바뀌지 않는 라이브러리는 별도 벤더 청크로 분리하여 브라우저 캐시 효율을 극대화하고, 역할별 모듈은 lazy 청크로 격리함.

Step 3. 이중 Lazy 라우팅 전략

인증 후 페이지는 Route-level로 분리했으나, 랜딩 섹션 내 거대 SVG는 여전히 병목이었음. 이를 해결하기 위해 intersection-observer를 결합, 사용자가 실제 스크롤하여 해당 섹션에 도달할 때만 로드되는 이중 구조를 설계함.

Step 4. 트레이드오프 파훼 (Optimization)

성능 최적화 과정에서 발생하는 부작용(빈 화면, CLS)을 방치하지 않음. Skeleton UI로 사용자 경험을 보완하고, LCP에 영향을 주는 로고는 다시 static import로 전환하는 등 성능과 UX 사이의 균형을 맞춤.

Result

모놀리식 환경 대비 렌더링 성능의 비약적 향상 및 초기 로딩 병목의 효과적 해소

초기 번들 사이즈
4,275kB182kB
FCP (Mobile)
13.3s7.0s (▼47%)
Total Blocking Time
1,407ms710ms (▼50%)

추가 케이스

Witt (위트)

Witt (위트)

O2O 오프라인 체험 마케팅 플랫폼

2024.01 ~ 2025.03

role Frontend Developer

member 6명 (Front-end 2, Back-end 2, Designer 1, PM 1)

  • Jira 기반 애자일 스프린트 주도 및 다직군(기획·디자인) 협업으로 MVP를 런칭
  • Atomic Design 기반 디자인 시스템 수립으로 신규 페이지 구현 속도 40% 단축
  • useOAuthPopup 커스텀 훅으로 전체 페이지 리로딩 없는 팝업 OAuth 구현, 로그인 대기 시간 40% 개선
  • SRP 기반 훅 분리(useStickyHeader 등)로 Fat Component 해소, 레거시 코드 134라인 삭제
🏆 2024 AJOU 부스트 스타트업 데모데이 최우수상
Next.jsTypeScriptZustandTailwindCSS
AjouEvent (아주이벤트)

AjouEvent (아주이벤트)

교내 공지 키워드 구독 알림 웹앱

2024.01 ~ 현재

role Frontend Developer

member 4명 (Front-end 1, Back-end 2, Crawling 1)

  • 실서비스 운영 — 누적 유저 400명, 활성 유저 150명 달성 (GA4 기반)
  • PWA + FCM으로 앱스토어 없이 iOS/Android 푸시 알림 독립 배포 채널 확보
  • IntersectionObserver 기반 무한 스크롤로 초기 렌더링 45% 개선
  • MSW v2 기반 API 모킹 환경 구축 및 45개의 핵심 비즈니스 로직 테스트 자동화
ReactViteZustandPWAFirebase FCMGA4
© 2026 윤석찬 · All Rights Reserved