기존에 eeos 도메인을 BE가 사용하고 있었고, FE는 vercel에서 제공해주는 도메인을 기본적으로 사용하고 있었다.
하지만, 버셀에서 제공해주는 도메인 주소가 보기 안 좋다.라는 의견이 있었고,
어차피 내가 도메인을 이미 구매했으므로 FE도 eeos 도메인을 적용해보자! 라는 의견이 나왔다.
우리는 eeos 도메인을 fe,be가 각각 prod, dev용으로 사용할 것이다.
이때 도메인을 4개 산다! 라고 생각하는게 아니라 “서브 도메인”을 이용하면 되겠다. 라고 생각했다.
사실, 나도 “서브 도메인”에 대해서 잘 모르기도 하고
팀원들에게 설명을 해주기 위해서 개념 정리와 FE의 서브 도메인을 적용시키는 과정에서 의문이 들었던 점을 정리한다.
eeos.store의 경우에 하위 도메인은 www.eeos.store, 123.eeos.store, econo.eeos.store가 될 수 있다.는 잘못된 설명이다.
서브 도메인의 가장 일반적인 용도는 웹 사이트 테스트 또는 준비 버전을 만드는 것이다.
또한, 모바일 사이트(m.yoursite.com), 위치별 사이트(uk.yoursite.com), 사이트의 하위 섹션(blog.yourtsite.com)을 만들 때도 유용하다.
그렇다. 우리는 웹 사이트 테스트 또는 준비 버전을 만든다. 라는 조건에 충족하기에 prod, dev를 모두 eeos 도메인을 사용하기로 했다.
갑자기 든 의문이다.
사용자가 eeos.store로 접속하다가 마구잡이로 서브 도메인을 건들다보면 be로 접속할 수가 있다.
(브라우저 단을 건드리지 않고, 바로 BE로 접속하는 경우다.)
하지만, 이 경우는 cors에러를 통해 진짜 접속은 못 하게 막을 수는 있다.
cors가 이런 용도가 아니기는 하지만…..ㅠ
이펙티브 자바에서 예외는 예외 상황에서만 사용하라고 한 것처럼
즉, 정상적인 요청에서 흐름을 제어하는 용도로 사용하지 말라고 한 것처럼
이 같은 경우도 cors에러가 나는 게 정상적인 흐름(사용자가 직접적으로 BE에 요청을 보내는 경우)인데 이를 흐름 제어용(접속 못 해요!)라고 막는 건 아닌 것 같다.
다시 생각해보니, BE용 도메인을 새로 가지고 있는 게 맞을 것 같다.
이 부분은 이번주 일요일 코어 타임 때 팀원들과 논의 후 FE, BE중 eeos.store 도메인을 누가 가지고 갈지 결정해봐야겠다.
++) FE Ocean님께 잠시 말씀을 드렸는데.
근데, 도메인이 달라지면, 쿠키 전달이 안 되지 않나요? 라는 말이 돌아왔다.
아.. 맞다..! 우리가 그래서 도메인을 같이 맞추기로 했지…
Ocean님이 그럼 아예 BE 서브 도메인을 외부인이 접속 못 하게 완전 이상한 문자로 할 수도 있을 것 같아요 라는 말씀을 해주셨다.
오.. 이 말이 맞을 것 같다…
도메인을 등록을 할 때 A record, CNAME record를 등록했다.
그런데 재밌게도 서보 도메인을 등록할 때는 CNAME만 등록했다.
서버의 IP 주소와 domain 이름이 매핑된 레h드
즉, 서버의 주소를 찾아가기 위한 기본적인 방법
실제로 도메인과 매핑된 IP를 확인하려면 nslookup 명령어를 사용하면 된다.
서브 도메인 적용 전 FE의 도메인 주소로 IP주소를 확인하면 다음과 같다.
하나의 도메인 네임을 다른 이름으로 매핑 시키는 방법
A 레코드는 도메인 이름과 IP가 매핑되었다면,
CNAME 레코도는 alias 도메인이나 서브도메인을 만들 때 사용한다.
A Record의 장점은 한 번의 요청으로 찾아갈 서버의 IP주소를 단 번에 알 수 있다는 것이다.
prod.eeos.com - A Record - 111.111.11.1(prod server IP)
one.prod.eeos.com - A Record - 111.111.11.1(prod server IP)
two.prod.eeos.com - A Record - 111.111.11.1(prod server IP)
만약 하나의 IP주소에서 one.prod.eeos.com
two.prod.eeos.com
같은 서브 도메인을 처리하고 있는 상황이라고 생각해보자.
이 처럼 서브 도메인을 A 레코드로만 매핑시켰을 때
prod server IP주소가 변경되었을 때, 모든 A 레코드를 찾아 IP주소를 변경해야 한다.
prod.eeos.com - A Record - 111.111.11.1(prod server IP)
one.prod.eeos.com - CNAME Record - prod.eeos.com
two.prod.eeos.com - CNAME Record - prod.eeos.com
반면, one.prod.eeos.com
, two.prod.eeos.com
와 같은 서브 도메인을 prod.eeos.com
도메인으로 매핑시키는 CNAME Record로 저장한다면,
prod server IP주소가 변경되었을 때 prod.eeos.com
만 A 레코드의 정보를 변경시키면 된다.
즉, CNAME Record는 IP주소가 자주 변경되는 환경에서 유연하게 대응할 수 있다는 장점이 있지만, 실제 IP주소를 얻을 때까지 여러번 DNS 정보를 요청해야 한다는 단점이 존재한다.
버셀에서는 A 레코드에 대해서 지원하지 않기 때문에
자동으로 CNAME을 사용하여 서브 도메인을 적용하였다.