티모시 버너스리님이 웹 서비스의 기반을 만들어줬다. 프로그램은 세가지 요소로 이루어진다. 자료구조(문서 포함), UI 그리고 제어 세가지로 분류를 해줬는데, 이는 유지보수의 편의성을 위해서 쪼개둔 것이다. 초기 웹 서비스와 같은 경우 웹클라이언트(브라우저)가 인터넷에 연결이 되어있다면, 웹 서버에 연결이 된다. HTTP 1.1기준으로 TCP/IP연결이 되어있다 가정을 하고 웹 서비스가 실행된다. 이때 HTTP의 가장중요한 특징은 바로 Stateless다 . TCP/IP 연결은 상태와 관련이 되는데, HTTP의 stateless 특징 떄문에 설계적으로 문제가 생긴다.
URL에 특정 주소를 입력했을 때(DNS생략) http 통신을 통해 request를 주면 http의 response가 온다, 이때 가장 자주쓰이는 request method가 get인데, 이는 특정 리소스를 get 요청한다는 것을 의미한다. 웹 서버에 get 요청을 하면 해당 리소스(html 문서)를 response로 반환해준다.
받아온 리소스(HTML)은 구문분석(Parsing)을 실시하고 자료구조를 생성하는데, 이때 해당 자료구조를 DOM이라고 부른다. DOM을 갖고 렌더링 엔진이 화면을 보여주면 get 요청이 마무리된다.
자료구조에 해당되게 HTML이라고 한다면, UI부분을 담당하는 부분이 CSS3다. response의 데이터 순서는 HTML, CSS, 이미지 파일이 도착한다. 그렇기에 렌더링을 할 때 이미지 파일 렌더링이 늦어질 수 있어서, onload나 동적 import를 신경써줘야한다.
Post 요청을 하면 request를 보낼 때 특정 데이터를 웹 서버에 보내주고, 백 서버에서 처리를 해준다. 그리고 다시 response를 반환해주니 데이터는 양방향 상호작용이 가능케 된다.
하지만 양방향 상호작용에는 문맥이 발생하는데 상태는 전이성이 있다. 그에 반에 http 는 stateless이기에 이를 해결하기 위해 Database라는 시스템을 도입하기 시작했다. 문맥을 기억하기위해 Database을 사용해 연산 처리와 데이터 자료를 분리할 수 있게된다.
브러우저단에 따로 또 연산을 할 수 있는 엔진을 넣어주려 하는데, 이때 사용되는 언어가 Mocha -> Live -> Javascript가 된다. 그리고 클라이언트 측에서의 state 저장도 가능한데, 이를 Cookie라고 부른다. (쿠키의 특징으로는 속성 범위 기간이 있다)