개발자기본지식

#10강. 난 수동적인 웹서버야

JJJAEOoni 2021. 12. 20. 18:47
반응형

내가 html, 파일, 메일 등과 같은 자원(resource)의 '갑'인지 생각해보자.

길동의 집 마당에 석유가 나왔다고 해보자.

석유는 마을 사람들에게 나눌 필요가 없는 온전히 홍길동의 것이다.

 

길동은 석유를 마을 사람들에게 나눌 의무는 없지만

아량을 베풀어 나누어 줄 수는 있다.

이 상황에서 길동은 갑이된다.

 

길동이 석유를 나누기 위해 마을에 위 사진과 같은 표지판을 만들었다.

첫째, 오전 9시부터 오후 18시까지만 사용이 가능하다.

둘째, 하루에 1L만 가지고 갈 수 있다.

셋째, 꺽정이는 사용이 불가능하다.

 

마을 사람들과 협의하지 않고, 동의를 구할 필요 없이

일방적으로 자원을 공유하는 방법을 인터페이스라고 한다.

 

인터페이스 : 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면

 

즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.

컴퓨팅에서 컴퓨터 시스템끼리 정보를 교환하는 공유 경계이다.

 

인터페이스는 자원을 편리하게 공유하고자 하는 목적은 결코 아니다.

 

그렇다면 마을 한복판에 있는 우물은 누구의 것일까.

마을 사람 모두의 것이다.

누구의 허락도 받지 않고 사용이 가능하다.

1시에는 A가 사용하고 2시에는 B가, 3시에는 C가 사용하기로 했다.

C가 3시가 아닌 5시를 원해서 서로가 협의하여 우물을 사용하는 순서를 정해 표지판을 만들었다.

협의해서 만든 약속을 프로토콜이라고 한다.

 

여기서 인터페이스는 수직관계이고, 프로토콜은 수평관계의 약속을 의미한다는 것을 알 수 있다.

 

인터페이스의 이해를 돕기 위한 한 가지 예시이다.

 

고속도로의 상황을 보면 3갈래로 갈라지는 IC(InterChange)들이 있다.

이것은 국가가 국민의 동의를 받지 않고 도로라는 자원을 공유하기 위해 만든 것이다.

 

 

 

---------------------------------------------------------------------------------------------------------------------------------

 

 

아파넷(ARPAnet) 이라는 네트워크에는

a -> 퇴근

b -> 점심시간

이라는 프로토콜이 있고

 

A대학 네트워크에는

a -> 퇴근

b -> 휴식

이라는 프로토콜이 있다.

 

각자의 ByteStream으로 연결된 네트워크 안에서는 통신이 원활하게 이루어지지만

아파넷과 A대학 네트워크가 연결되는 순간 프로토콜이 망가진다.

이때 프로토콜 재정의가 필요하다. 

 

프로토콜 재정의 : 2개 이상의 네트워크가 하나로 통일될 때 필요

 

두 네트워크가 협의를 봐서

a -> 퇴근

b -> 점심시간

c -> 휴식

이라고 프로토콜을 재정의하였다.

 

이렇게 재정의 된 문서를 RFC 문서라고 한다.

이 문서는 재정의 될 때마다 번호를 매겨서

최초로 재정의 된 문서는 RFC1이라고 한다.

 

RFC : 인터넷 기술에 적용 가능한 새로운 연구, 혁신, 기법 등을 아우르는 메모를 나타냄

 

여기서 C대학의 네트워크가 합쳐지면 다시 프로토콜 재정의가 일어나서 RFC2,

D대학 네트워크가 합쳐지면 프로토콜 재정의가 일어나서 RFC3이 될 것이다.

 

이렇게 유럽의 큰 하나의 네트워크, 아시아 네트워크, 미국 네트워크 등등이 합쳐져

전 세계 모든 네트워크가 뭉친 것이 인터넷이며 이것을 WWW라고 한다.

 

WWW(World Wide Web) : 인터넷에 연결된 컴퓨터를 이용해 사람들과 정보를 공유할 수 있는 거미줄, 그물망(Web)처럼

얼기설기 엮인 공간을 뜻하는 용어

 

이미 엄청나게 거대해진 네트워크에 작은 A학교 네트워크가 합쳐질 때는 더 이상 프로토콜 재정의가 일어나지 않는다.

이럴 땐 합쳐지는 네트워크가 보통 원래 정의되어있는 RFC문서를 참고해서 만들어진다.

여기서 프로토콜도 거대해지면 인터페이스화 된다는 것을 알 수 있다.

 

이것의 예시를 들어보자.

 

배달의 민족이 초기에 A업체, B업체, C업체 등등 자신들의 어플을 이용해달라고 영업을 열심히 하며

업체와 배달의 민족과의 협의를 통해 서비스가 가능하도록 할 것이다.

우리나라 100개의 업체 중 70개의 업체가 배달의 민족을 서비스할 수 있게 된다면

더 이상 배달의 민족은 업체들을 일일이 찾아가며 어플 이용을 영업하지 않아도 될 것이다.

K업체가 배달의 민족 서비스를 요청하면 배달의 민족은 응답만 해주면 된다.

배달의 민족 네트워크가 거대해지면서 초기에 협의를 하던 프로토콜에서 요청에 응답만 하는 인터페이스로 바뀌게 된다.

 

---------------------------------------------------------------------------------------------------------------------------------

고객이 새우깡을 먹으려고 슈퍼를 가기 위해선 슈퍼의 주소를 알아야 하지만,

슈퍼 아줌마는 고객이 어디 사는지 주소를 알 필요는 없다.

 

이와 같이 클라이언트는 웹서버의 주소를 알아야 자료를 요청할 수 있지만,

웹서버는 클라이언트의 주소를 알 필요 없이 요청에 응답만 하면 된다.

 

웹서버는 클라이언트의 주소를 알 필요는 없지만 만약 1번지 주소에서 요청한 자료를 찾는데 10초가 걸린다면

웹서버 메모리는 1번지 주소를 기억하고 있어야 한다.

이렇게 너무 많은 클라이언트가 웹서버에 자료를 동시 요청하게 된다면 메모리가 기억할게 많아져 부하가 걸리게 된다.

그렇기 때문에 웹서버가 응답이 완료된 요청은 메모리에서 삭제한다.

다시 요청하지 않는 이상 응답할 일이 없기 때문이다.

 

메모리에서 주소를 삭제하지 않고 기억하고 있게 된다면 능동적인 응답이 가능하겠지만

최초의 html의 목적만을 생각한다면 문서 공유만 하기 위해선 능동적으로 문서를 공유할 일이 없으므로

기억하고 있을 필요 또한 없다.

 

따라서 웹서버는 수동적으로 움직이게 된다.

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형