Enterprise System 삼성엔지니어링
삼성엔지니어링 EDP
엔지니어링 데이터 플랫폼 구축
엔지니어링 데이터를 통합 관리하는 업무 플랫폼
- 기간
- 2021.10–2022.01
- 역할
- Frontend Developer

At a glance
30초 안에 보는 프로젝트
엔지니어링 전 주기 데이터를 통합 관리하고 협업 효율을 극대화하는 엔터프라이즈 플랫폼을 구축했습니다.
- 클라이언트
- 삼성엔지니어링
- 기간
- 2021.10–2022.01
- 담당
- Frontend Developer
- 기술
- React, Redux Toolkit, TypeScript, Axios
Problem
해결해야 했던 문제
복잡한 엔지니어링 업무 화면과 데이터 흐름을 이해하고 사내 API와 연결해야 했습니다.
Ownership
내가 맡은 범위
React 함수형 컴포넌트와 Hooks 기반으로 업무 화면, 공통 컴포넌트와 API 연동을 구현했습니다.
Outcome
만들어 낸 결과
React 기반 엔터프라이즈 업무 시스템을 구축하며 복잡한 데이터 중심 화면의 구현 경험을 확보했습니다.
01 · Problem
문제와 프로젝트 제약
복잡한 엔지니어링 업무 화면과 데이터 흐름을 이해하고 사내 API와 연결해야 했습니다.
삼성엔지니어링의 글로벌 프로젝트 수행을 위한 엔지니어링 데이터를 통합 관리하고, 표준화와 재사용을 통해 생산성을 끌어올리는 EDP 플랫폼을 구축했습니다.
설계·문서·자재·변경이력을 단일 플랫폼으로 연결해 데이터 기반 의사결정과 협업 효율을 높였습니다.
React + Redux Toolkit 기반으로 도메인별 모듈을 분리해 신규 기능 추가와 유지보수성을 함께 확보했습니다.
02 · Ownership
역할과 책임 범위
React 함수형 컴포넌트와 Hooks 기반으로 업무 화면, 공통 컴포넌트와 API 연동을 구현했습니다.
Frontend Developer
- 프론트엔드 개발
- 공통 컴포넌트
- 주요 모듈 프론트엔드 개발
03 · Decisions
기술적 판단과 트레이드오프
반복되는 업무 UI를 공통 컴포넌트로 분리하고 데이터 흐름에 맞춰 화면 상태와 API 연동 경계를 정리했습니다.
useInfiniteScroll Hook 추출
IntersectionObserver 기반 무한 스크롤 로직을 Hook으로 분리. 페이지·테이블 양쪽에서 재사용하고 옵저버 해제도 자동 처리해 메모리 누수를 차단.
Redux Toolkit 슬라이스 도메인별 분리
프로젝트·문서·자재 등 도메인 단위로 슬라이스를 분리. 신규 모듈을 추가할 때 다른 도메인에 영향 없이 확장 가능한 구조 확보.
createAsyncThunk 비동기 흐름 표준화
API 요청의 pending/fulfilled/rejected 상태를 RTK 상태 머신으로 일관 처리. 로딩·에러 UX를 화면 단위에서 동일하게 적용.
04 · Evidence
구현 범위와 코드 근거
화면 구현에 그치지 않고 상태, 데이터 흐름, 재사용 경계를 함께 설계했습니다.
구현한 작업
- 공통 컴포넌트 작업 — 재사용 가능한 UI 컴포넌트 라이브러리 구축
- Redux Toolkit 기반 모듈화된 상태 관리 — 도메인별 슬라이스 분리로 확장성 확보
- IntersectionObserver 기반 무한 스크롤 Hook 으로 대용량 리스트 렌더 최적화
- createAsyncThunk + RTK 상태 머신으로 중복 요청·메모리 누수 차단
- React.memo / useMemo 로 리렌더 최소화 및 대용량 데이터 처리 최적화
// hooks/useInfiniteScroll.ts — IntersectionObserver 기반 무한 스크롤 (React + RTK)
import { useEffect, useRef } from "react";
import { useAppDispatch, useAppSelector } from "@/store/hooks";
import { fetchPage, selectInfinite } from "@/store/itemsSlice";
export function useInfiniteScroll() {
const sentinelRef = useRef<HTMLDivElement>(null);
const dispatch = useAppDispatch();
const { loading, done, page } = useAppSelector(selectInfinite);
useEffect(() => {
if (!sentinelRef.current) return;
// 센티넬 진입 시에만 dispatch — 스크롤 이벤트 대신 옵저버로 리렌더 부하 최소화
const observer = new IntersectionObserver(
([entry]) => {
if (entry.isIntersecting && !loading && !done) {
dispatch(fetchPage(page));
}
},
{ rootMargin: "200px" }
);
observer.observe(sentinelRef.current);
// 언마운트 시 옵저버 해제 — DOM 분리 후에도 살아남는 메모리 누수 차단
return () => observer.disconnect();
}, [dispatch, loading, done, page]);
return sentinelRef;
}포트폴리오 설명을 위해 NDA 범위 안에서 재구성한 코드 예시입니다. 실제 저장소 원문이나 고객사 기밀 정보는 포함하지 않았습니다.
05 · Outcome
결과와 확인 가능한 근거
React 기반 엔터프라이즈 업무 시스템을 구축하며 복잡한 데이터 중심 화면의 구현 경험을 확보했습니다.
- React 함수형 컴포넌트·Hooks
- 공통 컴포넌트와 API 연동
- 사내 시스템 구축
- 초기 진입 페이지 렌더 시간 단축 (대용량 리스트 가상화 + 무한 스크롤)
- Redux Toolkit 슬라이스 표준화로 신규 모듈 추가 시 개발 속도 향상
- 공통 컴포넌트 재사용률 향상으로 화면 구현 시간 단축
06 · Screens
주요 화면
각 화면을 선택하면 구현 결과를 더 크게 확인할 수 있습니다.
07 · Workflow
협업 흐름
요구사항을 구현 가능한 단위로 바꾸고, 운영 피드백까지 연결한 협업 과정입니다.
요구사항 접수
고객사로부터 업무를 인입받아 기획자가 디자이너와 협의해 화면·기능 초안을 작성합니다.
Figma 핸드오프
기획·디자인 결과물을 컴포넌트 단위 구조로 분해하고 공통 컴포넌트와 페이지 전용을 구분해 구현 가능한 형태로 재해석합니다.
화면 구현 (단독)
화면 전반을 단독으로 구현. 공통 컴포넌트 설계, 상태 관리 구조 결정, 라우팅·인터랙션 처리까지 책임.
API 연동
백엔드 개발자가 작성한 API 스펙을 인터셉터·에러 핸들링·로딩 상태와 함께 연결합니다.
운영·피드백 반영
QA·운영 단계의 이슈를 분석하고 화면·구조 개선안을 제안·반영합니다.