[Web] CS 발전역사로 보는 프론트엔드와 백엔드 개념

1 분 소요


CS(Client-Server)프로그램의 발전역사를 통해 프론트엔드백엔드의 개념을 알아보자.

CS 프로그램의 발전

초기의 업무용 프로그램 형태는 아주 단순했다.
사용자가 Form에 원하는 정보를 입력하면, 사용 중인 컴퓨터 내의 데이터베이스를 쿼리 한 후, 해당 결과를 문서로 보여주는 형태였다.

시간이 지나면서, 내 컴퓨터 내에 있는 데이터가 아닌 원격에 있는 데이터베이스를 조회하고자 하는 요구가 생기게 되었다.
이를 위해서 인터넷이라는 네트워크를 이용해 데이터를 주고 받게 되었고, 이 때 정보를 요청하는 쪽이 클라이언트 정보를 제공하는 쪽이 서버라 불리며 클라이언트-서버 구조가 형성되었다.

이러한 클라이언트-서버 구조는 동기화에 있어서 문제점을 안고 있었다.
서버의 데이터와 프로그램이 변경될 경우 클라이언트 프로그램을 수동으로 업데이트 해줘야 했다. 당시 업데이트의 개념은 삭제와 재설치를 의미했는데, 이러한 과정에서 다른 프로그램에 영향을 미치기도 하며 설치와 배포에 대한 부담을 가중시켰다.

좀 더 원활한 CS 프로그램 방식을 고민하던 중, 이 눈에 띄게 되었다.
웹은 다음과 같은 구조를 가지고 있었다.

  • 웹 브라우저가 페이지를 요청
  • 서버는 요청받은 페이지를 찾아 응답

요청하고 응답하는 구조를 가지고 있다는 점에서 CS프로그램 방식을 웹에 얹어서 사용할 수 있겠다고 생각하게 되었다.
그렇게 되면 클라이언트는 따로 프로그램을 가지고 있지 않아도, 웹 브라우저를 통해서 서버가 응답한 정보를 열람할 수 있었고, 웹을 통해 실시간 요청-응답이 가능하기 때문에 동기화를 위해 프로그램을 재설치하는 등의 번거로움이 없어지게 되었다.

이렇게 초기의 웹 프로그램의 개념이 만들어지게 되었고, 위와 같은 구조에서 클라이언트 측은 브라우저를 통해 요청한 페이지를 받아 보는 것이 끝이 었기 때문에, 당시의 웹 개발자는 서버 프로그래머를 의미했다.
서버 프로그래머는 브라우저를 통해 요청을 받고, 해당 요청을 기반으로 DB를 쿼리한 후, 쿼리한 정보를 가지고 페이지를 만들어 웹서버로 전송해주는 역할을 했다. 지금의 백엔드 개발자가 하는 역할에 해당한다.
이 때 필요한 것이 브라우저와 통신을 위한 웹 서버, 그리고 DB를 쿼리하여 동적 페이지를 생성하기 위한 웹 어플리케이션 서버(WAS)였다.

시간이 흐르면서 CS 프로그램의 방식이 페이지를 보내는 것에서 데이터를 보내는 것으로 변화했다.
JavaScript가 등장하면서 서버는 더 이상 동적 페이지를 만들지 않고, DB를 쿼리한 결과를 JSON이나 xml의 형태로 웹 서버를 통해 전송하게 되고, 데이터를 요청한 쪽에서 응답으로 온 데이터를 이용해 사용자에게 페이지를 만들고 보여주게 되는 것이다.
이렇게 응답받은 데이터를 가지고 사용자가 볼 화면을 구성하는 것이 프론트엔드 개발자의 역할이다.

즉, 사용자가 볼 화면 페이지를 구성하는 클라이언트 단 개발자가 프론트엔드 개발자에 해당하고, 요청받은 정보를 쿼리하여 요청한 쪽에 전송해주는 서버 단 개발자가 백엔드 개발자에 해당한다고 말할 수 있다.



:orange_book: Reference
웹 서버 프로그램이란



댓글남기기