Skip to content

DNS/인증서

Route53 호스트 존

truloop은 여러 도메인을 Route53에서 관리합니다.

Public 호스트 존

도메인용도관리
truloop.app메인 애플리케이션 도메인Lookup (기존 존 참조)
truloop.kr한국 도메인Lookup
butbeautiful.co회사 도메인Lookup
butbeautifulco.com회사 도메인 (.com)Pulumi에서 생성 (Prod만)

Private 호스트 존 (Service Discovery)

도메인환경용도
truloop-dev.localDevECS 서비스 간 내부 통신
truloop-prod.localProdECS 서비스 간 내부 통신

Private 호스트 존은 AWS Cloud Map의 Service Discovery 네임스페이스에 의해 자동 생성됩니다.

DNS 레코드

truloop.app 레코드

레코드타입대상
dev-api.truloop.appA (ALB Alias)Dev ALB
teaser-dev.truloop.appCNAMEVercel DNS
dashboard-dev.truloop.appCNAMEVercel DNS
assets-dev.truloop.appA (CloudFront Alias)CloudFront

butbeautiful.co 레코드 (Prod만)

레코드타입대상
butbeautiful.coMX1 smtp.google.com (Google Workspace)
butbeautiful.coTXTGoogle Site Verification
www.butbeautiful.coCNAMEexternal.notion.site (Notion)
_notion-dcv.www.butbeautiful.coTXTNotion Domain Verification

butbeautifulco.com 레코드 (Prod만)

레코드타입대상
butbeautifulco.comASquarespace IPs
butbeautifulco.comMXGoogle Workspace
butbeautifulco.comTXTGoogle, JetBrains, SPF
www.butbeautifulco.comCNAMEext-sq.squarespace.com

ACM 인증서

ALB 인증서

ALB의 HTTPS Listener에 연결되는 인증서입니다. truloop-infraAlb 컴포넌트에서 관리합니다.

  • 도메인: dev-api.truloop.app
  • 검증 방식: DNS 검증
  • 리전: ap-northeast-2

CloudFront 인증서

Assets CDN의 CloudFront 배포에 연결되는 인증서입니다. CloudFront 요구사항에 따라 us-east-1 리전에 생성됩니다.

  • 도메인: assets-dev.truloop.app
  • 검증 방식: DNS 검증 (Route53 자동)
  • 리전: us-east-1

정보

CloudFront용 ACM 인증서는 반드시 us-east-1 리전에 생성해야 합니다. truloop-infra에서 별도의 us-east-1 AWS Provider를 생성하여 처리합니다.

DNS 레코드 관리 방식

코드 기반 상수 정의

DNS 레코드는 YAML 설정이 아닌 src/components/dns/constants.ts에 TypeScript 상수로 정의됩니다. 환경에 따라 stackName으로 분기합니다.

typescript
// src/components/dns/constants.ts
export const TRULOOP_APP_RECORDS: DnsRecordDef[] =
  stackName === "dev"
    ? [
        { name: "api", domain: "dev-api.truloop.app", type: "alb", evaluateTargetHealth: true },
        { name: "teaser", domain: "teaser-dev.truloop.app", type: "cname", target: "...", ttl: 300 },
        { name: "dashboard", domain: "dashboard-dev.truloop.app", type: "cname", target: "...", ttl: 300 },
      ]
    : [
        { name: "api", domain: "api.truloop.app", type: "alb", evaluateTargetHealth: true },
        { name: "core-service", domain: "truloop-core.prod.truloop.app", type: "alb", evaluateTargetHealth: true },
        { name: "root", domain: "truloop.app", type: "a", ip: "216.150.1.1", ttl: 300 },
        { name: "www", domain: "www.truloop.app", type: "cname", target: "...", ttl: 300 },
        { name: "blog", domain: "blog.truloop.app", type: "cname", target: "truloop.ghost.io", ttl: 300 },
        { name: "wiki", domain: "wiki.truloop.app", type: "cname", target: "c30224b538-hosting.gitbook.io", ttl: 300 },
        { name: "guide", domain: "guide.truloop.app", type: "cname", target: "c30224b538-hosting.gitbook.io", ttl: 300 },
        { name: "dashboard", domain: "dashboard.truloop.app", type: "cname", target: "...", ttl: 300 },
      ];

지원하는 레코드 타입

타입용도예시
albALB Alias 레코드API 도메인 → ALB
aA 레코드 (IP)루트 도메인 → Vercel
cnameCNAME 레코드www → 외부 서비스
mxMX 레코드이메일 라우팅
txtTXT 레코드도메인 검증, SPF

새 DNS 레코드 추가 방법

상수 파일에 레코드 정의

src/components/dns/constants.ts에 레코드를 추가합니다.

typescript
// 예시: 새로운 CNAME 레코드
{
  name: "status",
  domain: "status.truloop.app",
  type: "cname",
  target: "statuspage.io",
  ttl: 300,
}

미리보기

bash
pulumi preview

적용

bash
pulumi up

도메인 구조 요약

truloop.app (메인)
├── api.truloop.app          → ALB (Backend API)
├── assets.truloop.app       → CloudFront (정적 에셋)
├── www.truloop.app          → Vercel (Teaser)
├── blog.truloop.app         → Ghost (블로그)
├── wiki.truloop.app         → GitBook (Internal Wiki)
├── guide.truloop.app        → GitBook (User Guide)
├── dashboard.truloop.app    → Vercel (Dashboard)
└── truloop-core.prod.truloop.app → ALB (Prod 전용)

truloop.kr (한국)
└── (별도 레코드 관리)

butbeautiful.co (회사)
├── www.butbeautiful.co      → Notion (회사 소개)
└── 이메일 (Google Workspace)

butbeautifulco.com (회사 .com)
├── www.butbeautifulco.com   → Squarespace
└── 이메일 (Google Workspace)

변경 이력

날짜변경 내용
2026-03-11guide.truloop.app CNAME 레코드 추가 (User Guide GitBook 커스텀 도메인). 누락된 wiki.truloop.app, dashboard.truloop.app, dashboard-dev.truloop.app 레코드 보완
2026-03-10소스 코드 검증: DNS 상수 코드 예시를 실제 코드와 일치하도록 갱신 (evaluateTargetHealth, core-service, blog 레코드 추가)