📌 클라이언트-서버 아키텍처
웹에서 제공되는 서비스는 주로 서비스를 이용하는 (클라이언트) 와 서비스 제공쪽(서버)으로 나뉜다. 이러한 구조를 클라이언트-서버 아키텍처(Client-Server Architecture)라고 부른다.
✔️ 클라이언트(Client)
서비스를 사용하는 컴퓨터(Service User)를 말한다.
클라이언트는 사용자가 직접 이용한다. 따라서, 사용 편의성이나 휴대성 등을 고려해 개발이 이루어진다.
✔️ 서버(Server)
서비스를 제공하는 컴퓨터(Service Provider)를 말한다.
서버는 유지보수할 시점을 제외하고는 24시간 일년 내내 작동하고 있어야 한다. 클라이언트가 언제 접속해서 서비스를 이용할지 모르기 때문이다. 그러므로, 사용자와는 직접적 접점이 없기 때문에 편의성 보다는 기능에 중점을 두고 개발이 이루어진다.
✔️ 클라이언트와 서버의 구분
클라이언트는 보통 플랫폼에 따라 구분된다.
브라우저를 통해 주로 이용하는 웹(Web) 플랫폼에서의 클라이언트는 웹사이트 또는 웹 앱이라고 부른다. iOS나 안드로이드와 같은 스마트폰/태블릿 플랫폼, 그리고 윈도우와 같은 데스크탑 플랫폼에서 이용하는 앱 역시 클라이언트가 될 수 있다.
서버는 무엇을 하느냐에 따라 종류가 달라진다.
파일 서버는 파일을 제공하는 앱, 웹 서버는 웹사이트에서 필요로 하는 정보들을 제공하는 앱, 메일 서버는 메일을 주고받을 수 있도록 도와주는 앱이다. 데이터베이스도 데이터 제공자로서 일하므로 일종의 서버라고 볼 수 있다.
📌 웹 아키텍쳐(Web Architecture)
✔️ 2 Tier Architecture
리소스가 존재하는 앱과 리소스를 사용하는 앱을 분리시킨 것을 2티어 아키텍처, 또는 클라이언트-서버 아키텍처라고 부른다.
✔️ 3 Tier Architecture
기존 2티어 아키텍처에 데이터베이스가 추가된 형태를 3티어 아키텍처라고 부른다.
일반적으로 서버는 리소스를 전달해 주는 역할만 담당한다. 리소스를 저장하는 공간을 별도로 마련해 두는데 이 공간을 데이터베이스라고 부른다. 데이터베이스는 창고와 같은 역할을 한다. 이처럼 기존 2티어 아키텍처에 데이터베이스가 추가된 형태를 3티어 아키텍처라고 부른다.
웹 개발자 직군에 대해서 살펴본 적이 있다면 프론트엔드 개발자, 또는 백엔드 개발자라는 용어를 들어본 적이 있을 것이다. 이때 프론트엔드 혹은 백엔드는 아키텍처에서 어떤 분야를 다루는지에 따라 구분된다.
클라이언트처럼 사용자가 직접 눈으로 보고, UI를 클릭 또는 터치하는 등의 상호작용을 할 수 있는 앱을 주로 개발하면 프론트엔드 개발자라고 한다.
반면 사용자 눈에 보이지 않지만,
상품 정보를 API로 노출한다든지, 로그인/로그아웃, 권한 관리 등의 사용자 인증을 주로 다루는 개발자는 백엔드 개발자라고 부른다. 백엔드 개발자는 데이터베이스 등의 시스템 설계까지 도맡아서 하는 경우도 많다. (엄밀하게 데이터베이스만을 백엔드라고 칭하는 개발자도 있다)
댓글