미리보기
기본 정보

끊임없이 고민하고 실험하며, 실질적인 문제 해결에 집중하는 프론트엔드 개발자입니다. React 기반의 다양한 프로젝트를 통해 사용자 경험과 성능을 개선하고, 복잡한 구조 속에서도 명확한 흐름을 설계하는 데 집중해왔습니다. 기술을 단순히 사용하는 데서 멈추지 않고, “왜 이 구조여야 하는가”, “어떻게 더 나은 방식으로 개선할 수 있을까”를 끊임없이 질문하며 개발합니다. 새로운 기술이나 접근 방식에 대한 두려움 없이, 실제 프로젝트에 적용하고 정량적 개선을 이루는 과정에서 큰 보람을 느낍니다. 또한 개발 과정에서의 고민과 배움을 블로그에 정리하고, 테스트 코드 작성과 리팩토링, 성능 분석 등을 통해 사용자와 팀 모두에게 신뢰를 줄 수 있는 코드를 지향합니다. 이러한 태도를 바탕으로, 변화에 유연하게 대응하고, 꾸준히 성장하는 개발자가 되기 위해 노력하고 있습니다.
기술 스택
JavaScript, TypeScript, HTML/CSS, React, react-query, react-router, vitest, GitHub, React Native, Next.js, AWS, frontend, cloudfront
프로젝트
Keupang
개인
2025.11. ~ 진행 중
Mock API 및 테스트 환경 구축 → MSW이야기로 이동(클릭), Test Coverage이야기로 이동(클릭)
백엔드 API 개발 전에도 프론트엔드 개발이 원활히 이루어지도록 Mock Service Worker(MSW)를 도입해 개발 및 테스트 환경을 구축
초기에는 MSW 초기화 전에 React 애플리케이션이 렌더링되어 API 요청이 가로채지지 않는 문제가 있었고, worker.start()를 prepare() 함수로 감싸 비동기로 초기화하여 문제를 해결
개발 환경뿐 아니라 테스트 환경에서도 MSW를 활용하여 실제 서버와 독립된 상태에서 테스트를 수행 중
Vitest + Istanbul을 기반으로 커버리지 측정을 도입해, 1차 기준 53.5% → 70% 이상 확보를 목표로 테스트 품질 개선을 진행 중
성능 및 사용자 경험 개선 → 자세한 이야기로 이동(클릭)
상품 목록 페이지의 UX와 검색 최적화를 위해 Lighthouse 리포트를 분석하고, LCP(Largest Contentful Paint) 및 SEO 점수를 중심으로 개선 작업을 수행
초기 측정 시 LCP는 1,450ms 수준, 이미지 로드 시간 140ms으로 측정되어 퍼포먼스 개선이 필요한 상황
상위 노출 예상 이미지에 loading="eager" 및 fetchpriority="high" 속성을 적용해 로딩 우선순위를 명시하고, 이미지 포맷을 WebP로 전환하여 용량을 최적화
LCP는 1,450ms → 1,050ms (약 27.5% 개선), 이미지 로드 시간은 140ms → 40ms (71% 개선)으로 단축되었고, SEO 점수는 82점 → 100점으로 개선 (22% 상승)
배포 환경 구축 → 배포 환경 구축 이야기로 이동(클릭) , SEO 점수 개선 이야기로 이동(클릭)
GitHub Actions를 활용하여 코드 푸시 또는 PR 병합 시 자동으로 테스트, 빌드, 배포가 이루어지는 파이프라인 구축
.store 도메인에 DNS 레코드를 설정하고, HTTPS 인증서를 적용하여 보안과 신뢰성을 강화초기 설정에서 Slack Webhook URL 오류로 인해 알림이 전송되지 않는 문제 발생 → Webhook 재설정 및 JSON 포맷 수정으로 해결
초기 측정 시 SEO 점수는 82점으로 측정되어 SEO 개선이 필요한 상황
CloudFront 사용자 정의 오류 응답을 /index.html로 처리하여 SPA의 라우팅 문제 해결
각 페이지에 동적 메타 태그를 설정(react-helmet-async) 하여 검색 엔진 인덱싱과 SNS 미리보기 대응이 가능하도록 개선
SEO 점수는 82점 → 100점으로 개선 (22% 상승)
느낀 점
React의 렌더링 구조와 브라우저의 요청 흐름을 깊이 이해하며 MSW, 테스트 초기화 문제 등을 해결
테스트 커버리지 도구(Istanbul)를 활용해 코드의 취약 지점을 시각적으로 분석하고, 이를 기반으로 개선 작업을 진행하며 효율적인 작업 방식과 코드 품질 관리의 중요성을 체감
Lighthouse 기반의 성능 분석을 통해 LCP 및 SEO 최적화를 직접 수행하며, 기술적인 수치 개선뿐 아니라 실제 사용자 경험에 긍정적인 영향을 주는 개선의 의미를 경험
배포 프로세스 자동화와 Slack 알림 연동을 통해 문제를 신속히 파악하고 대응하며, 협업과 운영 관점에서도 서비스 품질을 높이는 것에 기여
Polingo
금오공과대학교
2024.03. ~ 2024.06.
Polingo - 번역과 언어 학습을 지원하는 올인원 어플리케이션
담당 역할 및 기여 내용
UI 및 API 통신 총괄:
회원가입 및 로그인 스크린 UI 설계 및 OAuth 2.0 기반 Kakao, Google 로그인 구현.
홈, 번역, 단어장, 문제집, 뉴스, 상황별 회화집 스크린의 UI 및 API 통신 로직 개발.
사용자 경험을 개선하기 위한 화면 간 데이터 흐름 최적화.
트러블 슈팅
문제 1: Kakao 로그인과 Google 로그인 방식의 차이로 인한 문제
이유: Kakao 로그인은 WebView를 통해 토큰을 추출하는 방식으로 진행되었으나, Google 정책상 WebView 기반 로그인 방식이 지원되지 않아 400 에러 발생
해결:
expo-auth-session/providers/google
을 활용해 Google의 OAuth 2.0 인증 플로우를 구현하여 문제 해결React Native 환경에서 권장되는 방식으로 Google 로그인을 구현,
Google.useAuthRequest
훅을 통해 인증 요청 생성 및 처리WebView 기반 방식을 대체해 문제를 효과적으로 해결.
문제 2: 뉴스 스크린의 성능 문제
이유: 뉴스 디테일 스크린에서 각 단어에 이벤트를 개별적으로 설정해 렌더링하던 방식으로 인해 데이터 양이 많아질수록 속도 저하 발생.
해결:
React-Query 도입: Cache 기능을 활용해 한 번 로드한 뉴스 데이터를 재사용, 로딩 속도 7초 → 0.1초로 단축.
ActivityIndicator 사용: 데이터 로딩 중 사용자에게 진행 상태를 명확히 전달해 UX 개선.
성과 및 개선 효과
OAuth 2.0 인증 플로우 구현으로 Google 정책 준수 및 크로스플랫폼 로그인 기능 안정화.
React-Query와 렌더링 최적화로 뉴스 스크린의 성능 문제 해결, 로딩 시간 98.6% 단축.
Colla
금오공과대학교
2024.02. ~ 2024.11.
대학생을 위한 팀 프로젝트 관리 플랫폼, Colla
담당 역할 및 기여 내용
Custom Hook 테스트 코드 작성:
Custom Hook의 테스트 코드 작성: 프로젝트의 다양한 커스텀 훅(
useMenu
,useOverlay
,useOutSideClick
등)에 대한 테스트 코드 작성 및 검증을 통해 기능의 안정성과 코드의 신뢰도를 확보
트러블 슈팅
문제 내용:
useOutSideClick.tsx
와 같은 사용자 상호작용 기반 Hook의 테스트 과정에서 컴포넌트 외부와의 상호작용을 효과적으로 검증하는 방법을 찾는 데 어려움을 겪음.
해결 방법:
@testing-library/react
와user-event
를 활용하여 테스트 컴포넌트를 생성하고, 컴포넌트 외부와 내부 요소의 클릭 이벤트를 시뮬레이션하여 문제 해결.테스트 컴포넌트는 커스텀 훅의 기능과 의도를 명확히 검증하기 위해 설계되었으며 복잡한 상호작용을 재현하기 위한 효율적인 선택.
결과적으로 유사한 상호작용 기반 Hook의 테스트 작성에도 활용 가능한 패턴과 방법론을 마련.
성과 및 개선 효과
Hook 테스트 패턴을 표준화하여 유사 기능 추가 시 검증 비용 감소 및 테스트 재사용성 증가.
테스트 코드의 가독성과 유지보수성을 높이며, 팀원들이 쉽게 이해하고 활용할 수 있도록 기반 마련.
포트폴리오
자기소개
성장 과정
저는 '할 땐 정말 열심히 하고, 안 할 땐 정말 열심히 안 하는 사람'이라고 저 자신을 표현합니다. 이러한 저의 태도는 군 제대 후 더욱 명확히 드러났습니다. 전역 직후, 자유에 취해 하루하루를 무기력하게 흘려보내던 저는 문득 '이렇게 놀기만 해도 괜찮은 걸까?'라는 생각이 들었습니다. 그 순간, 고민 없이 SDI 산하 기업의 계약직에 지원해 출근을 시작했고, 출퇴근에만 왕복 세 시간이 소요되는 환경에서도 포기하지 않고 근처 헬스장을 들르고, 자격증 공부까지 병행해 컴퓨터활용능력 1급을 취득했습니다. 그렇게 4개월간 루틴을 만들어가며 저는 ‘결심하면 몰입하는 사람’이라는 저 자신을 새롭게 발견하게 되었습니다.
이후에도 매일 아침 6시에 기상해 운동하고, 공부하고, 새로운 도전을 이어나가고 있습니다. 최근에는 제 취미를 생산적으로 활용해보고 싶다는 생각에 유튜브 쇼츠 제작을 시작했습니다. 3주간 매일 영상을 올리며 쌓은 성과는 구독자 331명, 총 조회수 48.6만 회, 시청 시간 2,652시간이라는 숫자로 돌아왔고, 이는 다시 제게 큰 원동력이 되고 있습니다.
이처럼 저는 작고 사소한 실천이라도 ‘일단 해보는 것’에서 모든 변화가 시작된다고 믿습니다. 이는 동아리 활동에서도 마찬가지였습니다. 저는 ‘멋쟁이사자처럼’ 동아리에서 부원으로 시작해, 1년 후 프론트엔드 트랙장으로 활동하며 15명의 부원을 이끌었습니다. 개발 관련 질문을 받으며 문제 해결 능력을 키웠지만, 그보다 더 중요했던 것은 협업과 소통의 중요성이었습니다. 초기에는 백엔드 트랙과의 소통 부재, 해커톤 준비 중 비효율적인 회의 방식 등으로 프로젝트 완성도가 떨어졌습니다. 이를 해결하고자 운영진 간 회식을 기획하고, 축제 부스 안내 프로젝트를 주도했으며, 스크럼 회의를 도입해 프로젝트의 집중도를 높였습니다.
그 결과, 팀원 간의 소통이 활발해지고, 해커톤 프로젝트 또한 높은 완성도로 마무리할 수 있었습니다. 이 경험을 통해 좋은 개발자란 단순히 기술력이 아닌, 팀 전체의 성과를 함께 만들어가는 사람이라는 것을 배웠습니다.
앞으로도 저는 꾸준한 루틴과 작은 실천을 바탕으로, 팀과 함께 성장하는 개발자가 되겠습니다.
성취 경험
저는 기술 도전과 사용자 경험 개선이라는 두 키워드를 중심으로 성과를 쌓아왔습니다. React Native 기반 앱 Polingo를 개발하며 Google 로그인 실패 문제를 expo-auth-session 도입으로 해결해 실패율 0%를 달성했고, 뉴스 화면의 7초 로딩 문제는 React Query 캐싱으로 0.1초로 개선해 논문대회 은상을 수상했습니다.
또한, Keupang 프로젝트에서는 LCP 핵심 이미지에 fetchpriority를 적용하고 AVIF 포맷으로 전환해 성능을 27% 개선했으며, SEO 점수를 82점에서 100점으로 향상시켰습니다. GitHub Actions 기반 CI/CD와 Slack 연동으로 배포 안정성과 협업 효율도 함께 끌어올렸습니다.
두 경험 모두 문제 해결력과 사용자 중심 사고를 함께 기를 수 있었던 계기였고, 지금의 저를 만든 소중한 도전이었습니다.
대외활동
2024 한국정보기술학회 학술대회 Polingo 논문 발표
한국정보기술학회
2024
발표 주제: 다중 입력 기반 통합 번역 및 학습 플랫폼 Polingo 구축 및 시스템 설계
성과: 학술대회에서 은상 수상
멋쟁이사자처럼 11기
멋쟁이사자처럼
2022
역할: 프론트엔드 트랙장 및 해커톤 팀장
주요 활동:
총 두 번의 해커톤에서 팀장으로 프로젝트를 주도하며 팀원들과 협업
프로젝트 관리 및 팀원 간 의견 조율을 통해 효율적인 개발 환경 조성
프론트엔드 관련 지식을 공유하며 팀원들의 성장을 지원
성과:
팀 프로젝트를 성공적으로 완수하며 팀워크와 리더십 강화
갈등 해결 및 협업 경험을 통해 조직 내 소통 능력 향상
멋쟁이사자처럼 10기
멋쟁이사자처럼
2021
역할: 프론트엔드 트랙 부원 (아기사자)
주요 활동:
기본적인 프론트엔드 지식 습득 및 실전 적용
총 3번의 해커톤에 참가하여 팀 프로젝트 경험 축적
HTML, CSS, JavaScript와 같은 기초 기술에서 React와 같은 실무 기술까지 학습 및 적용
성과:
해커톤 참여를 통해 실력을 단기간에 비약적으로 향상
협업 기반 프로젝트 경험을 통해 실무 감각과 팀워크 강화
교육
금오공과대학교
대학교(학사) | 컴퓨터공학과
2019.03. ~ 현재 | 재학 중
언양고등학교
고등학교
2016.03. ~ 2019.02. | 졸업
자격증
정보처리기사
기사 | 한국산업인력공단
2024.09.
컴퓨터활용능력
1급 | 대한상공회의소
2022.02.