2023.11 ~ 2024.06
Tech | 사용기술 | JavaScript, Three.js, npm |
---|---|---|
배포 | Npm | |
담당업무 | 3D-veiwer 라이브러리 개발 | 이슈 및 목표 |
• 사내 프로젝트 Polyground의 마케팅을 위한 프로젝트 | ||
• Polyground에 3D viewer 미리보기 기능 제공 | ||
전략 | ||
• Three.js 공식문서 참고 | ||
• 기존 3D viewer의 github 코드 분석 (https://modelviewer.dev ) | ||
성과 (기여도 100%) | ||
• Npm 라이브러리 등록 및 오픈소스 기여 | ||
****• 웹 브라우저에서 3D 뷰어를 렌더링 할수 있는 간편한 Script 제공 | ||
• 프레임워크 상관없이 javascript를 통해 웹에 적용 가능 | ||
****• 3D 모델 파일 적용 기능 제공 (Glb, Obj, Fbx 파일 지원) | ||
• 3D 모델의 색상변경 기능 제공 ( 16진수 색상 코드를 허용) | ||
• 3D 모델의 자동 회전을 활성화기능 제공 (Auto Rotate on/off 가능) | ||
• 3D 모델 브라우저 다운로드 Progress 표시기능 (on/off 가능) | ||
Tech | 사용기술 | React + Typescript, Zustand ,React-Query, styled-Components |
---|---|---|
디자인 패턴, 아키텍처 | Layered Architecture | |
배포 | Jenkins | |
담당업무 | PC 웹 서비스 페이지 개발 | |
Axios 인터셉터 구현 | 이슈 및 목표 | |
• 서비스 이용중에 Token 유효기간 만료 시 로그인이 풀리는 현상 이슈 수정 요청 | ||
전략 | ||
• 403 Error 발생시 기존 토큰을 사용하여 새로운 토큰을 요청 및 저장하는 Axios 인터셉터를 구현 | ||
• 토큰이 필요한 API 요청 시 커스텀 Axios 인스턴스의 메소드를 사용하도록 함 | ||
성과 (기여도 100%) | ||
콜백으로 Error 핸들링하는 로직을 제거하여 중복 코드를 Axios 인터셉터 통해 1500 line 이상 제거 | ||
레이어드 아키텍처 적용, | ||
Typescript 리펙토링 | 이슈 및 목표 | |
• Typescript의 type 미지정 코드가 많아 가독성이 떨어지고 코드 안정성이 떨어짐 | ||
• 컴포넌트 간에 일관성 있는 데이터 전달과 유지보수 시간 단축 | ||
전략 | ||
• 레이어드 아키텍처를 적용하여 Data, Domain, Application 레이어로 분리 | ||
• 스타트업 특성상 자주 변경되는 서버 데이터의 유연한 대응을 하기위해 아래 방법을 도입 | ||
Data 레이어 |
• API를 요청하는 **API Function** 정의
• Swagger를 참고하여 **Entity**라는 이름으로 API Function의 Return Type지정
Domain 레이어
• 컴포넌트에서 필요로하는 데이터 Interface를 Model이라는 이름으로 생성
• Entity를 Model로 변환하는 Mapper Function ****정의
Application 레이어
• 컴포넌트 및 Hook, router, 상태관리 정의
• 컴포넌트에서 API Function 호출 후 응답값을 Mapper를 통해 Model을 만들어 사용
성과 (기여도 50%)
• 서버에서 내려주는 데이터가 변경되어도 Entity, Mapper 수정작업만 하면
컴포넌트 코드 수정없이 유지보수 가능 (기존대비 15분 이상 단축) |
| | Frond-end 페이지 문서화 | 이슈 및 목표
• 본회사에 입사 후 FE 인원이 2명으로 늘어남
• 온보딩 및 인수인계를 받으면서 초기 입사자 관점에서 문서 작성
• FE 협업을 위한 노션 문서화
전략
• 브랜치 관리, 배포방법, Node 버전, PR문서 작성법, Css style 컨벤션 문서화
• 화면 정책 생성 및 업데이트시, 실무진 협의시 항상 문서화 하도록 함
성과 (기여도 80%)
• 신규 입사자 온보딩시 불필요한 리소스 감소
• 언제든 히스토리를 파악할 수 있어 협업자 간의 소통 이슈가 없어짐 |
| | 마이 페이지 구현 | 이슈 및 목표
• 구매한 3D 모델을 확인 및 다운로드 받을 수 있는 페이지 개발
• 사내 디자이너 퇴사
• 3D 모델 파일 다운로드 API 보안 이슈
전략
• 사내 요구사항과 경쟁사 사이트 마이페이지 레퍼런스 참고하여 직접 디자인 기획 후 UI 구현
• 3D 모델 파일 다운로드 API URL에 일회성 데이터를 삽입하도록 함
• 일회성 데이터를 API를 통해 구매여부 판단 후 전달 받음
• *document*.createElement
를 통해 가상 a태그 생성
• link.herf
에 완성된 3D 모델 파일 다운로드 API URL 삽입 후 link.click()
실행
성과 (기여도 100%)
• 사용자 고용량의 3D 모델 파일을 다운받을 수 있다.
• 일회성 다운로드 URL을 사용하므로 보안성 확보 |
| | 신규 리뉴얼 디자인 적용 | 이슈 및 목표
• 외주 디자이너와 협업을 통해 모든 페이지 신규 디자인으로 적용
• 모바일, 테블릿, PC 를 기준으로 서비스 모든 페이지 반응형 디자인 적용
전략
• FE 작업자(총 2명) 협업시 코드 충돌을 방지하기 위해 Atomic 디자인 패턴 적용
• 페이지별 필요한 atoms, molecules, organism, template를 사전 협의 후 문서 작성
문제 발생
• 3달의 작업시간이 6주로 변경 (사내 이슈로 협의 불가능한 기간)
문제 해결 (기여도 50%)
• 기존 비즈니스 로직을 최대한 살리고, 페이지를 나눠 작업하는 방향을 전략 수정
• 페이지 컴포넌트 먼저 생성 후 두번이상 사용되는 공용컴포넌트만 Atomic 디자인 패턴에 맞춰 적용
• 페이지 UI 구현시 최대한 반응형과 동시에 작업
성과
• 6주의 시간안에 모든 페이지 신규디자인 및 반응형 다자인 구현 완료 |
Tech | 사용기술 | React + Typescript, Zustand, React-Query, styled-Components |
---|---|---|
디자인 패턴, 아키텍처 | Layered Architecture | |
배포 | Jenkins | |
담당업무 | **백오피스 신규 개발을 위한 | |
신규 아키텍처 적용** | 이슈 및 목표 | |
• Admin 서비스 신규 생성 | ||
• 유지보수가 편한 신규 아키텍처 적용 | ||
• 반복되는 UI 영역을 공용컴포넌트로 구현 | ||
전략 | ||
• 관련부서와 협업하여 직접 요구사항 분석 및 UI 기획 | ||
• 레이어드 아키텍처와 React-Query 와 Zustand를 사용하여 신규 아케텍처 적용 | ||
Store 레이어 |
• React-Query 함수 정의
• Zustand Store 정의
Business 레이어
• React의 hook 기능을 사용하여 ViewModel 생성
****• React-Query를 호출하고 Zustand Store에 업데이트하는 방식
• Zustand Store에 저장된 데이터를 반환
Component 레이어
• ****Business 레이어의 ViewModel을 사용하여 UI 컴포넌트에 데이터를 전달
ex) const { tagId, generalList, onSubmit} = useAssetEditVM();
• React-Hook-Form을 사용하여 공용 컴포넌트 구현 및 적용
• MUI의 DataGrid를 사용하여 리스트 공용 컴포넌트 구현 및 적용
성과 (기여도 50%)
• 공용컴포넌트 개발로 신규 개발 속도 향상
• React-Query로 불필요한 API 요청 감소 및 렌더링 속도 향상
• UI 컴포넌트와 비즈니스 로직 코드 분리로 가독성 향상 |
2022.03 ~ 2023.09
[ 참여 인원 : FE 5, BE 8, QA 2, PM 2, UI/UX 디자이너 1 ]
Tech | 사용기술 | React + Typescript, Mobx, styled-Components |
---|---|---|
디자인 패턴, 아키텍처 | MVVM 패턴,Layered Architecture | |
배포 | Jenkins | |
담당업무 | 모바일/PC 웹 서비스 페이지 개발 및 유지보수 | |
Analytics 연동 | 이슈 및 목표 | |
• 사용자 행동 데이터 분석을 위한 **GA4 / GTM 웹 서비스 연동 | ||
**전략 | ||
****• 마케팅팀과 협업하여 필요한 데이터 추출 여부 확인 | ||
• Google Tag Maneger 초기 세팅 코드 적용 | ||
• 컴포넌트에서 필요한 데이터를 가공, Google Tag Maneger를 통해 필요한 데이터를 전달 | ||
성과 (기여도 30%) | ||
**• 프로모션 페이지 진입 사용자 데이터 분석 가능 | ||
주소검색 모듈 구현 | 이슈 및 목표 | |
• Daum API 주소 서버 화재 발생 | ||
• 일정 기간 고객이 배송지 주소를 입력 못하는 상황이 발생 | ||
전략 | ||
• 행정안전부 API 사용 | ||
• Dependency Injection 을 활용한 주입식 주소 모듈 구현 | ||
• 기존 주소입력창이 제공하는 기능을 모두 재현 | ||
성과 (기여도 100%) | ||
• Daum API 주소 서버 이슈가 발생하더라도 행정안전부 API 주소 모듈로 변경하여 | ||
주소모듈 이슈 대응 가능해짐 | ||
상품 다중 옵션 선택 기능 개발 | 이슈 및 목표 | |
• LIFE 카테고리 신설로 인해 기존 color, size 고정된 옵션이 아닌 관리자가 지정한 옵션 만큼 | ||
설정이 가능해야함 | ||
전략 | ||
• MD 팀, 디자인팀 과 협의를 통해 명확한 요구사항 도출 | ||
• 상품 상세페이지 신규 디자인 적용 | ||
• 다중 옵션 선택 UI 반응형 디자인 구현 | ||
성과 (기여도 50%) | ||
• 다중 옵션 기능 개발을 통해 구성요소 옵션이 가능해져 핸드폰케이스 , 세트 상품 등 신규 카테고리 상품 판매 가능 | ||
신규 디자인 적용 (모바일 / PC) | 이슈 및 목표 | |
• 전체 페이지 신규 리뉴얼 디자인 구현 | ||
전략 | ||
• Figma를 통한 디자인팀과 협업 | ||
• 프론트 개발자 4명과 협업 | ||
• 페이지별 파트 분리하여 작업 | ||
성과 (기여도 25%) | ||
• 상품 상세 페이지, 브랜드 상세 페이지, 프리오더 목록/상세 페이지, 장바구니, 결제페이지 구현 |
[ 참여 인원 : FE 5, BE 8, QA 2, PM 2 ]
Tech | 사용기술 | React + Typescript, Mobx, Ant-Design, styled-Components |
---|---|---|
디자인 패턴, 아키텍처 | MVVM 패턴, ,Layered Architecture | |
배포 | Jenkins | |
담당업무 | 백오피스 시스템 개발 및 유지보수 | **** |
쿠폰/ 포인트 관리기능 이관 및 고도화 작업 | 이슈 및 목표 | |
• 레거시 쿠폰/포인트 기능을 3.0 신규 백오피스로 이관 | ||
• 운영자는 쿠폰을 발급하여 특정 유저에게 지급 할 수 있다. | ||
• 운영자는 특정사용자에게 포인트를 지급 및 회수 할 수 있다. | ||
전략 | ||
• 쿠폰/ 포인트 정책 관련 사업부와 협업하여 요구사항 문서 정리 | ||
• 쿠폰 지급방식 선택, 발급대상선택, 대상 상품 선택, 프로모션 코드 생성 기능 개발 | ||
• 포인트 지급 대상 선택을 위한 유저검색시 추천 검색기능 구현 | ||
• 생성될 쿠폰의 미리보기 기능 개발 | ||
• 엑셀을 통한 다중 쿠폰 등록, 다중 포인트 지급/ 회수 기능 개발 | ||
성과 (기여도 100%) | ||
• 연 1066회 쿠폰 생성 10만회 이상 포인트 지급 | ||
교환/ 반품 관리기능 이관 및 고도화 작업 | 이슈 및 목표 | |
• 레거시 교환/ 반품 관리기능을 3.0 신규 백오피스로 이관 | ||
• CX팀의 업무 처리 시간 개선 | ||
전략 | ||
• CX팀의 요구사항 협의 | ||
◦ 교환/ 반품 접수, 완료, 철회, 재출고 사용 상태별 히스토리 누적 페이지 개발 | ||
◦ 엑셀 다운로드 기능 , 일관 주문상태 변경 기능 개발 | ||
성과 (기여도 100%) | ||
◦ 교환/반품건 마다 반복된 엑셀 작업이 생략되어 CX팀 업무 처리시간 개선됨 | ||
◦ 신규 백오피스 이관 후 S3 서버 관리 비용 감소 |