본문으로 건너뛰기

제이앤피메디

개발2팀 Docs Squad Backend Engineer

2023.06 — 2024.08

누적 160억 투자 유치 임상시험 데이터 관리 솔루션 스타트업 (MSA 기반)

주요 성과

  • 월 5건+ 발생하던 전자서명 처리 실패(임상시험 Deadlock) — FK 공유 락 교착 패턴 재현·규명, 실패 0건 해소, Deadlock 근본 원인 제거
  • VDR 프로젝트 일정 지연 및 MVP 출시 압박 — BE 2명 + FE 1명 팀으로 3주 긴급 투입, Event-Driven PDF 변환과 권한 기반 워크플로우 구현, MVP 출시 일정 준수
  • 이메일 발송 실패 사후 인지(수시간 지연) — SES+SNS 이벤트 파이프라인 구축, 반송·바운스 감지 수시간→수초 단축, Slack 즉시 알림 체계 수립(기술 블로그 게재)

프로젝트

Maven Docs 전자 동의서 시스템

2023.07 ~ 2023.09

Cyan(사내 Node.js 프레임워크) 기반 임상시험 전자 동의서 수집 비효율성과 전자서명 규제 준수 요구사항 해결

  • 임상시험 동의서 개별 발송의 비효율 — 임상시험별 참여자 그룹 관리 및 일괄 동의서 배치 발송 시스템 구현, 동의서 발송 프로세스 자동화
  • 배치+S3 이벤트 기반 아키텍처의 이벤트 흐름 비가시성 — EDA+아웃박스 패턴으로 변경, 이벤트 흐름 가시화 및 로컬 테스트 환경 정비

기술 선택 이유

동기 서비스 간 결합도 제거를 위해 EDA + 아웃박스 패턴으로 전환. 다양한 입력 방식(텍스트·체크박스·서명) 확장을 위해 플러그인 구조 설계.

기여도: EDA 전환 설계, 플러그인 구조 구현, 대상자 일괄 등록 + Signer 테이블 분리 마이그레이션 수행. BE 2명 체제.
TypeScript Express.js Cyan Aurora Serverless v2 Knex.js

Maven Docs 시스템 안정성 개선

2023.08 ~ 2023.12

임상시험 전자서명 알림에서 발생하는 데이터베이스 Deadlock으로 인한 치명적 알림 누락 해결

  • 운영 환경 Deadlock 발생 — 외래키 생성 시 공유락→배타락 전환 타이밍 이슈 근본 원인 분석, Deadlock 근본 원인 규명 및 재발 방지
  • 동기 처리 방식의 알림 병목 및 장애 전파 — AWS SNS → SQS → Lambda Event-Driven Architecture 설계, 비동기 파이프라인 완성으로 알림 안정성 확보

기술 선택 이유

FK child INSERT 시 S-Lock → X-Lock 승격 교착 패턴이 근본 원인. INSERT 전 SELECT FOR UPDATE로 X-Lock 선점하여 교착 순서 자체를 제거.

기여도: Deadlock 재현·분석·해결 방안 도출 단독 수행. DBeaver로 교착 시나리오를 SQL로 재현하고 INNODB 잠금 테이블로 확인.
TypeScript Express.js Cyan Slate.js SNS SQS Lambda React

Maven Mailing 시스템 고도화

2023.12 ~ 2024.02

이메일 발송 시스템의 발송 상태 추적 부족과 데이터 정합성 문제 해결

  • 이메일 발송 실패 사후 인지(수시간 지연) — SES 구성세트 → SNS → 이벤트 처리 파이프라인으로 발송/반송/바운스 상태 추적, Datadog 로깅 + Slack 실시간 알림 구축, 반송·바운스 감지 수시간→수초 단축

기술 선택 이유

AWS SES 비동기 특성상 발송 성공 여부를 동기적으로 수신 불가. 구성세트에 SNS 이벤트 대상을 추가하여 발송/반송/바운스 이벤트를 비동기 구독.

기여도: SES 구성세트 → SNS → 이벤트 처리 파이프라인 설계·구현. 기술 블로그 게재 및 사내 세미나 발표 주도.
TypeScript Express.js AWS SES Nodemailer

Maven Auth 시스템 고도화

2024.01 ~ 2024.02

기존 1:1 사용자-조직 구조로 인한 사용자 불편과 시스템 확장성 한계 해결

  • 1:1 사용자-조직 구조의 확장성 한계 — 1:N 구조로 관계 확장하여 다중 조직 관리 지원, 다중 조직 관리 기능 제공
  • 구조 변경 시 기존 API 호환성 단절 리스크 — 기존 API 무중단 마이그레이션 설계, 서비스 연속성 유지

기술 선택 이유

임상시험 도메인 특성상 연구자가 여러 조직에 동시 참여하는 요구사항 수용을 위해 계정-조직 1:N 재설계. 로그인 후 조직 선택 흐름 추가로 컨텍스트 전환 지원.

기여도: 스키마 마이그레이션, 인증 흐름 수정, 하위 서비스(Docs/Billing/Mailing) 계정-조직 참조 로직 일괄 수정까지 풀스택 변경.
TypeScript Express.js Cyan Aurora Serverless v2

Maven TMF 신규 프로젝트 개발 (프론트엔드)

2023.06 ~ 2024.08

임상시험 필수 문서(TMF) 관리 시스템의 프론트엔드 신규 개발

  • 임상시험 필수 문서(TMF) 관리 시스템 부재 — Admin/Dashboard 페이지에서 문서 업로드·분류·버전 관리·감사 추적(Audit Trail) 기능 구현, TMF 문서 관리 프론트엔드 체계 구축

기술 선택 이유

3개월 내 출시 일정 제약으로 핵심 기능(문서 업로드·분류·버전 관리·감사 추적)만 MVP 범위로 정의하고 집중 개발.

기여도: BE 1명 + FE 2명(본인 포함) 체제에서 FE 담당. Admin/Dashboard 페이지의 문서 업로드·분류·감사 추적 기능 구현.
React TypeScript Jotai

Maven VDR MVP 개발

2024.06 ~ 2024.07 (3주)

진행 중이던 VDR 프로젝트의 개발 일정 지연과 MVP 출시 압박 상황에서의 긴급 투입

  • PDF 변환 처리의 동기 방식 병목 — S3 업로드 트리거 → Lambda 경량화 변환 → SNS/SQS 알림 Event-Driven 체계 설계, 비동기 PDF 변환 파이프라인 구축
  • 의료진별 문서 접근 권한 체계 부재 — 역할 기반 문서 접근 및 승인 권한 관리 워크플로우 제작, 권한 기반 문서 관리 체계 구축
  • VDR 프로젝트 일정 지연 및 MVP 출시 압박 — 3주 긴급 투입, 핵심 기능 우선순위 선정 및 집중 개발, 일정 내 MVP 출시 달성

기술 선택 이유

동기 PDF 변환 시 타임아웃 발생 문제를 구조적으로 해결하기 위해 EDA 기반 비동기 변환 파이프라인(S3 트리거 → Lambda 변환 → SNS/SQS 알림) 설계.

기여도: BE 2명 중 1명. EDA 기반 문서 처리 파이프라인 설계·구현, 대용량 PDF 비동기 변환 워커 구현. 3주 긴급 투입으로 MVP 출시 달성.
TypeScript Lambda S3 SNS SQS

Maven Billing 구독 관리 시스템

2023.06 ~ 2024.08

Maven 전체 서비스의 구독/플랜/라이센스 관리 시스템 개발

  • 조직별 맞춤 요금제 제공 불가 — ORG별 커스텀 플랜 Internal API 구현, 조직별 맞춤 요금제 제공 체계 구축
  • 갱신 불가 플랜의 구독 갱신·재구독 정책 미적용 — 갱신 불가 플랜 구독 갱신·재구독 차단 로직 작성, 비즈니스 정책 정합성 보장

기술 선택 이유

구독 만료 후 비동기 정리 처리를 위해 event queue 도입. 갱신 불가 플랜의 재구독 차단을 bundles.is_renewable 스키마 속성으로 비즈니스 정책을 데이터 레벨에서 강제.

기여도: ORG별 커스텀 플랜, event queue 기반 인벤토리 자동 삭제, 갱신 가능 여부 판별 로직 구현. 다수 PR 직접 기여.
TypeScript Express.js Cyan Aurora Serverless v2 Knex.js

외부 활동

AWS SES 이벤트 로그를 통한 이메일 발송 모니터링

기술 블로그
2024.03

AWS SES 이벤트 로그 기반 이메일 발송 모니터링 시스템 개발 사례 공유

메일링 시스템 이메일 발송 결과 수신 기능 도입

사내 세미나
2024.02

메일링 시스템 이메일 발송 결과 수신 기능 도입 과정 및 아키텍처 공유

AWS SAA 스터디

스터디
2023.09 ~ 2023.12

제이앤피메디 사내 스터디, 클라우드 아키텍처 심화 학습

기술 스택

Node.js TypeScript Express.js Cyan Aurora Serverless v2 Knex.js Lambda S3 SNS SQS AWS SES Nodemailer Slate.js React Jotai