백종환

Frontend Developer

백종환

지금 편한 코드보다, 내일도 설명할 수 있는 코드

500MB 영상 업로드 실패부터 3초 걸리던 첫 로딩까지

지금 하는 일

LMS 프론트엔드 전담

실제 수강생이 매일 사용하는 서비스

기술 선택 기준

"이게 지금 필요한가?"

트렌드보다 문제 해결에 맞는 방법

코드 작성 기준

"왜 이렇게 했어요?"에 답할 수 있는가

주석 없이도 의도가 드러나는 구조

About

프론트엔드는 화면을 만드는 일이 아니라, 사용자와 시스템 사이를 연결하는 구조를 만드는 일이라고 생각합니다.

01

큰 그림을 보고 쪼개는 설계

4개의 서비스를 하나의 모노레포로 운영

홈페이지, 계정 서버, LMS, 백오피스를 하나의 저장소에서 관리하면서 공통 컴포넌트와 설정을 분리했습니다. 새 기능을 추가할 때 "이건 공통인가, 특정 앱 전용인가"를 먼저 판단합니다.

02

안 되는 이유를 먼저 찾는 디버깅

브라우저 한계를 인정하고 서버로 전환

브라우저에서 FFmpeg로 영상 변환하다 메모리 오버플로우가 발생했을 때, "될 때까지 고치기"보다 "왜 안 되는지"부터 파악했습니다. 결국 브라우저의 한계를 인정하고 서버 사이드로 전환하는 게 맞다는 결론을 내렸습니다.

03

사용자 관점에서 끝까지 확인

QA 피드백과 PR 리뷰 반영

기능이 동작한다고 끝이 아닙니다. QA 피드백이 오면 "왜 그렇게 느꼈을까"를 먼저 생각합니다. PR 리뷰에서 받은 의견도 단순히 고치는 게 아니라, 왜 그런 피드백이 나왔는지 이해하려 합니다.

개발 여정

2022.10시작점

블록체인 부트캠프에서 처음 개발을 시작했습니다. 지갑 앱을 만들면서 React와 상태 관리의 기초를 배웠고, 해커톤에서 팀과 협업하는 경험을 했습니다.

2023.09첫 실무

입사 후 처음 맡은 건 사업 승인을 앞둔 서비스의 마무리 작업이었습니다. 다른 사람이 작성한 코드를 읽으면서 "왜 이렇게 했을까"를 이해하려 노력했고, 기존 구조를 해치지 않으면서 새 기능을 붙이는 법을 배웠습니다. 결국 사업 승인이 됐고, 그 서비스가 지금 운영 중인 LMS의 기초가 됐습니다.

2023.11기능 전담

LMS 프론트엔드를 전담하면서 처음으로 "내가 설계한 대로" 구조를 잡을 기회가 생겼습니다. 대용량 파일 업로드 실패, 영상 변환 크래시 같은 문제를 마주하면서 "되게 만들기"와 "제대로 만들기" 사이에서 균형을 찾는 법을 배웠습니다.

2025.04 ~ 현재현재

이제는 새 기능을 구현하면서 "6개월 뒤에 이 코드를 볼 사람"을 생각합니다. PR 리뷰에서 받은 피드백을 반영하고, QA에서 발견된 이슈를 개선하면서 점진적으로 코드 품질을 높입니다.

Experience

64%

LCP 개선

3.1s → 1.1s

95%

미디어 최적화

67MB → 3MB

58%

SEO 점수

58 → 92

경일게임아카데미

경일게임아카데미

개발팀 · Frontend Developer

2023.09 - 현재
01

학습 관리 시스템 (LMS)

수강생을 위한 온라인 학습 플랫폼 프론트엔드 전담 개발

문제500MB 영상 업로드 시 타임아웃 발생

S3 Presigned URL + Multipart 업로드로 변경. 청크 크기를 파일 사이즈에 따라 동적으로 조절

1GB 파일도 안정적 업로드, 진행률 표시로 UX 개선

문제브라우저에서 영상 변환 시 탭 크래시

클라이언트 한계 인정. AWS MediaConvert로 전환해서 서버에서 처리

메모리 오버플로우 해결, 안정적인 영상 처리

02

멀티 도메인 인증 시스템

5개+ 도메인을 하나의 인증 체계로 통합

문제5개 이상 서비스에서 각각 로그인해야 하는 불편

OAuth2 Authorization Code Grant 표준 구현. 중앙 accounts 서버 구축

어느 도메인에서 로그인해도 전체 서비스 접근 가능

문제외부 플랫폼(Bettermode) 연동 필요

OAuth2 클라이언트 설정으로 redirect_uri, scope 화이트리스트 관리

기존 회원 정보로 외부 커뮤니티 자동 로그인

03

홈페이지 리뉴얼

기업 홈페이지 성능 최적화 및 결제 시스템 구축

문제초기 로딩 3초 이상, 미디어 파일 67MB

WebP 변환 + 코드 스플리팅 + 정적 Export

LCP 3.1초 → 1.1초, 미디어 67MB → 3MB (95% 감소)

문제결제 플로우에서 뒤로가기/새로고침 시 데이터 유실

use-funnel 패턴으로 단계별 상태 관리

뒤로가기/새로고침에도 데이터 유지

Awards

Seoul Web 3.0 FESTIVAL

Seoul Web 3.0 FESTIVAL

2023.08

"약자와의 동행" 부문 3위 수상

  • 웹3 기반 원스톱 응급실 의료 플랫폼
  • 블록체인 기반 환자 진료 기록 관리
  • 스마트 컨트랙트 실시간 응급실 알림 시스템

Projects

블록체인, 실시간 통신, 풀스택 등 다양한 기술을 활용한 프로젝트들입니다.

NFTin

NFTin

2023.06

멀티체인 블록체인 지갑 웹앱

React · Expo · TypeScript · Ethers.js · Recoil

  • 블록체인 네트워크 지원 및 자산 관리
  • ERC-20/721/1155 토큰 추가 및 전송
  • Chrome 확장 프로그램 기반 DApp 연동
Terminus

Terminus

2023.03

리눅스/MySQL 학습 플랫폼

React · Socket.io · Node.js · Xterm.js

  • Linux/MySQL 명령어 연습 웹 인터페이스
  • 실시간 터미널 시뮬레이션
  • 사용자별 학습 진도 관리

블록체인 지갑

2023.05

Chrome Extension 지갑

React · Node.js · Chrome Extension · TypeScript

  • 블록체인 노드 연동 지갑 인터페이스
  • 계정별 잔액 조회 및 트랜잭션 내역 관리

소셜 커뮤니티 플랫폼

2023.01

Full-Stack 커뮤니티 서비스

JavaScript · Node.js · MySQL · Socket.io

  • Kakao OAuth 2.0 소셜 로그인 및 JWT 인증
  • Socket.io 실시간 채팅 및 알림

Skills

01

Frontend

ReactReactNext.jsNext.jsTypeScriptTypeScriptJavaScriptJavaScriptHTML/CSSHTML/CSS
02

State & Data

React QueryReact QueryRecoilRecoilReduxRedux
03

Backend

Node.jsNode.jsMySQLMySQL
04

DevOps & Tools

GitGitGitHubGitHubAWSAWSLinuxLinux
05

Blockchain

EthereumEthereumSoliditySolidity