다크 모드
DNS/인증서
Route53 호스트 존
truloop은 여러 도메인을 Route53에서 관리합니다.
Public 호스트 존
| 도메인 | 용도 | 관리 |
|---|---|---|
truloop.app | 메인 애플리케이션 도메인 | Lookup (기존 존 참조) |
truloop.kr | 한국 도메인 | Lookup |
butbeautiful.co | 회사 도메인 | Lookup |
butbeautifulco.com | 회사 도메인 (.com) | Pulumi에서 생성 (Prod만) |
Private 호스트 존 (Service Discovery)
| 도메인 | 환경 | 용도 |
|---|---|---|
truloop-dev.local | Dev | ECS 서비스 간 내부 통신 |
truloop-prod.local | Prod | ECS 서비스 간 내부 통신 |
Private 호스트 존은 AWS Cloud Map의 Service Discovery 네임스페이스에 의해 자동 생성됩니다.
DNS 레코드
truloop.app 레코드
| 레코드 | 타입 | 대상 |
|---|---|---|
dev-api.truloop.app | A (ALB Alias) | Dev ALB |
teaser-dev.truloop.app | CNAME | Vercel DNS |
dashboard-dev.truloop.app | CNAME | Vercel DNS |
assets-dev.truloop.app | A (CloudFront Alias) | CloudFront |
butbeautiful.co 레코드 (Prod만)
| 레코드 | 타입 | 대상 |
|---|---|---|
butbeautiful.co | MX | 1 smtp.google.com (Google Workspace) |
butbeautiful.co | TXT | Google Site Verification |
www.butbeautiful.co | CNAME | external.notion.site (Notion) |
_notion-dcv.www.butbeautiful.co | TXT | Notion Domain Verification |
butbeautifulco.com 레코드 (Prod만)
| 레코드 | 타입 | 대상 |
|---|---|---|
butbeautifulco.com | A | Squarespace IPs |
butbeautifulco.com | MX | Google Workspace |
butbeautifulco.com | TXT | Google, JetBrains, SPF |
www.butbeautifulco.com | CNAME | ext-sq.squarespace.com |
ACM 인증서
ALB 인증서
ALB의 HTTPS Listener에 연결되는 인증서입니다. truloop-infra의 Alb 컴포넌트에서 관리합니다.
- 도메인:
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 },
];지원하는 레코드 타입
| 타입 | 용도 | 예시 |
|---|---|---|
alb | ALB Alias 레코드 | API 도메인 → ALB |
a | A 레코드 (IP) | 루트 도메인 → Vercel |
cname | CNAME 레코드 | www → 외부 서비스 |
mx | MX 레코드 | 이메일 라우팅 |
txt | TXT 레코드 | 도메인 검증, 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-11 | guide.truloop.app CNAME 레코드 추가 (User Guide GitBook 커스텀 도메인). 누락된 wiki.truloop.app, dashboard.truloop.app, dashboard-dev.truloop.app 레코드 보완 |
| 2026-03-10 | 소스 코드 검증: DNS 상수 코드 예시를 실제 코드와 일치하도록 갱신 (evaluateTargetHealth, core-service, blog 레코드 추가) |