피드로 돌아가기
Organize email with folders and labels in Nylas
Dev.toDev.to
Backend

추상화 레이어를 통한 6개 이메일 프로바이더의 폴더-라벨 모델 단일화

Organize email with folders and labels in Nylas

Qasim2026년 6월 23일11intermediate

Context

이메일 서비스마다 Gmail의 Label(다중 지정 가능)과 Outlook/IMAP의 Folder(단일 소속)라는 서로 다른 데이터 모델을 사용함에 따른 통합 개발 비용 증가. 프로바이더별 API 규격과 폴더 관리 규칙의 파편화로 인해 중복 구현 및 런타임 오류 발생 가능성이 높음.

Technical Solution

  • Folder와 Label을 단일 리소스로 정의하여 /v3/grants/{grant_id}/folders 엔드포인트로 통합 관리하는 추상화 계층 설계
  • Message 객체 내 폴더 정보를 단일 값이 아닌 folders Array 구조로 설계하여 Gmail의 다중 라벨과 일반 폴더의 단일 소속 모델을 모두 수용
  • Display Name 대신 고유 id 및 표준화된 attributes 매핑을 통해 프로바이더별 폴더 명칭 상이함으로 인한 식별 오류 제거
  • Microsoft/EWS의 계층 구조를 parent_id 기반의 Flattened 구조로 변환하여 클라이언트 측에서 유연하게 계층을 재구성하도록 구현
  • Google 전용 필드(background_color, text_color)를 폴더 객체에 포함시켜 공통 API 호출 내에서 프로바이더 특화 기능을 처리하는 확장 모델 적용

- 데이터 모델 통합 시 최솟값(단일 폴더)이 아닌 최댓값(다중 라벨) 기준의 Array 구조를 채택하여 호환성 확보 - 외부 API 연동 시 가변적인 Display Name이 아닌 고유 ID 및 표준 Attribute 기반의 식별 로직 구축 - 계층 구조 데이터를 처리할 때 서버 측의 깊은 재귀 구조보다 `parent_id`를 활용한 평탄화 모델이 클라이언트 구현에 유리함 - 특정 벤더 전용 옵션은 공통 스키마 내 선택적 필드로 포함하여 API 엔드포인트의 파편화를 방지

원문 읽기