# 서버에 대해 알기전 맛보기
위 그림을 보면 Server, Clients, Internet 이 있다. Internet 이 Clients 와 Server 를 연결해주고 있다. 이것을 Clients - Server 모델이라고 한다. 이 세가지는 아주 밀접한 관련이 있는 것을 볼 수 있는데 그럼 Server란 무엇일까?
Server는 종업원으로 번역할 수 있고 Clients는 고객이다. 그러면 단어 Server를 보면 무언가를 제공하는 역할을 한다고 추측할 수 있고 Clients는 제공받은 무언가를 이용하는 존재인 것을 알 수 있다. 이렇게까지 알고있고 아래 그림과 비유를 보고 서버에 대해서 알아보자!
# Clients - Server 모델을 식당에 비유해보자
식당에서 고객이 음식을 주문할때부터 음식이 고객에게 제공될때를 생각해보자
- 고객이 종업원에게 음식을 주문한다.
- 종업원이 주방에 주문받은 음식을 말한다.
- 주방에서 냉장고에 재료를 찾는다.
- 냉장고에서 음식에 필요한 재료를 가지고온다.
- 주방에서 요리 후 종업원에게 준다.
- 종업원이 고객에게 주문한 음식을 제공한다.
총 크게 6단계를 거치는 작업이 있다. 일상생활에서 대부분의 서비스 제공은 이와 비슷하게 이루어질 것이다. 그럼 이 단계를 컴퓨터쪽으로 가져가서 서버와 클라이언트에 대해서 제대로 알아보자
고객, 종업원, 주방, 냉장고를 Clients, Server, Backend Language, DBMS로 바꿔보자.
- Clients에서 Server에 필요한 요청(Request)을 한다.
- 만약 Server에서 Clients에서 한 요청을 스스로 처리할 수 있으면 요청에 대한 응답(Response)을 하면되고 스스로 처리하지 못하면 Backend Language에게 준다. (Server에서는 config파일에서 할 수 있는 일인지 아닌지를 판단)
- 2번과 똑같이 요청을 처리할 수 있다면 응답 아니면 DBMS로 요청
- DBMS에서 DB에있는 데이터를 꺼내서 요청에 대한 응답
컴퓨터에서 요청 응답 방법은 식당에서 음식이 나가는 것과 비슷한 매커니즘을 보여준다. 위 그림을 보면 서버와 클라이언트에 대해서 전체적인 그림과 요청과 응답의 흐름을 볼 수 있다. 여기서 두가지 특징을 알 수 있다.
- Clients는 여러명일 수 있기 때문에 서버와 클라이언트는 N:1의 관계를 가질 수 있다.
-
게임을 예로 들자면 서버는 하나인데 게임에 접속한 사람은 여러명이다.
- Server가 클라이언트가 될 수 있다.
-
서버를 보면 Backend Language(BL)에게 요청을 하고 있기 때문에 이 관계를 보면 서버가 클라이언트가 되고 BL이 서버가 된다.
-
그렇기 때문에 같은 BL이나 DBMS를 여러 서버가 이용할 수 있다.
# ServerSide 간단 설명
여기서 장황하게 설명하는 것보다 간단히 ServerSide를 구성하는것을 알아보겠다.
- Server Programm
위 그림에서는 Server라고 썼는데 서버를 실행하게 도와주는게 Server Programm이다.
Server Programm에는 Apache, Nginx 등이 있다.
- Backend Language
보통 다들 컴퓨터에 대해 배울 때 떠올리기 쉬운 언어에 대한 것이다. 서버에 사용하는 언어는 다양한데 Java, Python, Go , Javascript 등이 있다.
- DBMS + DB
DBMS는 Data Base Management System 의 약자로써 DB를 관리해주는시스템이다. DB는 데이터를 저장하는 저장소인데 DBMS로 관리해주고 필요한 데이터를 제공할 수 있게 도와준다.
#참고하자
생활코딩이라는 사이트인데 서버에 대해서 잘모르고 비전공자라면 여기서 강의를 듣는것도 좋다.
댓글