DNS 서버에 대해 공부하며 서브 도메인 등록을 위한 A Record와 CNAME이 무엇이고, 장단점은 무엇인지 알아보기 위함.
사전 정보
커스텀 도메인을 사용할 경우 서브 도메인을 동록하기 위해 DNS 서버에 CNAME과 A Record와 같은 정보를 등록해야합니다.
기본적으로 DNS 서버에는 URL(도메인)과 IP가 매핑되어 있습니다.
DNS 예시
naver.com 192.168.0.1
google.com 172.17.0.1
dev.devops.co.kr 10.161.1.5
gitlab.devops.co.kr 10.161.1.5
argocd.devops.co.kr 10.161.1.5
여기서 하나의 Row를 Record라고 하며, 저장되는 타입에 따라 A Record와 CNAME으로 구분됩니다.
위 예시 테이블의 경우 하나의 도메인에 하나의 IP 주소가 직접 매핑되어 있는 방식으로 A Record 타입입니다.
DNS 예시
naver.com 192.168.0.1
google.com 172.17.0.1
dev.devops.co.kr 10.161.1.5
gitlab.devops.co.kr dev.devops.co.kr
argocd.devops.co.kr dev.devops.co.kr
위와 같은 테이블 구조를 가질 경우 dev.devops.co.kr의 경우 A Record 방식으로 적용되어 있습니다.
gitlab.devops.co.kr, argocd.devops.co.kr의 경우 DNS 서버로 요청을 할 경우, 1차적으로 dev.devops.co.kr를 리턴하고 다시 DNS 서버에서 10.161.1.5를 리턴합니다.
위 예시 테이블의 gitlab.devops.co.kr, argocd.devops.co.kr과 같이 도메인끼리 정보가 매핑되어 있는 Row를 CNAME타입이라고 합니다.
A Record의 경우 한번에 IP 주소를 받을 수 있어서 빠르다는 장점이 있습니다.
하지만 여러개의 서브 도메인이 하나의 IP 주소에 맵핑 된 경우 변경 된 모든 서브 도메인을 찾아서 수정해야하기 때문에 번거롭다는 단점이 있습니다.
IP 주소의 변경이 많은 환경에서 서브 도메인들을 공통 도메인 주소로 매핑시키는 CNAME 레코드로 저장하고, 공통 도메인 주소를 IP 주소에 매핑시키는 A Record로 저장합니다.
그러면 IP 주소가 변경되었을 때 공통 도메인 주소의 A Record 정보만 수정하면 되어 CNAME을 사용할 때 관리가 편하다는 장점이 있습니다.
하지만 IP 주소를 받기까지 여러번 DNS에 질의를 해야하여 성능 저하 이슈가 발생할 수 있다는 단점이 있습니다.