클라우드에 서버를 구축하고 애플리케이션을 실행하면, 해당 서버의 고정 IP로 HTTP 요청을 보내서 원하는 템플릿 파일을 받을 수 있습니다. 그런데 문득 이런 의문이 듭니다. (나만 그랬을 수도..) 지금까지 저희가 개발을 하고 테스트할 때는 브라우저로 localhost:8080 에 접속하여 결과를 확인했습니다. 템플릿 파일은 내 컴퓨터에 있는데, localhost에 요청을 날렸더니 그 파일을 찾아서 브라우저에 출력했습니다. 어떻게 이것이 가능한걸까요? 직관적으로 생각해보면 localhost가 네트워크 상에서 내 컴퓨터를 가리킨다고 할 수 있어요. 너무 당연한 말처럼 들리는데요. localhost가 실제로 네트워크에서 어떻게 내 컴퓨터를 가리키는지 알아보겠습니다.
위의 그림은 localhost로, 아래 그림은 127.0.0.1에 접속한 결과입니다. 완전히 동일한 것을 알 수 있어요. 이 말은 localhost라는 도메인의 실제 ip 주소는 127.0.0.1라는 것입니다. 127.0.0.1는 네트워크에서
특수한 ip주소인데요, 루프백(loopback) 혹은 로컬호스트 주소(localhost) 라고 부릅니다.
네트워크 통신은 호스트 둘이 패킷을 주고 받는 것을 말합니다. 송신 호스트의 네트워크 계층에서 수신 호스트의 네트워크 계층에 패킷을 전송하면 상위 계층은 패킷을 분해하여 순수 데이터를 얻습니다. 그런데 이때 목적지 IP 주소가 루프백이라면 송신 호스트는 외부로 패킷을 전송하지 않습니다. 전송하지 않고 고스란히 자신이 다시 받은 것처럼 처리하여, 상위 계층으로 올려 보냅니다. 즉 자신이 송신한 패킷을 그대로 수신한 효과를 줍니다.
루프백을 활용하면 별도의 서버와 네트워크를 구축할 필요 없이 자신의 컴퓨터로 개발 내용을 확인할 수 있습니다. 그래서 localhost를 개발 환경으로 주로 사용하는 것입니다. 하지만 거꾸로 말하면 다른 컴퓨터에서는 이 주소에 접근할 수는 없다는 의미가 됩니다. localhost는 자신의 컴퓨터를 가리키는 특별한 주소인데, 해당 템플릿 파일을 가지고 있지 않은 외부 컴퓨터는 아무리 localhost로 요청을 날려봤자 파일을 받을 수 없을 것입니다.
그래서 우리가 해야 하는 작업은 우리가 개발한 애플리케이션을 다른 사용자들도 접속할 수 있도록 서버를 구축하는 것입니다. 서버-클라이언트 구조에서 서버는 24시간 구동되어야 합니다. 이런 서버를 개인이 만들려면, 안 쓰는 컴퓨터에 서버 애플리케이션을 실행하고 24시간 구동해야 합니다.(홈 네트워크) 기업이라면 서버실을 따로 두고 여기에서 접속을 관리합니다. 이러한 방법은 초기 비용이 클 뿐만 아니라, 네트워크를 잘 알고 있는 인력이 있어야 가능합니다. 이것이 부담스러운 사람들을 위한 선택지가 바로 클라우드 컴퓨팅을 활용하는 것입니다. 자세한 내용은 다음 단락에서 이어가겠습니다.
<aside> 💡 localhost는 개발 환경이다. 다른 컴퓨터는 이 주소로 우리의 컴퓨터에 요청을 보낼 수 없다. 따라서 24시간 구동되는 서버를 따로 구축해야 한다.
</aside>
개발 환경 나가면 개고생이라는 의미로 사용되는 밈입니다. 우리의 미래일지도…