소개
한 회사에서 오랜기간 연구원 직무로 일을 하면서, 웹 ERP 개발 관련 다양한 업무를 경험해보았습니다. 입사 초기에는 기획 관련 업무를 포함, 백엔드, 프론트엔드 개발 등 웹 개발의 전반적인 업무를 모두 경험 했었으며, 현재는 같은 팀에서 프론트엔드 파트장으로 프론트엔드 관련 개발 및 업무 관리를 했습니다. 현재는 프리랜서로 외부 프로젝트의 프론트엔드 업무를 진행하고 있습니다.프로젝트 내의 코드적인 문제나, 개발 환경적인 문제를 개선하기위해 꾸준히 학습하고, 실제로 적용해보려고 노력합니다. 개발은 혼자서 하는 것 보다, 함께 하는 것이 더 좋은 결과물을 낼 수 있다고 생각합니다. 이를 위해서 좋은 정보를 공유하고, 개선안을 제시하고, 함께 학습하는 것을 좋아합니다.프론트엔드코어:React
Typescript
Next.js
상태관리:React-hooks
ContextAPI
TanStack Query(React-query)
recoil
스타일:Tailwind CSS
styled-component
twin.macro
백엔드서버:Spring
DB:Tibero
Oracle
경력사항
티맥스 비아이
- 연구원 (2019.08 ~ 2024.11.06)
- 프론트엔드 개발
- 인사 ERP 개발 및 배포, 인사 관련 프론트엔드 라이브러리 개발 및 배포
회사 경험
사내 ERP 대체 프로젝트
- 2024/09/10 ~ 2024.11.06
- 개발 환경
react
react-router
react-hook-form
styled-components
- 개요: 사내 ERP 리뉴얼을 위한 사내 ERP 대체 프로젝트
- 기여: 프론트엔드 업무 분배 / 기존 라이브러리 기능 이전 및 개선 / 공통 컴포넌트 디자인 라이브러리 개발
배달공제회 인사 앱 개발
- 2023/11/27 ~ 2024/03/20
- 개발 환경
React
react-hook-form
Mobx
React-query
typescript
Gitlab
- 개요: 인사 ERP 베타 버전 개발에서 배달공제회 버전으로 분기해 개발
- 기여: 프론트엔드 업무 분배, 일정 관리 / 조직 관리 페이지 개발 /
React-query
사용방법 공유
- 성과: 배달 공제회 프론트엔드 인사 앱 배포
- 배운 점: 업무 분배 및 일정 관리에 대한 방식 학습 및 적용 / 타 팀과 협업
서울시 교육청 조직도 프론트엔드 앱 개발
- 2023/10/16 ~ 2023/12/20
- 개발 환경
React
react-hook-form
Mobx
React-query
typescript
Gitlab
- 개요: 서울시 교육청 내부 전산 시스템 기능 중 인사, 조직 관리 부분 프론트엔드 앱 개발, 타 계열사 프로젝트 기여
- 기여: 프론트엔드 업무 분배, 일정 관리 / QA 이슈 관리 / 게스트 관리 및 검색, 필터링 기능 개발
- 성과: 서울시 교육청 조직도 프론트엔드 앱 배포 및 시범서비스 운영
- 배운 점: 타 사 코드와 비교를 통한 기술 스택 숙련 / 타 프로젝트에 기여하는 방식 경험 및 소통
인사 ERP 컴포넌트 라이브러리 개발
- 2023/06/01 ~ 2024/09/10
- 개발 환경
React
typescript
styled-component
Docker
storybook
Jest
- 1인 개발
- 개요: 자사의 프론트엔드 컴포넌트, 백엔드 API 호출 repository 등을 타사에 제공을 위한 라이브러리 개발
- 기여: 프로젝트 구성 / 사용자 가이드 작성 / 사내 사설 npm 서버 배포 및 관리 / 공통 컴포넌트 및 훅 개발 / 타 계열사 라이브러리 API 연동 및 API 제공 / 테스트 구성
- 성과: 라이브러리 서버를 통해 3개의 타 계열사 요구사항 대응
- 배운 점: 라이브러리 배포 관점 이해 /
Docker
사용 숙련 및 개념 숙지 / 복잡한 훅을 flux 패턴으로 풀어나가는 방법 학습 및 적용 / 테스트 코드 작성 숙련
인사 ERP 베타 버전 설계 및 개발
- 2021/05/10 ~ 2023/05/10
- 개발 환경
백엔드:
Tibero
Spring boot
프론트엔드:
React
typescript
Mobx
React-query
typescript
- 개요: 그룹사 스펙에 맞게 인사 ERP 모듈을 다른 프론트엔드 앱 위에 SPA 앱 올리는 프로젝트
- 기여: 기획 팀과 소통을 통한 기획 보완 / 인사, 조직, 근태 백엔드 개발 / 인사, 조직, 근태 프론트엔드 개발
- 성과: 그룹사 프론트엔드 연동 대응 및 배포
- 배운 점: 기획팀과의 소통 방식 개선 /
Java
typescript
기술 스택 숙련
인사 ERP 알파 버전 React 전환
- 2021/01/01 ~ 2021/05/07
- 개발 환경
백엔드:
Tibero
Oracle
Java
Gitlab
jenkins
Jeus
Docker
프론트엔드:
React
MobX
typescript
Gitlab
WebToB
- 개요: 자사 프론트엔드 프레임워크 개발 중단에 의한 기존 프로젝트 React 전환
- 기여: DB 서버 관리 백엔드 개발 보완 / 인사, 조직 화면 React 전환 / 알파 버전 QA 대응
- 배운 점:
Docker
개념 이해 및 실사용 /React
개념 이해 및 실사용
인사 ERP 알파 버전 설계 및 개발
- 2019/08/01 ~ 2020/12/31
- 개발 환경
백엔드:
Tibero
Oracle
Java
Gitlab
jenkins
Jeus
프론트엔드:
Javascript
Gitlab
WebToB
- 개요: 자사 백엔드, 프론트엔드 프레임워크를 통한 인사 ERP 개발 프로젝트
- 기여: 경쟁사 조사를 통한 도메인 습득 / IA 작성, UI 패턴 기획 등 기획 업무 / RDB 설계 / 자사 타 제품 연동 /인사, 조직, 평가 백엔드 개발 / 인사, 조직, 평가, 시각화 차트 프론트엔드 개발
- 배운 점: RDB 설계 방식 학습 /
Java
,Javascript
언어 숙련 / 기획 업무 개괄 이해 및 참여
개인 경험
노션 연동 블로그
- 2023/06/09 ~ 2023/09/01
- 개발 환경
pnpm
vercel
next.js
react-hook-form
notion-client-api
tailwind
- 관련 링크
- 1인 개발
- 개요: notion 에서 제공하는 cilent api 를 사용해, notion 특정 형태의 notion database 에 글을 작성하고, 공개 태그를 추가하면 글이 게시되는 블로그 개발
- 기여:
next.js
기반 블로그 개발 / 각 블로그 포스트 페이지에 맞는 SEO 를 위한 sitemap 업데이트 구현
- 성과: 목적에 맞는 notion 정리 글 쉽게 웹 배포 / 총 웹 검색결과 클릭수 148회 / 검색 노출 수 1.4천 회 이상 / vercel Real Experience Score 99~100 점 유지
- 배운 점: SSR, SSG, ISG 등 다양한 렌더링 방법의 의의와 사용 방법 이해 / 기술 스택 숙련 / SEO 및 DNS 에 관한 설정 및 사용 이해
CLAON admin
- 2023/03/09 ~ 2023/06/01
- 개발 환경
Typescript
React
Next.js
React-query
React Hooks
Recoil
react-hook-form
pnpm
Github Actions
lightsail
- 관련 링크
- 개요: 암장 관리자와 강사를 위한 admin 웹 서비스 프론트엔드 개발
- 기여:
Github Actions
를 통해 아마존lightsail
에nginx
를 통해 admin 웹 서비스 자동 배포 구성 / 가입 화면 / 메인 화면 웹 페이지 기능 구현 /react-hook-form
을 통한 커스텀 form 적용
- 배운 점: 기술 스택 숙련 /
Github Actions
를 통한 CI/CD 이해 및 구축
CLAON
- 2022/04/13 ~ 2023/02/01
- 개발 환경
React-Native
Typescript
React
Next.js
React-query
Tailwind CSS
Jest
Storybook
Github Actions
firebase
- 관련 링크
- 개요: 클라이밍 특화 SNS 서비스, web view 를 통해 클라이언트 구현
- 기여: Infinite scroll 피드 형식 메인 페이지 / 게시글 작성, 암장 관리, 암장 리뷰 관리 등 대부분의 웹 페이지 기능 구현 / toast, 로딩 컴포넌트 등 공통 디자인 컴포넌트 구현 /
React-query
사용 방식 공유 및 적용
- 배운 점: Infinite scroll 구현을 위한 Web API 학습 및 적용 / 새로운 기술 공유 및 연습
개선/문제해결 사례
도메인 특화된 커스텀 hooks 를 좀 더 일반적이게 개선한 사례
✔️ 문제: 조직 트리 표현에 관한 커스텀 hooks 를 개발 및 유지 보수 중이었는데, 이는 조직 트리에만 사용하기 적합하게 되어있어, 비슷한 복잡한 로직을 또 다시 만들어야하게 되었던 사례, 또한 트리 내 검색어로 검색하는 기능은 고정된 특정 속성 (이름, 코드) 만 지원을 했지만, 기획이 변경되거나 추가되는 경우 대응하기 어려웠음
✔️ 원인: 특정 객체에만 대응이 가능하도록 코드가 작성되어, 속성이 조금이라도 달라진다면 해당 hooks 는 사용할 수 없게됨
✔️ 대안: 트리에 필수적인 속성만 추가가 되면, 나머지는 일반적이게 사용 할 수 있도록 커스터마이징
✔️ 해결
- 특정 속성만 가지면 나머지 값은 사용 가능하도록 제네릭을 가진 특정 인터페이스로 기본 객체 인터페이스 수정 및 변환 유틸 함수 추가
- 속성 값에 맞는 검색 필터 함수를 생성하는 팩토리 함수를 만들어 다양한 속성에도 검색이 가능하도록 기능 추가
✔️ 평가: 조직 트리 컴포넌트에서만 사용 가능하던 hooks 를 LNB, Dropdown 등 다른 트리 뷰가 필요한 여러 컴포넌트에서도 사용 가능하도록 변경
프론트엔드에서 백엔드 API 응답 DTO 관리 유틸 클래스 도입 사례
✔️ 문제: 백엔드 API 응답 DTO 를 사용하는 페이지는 백엔드 API 가 없거나, 백엔드 API 가 변경됨에 따라서 해당 응답을 사용하는 페이지에 버그가 생기거나, 코드를 변경해야하는 일이 잦았던 사례
✔️ 원인: 백엔드 API 응답 DTO 관련 속성을 페이지나 컴포넌트에서 바로 사용해왔어서, 응답 DTO 가 변하게 되면 페이지나 컴포넌트를 항상 직접 변경해주어야했음
✔️ 대안: 응답 DTO 를 하나의 객체로 변환하고, 속성간 selector 연산을 하는 유틸 클래스를 도입해 해당 클래스를 페이지나 컴포넌트에서 사용하도록 해 책임을 분리
✔️ 해결
- 유틸 클래스는 백엔드의 하나의 엔티티로 간주하여 프론트엔드 작업자의 합의하에 atomic 속성을 정함
- 해당 엔티티와 관련 있는 여러 응답 DTO 를 input 으로 가지는 create 함수 생성
- 이 때, input 객체는 타입 가드 함수를 통해 DTO 가 어떤 인터페이스, 타입 인지를 확인
- 기본 속성에 간단한 추가 연산으로 나오는 selector 등은
get
또는 메소드로 추가
✔️ 평가: 문제에 의한 페이지, 컴포넌트에서 나오는
Gitlab
이슈 수 약 절반으로 감소, 책임 분리로 인한 관리 용이조직의 하위 조직 인원수 계산 API 로직 개선 사례
✔️ 문제: 조직의 하위 조직 인원수 계산 API 동작이 매우 느렸던 사례
✔️ 원인: 기존 로직이 조직 트리를 BFS 로 탐색하여, 하위 조직의 인원수 부터 합산하여 계산하기 부적합해, 비효율적인 탐색을 반복했음
✔️ 대안: 탐색 로직을 DFS 로 개선하고, memo 를 통한 로직 개선
✔️ 해결
- DFS 로 노드를 탐색해 최하위 조직 노드의 인원수를 확인
- 한 노드의 child 탐색이 다 끝나면 상위 노드 인원수 카운트를 업데이트
- 총 인원수 계산은 한번의 탐색으로 완료 가능
✔️ 평가: 기존 조직 인원수 계산 로직 응답시간 1~1.5초에서 0.3~0.5초로 개선
기술
Javascript
기본적인 문법과 event loop, closure, lexical env 등 런타임 동작 원리를 이해하고 있음
React
함수형 컴포넌트 개발에 익숙하고, 재조정 과정 등 리액트의 동작 원리를 이해하고 있음, 서버 컴포넌트 등 18 버전 추가 기능을 숙지하고 있음
Typescript
기본적인 기능과 유용한 유틸리티 타입 숙지, 컴파일 방식등 언어적 특성을 이해하고 있음
Docker
기본적인 개념 숙지, 팀 내 프론트엔드 라이브러리 배포를 위한 Docker 기반 사설 서버 관리 경험이 있음
Oracle SQL
SQL 기본 문법과 connect by 등 오라클만의 특유 문법 사용 경험, RDB 테이블 설계 경험이 있음
AWS
간단한 CI/CD 구축 및 Github 연동 경험이 있음
Java
Java 기반 회사 자체 프레임워크와 Spring 활용하여 개발, REST API 개발 경험이 있음
Next.js
기본적인 사용 방법과 동작 방식을 숙지하고 있음
Spring
간단한 비즈니스 로직 구현 경험이 있음
학력
전자통신공학 학사
광운대학교 - 2012.02 ~ 2019.02
졸업 프로젝트
OpenCV 를 이용한 book spine 영상 유사도 평가
SIFT feature 와 homography 를 이용해, 책 옆면(book spine)을 이미지 검색 하는 알고리즘 개발
본 알고리즘은 총 266 권의 책과 총 2243번의 각기 다른 테스트를 통해 성능을 측정한 결과, 정확도 91%, 민감도 79% 의 성능을 가졌었습니다.