미리보기
기본 정보
기획부터 개발, 배포, 운영까지 실제 서비스를 구축하고 개선해본 경험이 있습니다. • React와 Next.js, TypeScript를 활용해 다수의 토이 프로젝트를 개발한 경험이 있습니다. • AWS S3, CloudFront(CDN), Lambda 를 활용한 정적 및 동적 리소스 배포 경험이 있습니다. • 사용자 피드백을 기반으로 지속적인 개선 작업을 진행하며, 서비스를 최적화하고 있습니다.
기술 스택
React, Next.js, TypeScript, JavaScript, redux-toolkit, react-query, zustand, styled-components, AWS
자기소개
다양한 프로젝트를 진행하며 겪은 기술적 어려움과 해결 경험을 개인 블로그에 자세히 기록하여 정리하고 있습니다.
이를 통해 배운 내용을 체계적으로 정리하여, 다른 개발자들과 공유할 수 있도록 노력하고 있습니다.
프로젝트
잇핏
개인
2024.09. ~ 진행 중
매일 식단과 운동을 기록하며 맞춤형 체중 관리를 도와주는 애플리케이션 개발
깃허브 : https://github.com/uudeok/eat-fit
배포URL : https://eat-fit.net
Frontend: Next.js, TypeScript, Tanstack Query, Zustand
Backend: Supabase
Deployment: AWS S3, CloudFront, Route53, Lambda, API Gateway, ACM
Next.js 서버리스 배포 및 CI/CD 구현 (AWS Next.js 도식화 첨부)
S3, CloudFront, Lambda 를 활용해 서버리스 아키텍처 구현
GitHub 코드 푸시 이벤트 발생 시 CodePipeline이 자동으로 빌드 및 배포 프로세스를 자동화
수동 배포에서 자동화 배포로 전환하여 안정적이고 일관된 배포 환경을 구축
개발 생산성 향상을 위한 테스트 도구 제작
특정 단계를 테스트하거나 디버깅할 때의 비효율성을 해결하기 위한 도구 개발
Mermaid.js 를 활용해 단계별 흐름을 시각적으로 나타내고 각 단계를 클릭으로 이동할 수 있도록 하여 직관적이고 빠른 테스트와 디버깅 가능
개발 모드에서 테스트 및 탐색 과정을 단축시켜 개발 생산성을 크게 향상
브라우저 저장소(로컬,세션, 쿠키) 통합 인터페이스 설계
로컬스토리지, 세션스토리지, 쿠키 등 저장소마다 각기 다른 방식으로 데이터를 관리해야 하는 어려움
공통 로직을 추상화하고, 세부 구현은 내부에서 처리하도록 통합된 인터페이스 설계
팩토리 패턴을 사용해 저장소 객체를 중앙에서 관리, useCache 훅을 도입하여 데이터 호출을 간편하게 처리
Fetch API 커스터마이징을 통한 반복 작업 최소화
Next.js 의 캐싱 기능을 활용하기 위해 Fetch API 를 사용하여 네트워크 요청 수행
매번 URL, 헤더 설정 및 에러 처리 등의 반복 작업이 동반돼 코드 중복과 관리의 어려움 발생
Fetch API를 인스턴스화하여 공통 설정을 사전 정의하고, 요청/응답 인터셉터를 구현하여 공통 로직 처리 및 에러 핸들링을 중앙에서 관리
커스터마이징된 Fetch 도입 후 중복 코드를 약 40% 감소시켜 코드의 가독성과 유지보수성 향상
서버-클라이언트 결합도를 줄이기 위한 데이터 처리 구조 개선
Supabase를 이용한 백엔드 작업 중, Supabase 호출 로직이 클라이언트에 작성되어 서버-클라이언트 간 높은 결합도가 문제로 발견됨
Next.js Route Handler 로 서버 호출 로직을 서버측으로 이동시켜, 클라이언트 코드와 서버 변경 간 영향을 최소화하도록 구조를 개선
서버 응답 데이터를 클라이언트 요구 사항에 맞게 변환하는 계층을 도입해 클라이언트가 독립적인 데이터 구조를 확보하고 UI 로직과 서버 구조의 변경 간 영향을 최소화
실시간 에러 알림 시스템 구축
Nodemailer 를 활용한 메일 기반의 실시간 에러 알림 시스템 구축
에러 발생 시 상세 로그를 실시간으로 메일로 전송하여 즉각적인 대응 가능
먹기록
개인
2024.05. ~ 2024.08.
카카오 맵 API 를 활용한 위치 기반 음식점 조회, 리뷰 작성 및 팔로워 기반 커뮤니티 사이트 개발
깃허브 : https://github.com/uudeok/omuk
배포URL : https://omuk-beta.vercel.app
Frontend: Next.js, TypeScript, Tanstack Query, Zustand
Backend: Supabase
Deployment: Vercel
SEO 최적화
구조화된 데이터 개선으로 사용자 노출 확대
동적 메타데이터 적용으로 페이지별 이미지(openGraph) 최적화
사이트맵 개선, robots.txt 적용으로 검색엔진 최적화 강화
Lighthouse 90 점 이상을 유지하며, 구글 및 네이버 검색 결과 1페이지 상단에 노출 성과 달성
성능 최적화를 위한 노력
Next/Image 사용, Link 태그를 사용한 prefetch 로 페이지 로드 시간 단축
Dynamic Import로 코드 스플리팅으로 초기 로딩 성능 개선
이미지 사이즈 최적화를 통한 이미지 업로드 속도 개선 (용량 15MB->1MB, 업로드 시간 3초->1초대 단축)
UI/UX 개선
Tanstack-Query 활용한 Optimistic UI 적용으로 좋아요 및 북마크 기능에 즉각적인 사용자 피드백 제공
콘텐츠 로딩 시 Skeleton UI 도입으로 데이터 로딩 상태를 직관적으로 표현하여 사용자 경험 향상
자연치유 쉼
개인
2023.09. ~ 2023.12.
1인이 운영하는 가게를 위한 예약 서비스를 제공하는 사이트 개발
깃허브 : https://github.com/uudeok/massage-booking-front
Frontend: React, TypeScript, Redux-Toolkit, RTK-Query, Styled-Components
Deployment: AWS S3, CloudFront, Route53, ACM
CI/CD : AWS CodePipeline, CodeBuild
CI/CD 자동화 배포 구현 (React CI/CD 도식화 파일 첨부)
AWS S3와 CloudFront를 활용한 빠르고 안정적인 정적 리소스 배포
GitHub 코드 푸시 시 CodePipeline이 자동으로 감지하여 빌드 및 배포 프로세스를 자동화
수동 배포에서 자동화 배포로 전환하여 일관된 배포 환경 조성
Redux Toolkit 및 RTK-Query 도입으로 API와 전역 상태 관리 통합
Redux Toolkit과 RTK-Query의 효율적인 API 관리와 상태 관리를 통합해 개발 속도 향상
미들웨어를 통해 네트워크 에러를 중앙에서 감지 및 처리하여 전역적인 에러 관리 구현