CI 묻고 답하기

제목 '/' 루트 도메인을 '/kr/' 로 인식시킬수 있는 방법이 있나요?(해외 서비스 고민)
카테고리 일반
글쓴이 스크림 작성시각 2019/11/17 23:50:31
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 231   RSS

국내에서 서비스 하던 프로그램을 해외에서도 서비스하려고 합니다. 기존엔 abc.com 으로는 한국서버, abc.us 는 미국서버로 서비스를 했었는데, 지역이 늘어나면 관리하기가 힘들어질것같아서.

abc.com/kr/ 일경우 한국서버 abc.com/us/ 일경우 미국서버로 돌아가게 해주려고 합니다.

이럴경우 지금 소스 곳곳에 document.location.href = '/board/asdf'; 이런식으로 되어있는 소스코드에 모조리 현재 로그인 되어있는 서버의 컨디션에 따라 prefix 를 붙여줘야 하는데 현실적으로 그런 방법은 불가능할 것 같구요.고민되는 예시는 1. 웹페이지 호출부 2. 이미지 경로들 /images/ 폴더에 이미지 태그로 되어있는 것들 어떻게 해야할지..

혹시 서버 설정에서 해줄 방법이 있을까요?

두번째 질문은 abc.com/kr/ 식으로 들어왔을때 /kr/ 경로명에 따라서 포워딩을 해줄경우 결론적으로 무조건 포워딩 해주는 서버를 한번은 거쳐서 간다는 의미가 되는데 이럴경우 해외접속자의 경우 속도저하가 심하지 않나요? 그래서 이런 설정을 네임서버에서 해줘야 하는건가? 애플이나 그런데는 어떻게 분기를 해주지? 하는 궁금증이 들었습니다.

혹시 이렇게 국내 서비스 하다가 해외서비스로 전환할 경우 url 에 대해 처리해주는 요령이 따로 있을까요?

 다음글 업로드관련 질문입니다. (4)
 이전글 CI 공부중 이해가 안되는 오류가 있습니다. (3)

댓글

kaido / 2019/11/18 09:30:33 / 추천 0

주소를 굳이 분리 하지 않으셔도 세션으로 처리 하는 방법이 있습니다.

훅에 세션을 넣고 나라별로 언어 값을 주신 다음에 라우트나 _remap 메소드를 이용하시는 방법도 있습니다.

서버 기능만으로 주소만으로 구분 지어서 하실 거면 rewrite 와 .htaccess 등을 이용해서 원하는 주소로 리다이렉트 시킬수도 있습니다.

스위칭 글로벌 사이트 구현이라면 방법은 여러가지이라서 사례를 찾아보시고 질문하시는게 좋을듯 합니다.

스크림 / 2019/11/18 12:08:34 / 추천 0

kaido 님 그렇게 할경우 us 서버 이용자들이 매호출마다 한국서버를 거치게 되는거 아닌가요? 그러면 속도가 많이 느릴텐데...

애당초 특정 url 일 경우 해당 서버로 가게 하려는게 목적인데 방법이 있을까요? 

kaido / 2019/11/18 16:37:58 / 추천 0

서버가 분리되어 계신가요?

전 하나의 서버에서 조건에 따라서 스윗칭이 되는것으로 생각 했었습니다.

애초에 서버가 분리되고 도메인이 분리 되어있다면, 스윗칭을 왜 생각 하시는지 모르겠습니다.

도메인 A 타입이었던가요? 거기에 직접 주소까지 기재해서 멀티 도메인 타입으로 사용하면 나눠서 들어갑니다.

도메인 설정을 직접 할수 없다면 결국 한국이든 영문이든 일단 한번 타고 들어가서 리다이렉트 해야 됩니다.

글로벌 작업 때문에 한쪽에 트래픽이 몰릴까봐 걱정이다. 라는것은 일단 트래픽이 확실히 문제가 되고 나서 생각하셔도 늦지 않습니다.

일반적으로 영문 작업 하나 더 했다고 트래픽이 폭탄이 터진적이 제 개발 경력 중에선 전무합니다.

국문이 원래 트래픽이 많다면 모를까요.

kaido / 2019/11/18 16:45:49 / 추천 0

1번 질문에 대해서 제가 이해를 잘 못했었습니다

1번의 경우는 일반적으로 추후에 리소스 관련 주소가 변경될걸 염두해서 보통은 상수로 정의해 둡니다.

서버가 변경되거나 환경설정이 변경되어도 일괄적으로 변경할수 있도록 말이죠.

현재 어떻게 만들수 있느냐? 보다는 어떤 형태로 만들고 싶은지를 먼저 샘플을 찾거나 정리하시는게 좋을것 같습니다.

정리를 하고나서 의견제시를 하시면 그것이 어떤 형태로 구현이 가능 한지 아닌지에 대해 답변을 들으시는게 빠릅니다.

스크림 / 2019/11/18 23:31:26 / 추천 0

나름 의견 제시를 한거긴 한데 부족한것 같아서 다시 설명을 해봅니다. 

abc.com 이라는 도메인 하나로 여러 나라에 서비스 하려고 합니다. 

각 나라별로 aws 서버를 구축해서 데이터를 넣어놓았고 자신의 나라 서버에 접속해야만 합니다. (속도 문제 및 데이터는 해당국가에만 두었음)

어떤 기관이 어느 서버인지 정보는 모든 서버에 반영해두었습니다.

 

이런상황에서 기존에는 완전 독립되도록 *.abc.com 은 한국기관에게 *.abc.us 는 미국 기관에게 서비스를 제공해 오고 있습니다.

하지만 나라의 서버별로 도메인을 증가시키는것에는 한계가 있어서 서브도메인 혹은 도메인 뒤에 *.abc.com/kr/ 식으로 붙여서 서버를 분배해주도록 하려고 합니다.

 

서브도메인으로 처리하면 모든 문제 해결이 가능합니다. kr.member.abc.com, kr.finance.abc.com 식으로 기존에 서비스별로 나누어져 있는 서브도메인에 대해서 가공 작업을 해줘야 하는 불편함이 있긴 하지만. 못하는 것은 아닙니다. 

이러한 고민을 하고 있을때 apple.com/kr/ apple.com/us/ 처럼 뒤에 첫번째 문구에 따라 나라를 달리 해주는데 저는 이렇게 하는게 /kr/은 한국서버 /us/ 는 미국서버 식으로 각 나라에서 빨리 엑세스 할수 있도록 한 것이 아닐까 하는 생각을 했습니다.  저렇게 뒷부분으로 분기해서 호스트의 ip 를 지정해줄 방법이 있는지가 궁금합니다. 특히, codeigniter 에서 route 를 이용해 포워딩 해주는 것이 아니라. 네임서버 등의 설정 단에서 방법이 있는지가 궁금합니다. 왜냐면 미국이용자가 한국서버에 접속해서 codeigniter 의 연산을 거쳐서 미국서버로 포워딩 되는 네트워킹이 반복된다면 서비스 속도가 현저히 떨어지는것처럼 느끼게 될 것이기 때문입니다. 

 

질문 두가지를 동시에 하다보니 오해를 만드는 것 같아 우선 궁금한것 부터 정리해서 다시 올립니다. ㅎ 친절한 답변 감사드립니다.

 

변종원(웅파) / 2019/11/19 10:30:41 / 추천 1

우선 ci 질문이 아닙니다. 

상위 프로바이더나 dns단에서 처리해야할 문제입니다.

꼭 /kr/, /us/ 라고 사용해야한다면 aws rout53과 람다 서비스 결합해서 서비스하는 것을 고려해보시기 바랍니다.

람다 어플리케이션에서는 kr, us 판별해서 특정 아이피나 도메인으로 포워딩해서 처리할 수 있습니다. 그러나 이 방식 또한 리전의 영향을 받을 수밖에 없습니다.

지역적 영향을 받지 않으려면 dns에서 처리해야 하며 현지화 서비스는 2차도메인이 답입니다.

변종원(웅파) / 2019/11/19 11:31:56 / 추천 0

카이도님의 부연설명 : Lambda@Edge와 연동되어 사용자지정 코드를 고객의 사용자에서 가까운 위치에서 실행하고 맞춤화된 사용자 경험을 제공

aws route53 + Lambda@Edge 

비용이 문제겠네요. 2차 도메인의 저비용이냐 aws 비용대비 효율이냐.. 결정의 관건. ^^

스크림 / 2019/11/20 00:10:54 / 추천 0

웅파님~ 감사합니다. 

그렇네요. ci 질문은 아니네요^^; 착각을 했습니다. 죄송합니다. 

말씀하신대로 꼼수부려서 일 키울생각말고 그냥 2차도메인을 알아봐야할 것 같습니다.