채용공고 올리기

송인성님을 응원해보세요!

지금 만족하고 있어요
성실함
책임감
협업 지향
분석적
전략적

미리보기

기본 정보

이름
송인성
직업
백엔드 개발자
간단 소개

안녕하세요. 4년간 스타트업에서 서버 개발자로 일하며 다양한 경험을 쌓았습니다. ChatGPT 출시 이후 업무 방식이 크게 변화했고, 현재는 CS와 인프라 학습에 집중하고 있습니다. 제한된 자원으로 최대 output을 내야 하는 스타트업 환경에서 백엔드 개발뿐 아니라 기획, 제품 개발, 직원 관리까지 폭넓은 경험을 쌓았습니다. 주요 기술 스택으로 Node.js, 다양한 데이터베이스, Docker, AWS 등을 다뤘습니다. 최근에는 초당 14,000건의 요청을 낮은 CPU 사용률로 처리하며 월 200만원의 인프라 비용을 절감했습니다. 앞으로도 지속적인 학습을 통해 가치 있는 개발자이자 기술 기반의 기획을 도울 수 있는 메이커로 성장하고자 합니다.

기술 스택

기술 스택

Node.js, NestJS, Docker, PostgreSQL, MariaDB, MongoDB, rabbitmq, MSA, grpc, GraphQL, TypeORM, TypeScript, Redis, AWS, Elasticsearch

경력

회사명

VENDIT

직급 | 부서 | 근무 유형

서버리드 | CMS Product

근무 기간

2022.11. ~ 2024.06. (1년 8개월)

담당 업무
  1. 재고 관리 시스템 혁신:

    • Bulk Update 기능 개발로 프론트엔드와 OTA 재고 불일치 해소

    • 실시간 재고 로그 리스트 및 일자별 조회 기능 구현으로 모니터링 효율성 향상

    • RoomType, otaKey, ProductName 레벨의 재고 컨트롤 기능 개발로 관리 유연성 증대

  2. CMS 기능 고도화:

    • Redis 기반 이벤트 정렬 알고리즘 개발로 트랜잭션 처리 속도 개선

    • Mutex lock 구현으로 트래픽 급증 시 트랜잭션 안정성 확보

    • 자동 재고 조절 데몬 프로그램 개선으로 수동 조작 필요성 감소

    • Cron Job 형태의 프로모션 기능 개발로 자동화율 향상

  3. 로그 인프라 구축:

    • ElasticSearch, Logstash, Kibana(ELK) 스택 도입으로 로그 분석 시간 단축

    • Slack 연동 실시간 알림으로 문제 대응 시간 감소

  4. OTA 예약 데이터 최적화:

    • Interval cache layer 구조로 데이터 검색 속도 향상

    • 업장별 부분 업데이트 시스템으로 전체 업데이트 대비 처리 시간 절감

    • Base64 형식 데이터 처리 최적화로 저장 공간 절약

  5. Retool 기반 Admin 시스템 구축:

    • No-code 솔루션 도입으로 Operation팀과 CX팀의 자체 문제 해결 능력 향상

    • 개발자 개입 감소로 핵심 업무 집중도 제고

  6. 스탠드얼론 기능 개발:

    • v-cloud 미사용 업장 대상 독립 기능으로 고객층 확대

    • 수동 마감 기능 도입으로 관련 VOC 감소

    • WordPress 활용 결제 모듈 신속 개발로 서비스 확장성 증대

  7. MSA 아키텍처 적용 및 API 안정화:

    • CMS 서비스 마이크로서비스화로 인프라 운영비용 절감

    • 예약 서버 이관으로 데이터베이스 CPU 부하 감소

    • 자동마감 기능 RDBMS 이관으로 가시성 개선

    • Daemon Interval 로직 구현으로 예약 LifeCycle 안정성 향상

  8. OTA 예약 동기화 및 CMS 채널 매니저 개발:

    • Microsoft Playwright 활용 웹 크롤러로 데이터 수집 정확도 향상

    • v-cloud 인터라커 퍼널 역할 구현으로 시스템 통합 효율성 개선

    • 주니어 개발자용 Boiler template 제공으로 onboarding 기간 단축

  9. MSA 및 Event-Saga 패턴 기반 시스템 이해 및 문서화:

    • NestJS, RabbitMQ 기반 아키텍처 상세 문서화로 신규 개발자 적응 기간 단축

    • Event-Saga 패턴 도입으로 서비스 간 데이터 일관성 보장

주요 총괄 성과:

  • 재고 관리 정확도 향상으로 고객 신뢰도 상승

  • 시스템 전반 안정성 유지

  • 운영 비용 절감으로 수익성 개선

  • 개발 팀 생산성 향상

  • 고객 만족도 증가로 서비스 경쟁력 강화

이러한 다각적인 시스템 개선과 신기능 개발을 통해 VENDIT의 CMS 및 OTA 연동 시스템의 성능, 안정성, 확장성을 대폭 향상시켰습니다.

이외의 자세한 내용은 <프로젝트> chapter를 확인해주세요 😀

회사명

콘텐츠홀딩스(블린튼)

직급 | 부서 | 근무 유형

프리랜서 | 서버 개발 리드

근무 기간

2022.09. ~ 2022.10. (2개월)

담당 업무

Python 스크립트를 활용한 대규모 CSV 크롤링 작업 및 인프라 구조 개선:

사용 기술 및 개발 환경:

  • Python, Django 기반 개발

  • PostgreSQL AWS RDS 구축

  • Git을 활용한 형상 관리 도입

인력 구성 및 역할:

  • 주로 독립적으로 프로젝트 수행

  • 신입 개발자들에게 기술적 지도 및 프로젝트 관리 담당

  • Git 형상 관리 구축 및 테스트 데이터베이스 환경 설정 주도

주요 업무:

  1. 데이터 크롤링 및 처리:

    • 외국 영화 사이트 데이터 크롤링 자동화 코드 개발

    • XML 포맷에서 CSV 파일 다운로드 및 PostgreSQL 테이블 형식으로 변환

  2. 데이터베이스 및 형상 관리:

    • 프로덕션 및 테스트용 데이터베이스 구축

    • Git flow 도입으로 프로젝트 형상 관리 체계화

주요 성과:

  • 회사의 기술 기반 현대화 및 데이터 관리 프로세스 효율 개선

  • 데이터 크롤링부터 데이터베이스 관리까지 전 과정 자동화

  • 데이터 접근성 및 관리 용이성 향상

  • Git 형상 관리 구축으로 프로젝트 버전 관리 및 팀 협업 개선

  • 개발 프로세스의 안정성과 효율성 향상

  • 사용자 경험 개선 및 플랫폼 전반적인 운영 효율 증가

이 프로젝트를 통해 데이터 수집 및 관리 시스템을 현대화하고, 개발 프로세스를 체계화하여 전반적인 시스템 효율성과 안정성을 크게 향상시켰습니다.

이외의 자세한 내용은 <프로젝트> chapter를 확인해주세요 😀

회사명

에이팀벤처스

직급 | 부서 | 근무 유형

백엔드 개발 | 프러덕트팀

근무 기간

2021.09. ~ 2022.09. (1년 1개월)

담당 업무

카파 프로젝트 주요 업무 및 성과 요약:

  1. 도면 annotation 시스템 구축:

    • 채팅방 내 2D/3D 도면 공유 및 어노테이션 기능 개발

    • x, y, z축 정보를 포함한 데이터베이스 설계 및 구현

    • 어노테이션 댓글 시스템 구현으로 사용자 상호작용 증진

  2. 파트너 소개페이지 데이터 구조 개선:

    • 텍스트 데이터를 JSONB 형태로 구조화하여 관리 효율성 향상

    • 데이터베이스 관계를 OneToOne에서 OneToMany로 변경, 확장성 개선

    • 비로그인 사용자의 페이지 접근 허용 및 IP 로깅 구현

  3. 회원 capabilities 업데이트 기능 개발:

    • 서비스 타입별 활성 상태 관리 기능 구현

    • 조건부 쿼리를 통한 사용자 필터링 로직 개발

    • 상태에 따른 알림 및 RFQ 수신 로직 구현

  4. 핵심 column의 interface 구조 migration:

    • 'capabilities'와 'rfqFilter' 데이터 구조 통합

    • 마이그레이션 스크립트 개발 및 실행

    • 새 구조에 맞는 쿼리 최적화

  5. 서비스 타입 통합에 따른 마이그레이션:

    • PRODUCT_DESIGN과 MECHANICAL_DESIGN을 'DESIGN'으로 통합

    • JSONB 데이터 구조 업데이트 및 마이그레이션 수행

  6. PCB 제조 ServiceType 추가:

    • 복수 detailedServiceType 지원을 위한 시스템 개선

    • JSONB 활용 복잡 데이터 구조 조회 기능 구현

  7. 회원 가입 프로세스 개선:

    • niceDnb API 연동으로 기업 정보 저장 기능 구현

    • MSA 구조의 Message Queue 시스템 도입으로 가입 절차 통합

  8. 사용자 맞춤 데이터 쿼리 API 개발:

    • 고객 및 파트너용 카테고리별 조회 API 구현

    • JSONB 형식 데이터 처리 및 동적 SQL 쿼리 생성 기능 개발

  9. Transaction Refactoring:

    • 공통 트랜잭션 모듈 함수 구현으로 코드 효율성 향상

    • 데이터베이스 메모리 누수 문제 해결

  10. 택배 시스템 API 연결:

    • 스마트 택배 API 연동으로 실시간 배송 정보 추적 기능 구현

  11. 비대면 계약 시스템 API 개발:

    • 글로싸인 API 활용 비대면 계약 기능 구현

    • 스트림 기능 활용 파일 처리 및 전송 시스템 개발

  12. Hubspot 연동 BO 데이터 트래킹 시스템 구축:

    • NestJs 기반 HubSpot 라이브러리 이식

    • 주기적 데이터 업데이트 스케줄링 시스템 구현

이러한 다양한 프로젝트를 통해 데이터베이스 설계, API 개발, 시스템 통합, 성능 최적화 등의 기술적 역량을 크게 향상시켰으며, 사용자 경험 개선과 시스템 효율성 증대에 큰 기여를 했습니다.

이외의 자세한 내용은 <프로젝트> chapter를 확인해주세요 😀

회사명

바운스코드

직급 | 부서 | 근무 유형

풀스택 개발 | 개발연구부서

근무 기간

2020.11. ~ 2021.08. (10개월)

담당 업무
  1. 자체 미스터 로그인 API 개발:

    • 클라우드 기반 로그인 인증 방식 도입

    • GraphQL 사용 accessToken과 refreshToken 발급 API 구현

    • 여러 SI 프로젝트에 적용 가능한 통합 로그인 기능 개발

  2. SI 프로젝트 (9988 헬스케어):

    • 백엔드 ERD 설계 및 API 설계 문서 작성

    • MVC 패턴에서 Resolver와 Service 분리로 코드 재사용성 개선

    • Android와 iOS 테스트 배포까지 독립적으로 수행

  3. 케어미 백엔드 설계 및 API 개발:

    • Figma 디자인 기반 백엔드 개발

    • 주간 이벤트 게시 스케줄러 개발

    • 서버 시간 조정 및 이벤트 완료 시 뱃지 부여 API 구현

  4. Eddang 부동산 정보 조회 웹:

    • Selenium 활용 웹 크롤링 모듈 개발

    • 토지 정보 HTML에서 필요 태그 정보 추출 시스템 구축

  5. 유방암 여성 환자 케어 어플리케이션 개발:

    • Node.js 기반 백엔드 기능 추가

    • React Native 사용 iOS/Android 프론트엔드 개발

    • 달력 및 일자별 이벤트 생성 기능 구현

    • GraphQL 인터페이스 활용 즐겨찾기 기능 구현

주요 성과:

  • 자체 API 설계 및 구현 능력 향상

  • 백엔드 설계부터 배포까지 독립적 프로젝트 수행 경험

  • 웹 크롤링 기술 실제 적용 경험 획득

  • 프론트엔드와 백엔드 통합 개발 능력 향상

  • 외부 API 의존도 감소 및 내부 기술력 강화

이러한 다양한 프로젝트를 통해 백엔드 개발, API 설계, 데이터베이스 관리, 웹 크롤링, 그리고 프론트엔드 개발에 이르는 폭넓은 기술 스택을 습득하고 실제 프로젝트에 적용하는 경험을 쌓았습니다. 특히 독립적인 프로젝트 수행 능력과 문제 해결 능력이 크게 향상되었습니다.

이외의 자세한 내용은 <프로젝트> chapter를 확인해주세요 😀

프로젝트

프로젝트명

프론트엔드와 OTA 재고 동기화 및 실시간 재고 관리 시스템 구축 프로젝트

소속/기관명

VENDIT

프로젝트 기간

2024.05. ~ 2024.06.

프로젝트 내용

프로젝트 배경

- 프론트엔드 화면의 재고와 OTA 재고 불일치 문제 해결 필요

- 실시간 재고 로그 관리 및 시각화 필요성 증가

- 해외 OTA API 연동을 통한 비즈니스 문제 해결 필요성

주요 성과

- 프론트엔드와 OTA 재고 불일치 문제를 해결하기 위한 Bulk Update 기능 개발 완료

- 실시간 재고 로그 리스트 기능 개발 및 구현

- 일자별 실시간 재고 로그 조회를 위한 구조 리팩토링 및 기능 개발 완료

- 해외 OTA API 연동을 통한 문제 해결 방안 기술 문서 작성 및 커뮤니케이션 수행

기술적 접근

- 프론트엔드와 OTA 재고 불일치를 해결하기 위한 Bulk Update 기능 구현

ㄴ 각 OTA와의 재고 동기화를 위한 효율적인 데이터 처리 로직 개발

- 실시간 재고 로그 리스트 기능 개발

ㄴ 실시간으로 재고 변동 상황을 모니터링할 수 있는 UI/UX 설계 및 구현

- 실시간 재고 로그를 일자별로 조회할 수 있도록 시스템 구조 리팩토링 및 기능 개발

ㄴ 일자별 로그 데이터를 효율적으로 저장 및 조회할 수 있는 데이터베이스 스키마 설계 및 최적화

- 해외 OTA API 연동을 통해 발생하는 비즈니스 문제 해결을 위한 기술 문서 작성 및 커뮤니케이션

ㄴ API 통합 및 연동 과정에서 발생하는 문제를 분석하고, 해결 방안을 기술 문서화

ㄴ 해외 OTA와의 원활한 협업을 위한 지속적인 기술 커뮤니케이션 진행

프로젝트명

VENDIT

소속/기관명

제품별 상세 재고 조절 및 트랜잭션 문제 해결을 위한 CMS 기능 고도화 프로젝트

프로젝트 기간

2024.04. ~ 2024.05.

프로젝트 내용

프로젝트 배경

- CMS를 사용하는 업장들이 제품별 세부 조절 기능을 필요로 함

- 자동 재고 조절 기능에서 발생하는 트랜잭션 문제 해결 필요성 대두

- 재고 조절 실패 사례에 대한 자동 대응 시스템 구축 필요

주요 성과

- ProductName 레벨의 제품별 프로모션 상세 기능 기획 및 개발 완료

- RoomType 및 ProductName 레벨의 트랜잭션 문제 해결

- 이벤트 정합성을 보장하는 Redis 기반의 정렬 알고리즘 개발

- 자동 재고 조절 실패 사례에 대응하기 위한 Cron Job 형태의 프로모션 기능 개발

기술적 접근

- ProductName 레벨에서 각 제품을 컨트롤할 수 있는 상세 재고 조절 기능 구현

- RoomType 및 ProductName 레벨에서 발생하는 트랜잭션 문제를 트레이싱하여 해결

ㄴ PMS(객실관리 프로그램)에서 예약 배정 시 빠른 배정으로 인한 트랜잭션 이슈를 해결하기 위해 Redis를 통한 이벤트 정렬 알고리즘 개발

ㄴ Mutex lock의 범위를 확장하여 트랜잭션 처리 안정성 확보

- 자동 재고 조절 데몬 프로그램의 이슈를 해결하기 위해 Cron Job 형태의 프로모션 기능 개발 및 구현

- 시스템 안정성을 높이고, 재고 조절의 정확성을 보장하는 데몬 프로그램 개선

프로젝트명

실시간 재고 문제 대응을 위한 ElasticSearch 로그 인프라 구축 프로젝트

소속/기관명

VENDIT

프로젝트 기간

2024.02. ~ 2024.03.

프로젝트 내용

프로젝트 배경

- CMS 특성상 실시간 재고 문제 발생 시 문제 파악의 어려움이 존재

- 실시간 문제 인지 및 해결을 위한 로그 인프라의 필요성 대두

주요 성과

- ElasticSearch 로그 인프라 구축을 통해 실시간 재고 문제 파악 및 대응 체계 마련

- ELK 스택을 활용하여 로그 데이터의 실시간 분석 및 시각화 구현

- Slack과의 연동을 통해 실시간 알림 및 문제 해결 프로세스 개선

기술적 접근

- ElasticSearch를 중심으로 한 ELK 스택(ElasticSearch, Logstash, Kibana) 구축

- CMS에서 발생하는 로그 데이터를 Logstash를 통해 수집, ElasticSearch에 저장 및 Kibana를 통해 시각화

- 실시간 로그 모니터링을 위한 Kibana 대시보드 설정 및 경고 알림 규칙 설정

- Slack과의 연동을 통해 중요한 로그 이벤트 발생 시 즉각적인 알림 제공

- 실시간 재고 문제 발생 시 문제 원인 분석 및 빠른 대응을 위한 인프라 구축

프로젝트명

VENDIT

소속/기관명

OTA 예약 데이터 효율화 및 업장별 업데이트 시스템 구축 프로젝트

프로젝트 기간

2024.02. ~ 2024.03.

프로젝트 내용

프로젝트 배경

- 업장 프로그램에 설치된 크롤링 프로그램이 각 OTA(Online Travel Agency)에서 n분 단위로 예약 데이터를 수집하여 base64 형식으로 전송

- 이미 데이터베이스에 존재하는 데이터를 검색(find)하는 과정에서 복잡한 비즈니스 로직 처리와 관련된 비용 최적화 필요

- 업장별 부분 업데이트를 위한 빠른 대응 필요성

주요 성과

- 예약 interval cache layer 구조 구축을 통해 데이터 검색 비용 최적화

- 데이터베이스 부하를 최소화한 비즈니스 로직 구현

- 업장별 부분 업데이트를 가능하게 하는 아키텍처 및 비즈니스 로직 설계 완료

- 빠른 대응을 위한 admin API 개발

기술적 접근

- 예약 데이터를 interval 형식으로 수집하고 base64 형식으로 전송하는 크롤링 프로그램 설계

- Redis를 활용한 인프라 비용과 관리 포인트 증가를 피하고, 데이터베이스를 이용하여 단일 관리 포인트 유지

- 잦은 insert와 update가 발생하는 테이블에 대해 컬럼을 해쉬화하여 select 속도를최적화하고 데이터베이스 부하를 최소화하는 방식 설계

- 업장별 부분 업데이트를 위해 관리 가능한 아키텍처와 비즈니스 로직을 설계

- 빠른 대응을 위한 admin API 개발하여 업장별 부분 배포 가능케 함

프로젝트명

내부 업무 효율화를 위한 Retool 기반 Admin 시스템 구축

소속/기관명

VENDIT

프로젝트 기간

2024.01. ~ 2024.02.

프로젝트 내용

프로젝트 배경:

- 24시간 운영 도메인으로 인한 잦은 Operation 문의 발생

- 기존 Admin 기능의 사용 복잡성 및 Legacy 지식 의존도 높음

- CX팀의 자체 문제 해결 능력 제한으로 개발자 개입 빈번

주요 성과:

- No-code 솔루션 'Retool' 도입으로 확장성 있는 Admin 페이지 전면 개선

- PMS 및 CMS 관련 Admin 기능 구현으로 운영 자동화 강화

- Operation팀과 CX팀의 자체 문제 해결 능력 대폭 향상

- 제품팀 업무 효율 최적화

- 불필요한 개발자 개입 최소화로 핵심 업무 집중도 제고

- 리소스 재배치를 통한 개발 생산성 향상

- 전사적 업무 프로세스 개선

- 부서 간 업무 요청 흐름 간소화로 전반적인 생산성 향상

- 실시간 대응 능력 강화로 고객 만족도 증대

기술적 접근:

- Silicon Valley에서 검증된 'Retool' 도구 선정 및 도입

- 사용자 친화적 인터페이스로 비개발자도 쉽게 활용 가능한 시스템 구축

프로젝트명

자동 재고 조절 기능 개발, stress test 개발

소속/기관명

VENDIT

프로젝트 기간

2023.10. ~ 2023.12.

프로젝트 내용

프로젝트 배경

- 수동 재고 조절 개발 이후 VOC 요청으로 자동 재고 조절 기준 마련 필요

- 자동 재고 조절은 기존 레거시 객실 관리 프로그램의 이벤트와 크롤링을 통해 CMS 서버로 가져오는 예약 상태 변경을 자동화하는 작업

- 레거시 코드 분석 및 이벤트 캐치 작업으로 인해 개발 기간이 두 달로 산정

주요 성과

- RoomTypeLevel, otaKeyLevel, ProductNameLevel로 재고를 컨트롤할 수 있도록 기능 개편 완료

- 휴먼 스트레스 테스트의 한계를 극복하기 위해 스트레스 테스트 코드 개발 및 내부 불안감 제거

- 트래픽 급증 시 발생하는 트랜잭션 이슈를 해결하기 위해 Mutex Lock 구현

- 레거시 제품 서비스에서 발생하는 이벤트에 대해 재고 보장을 위한 이벤트 스토어 패턴 구현

- CMS 재고 조절 반영을 위한 이벤트 매니저 구현 완료

기술적 접근

- RoomTypeLevel을 최상위로 하여 하위 레벨의 상품 재고가 RoomTypeLevel의 재고를 초과하지 않도록 테이블 설계 및 관리

- 자동 재고 조절 기능을 위해 각 레벨의 재고를 컨트롤할 수 있도록 기능 개편

- 스트레스 테스트 코드 개발 및 Staging 서버에서 테스트 수행

ㄴ 휴먼 스트레스 테스트의 한계를 극복하고 시스템의 안정성을 보장

- 트랜잭션 이슈 해결을 위해 3개의 테이블로 나누어 관리

ㄴORM에서 제공하는 트랜잭션 옵션을 보완하기 위해 Mutex Lock 구현

ㄴ각 테이블의 정합성을 유지하도록 설계

- 레거시 제품 서비스에서 발생하는 다양한 이벤트를 CMS 재고 조절에 반영하기 위한 이벤트 매니저 구현

ㄴ예약 배정, 예약 취소 등 모든 이벤트를 CMS에 동기화하여 재고 변경 반영

프로젝트명

CMS 기존 유저가 아니더라도 CMS를 사용할 수 있는 standAlone 유저 기능 개발

소속/기관명

VENDIT

프로젝트 기간

2023.08. ~ 2023.09.

프로젝트 내용

프로젝트 설명:

백엔드 시스템에서 v-cloud를 사용하지 않는 업장을 위한 스탠드얼론 기능과 CMS 스탠드얼론 API 및 DB 구성을 개발했습니다. 수동 마감 기능을 제공하여 기존 CMS 자동마감 기능의 문제점을 보완하고, 재고 조절을 위한 백엔드 기능을 개발했습니다.

레거시 코드 리팩토링:

- 수동 마감 기능: CMS 자동마감 기능에서 발생하는 VOC를 해결하기 위해 수동 마감 기능을 도입하고, 재고 조절을 위한 백엔드 기능을 개발했습니다.

- 백엔드 기능 개발: v-cloud를 사용하지 않는 업장을 위한 스탠드얼론 기능을 제공하여, 데이터 관리의 유연성을 높였습니다.

- API 작업 및 DB 구성: CMS 스탠드얼론 API 작업과 데이터베이스 구성을 통해 시스템의 안정성을 강화했습니다.

- 데이터 처리 개선: Redis를 활용하여 데이터 체크 로직을 개선하고, 해시 기능을 고도화하여 데이터 처리의 효율성을 높였습니다.

- 스탠드 얼론 유저에서 마이그레이션시 발생하는 여러 api 개발보다, 기존 유저들처럼 데이터가 뒷 단에서 저장되는 flow를 채택하도록 내용 피드백 및 마이그레이션 비용 감소 하도록 최소한의 로직 flow 개선

- 결제 모듈을 만들어야 했으나 due date문제로 빠르게 확장해서 사용할 수 있는 wordPress develop

프로젝트명

서비스 운영에 따른, 레거시 코드 리팩토링

소속/기관명

VENDIT

프로젝트 기간

2024.04. ~ 2024.07.

프로젝트 내용

프로젝트 배경

- 백엔드 시스템에서 v-cloud를 사용하지 않는 업장을 위한 스탠드얼론 기능 필요

- CMS 자동마감 기능의 문제점 보완 및 재고 조절을 위한 백엔드 기능 필요성 대두

- 레거시 코드의 리팩토링을 통해 시스템의 안정성 및 데이터 처리 효율성 개선 요구

주요 성과

- 수동 마감 기능 도입으로 CMS 자동마감 기능의 VOC 문제 해결

- v-cloud를 사용하지 않는 업장을 위한 스탠드얼론 기능 제공으로 데이터 관리의 유연성 향상

- CMS 스탠드얼론 API 작업 및 데이터베이스 구성으로 시스템 안정성 강화

- Redis를 활용한 데이터 처리 로직 개선 및 해시 기능 고도화

- 스탠드얼론 유저의 마이그레이션 비용 감소 및 최소한의 로직 흐름 개선

- 신속한 확장을 위해 WordPress를 활용한 결제 모듈 개발

기술적 접근

- 수동 마감 기능: 기존 CMS 자동마감 기능에서 발생하는 VOC 문제를 해결하기 위해 - 수동 마감 기능 도입 및 백엔드 기능 개발

- 스탠드얼론 기능 개발: v-cloud를 사용하지 않는 업장을 위한 스탠드얼론 기능 제공

ㄴ 데이터 관리의 유연성을 높이기 위해 독립적인 데이터 처리 시스템 구축

- API 및 DB 구성: CMS 스탠드얼론 API 작업 및 데이터베이스 구성

ㄴ 시스템 안정성을 강화하기 위해 효율적인 데이터베이스 설계 및 최적화

- 데이터 처리 개선: Redis를 활용하여 데이터 체크 로직 개선 및 해시 기능 고도화

ㄴ 데이터 처리의 효율성을 높이고 시스템 부하 감소

- 마이그레이션 최적화: 스탠드얼론 유저의 마이그레이션 비용 감소 및 최소한의 로직 흐름 개선

ㄴ 기존 유저들과 동일한 데이터 저장 흐름 채택

- 결제 모듈 개발: 빠른 확장이 필요한 결제 모듈을 WordPress를 활용하여 개발

ㄴ due date 문제를 해결하고 신속한 배포 및 확장 가능

프로젝트명

cms서버 msa 아키텍처 적용 및 API 안정화

소속/기관명

VENDIT

프로젝트 기간

2023.02. ~ 2023.03.

프로젝트 내용

프로젝트 설명:

MVP버전을 만드는 과정에서, 빠르게 code를 develop해달라는 오퍼가 있었고 이로 인해 기존 legacy환경 서버 repo에서 boiler template를 만들듯 만들었다 보니 확장성 면에서 그리고 기존 다른 서비스들의 msa 아키텍쳐에 어긋나는 구조였기떄문에 cms서비스를 msa화 하는 과정을 가졌습니다.

주요 성과:

운영비용 절감 및 백엔드 작업:

- CMS의 마이크로서비스 아키텍처(MSA)화를 통해 인프라를 분리하고 구축하여 운영비용(기존 boiler template형식으로 만들었던 서버의 경우 가장 큰 테이블 데이터를 가진 서버로써 read비용이 너무 컸었음.)을 절감하였습니다.

- CMS 예약 서버를 자체 서버로 이관하여 CMS 인프라를 구축하고, 데이터베이스 CPU 부하를 감소시켰습니다.

백엔드 API 안정화 및 기능 개선:

- 자동마감 기능 및 정합성을 안정화하였습니다. Redis 기반 자동마감 기능을 RDBMS로 이관하여 가시성을 개선하고, CMS 예약과 reservation 예약의 이중 관리에 따른 사이드 이펙트 가능성을 해소했습니다.

- Daemon Interval 로직을 통한 예약 LifeCycle 안정화에 기여했습니다.

- 무분별한 peer 통신을 최소화하여 시스템의 안정성과 효율성을 증대시켰습니다.

CMS 제품 안정화 기여:

- PM과의 소통을 통해 필요한 기능을 적시에 구현하고, 위에서 내려오는 일방적인 커뮤니케이션이 아닌, 협업을 통한 기능 검토와 개발을 진행하여 CMS 제품의 안정화에 기여했습니다.

- 특정 API 개발 시, 실제 제품 단계에서의 필요성을 검토하는 문화를 조성하여 개발 프로세스를 개선했습니다.

프로젝트명

효율적 OTA 예약 동기화 및 CMS 채널 매니저 시스템 개발 프로젝트

소속/기관명

VENDIT

프로젝트 기간

2022.12. ~ 2023.01.

프로젝트 내용

프로젝트 배경

- 기존 시스템의 유지보수 어려움 및 다양한 OTA 예약 시스템과의 비동기 문제 해결 필요

- 효율적인 웹 크롤러 구축 및 OTA 예약 데이터의 실시간 동기화 필요성 대두

- 사내 개발 환경의 효율성을 높이고, 주니어 개발자들이 추가 개발을 할 수 있는 코어 환경 조성 필요

주요 성과

- 시스템 설계 및 구현: 다양한 OTA의 예약 정보를 통합하고 동기화하는 새로운 CMS 채널 매니저 시스템 설계 및 구현

- 백엔드 개발 및 기능 구현: 백엔드 구축에 기여하여 v-cloud(레거시 프로그램) 제품 개발 환경을 조성

- v-cloud 퍼널 역할 수행: CMS 백엔드 서버가 v-cloud 인터라커의 퍼널 역할을 하도록 구현하여 제품 개발의 효율성 향상

- 필요 기능 구현: 기획자와의 협력을 통해 오퍼레이션 관점에서 필요한 기능들을 설계 및 구현하여 사용자 요구에 부응

- CMS 팀 환경 조성: CMS 팀이 v-cloud 제품 개발에 집중할 수 있는 환경을 조성하고 안정적인 백엔드 서버 구축

- 제품 안정화 기여: PM과의 소통을 통해 필요 기능 논의를 통한 제품 안정화 문화 조성

- 팀내 협력 강화: 기획자와의 긴밀한 협력을 통해 사용자 요구에 부응하는 기능 개발로 내부 운영 효율성 향상

기술적 접근

- Playwright 라이브러리 활용: Microsoft의 오픈소스 Playwright 라이브러리를 활용하여 효율적인 웹 크롤러 구축

ㄴ OTA 예약 데이터를 실시간으로 동기화하고 관리하는 시스템 개발

- 주니어 개발자 환경 조성: boiler template을 통해 주니어 개발자들이 추가 개발을 할 수 있는 메인 코어 환경 제공

- 백엔드 서버 개발: 새로운 CMS 채널 매니저 프로그램 서버 개발 주도

ㄴ 다양한 OTA 예약 시스템과의 비동기 문제를 해결하기 위한 서버 구조 설계

- v-cloud 인터라커 퍼널 역할 구현: CMS 백엔드 서버가 v-cloud 인터라커로서의 퍼널 역할을 수행하도록 시스템 구현

- 필요 기능 구현 및 제품 안정화: 기획자 및 PM과의 협력을 통해 필요한 기능 설계 및 구현, 제품 안정화에 기여

ㄴ 특정 API 개발 시 제품 단계에서의 필요성을 검토하는 문화를 조성하여 기능의 실제 필요성 평가

프로젝트명

MSA 아키텍처 및 Event-Saga 패턴 기반 백엔드 시스템 이해 및 문서화 프로젝트 (feat.온보딩)

소속/기관명

VENDIT

프로젝트 기간

2022.11. ~ 2022.11.

프로젝트 내용

프로젝트 배경

- 내부 인프라와 백엔드 구조 이해를 통한 효율적인 시스템 관리 및 개선 필요

- NestJS를 활용한 기존 시스템의 아키텍처 및 운영 방식 파악

- Event-Saga 패턴을 사용하는 MSA(Microservices Architecture) 구조 이해 필요

주요 성과

- 기존 시스템 파악: NestJS와 RabbitMQ를 활용한 MSA 패턴의 백엔드 아키텍처 분석 및 이해

ㄴ 서비스 간 데이터 일관성과 트랜잭션 관리를 강화하기 위해 Event-Saga 패턴 사용

- 문서화 작업: 기존 코드와 시스템의 상세 문서화 작업 진행

ㄴ 서버 구성, 디자인 패턴, 사용 기술 스택의 상세 설명 포함

ㄴ 시스템의 특징과 작동 방식을 명확히 기술

- 신규 개발자 온보딩 지원: 문서화를 통해 신규 개발자들이 시스템을 더 빠르고 정확하게 이해하도록 지원

ㄴ 유지보수 및 향후 시스템 업그레이드 용이성 향상

기술적 접근

- 기존 아키텍처 분석: NestJS 기반의 MSA 패턴과 RabbitMQ를 활용한 이벤트 기반 아키텍처 분석

ㄴ peer-to-peer 통신 대신 Event-Saga 패턴을 사용하여 서비스 간 데이터 일관성과 트랜잭션 관리 강화

- 시스템 문서화: 시스템의 모든 구성 요소 및 작동 방식에 대한 상세한 문서화 작업 진행

ㄴ 서버 구성, 디자인 패턴, 사용 기술 스택, 이벤트 흐름 등 포함

- 온보딩 지원: 신규 개발자들이 빠르게 시스템을 이해하고 적응할 수 있도록 문서화 작업을 통해 온보딩 지원

ㄴ 유지보수 및 업그레이드를 위한 기초 자료 제공

프로젝트명

python script를 대규모 csv 크롤링 작업 및 인프라 구조 개선

소속/기관명

블린튼

프로젝트 기간

2022.09. ~ 2022.10.

프로젝트 내용

사용 언어 및 개발 환경:

프로젝트는 주로 Python과 Django를 사용하여 개발되었습니다. 데이터 크롤링 및 데이터베이스 관리를 위해 PostgreSQL AWS RDS를 구축하였으며, git을 활용하여 형상 관리를 도입했습니다. 이러한 기술 스택을 통해 크롤링 데이터를 효과적으로 수집하고 관리하는 환경을 구축할 수 있었습니다.

인력 구성 및 기여도:

이 프로젝트는 주로 제가 독립적으로 수행했습니다. 기존에 신입 개발자들만 존재하던 상황에서 경험 많은 개발자로서 기술적 지도와 프로젝트 관리를 담당했습니다. git 형상 관리의 구축과 테스트 데이터베이스 환경의 설정을 주도했습니다.

주요 업무 및 상세 역할:

데이터 크롤링 및 처리: 외국 영화 사이트에서 데이터를 크롤링하는 자동화 코드를 Python과 Django를 사용하여 개발했습니다. 크롤링된 데이터는 XML 포맷에서 URL 태그를 통해 CSV 파일을 다운로드하고, 이를 PostgreSQL 데이터베이스에 적합한 테이블 형식으로 변환하여 저장했습니다.

데이터베이스 및 형상 관리: 프로덕션 데이터베이스 외에도 클라이언트에서 사용할 수 있는 테스트 데이터베이스(RDB)를 구축했습니다. 또한, git flow를 도입하여 프로젝트의 형상 관리를 체계화했습니다.

성과/결과:

이 프로젝트를 통해 회사의 기술 기반을 현대화하고 데이터 관리 프로세스를 효율적으로 개선했습니다. 데이터 크롤링에서부터 데이터베이스 관리에 이르기까지의 전 과정을 자동화하여, 데이터 접근성과 관리의 용이성을 크게 향상시켰습니다. git 형상 관리의 구축은 프로젝트의 버전 관리와 팀 협업을 원활하게 하여 개발 프로세스의 안정성과 효율성을 개선했습니다. 이러한 변화는 사용자 경험을 향상시키고, 플랫폼의 전반적인 운영 효율을 증가시키는 데 크게 기여했습니다.

프로젝트명

고객과 파트너 채팅방 안에서의 도면 annotation 시스템 구축 (feat. 댓글 기능)

소속/기관명

에이팀벤처스

프로젝트 기간

2022.07. ~ 2022.08.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하며, 실행 환경으로는 Node.js 기반의 NestJS 프레임워크를 활용했습니다.

인력 구성 및 기여도:

이번 프로젝트는 제가 백엔드 개발을 담당하며 프론트엔드 개발자와 협업하여 진행하였습니다. 주요 목표는 도면 프레임 위에서 실시간 댓글 기능 및 x,y,z축을 고려하여 pin을 찍어서 채팅 시스템을 구축하는 것이였습니다.

주요 업무 및 상세 역할:

주요 업무는 채팅방에서 도면 파일을 공유하고 3D 모델링된 화면을 공유할 수 있는 기능을 강화하는 것이었습니다. 특히, 2D 및 3D 도면에 어노테이션 기능을 추가하여 x, y, z축 및 nodeId 정보를 포함하는 데이터베이스 테이블을 설계 및 구현했습니다. 또한, 어노테이션에 대한 댓글 시스템을 구현하여 사용자 간의 상호작용을 증진시켰습니다.

성과/결과:

이 프로젝트는 도면에 대한 상호작용을 통해 사용자 경험을 향상시키는 데 중점을 두었습니다. 채팅방 기반으로 도면 리스트를 불러오고, 각 도면의 어노테이션 상태를 추적하는 복잡한 쿼리를 생성하여 시스템의 기능성을 크게 향상시켰습니다. 데이터의 복잡성과 양이 증가함에 따라 쿼리 속도 저하 문제를 해결하기 위한 적절한 인덱싱 전략을 고려하는 중요한 경험도 얻었습니다. 이는 향후 시스템 성능 관리와 최적화에 큰 도움이 될 것입니다.

프로젝트명

파트너 소개페이지 데이터 구조 개선 및 I/O 개선

소속/기관명

에이팀벤처스

프로젝트 기간

2022.06. ~ 2022.07.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트는 데이터베이스의 구조를 개선하고 웹 플랫폼의 기능을 확장하는 데 중점을 두었습니다. 주로 사용된 기술로는 데이터베이스 관리 시스템(PostgreSQL), JSONB 데이터 포맷, 및 웹 개발에 필요한 프론트엔드개발자와의 협업 및 백엔드 기술이 포함됩니다. 이를 통해 데이터를 더욱 효과적으로 관리하고 사용자 인터페이스를 개선할 수 있었습니다.

인력 구성 및 기여도:

이 작업에는 백엔드 개발자인 저와 프론트엔드 개발자가 참여했습니다. 또한 저의 경우 데이터 구조화, 시스템 통합, 사용자 경험 개선 등 자신의 전문 분야에서 핵심적인 기여를 했습니다.

주요 업무 및 상세 역할:

데이터 구조화: 파트너 소개 페이지의 텍스트 데이터를 구조화된 JSONB 형태로 변환하여 데이터 관리의 효율성을 높였습니다.

데이터베이스 관계 개선: 파트너 관련 테이블 간의 관계를 OneToOne에서 OneToMany로 변경하여 서비스의 확장성을 개선했습니다. 이를 위해 새로운 테이블을 생성하고 기존 데이터를 마이그레이션했습니다.

액세스 및 보안 기능: 로그인하지 않은 사용자도 파트너 소개 페이지를 열람할 수 있도록 변경하고, 이를 통해 유입되는 사용자의 IP 정보를 로깅하여 분석 및 보안을 강화했습니다.

성과/결과:

이번 개선 작업을 통해 파트너 데이터의 관리가 효율적으로 이루어질 뿐만 아니라, 플랫폼의 사용자 접근성과 데이터 보안 측면에서 큰 향상을 이룰 수 있었습니다. 또한, 데이터의 구조화는 향후 서비스 확장 시 데이터 분석 및 추적을 용이하게 하여, 전반적인 시스템 성능과 사용자 경험을 개선하는 데 기여했습니다.

프로젝트명

회원 가입할때 한번 설정하면 바꿀 수 없었던 capabilties 업데이트 및 ON/OFF 기능

소속/기관명

에이팀벤처스

프로젝트 기간

2022.05. ~ 2022.06.

프로젝트 내용

사용 언어 및 개발 환경:

이 작업은 데이터베이스 관리 및 쿼리 최적화를 위해 SQL과 JSON을 활용했습니다. 시스템은 기존의 'capabilities' 테이블을 확장하여, 각 서비스 타입의 활성 상태를 관리할 수 있도록 개선되었습니다. 이 과정에서 사용된 기술은 데이터베이스 스키마 설계, 조건부 쿼리 작성, 그리고 상태 관리 로직을 포함하는 백엔드 프로그래밍 언어가 사용되었습니다.

인력 구성 및 기여도:

프로젝트는 주로 백엔드 개발자들의 협력 하에 수행되었습니다. 백엔드 관련 작업자인 저는 새로운 필드의 추가와 기존 데이터의 통합을 관리했으며, 추가적으로 쿼리 로직과 상태 관리 기능을 개발하여 시스템의 전체적인 통합을 담당했습니다.

주요 업무 및 상세 역할:

데이터베이스 스키마 변경: 'capabilities' 테이블에 'serviceType'별로 'status' 키를 추가하여 각 서비스의 활성 상태('ACTIVE' 또는 'INACTIVE')를 관리할 수 있도록 했습니다.

조건부 쿼리 구현: 'ACTIVE' 상태인 서비스 타입에 대한 사용자를 필터링하여 보여주고, 'INACTIVE' 상태의 서비스 타입을 제외하는 사용자 목록을 생성하는 쿼리를 개발했습니다.

알림 및 RFQ 수신 로직: 'INACTIVE' 상태인 서비스 타입의 사용자가 알림을 받지 못하고 새로운 RFQ도 받지 못하도록 로직을 구현했습니다.

상태 초기화 및 유지: 기존에 'capabilities'에 존재하지 않던 새로운 'serviceType'은 기본적으로 'INACTIVE'로 설정하고, 기존에 있던 'serviceType'은 'ACTIVE' 상태를 유지하도록 데이터를 조정했습니다.

성과/결과:

이 변경을 통해 서비스의 유연성과 데이터 관리의 효율성이 크게 향상되었습니다. 사용자는 자신의 서비스 타입의 활성 상태에 따라 필요한 정보만을 받아볼 수 있게 되었고, 시스템은 불필요한 데이터 처리로부터 자원을 절약할 수 있게 되었습니다. 또한, 이러한 구조적 개선은 향후 서비스 확장성에 큰 도움을 줄 것으로 예상됩니다.

프로젝트명

핵심이 되는 coulmn의 interface 구조 migration 및 기존 쿼리 구성

소속/기관명

에이팀벤처스

프로젝트 기간

2022.05. ~ 2022.06.

프로젝트 내용

이 프로젝트에서 주로 사용된 개발 환경은 데이터베이스 관리 시스템에서 JSON을 효과적으로 처리할 수 있는 기능을 활용했습니다. 프로그래밍 언어로는 SQL과 데이터베이스의 JSON 함수들을 사용하여 데이터 구조를 변환하고, 마이그레이션 스크립트를 작성했습니다.

인력 구성 및 기여도:

이 작업은 백엔드 개발자 제가 직접 혼자 진행되었습니다. 해당 구조 변환을 위한 기술적 설계를 맡았고, 백엔드 개발자에 대한 부분은, 데이터 마이그레이션과 쿼리 최적화 작업을 수행했습니다. 이 과정에서 프론트엔드와 백엔드 개발자 간의 소통을 강화하여, 과거의 문제점을 해결하는 데 중점을 뒀습니다.

주요 업무 및 상세 역할:

데이터 구조 통합: 'capabilities'와 'rfqFilter'의 데이터 구조를 일치시키기 위해, 'rfqFilter'의 데이터를 'capabilities' 구조에 맞게 재구성했습니다. 이 과정에서 기존의 복잡한 JSON 구조를 더 단순화하여 관리 및 유지보수의 효율성을 높였습니다.

마이그레이션 실행: 데이터의 일관성을 유지하면서 'rfqFilter'에서 'capabilities'로 데이터를 전환하는 마이그레이션 스크립트를 개발하고 실행했습니다.

쿼리 최적화: 새로운 데이터 구조에 맞게 쿼리를 최적화하여, 데이터 처리 속도와 효율을 개선했습니다.

성과/결과:

이번 마이그레이션 작업은 기존에 분리된 쿼리 작업을 통합하고 데이터 구조를 일관되게 관리할 수 있게 함으로써, 리소스 낭비를 크게 줄이고 데이터 처리의 효율성을 향상시켰습니다. 이러한 구조적 개선은 비즈니스 오퍼레이션(Business Operation)에서 불필요한 작업을 줄이고, 시스템의 전반적인 성능 개선에 기여했습니다. 데이터베이스의 관리 및 확장성이 크게 향상되었으며, 이는 향후 서비스 확장 및 새로운 기능 추가 시 큰 이점으로 작용할 것입니다.

프로젝트명

특정 서비스 타입이 하나로 합쳐짐에 따른 마이그레이션

소속/기관명

에이팀벤처스

프로젝트 기간

2022.04. ~ 2022.05.

프로젝트 내용

이 프로젝트에서는 주로 SQL과 스크립트를 사용하여 데이터 마이그레이션을 수행했습니다. 이는 JSONB 타입의 데이터 구조 변환을 위해 필요한 기술로, PostgreSQL 데이터베이스에서 사용되었습니다. 이를 통해 기존의 복잡한 데이터 구조를 더 효율적으로 관리하고 확장할 수 있도록 개선했습니다.

인력 구성 및 기여도:

개발 팀내에서 백엔드 개발자인 저로 구성되었습니다. 해당 작업자인 제가, 데이터 마이그레이션 계획과 실행을 담당했으며, 백엔드 개발에 필요한 스크립트 작성과 시스템 통합 작업을 직접 주도했습니다. 이 과정을 통해 데이터 구조를 효과적으로 통합했습니다.

주요 업무 및 상세 역할:

데이터 구조 통합: PRODUCT_DESIGN과 MECHANICAL_DESIGN 서비스를 'DESIGN'이라는 단일 서비스로 통합하여 데이터 입력과 관리를 단순화했습니다. 이는 두 서비스 간의 데이터 입력 차이가 크지 않다는 분석에 기반했습니다.

데이터 마이그레이션: 기존 JSONB 데이터 구조의 키 값을 새로운 요구사항에 맞게 업데이트하는 작업을 수행했습니다. 이를 위해 SQL 스크립트를 사용하여 데이터를 빠르고 정확하게 마이그레이션했습니다.

데이터베이스 최적화: 통합된 데이터 구조로의 전환을 통해 데이터 조회 및 관리의 효율성을 개선했습니다. 이는 플랫폼의 전체적인 성능 향상에 기여했습니다.

성과/결과:

데이터 구조의 통합과 마이그레이션을 통해 플랫폼의 데이터 관리가 더욱 효율적으로 이루어지게 되었습니다. 이러한 변경은 사용자 경험을 향상시키고, 데이터 조회와 서비스 관리의 용이성을 제공함으로써, 전반적인 운영 효율을 크게 증가시켰습니다. 결과적으로, 팀은 데이터 구조의 단순화가 서비스 확장과 새로운 기능 구현에 유리하다는 중요한 통찰을 얻었습니다.

프로젝트명

제조 ServiceType(PCB) 추가

소속/기관명

에이팀벤처스

프로젝트 기간

2022.03. ~ 2022.04.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하며, 실행 환경으로는 Node.js 기반의 NestJS 프레임워크를 활용했습니다.

인력 구성 및 기여도:

이번 프로젝트는 제가 백엔드 개발을 담당하며 프론트엔드 개발자와 협업하여 진행하였습니다. 주요 목표는 전자회로(PCB) 견적 요청을 원하는 사용자의 요구를 충족하는 서비스를 개발하는 것이었습니다.

주요 업무 및 상세 역할:

기존 견적 시스템에서는 각 견적이 단일 serviceType과 detailedServiceType을 가지고 있었지만, 새로운 요구사항으로 복수의 detailedServiceType을 포함해야 했습니다. 이를 위해 serviceType 별로 새로운 테이블을 생성하고, 단일 및 복수의 detailedServiceType 데이터를 통합해 관리하는 API를 개발했습니다. 가장 큰 도전은 다중 detailedServiceType을 포함하는 조회 쿼리의 구현이었습니다. 이를 해결하기 위해 JSONB 컬럼을 활용하여 복잡한 데이터 구조를 효율적으로 조회하는 방식을 적용했습니다.

성과/결과:

이 프로젝트를 통해 개발된 기능은 JSONB 데이터를 활용하여 복수의 detailedServiceType을 효과적으로 처리할 수 있는 새로운 API로, 사용자가 전자회로 견적을 보다 상세하게 요청할 수 있도록 지원합니다. 이는 사용자 만족도를 높이는 데 기여하며, 시스템의 유연성과 데이터 처리 능력을 향상시켰습니다.

프로젝트명

회원 가입 수정

소속/기관명

에이팀벤처스

프로젝트 기간

2022.03. ~ 2022.03.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하며, 실행 환경으로는 Node.js 기반의 NestJs 프레임워크를 활용했습니다.

인력 구성 및 기여도:

프로젝트는 스쿼드 단위로 진행되었으며, 저는 백엔드 개발자로 활동하면서 프론트엔드 개발자 한 명과 함께 작업을 수행했습니다.

주요 업무 및 상세 역할:

회원 가입 기능 개선 작업에서는 niceDnb API를 통해 기업 정보를 회원 정보와 함께 저장하는 작업을 담당했습니다. 이 과정에서 API의 accessToken을 관리하고, 만료 시 자동으로 갱신되도록 로직을 구현했습니다. 또한, 회원과 고객 정보를 각각 별도의 테이블에 저장하던 기존 시스템을 하나의 API 호출로 통합하여 처리할 수 있도록 MSA 구조를 이용한 Message Queue 시스템을 도입했습니다. 이 시스템은 모든 가입 절차가 성공적으로 완료될 때만 최종적으로 데이터를 확정지어, 실패 시에는 롤백이 이루어지도록 설계되었습니다.

성과/결과:

현재까지의 테스트는 스테이징 서버에서 성공적으로 완료되었으며, 곧 프로덕션 서버로의 배포가 예정되어 있습니다. 이 기능 개선을 통해 회원 가입 프로세스의 효율성이 크게 향상되었으며, 사용자와 기업 데이터 관리가 더욱 체계적으로 이루어질 수 있게 되었습니다.

프로젝트명

고객 및 파트너 개인 설정에 따른 알맞는 데이터 쿼리 API

소속/기관명

에이팀벤처스

프로젝트 기간

2022.02. ~ 2022.03.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하며, 실행 환경으로는 Node.js 기반의 NestJs 프레임워크를 활용했습니다.

인력 구성 및 기여도:

프로젝트는 스쿼드 단위로 진행되었으며, 팀은 저(백엔드 개발자)와 프론트엔드 개발자 한 명으로 구성되었습니다. 각자의 역할에 따라 협력하여 개발 작업을 진행했습니다.

주요 업무 및 상세 역할:

유저가 관심 있는 제조 카테고리에 따라 다르게 저장된 데이터를 효과적으로 조회할 수 있는 API를 개발하는 것이 주요 업무였습니다. 개발된 쿼리 API는 세 가지 유형이었습니다: 고객용 카테고리별 조회, 파트너용 카테고리별 조회, 그리고 파트너용 프로젝트 관리 쿼리. 데이터는 JSONB 형식으로 저장되며, 프론트엔드에서 임의로 형식을 지정했습니다. 데이터의 확장성과 필터링 문제를 고려하여 프론트엔드 개발자와 협력해 데이터 인터페이스를 조정했습니다. 인터페이스에 맞는 SQL 쿼리는 DBeaver 같은 도구를 사용하여 미리 작성했으며, Node.js로 쿼리를 처리할 때는 유저별 데이터에 따라 다른 SQL 분기문을 처리해야 했습니다. 이 과정에서 TypeScript를 활용하여 인터랙티브한 SQL 처리 작업을 수행했습니다.

성과/결과:

해당 프로젝트는 이미 프로덕션 환경에 배포되었으며, 사용자 만족도가 상당히 향상된 것으로 피드백을 받았습니다. 이는 특히 사용자 경험을 중심으로 한 데이터 관리 및 조회 기능의 개선을 통해 달성된 결과입니다.

프로젝트명

Transaction Refectoring

소속/기관명

에이팀벤처스

프로젝트 기간

2022.02. ~ 2022.02.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하며, 실행 환경으로는 Node.js 기반의 NestJs 프레임워크를 사용합니다.

인력 구성 및 기여도:

백엔드 팀 5인으로 구성되어 있으며, 각자 애플리케이션의 도메인별로 리펙토링 작업을 진행했습니다. 저는 특히 트랜잭션 관련 리펙토링을 담당했습니다.

주요 업무 및 상세 역할:

현재 프로젝트에서는 TypeORM을 사용하고, repository 패턴을 채택하여 서비스 계층이 데이터베이스에 직접 접근하지 않고 customRepository를 통해 데이터를 교환합니다. 이 패턴을 사용함으로써, 특히 트랜잭션 관리를 효율적으로 처리하기 위해 공통 트랜잭션 모듈을 함수형태로 구현했습니다. 이 과정에서 데이터베이스의 메모리 누수 문제를 발견하고 해결하는 중요한 역할을 했습니다. 코드의 가독성과 관리 효율성도 크게 향상되었습니다.

성과/결과:

이 리펙토링을 통해 공통 코드였던 트랜잭션 처리를 모듈화함으로써 코드의 라인 수가 현저히 감소하고 가독성이 개선되었습니다. 파트너 파트에서는 복잡한 JSONB 데이터를 처리하는 기능을 개발하여, 사용자가 프론트엔드에서 필터링을 설정할 때 동적으로 SQL 쿼리를 수정하고 반환하는 기능을 구현했습니다. 이러한 동적 쿼리 생성 과정에서 SQL과 JavaScript를 활용한 고급 기술을 경험하며, 복잡한 데이터 구조를 효율적으로 처리할 수 있는 능력을 개발했습니다.

프로젝트명

고객과 사용자 사이에 택배 시스템을 위한 API 연결

소속/기관명

에이팀벤처스

프로젝트 기간

2022.01. ~ 2022.01.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하고, 실행 환경으로는 Node.js 기반의 NestJs 프레임워크를 사용했습니다.

인력 구성 및 기여도:

이 프로젝트는 제가 PO와 직접 소통하여 기획된 택배 API 기능을 feature 형태로 개발하는 작업을 맡았습니다.

주요 업무 및 상세 역할:

스마트 택배 API를 연결하여 실시간으로 사용자의 배송 정보를 추적하고, 해당 정보를 CAPA 서버에 통합하는 업무를 담당했습니다. 이 과정에서 스마트 택배 API의 문서 분석과 서버 적용 및 수정 작업을 수행했습니다. 문서의 난해함과 외부 업체와의 커뮤니케이션을 통해 프로젝트 방향성을 설정하는 과정은 기술적으로 많은 학습이 필요했던 도전이었습니다.

성과/결과:

개발된 택배 API 기능은 아직 실서버에 적용되지는 않았지만, 기획 단계에서의 지연에도 불구하고 개발은 성공적으로 완료되었습니다. 이 경험을 통해 실시간 API 통합과 외부 API의 문서 분석 및 적용 과정에서의 기술적 문제 해결 능력을 향상시킬 수 있었습니다.

프로젝트명

비대면 계약 시스템 API

소속/기관명

에이팀벤처스

프로젝트 기간

2021.10. ~ 2021.12.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하고, Node.js 기반의 NestJs 프레임워크를 실행 환경으로 사용했습니다.

인력 구성 및 기여도:

이번 프로젝트는 파트너 선정 이후의 계약 단계를 포함시키는 비대면 계약 API의 이식 작업으로, 사이트 내 머무르는 시간을 증가시키는 데 큰 의미가 있었습니다. 이 변경은 사용자 경험을 개선하고 사이트의 기능성을 확장하는 중요한 단계였습니다.

주요 업무 및 상세 역할:

저는 현재 직장에서 처음으로 큰 프로젝트의 주요 기능을 담당하게 되었습니다. 비대면 계약의 핵심적인 기능을 구현하기 위해 글로싸인 API를 사용했으며, 기획 단계에서 많은 커스텀 요구 사항이 있었습니다. 공식적으로 제공되지 않는 API 기능을 글로싸인 개발자들과의 직접적인 소통을 통해 구현해야 했습니다. 또한, API의 응답을 우리 서버에서 통제할 수 없는 문제를 해결하기 위해 JavaScript의 스트림 기능을 학습하고 적용해야 했습니다. 이 과정에서 readStream과 writeStream을 사용하여 파일을 서버에 저장하고 RESTful API를 통해 글로싸인에 전송하는 작업을 수행했습니다.

성과/결과:

해당 프로젝트의 모든 기능은 완성되었으나, 내부 기획의 변화로 인해 실서버에의 배포가 지연되고 있는 상황입니다. 이 프로젝트를 통해 비대면 계약 프로세스의 구현 및 서버 사이드 프로그래밍 기술에 대한 이해를 심화시킬 수 있었습니다.

프로젝트명

BO 데이터 트래킹을 위한 Hubspot작업

소속/기관명

에이팀벤처스

프로젝트 기간

2021.09. ~ 2021.10.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 TypeScript를 사용하였으며, Node.js 기반의 NestJs 프레임워크를 실행 환경으로 활용했습니다.

인력 구성 및 기여도:

이전에 Azure에 배포된 코드를 NestJs로 전환하는 작업을 담당했습니다. 이 과정에서 BO 데이터 관리자와 협력하여 요구사항을 충족시키는 중요한 역할을 수행했습니다.

주요 업무 및 상세 역할:

BO에서 요구하는 뉴스레터 발송 및 사용자 가입자 수 등의 데이터를 조회할 수 있도록 HubSpot 라이브러리를 NestJs 프로젝트로 이식하는 작업을 진행했습니다. 기존 Azure에 있는 HubSpot 관련 코드를 NestJs 코드 형식으로 변경하고, 기존의 raw query를 수정하는 작업을 맡았습니다. 또한, CAPA 데이터베이스에 새롭게 가입하는 사용자를 3시간마다 스케줄링하여 HubSpot에서 데이터의 생성 또는 업데이트를 진행했습니다.

성과/결과:

이 프로젝트를 통해 3시간마다 자동으로 HubSpot에 데이터를 업데이트하도록 스케줄링 시스템을 구현하여, BO 데이터 관리자가 사용자 데이터를 효과적으로 관리하고 뉴스레터를 효율적으로 발송할 수 있도록 지원했습니다. 이는 회사 내 데이터 관리 및 커뮤니케이션의 효율성을 크게 향상시켰습니다.

프로젝트명

자체 미스터 로그인 API

소속/기관명

바운스코드

프로젝트 기간

2021.05. ~ 2021.08.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 Node.js를 실행 환경으로 사용하였으며, 데이터베이스 연동에는 TypeORM을 활용했습니다. 데이터베이스 시스템으로는 PostgreSQL을 사용하였습니다.

인력 구성 및 기여도:

이 프로젝트는 회사 대표의 직접적인 피드백을 받으며 제가 독립적으로 개발을 담당했습니다. '미스터 로그인'의 전체적인 기획과 구조를 설정하는 주요 역할을 수행하였습니다.

주요 업무 및 상세 역할:

'미스터 로그인' 프로젝트는 웹과 앱 간에 데이터베이스가 분리되어 있어 플랫폼별로 중복 회원가입이 필요한 문제를 해결하기 위해 시작되었습니다. 이를 위해, 클라우드 기반의 로그인 인증 방식을 도입하여 사용자 정보를 토큰으로 암호화하고, 이를 관리하는 서비스를 개발했습니다. GraphQL을 사용하여 외부 서버에 accessToken과 refreshToken을 발급하는 API를 구현했습니다. 또한, 작성된 API는 다른 SI 프로젝트에도 적용하여 로그인 기능을 통합하였습니다.

성과/결과:

이 프로젝트를 통해 회사 내부에서 직접 API를 설계하고 구현하는 경험을 했습니다. 외부 업체에 의존하지 않고 자체적으로 기능을 개발하는 과정에서 기술적 도전과 성장의 기회를 가졌으며, 이는 회사의 자체 기술 역량 강화에도 기여하였습니다.

프로젝트명

SI프로젝트(9988 헬스케어)

소속/기관명

바운스코드

프로젝트 기간

2021.03. ~ 2021.05.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 Node.js를 주요 실행 환경으로 사용했으며, TypeORM을 데이터베이스 연동 라이브러리로 활용하였습니다. 사용된 데이터베이스는 PostgreSQL입니다.

인력 구성 및 기여도:

이 프로젝트에서는 다른 개발자들이 외주 프로젝트에 투입되어 대부분의 작업을 제가 독립적으로 수행해야 했습니다.

주요 업무 및 상세 역할:

'애빙(Aving)' 프로젝트는 40-50세대를 대상으로 기획된 프로젝트였으며, 작은 스타트업의 특성상 백엔드 ERD 설계와 API 설계 문서 작성을 포함한 전체 백엔드 설계 및 개발을 담당했습니다. 백엔드 개발 초기에는 MVC 패턴의 Model과 Controller 개념을 Resolver에 포함시키는 구조로 인해 유지보수와 코드 재사용에 어려움이 있었습니다. 이를 해결하기 위해 후반부에는 Resolver와 Service를 분리하여 코드 재사용성과 유지보수성을 개선했습니다.

성과/결과:

이 프로젝트는 제가 처음부터 끝까지 담당하여 Android와 iOS 테스트 배포까지 완료한 첫 프로젝트였습니다. 프로젝트를 통해 백엔드 개발 및 배포 과정에서의 독립적인 작업 수행 능력과 문제 해결 능력을 크게 향상시킬 수 있었습니다.

프로젝트명

케어미 백엔드 설계 및 API 개발

소속/기관명

바운스코드

프로젝트 기간

2021.01. ~ 2021.03.

프로젝트 내용

사용 언어 및 개발 환경:

이 프로젝트에서는 Node.js를 주요 실행 환경으로 활용하고, 데이터베이스 연동에는 TypeORM을 사용했습니다. 사용된 데이터베이스는 PostgreSQL입니다.

인력 구성 및 기여도:

외부에서 제공된 기획서를 바탕으로 요구사항을 정리하고 백엔드 설계 및 API 개발을 담당했습니다. 이 프로젝트는 주로 백엔드 개발에 중점을 둔 작업이었습니다.

주요 업무 및 상세 역할:

'케어미' 프로젝트에서는 Figma를 통해 작성된 디자인을 바탕으로 외부 디자이너와 협업하며 백엔드 개발을 진행했습니다. 특히, 매주 새로운 이벤트를 게시하는 스케줄러 개발은 서버 시간을 UTC에서 한국 시간으로 조정하고, 이벤트 완료 시 뱃지를 부여하는 API를 구현하는 주요 작업이었습니다.

성과/결과:

이 프로젝트는 백엔드 개발을 독립적으로 수행하며 설계의 중요성과 확장성에 대해 깊이 이해할 수 있는 기회였습니다. 혼자서 개발을 진행하는 과정은 도전적이었지만, 이를 통해 백엔드 시스템의 설계와 구현에 대한 심도 있는 경험을 얻을 수 있었습니다.

프로젝트명

Eddang 부동산 정보 조회 웹

소속/기관명

바운스코드

프로젝트 기간

2020.12. ~ 2020.12.

프로젝트 내용

사용 언어 및 개발 환경:

본 프로젝트에서는 Node.js를 주요 실행 환경으로 사용하였으며, 데이터베이스 연동에는 TypeORM 라이브러리를 활용하였습니다. 사용한 데이터베이스는 PostgreSQL입니다.

인력 구성 및 기여도:

이 프로젝트는 개인 프로젝트로 진행되었습니다. 원래의 프로젝트는 그누보드를 사용하여 구축된 웹 사이트였으며, 특정 데이터를 웹 크롤링을 통해 수집할 필요가 있었습니다.

주요 업무 및 상세 역할:

Node.js 환경에서 Selenium 웹 크롤링 모듈을 사용하여 http://kras.seoul.go.kr/ 에서 제공하는 토지 정보의 HTML에서 필요한 태그 정보를 추출하는 작업을 수행하였습니다. 이를 통해 데이터를 명확하게 표시하는 시스템을 구축하였습니다.

성과/결과:

이 프로젝트는 웹 크롤링 기술을 실제로 적용해 볼 수 있는 중요한 경험이었습니다. 실시간 데이터 수집 및 관리 기술을 개발하며 기술적 역량을 향상시켰습니다.

프로젝트명

유방암 여성 환자 케어를 위한 어플리케이션 개발

소속/기관명

바운스코드

프로젝트 기간

2020.09. ~ 2020.12.

프로젝트 내용

사용 언어 및 개발 환경:

본 프로젝트에서는 Node.js를 주요 실행 환경으로 사용하였으며, TypeORM을 데이터베이스 연동 라이브러리로 활용하였습니다. 사용된 데이터베이스는 PostgreSQL입니다.

인력 구성 및 기여도:

기존에 구축된 프로젝트에 백엔드 기능 추가 및 React Native를 사용하여 iOS와 Android용 프론트엔드 화면을 개발했습니다.

주요 업무 및 상세 역할:

회사 입사 후 처음으로 진행된 Node.js 기반 애플리케이션에서는 서버 개발 뿐만 아니라 React Native를 학습하면서 프론트엔드도 제작했습니다. 주요 작업으로는 메인 홈 화면에 달력과 일자별 이벤트 생성 기능을 구현했으며, React에서의 상태 관리를 통해 프로그래밍 사고력을 향상시켰습니다. 또한, GraphQL 인터페이스를 사용하여 프론트엔드 작업과 즐겨찾기 기능을 구현했습니다.

성과/결과:

이 프로젝트를 통해 외부 업체의 API를 대체하여 회사 내부에서 직접 개발하는 경험을 했습니다. 이는 기술적 독립성 및 개발 능력을 증진시키는 데 크게 기여했습니다.

포트폴리오

URL

link

https://github.com/insungsong

깃허브
link

https://blog.naver.com/ins_track

URL 링크

교육

소속/기관명

한국방송통신대학교

종류 | 전공

대학교(학사) | 컴퓨터과학과

재학 기간 | 재학 상태

2020.03. ~ 현재 | 재학 중

소속/기관명

경민고등학교

종류 | 전공

고등학교 | 인문계열

재학 기간 | 재학 상태

2013.03. ~ 2016.03. | 졸업

대외활동

활동명

부동산 분석 프로그램 개발 및 스터디

소속/기관명

개인

연도

내용

지인들과 함께 지도 도메인에서 일하는 기획자 분의 기획자와 함께 서버 리드 포지션으로 참여하여 초기 기획과정과 db모델링을 통한 주말 시간을 투자하여 서버 개발 리드를 진행 하고 있습니다.

해당 스터디를 통해 배우고 있는 점은 아래와 같습니다.

- postgresql을 생각보다 많은 GIST(Generalized Search Tree) 내장 함수를 가지고 있고 해당 포퍼먼스는 실무에서 사용할 수 있을 정도로 뛰어나다.

- 우리나라는 정말 다양한 정부 데이터를 제공하고 이를 통해 플랫폼 아이디어와 도메인 조사가 있다면 충분히 정부 데이터를 자동화 하여 작은 플랫폼을 만들어 낼 수 있다.

- 비즈니스 로직을 구현하는 것에 어려움 보다는 도메인 진입 장벽이 큰 분야이다. 그렇기떄문에 legacy화되어 있는 환경에서 일하는 종사자들이 많음.

활동명

개발 스터디

소속/기관명

개인

연도

내용

KOSA협회를 졸업하고 난 후 졸업 학생들과 부족한 javascript 공부와 그에 따른 react와 prisma 및 graphql을 사용하여 웹드라마를 볼 수 있는 프로젝트를 진행했습니다 취준 포토폴리오 준비 기간을 가졌습니다.

활동명

KOSA IOT 과정수료

소속/기관명

KOSA

연도

내용

685시간동안 자바를 활용하여 드론을 조종하고 만들어내는 프로젝트를 진행하였습니다

활동명

컴퓨터 학원 6개월 과정

소속/기관명

코리아IT아카데미

연도

내용

6개월간 웹이란 분야를 이해하기위해 가벼운 사이클을 돌았습니다

자기소개

자기소개

< developer에서 maker로 성장하기 >

안녕하세요. 저는 스타트업 환경에서 4년 동안 서버 개발자로 근무하며 다양한 기술적 문제를 해결해왔습니다. 2020년부터 2022년 11월까지는 주로 구글링과 Stack Overflow를 통해 기술적 문제를 해결하고 비즈니스 인사이트를 얻었습니다. 그러나 2022년 11월 30일 ChatGPT 출시 이후 제 업무 방식이 크게 변화했습니다.

최근 VENDIT(OTA 숙박 플랫폼 관리 및 OTA 크롤링을 통한 자동화 프로그램 서버 리드 개발) 경험을 마무리하고, 현재는 메이커로써의 더 다듬어진 엣지 포인트를 위해 부족했던 CS및 인프라 study를 하며 재정립하는 시간을 가지고 있습니다.

스타트업 환경의 자원은 한정적입니다. 매달 직원들의 월급, 서비스 운영 인프라 비용, 복지 비용 등이 소모되기 때문에, 회사는 한정된 자원으로 최대한의 output을 만들어내어 고객에게 가치를 제공해야만 생존할 수 있습니다.

이러한, 스타트업 환경에서의 4년간 업무 경험은 백엔드 서버 리드 포지션뿐만 아니라 기획 참여, 기술 기획 개발, 제품 딜리버리, 그리고 직원 관리까지 폭넓은 경험을 쌓는 시간이었습니다. 앞으로도 메이커 집단 안에서 개발자로서의 확실한 아웃풋을 기본으로 하여, 테크 기반의 의사결정을 통해 더 나은 제품 경험을 만들어내는 개발자로 나아가고자 합니다.

제가 4년간 현업에서 경험한 Tech-Stack은 다음과 같습니다:

- Node.js (Nest.js 포함)

- DataBase (PostgreSQL, MYSQL, MariaDB, MongoDB)

- ORM (TypeORM, SequelizeORM)

- httpRequest interface (GraphQL (Apollo 포함), RestAPI)

- Docker (docker-compose 포함)

- Redis (feat. Webdis)

- AWS (EC2, G/W, RDB, VPC, S3, Elastic Beanstalk, ECR, ECS)

- ElasticSearch (ELK)

- Retool (admin tool, nocode base)

- messageQueue (RabbitMQ, gRPC, Nats)

- CI/CD (Git Actions)

- msa accreditation 베이스의 서버 환경 구축 및 실무 경험

- 신입 시절, 1년 가까운 시간동안 풀스택 개발자로써 서버, 프론트, 앱개발 경험

직전 회사에서 진행한 유의미한 기술적 성과:

최근에는 증가하는 예약 트래픽을 보다 안정적으로 처리하는 방법에 집중했습니다. 최신 기술 스펙을 활용하는 것도 중요하지만, 회사의 리소스 내에서 적은 코드로 큰 임팩트를 낼 수 있는 방법을 더욱 고민했습니다. 그 결과, 1초당 약 14,000건의 요청을 RDB CPU 사용률 5-6% 내에서 관리하며 비즈니스 로직 개발과 데이터 모델링을 동시에 진행했습니다. 이를 통해 회사의 인프라 비용은 매달 200만원 정도 절감되었습니다. 또한, 시스템의 데이터 복잡성이 증가함에 따라 기획자와 협력하여 기술 기획을 진행하고, 보다 나은 제품을 통해 고객에게 가치를 전달하기 위해 노력했습니다.

저는 앞으로도 변화하는 IT 환경에서 지속적으로 학습하며, 더욱 가치 있는 개발자이자 기술 기반의 기획을 도울 수 있는 능력을 가진 메이커가 되기 위해 노력하겠습니다.


Links:

- GitHub: https://github.com/insungsong?tab=repositories

- Blog: https://blog.naver.com/ins_track

댓글