오늘은 릴레이 블로깅 3번째 주제 서버에 대하여 알아볼 시간이다.
서버는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미한다. 특히, 서버에서 동작하는 소프트웨어를 서버 소프트웨어라 한다.
보통 어딘가에 접속하려고 하는 데 사용이 불가능한 경우 "서버가 죽었다"라고 표현한다. 서버는 영어 단어 그대로 제공하는 주체이다.
예시)판매하려는 상품 정보가 전부 쇼핑몰 앱 안에 있다고 가정을 했을때 앱과 연결된 서버가 없다면 새로운 상품 목록을 받기 위해 앱 자체를 끊임없이 업데이트 해야할 것이다.
앱을 사용하는 사람들에게 상품 정보를 실시간으로 전달하기가 매우 어려워진다. 이 외에도 서버가 없을 경우에는 결제 기능을 사용할 수 없고 금전 정보를 주고 받아 사용하는 결제를 사용하기 위해서 은행 서버와의 연결이 필요하다.
이렇게 상품 정보 같은 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 것을 2티어 아키텍처, 또는 클라이언트-서버 아키텍처라고 부른다.
컴퓨터 네트워크에서 클라이언트는 네트워크를 통하여 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속할 수 있는 응용 프로그램이나 서비스를 말한다.
리소스를 사용하는 앱이 "클라이언트",
리소스를 제공하는 곳이 "서버"라고 부른다
예시) 클라이언트는 손님, 서버는 서빙하는 점원과 비슷하다.
이처럼 클라이언트와 서버는 요청과 응답을 주고받는 관계이다.
클라이언트-서버 아키텍처에서는 요청이 선행되고 그 후에 응답이 온다.
일반적으로 서버는 리소스를 전달해주는 역할이고, 리소스를 저장하는 공간을 별도로 마련해두는데 이 공간을 "데이터베이스"라고 부른다.
데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다. 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음이다.
클라이언트 앱은 사용자가 눈으로 보고 대면하므로, 프론트엔드 영역
서버 앱은 사용자 눈에 직접 보이지 않게 뒤에서 작동하므로, 백엔드 영역이라고 부른다.
클라이언트와 서버 간의 통신은 요청과 응답으로 구성된다. 요청이 있어야만 응답이 온다. 클라이언트와 서버 간의 통신을 알아보려면, 먼저 프로토콜이라는 개념을 이해해야 한다.
프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다. 웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 서로 대화를 주고 받는다. HTTP를 이용해 주고받는 메시지는 "HTTP 메시지"라고 부른다.
이후 서버와 클라이언트의 통신에 대해서 더 알고 싶으면 API에 대해서 공부를 해보자. 😀
서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스(interface)를 제공해 주어야 하는데 이것을 API라고 한다.
프론트엔드 개발자여도 백엔드에 대한 지식은 커다란 도움이 될것이다.