CI/CD 배포 경험
GitHub Actions, GitHub Pages, Vercel, Render, Cloudflare Pages 흐름을 프로젝트 성격에 맞게 정리했습니다.
CI/CD · Data Pipeline · Full-stack Portfolio
React/Vite 화면 구현, Spring Boot 비즈니스 로직, 외부 API 데이터 수집·가공, GitHub Actions 기반 자동화와 Cloudflare Pages 배포 구조까지 서비스 흐름 전체를 정리한 포트폴리오입니다.
const portfolio = {
frontend: ["React", "Vite", "SPA UI"],
backend: ["Spring Boot", "Oracle", "API"],
pipeline: ["External API", "Node ETL", "Static JSON"],
deploy: ["GitHub Actions", "Cloudflare Pages", "Vercel", "Render"]
}
focus = "data → service → deploy"
GitHub Actions, GitHub Pages, Vercel, Render, Cloudflare Pages 흐름을 프로젝트 성격에 맞게 정리했습니다.
외부 API 수집 → 정규화 → 정적 JSON 생성 → React 화면 출력까지 가벼운 ETL 흐름을 구현했습니다.
민감한 키는 GitHub Secrets/서버 환경에서 사용하고, 프론트는 가공된 데이터만 조회하도록 구성했습니다.
기능 나열보다 담당 도메인, 데이터 흐름, 오류 대응, 배포 개선 경험이 보이도록 구성했습니다.
Recommended Positioning
포트폴리오의 방향은 단순한 사이트 모음이 아니라, 외부 데이터를 가져오고, 서비스 화면으로 가공하고, 사용자 기능과 배포 자동화까지 연결한 경험을 강조하는 쪽으로 잡았습니다. 면접에서는 데이터 흐름, CI/CD 자동화, 상태 변화가 있는 비즈니스 로직을 중심으로 설명하기 좋습니다.
Selected Works
각 프로젝트마다 서비스 목적, 핵심 기능, 담당 역할, 데이터 처리 경험, CI/CD·배포 경험, 사용 기술 스택을 빠르게 읽을 수 있도록 정리했습니다.
배추, 무, 양파, 감자, 대파, 오이 가격 추이를 비교하고 Gemini 기반 AI 리포트로 가격 흐름을 요약하는 데이터 시각화 서비스입니다.
OpenDART 공시 데이터를 기반으로 상장·공모청약 일정을 검색하고 상태별로 확인할 수 있는 포트폴리오 데모입니다.
한국석유공사 오피넷 Open API 데이터를 활용해 유종과 지역별 최저가 주유소를 가격 낮은 순으로 조회하는 서비스입니다.
TMDB 기반 콘텐츠 탐색, 리뷰, 퀴즈, 출석, 포인트, 상점, 인벤토리, 관리자 기능을 연결한 영화·콘텐츠 리뷰 플랫폼입니다.
반려동물 양육 정보, 커뮤니티, 분양 게시판, 후기, 마이페이지를 통합한 JSP 기반 웹 플랫폼입니다.
CI/CD & Deployment
프로젝트 유형별로 다른 배포 전략을 사용했습니다. 정적 데이터 서비스는 GitHub Actions로 수집·빌드·배포를 자동화하고, 풀스택 프로젝트는 프론트/백엔드를 분리해 배포했습니다.
개인 데이터 프로젝트에서 외부 API를 직접 브라우저에서 호출하지 않고, Actions 워크플로가 데이터를 생성한 뒤 GitHub Pages에 배포하는 구조를 사용했습니다.
Review Tag는 React 프론트와 Spring Boot 백엔드를 분리해 배포하고, Axios 기반 API 통신 구조로 화면과 서버 기능을 연결했습니다.
PETIQUE는 JSP/Spring MVC 기반 서비스를 Render 환경에 배포해 실제 URL로 접근 가능한 웹 서비스 형태로 구성했습니다.
현재 포트폴리오는 Cloudflare Pages에 맞춰 정적 빌드 결과물, 보안 헤더, SPA 라우팅용 redirects 파일을 포함했습니다.
Data Pipeline Experience
개인 프로젝트 3개는 “외부 데이터 → 가공 → 캐싱 → 화면 출력” 흐름이 공통입니다. 복잡한 대용량 파이프라인은 아니지만, 프론트 서비스에서 필요한 데이터를 안정적으로 제공하기 위한 실전형 처리 흐름을 경험했습니다.
KAMIS, OpenDART, Opinet 데이터 요청
Node.js 스크립트로 수집·예외 처리
정렬, 필터링, 인코딩, 좌표 변환
프론트가 읽는 캐시 데이터 생성
검색, 필터, 차트, 카드 UI 출력
KAMIS 가격 데이터를 수집한 뒤 기간별 통계와 Gemini 요약 리포트를 생성해 프론트에서 조회 가능한 JSON으로 제공합니다.
OpenDART 데이터의 압축 파일과 문자 인코딩을 처리하고, 공시·청약 일정 정보를 화면에서 검색하기 쉬운 구조로 변환합니다.
Opinet 주유소 가격 데이터를 지역·유종 기준으로 정렬하고, 지도 이동에 필요한 좌표 데이터를 함께 가공합니다.
Troubleshooting
면접에서 설명하기 좋은 기술적 문제와 해결 방식을 별도 섹션으로 정리했습니다.
문제: 정적 React 사이트에서 외부 API를 직접 호출하면 API Key가 브라우저에 노출될 수 있었습니다.
해결: GitHub Actions/서버 환경에서 데이터를 수집하고, 프론트는 가공된 정적 JSON만 읽는 구조로 변경했습니다.
문제: OpenDART 데이터 처리 과정에서 ZIP 추출과 한글 인코딩 변환이 필요했습니다.
해결: adm-zip과 iconv-lite를 사용해 데이터 추출·변환 단계를 파이프라인에 포함했습니다.
문제: 분양 신청, 승인, 거절, 완료처럼 사용자 역할과 상태에 따라 버튼과 동작이 달라졌습니다.
해결: 작성자/신청자/방문자 권한과 신청 상태를 기준으로 화면 조건과 서버 처리 흐름을 분리했습니다.
Stack Map
프로젝트별 스택을 포트폴리오에서 한눈에 보이도록 영역별로 다시 묶었습니다.
컴포넌트 기반 UI, SPA 라우팅, 상태관리, API 통신, 사용자 피드백 UI를 구현했습니다.
회원/인증, 포인트, 게시판, 분양 프로세스, 관리자 기능을 서버 단에서 검증하며 구현했습니다.
외부 데이터를 수집·가공해 정적 JSON 또는 서비스 API로 제공하는 구조를 설계했습니다.
정적 사이트와 풀스택 서비스를 각각의 특성에 맞게 배포하고 자동화했습니다.
Project Flow
Spring MVC/JSP 기반 반려동물 커뮤니티에서 상태가 변하는 분양 프로세스와 Render 배포 경험을 쌓았습니다.
React + Spring Boot 구조의 팀 프로젝트에서 포인트 도메인과 프론트/백엔드 분리 배포 흐름을 담당했습니다.
농산물 가격, 공시 일정, 주유소 가격처럼 외부 데이터를 자동 수집·가공하는 React/Vite 서비스를 배포했습니다.
Contact
사용자 흐름을 끝까지 따라가며 화면, API, 데이터, 배포까지 연결하는 개발자가 되고 싶습니다. 이 포트폴리오는 Cloudflare Pages에 배포하기 쉽도록 정적 구조로 구성했고, CI/CD와 데이터 파이프라인 경험이 잘 드러나도록 정리했습니다.