아키텍쳐(Architecture)는 영어로 '건축학'이라는 의미를 가지고 있으며, 이는 프로그래밍이 건축학에 큰 영향을 받았기 때문이다. 프로그래밍에서 아키텍쳐는 일반적으로 '구조를 설계한다'라는 의미로 사용된다.
즉, 웹 어플리케이션 아키텍쳐는 해당 웹 어플리케이션이 서비스를 제공하기 위한 구조를 의미한다.
만약, 어떠한 웹사이트가 존재하고 해당 사이트는 제공하는 다양한 정보를 서버에서 불러온다고 가정해보자.
이 경우 웹사이트가 서버와 연결이 끊어진 경우, 사이트는 정보를 불러올 수 없기 때문에 이용자에게 서비스를 제공할 수 없게 된다.
반대로, 웹사이트 내부에 이미 다양한 정보가 포함되어 있다고 가정해보자(하드코딩된 상태).
이 경우 서버가 존재하지 않더라도 다양한 정보를 제공할 수 있지만, 새로운 정보를 지속적으로 업데이트 해야 한다. 또한, 결제와 같은 네트워크를 이용한 API를 제공할 수 없다.
이는 실시간으로 서비스를 제공해야하는 경우, 리소스가 존재하는 서버(Server)와 리소스를 사용하는 클라이언트(Client)를 분리하는 것이 유리하다.
2 Tier Architecture, Client-Server Architecture
> 서버와 클라이언트로 이루어진 웹 어플리케이션 구조를 의미한다.
3 Tier Architecture Client-Server-DB Architecture
> 기존의 2티어 아키텍쳐에 리소스를 저장하는 별도의 서버(Server)인 DB를 포함한 웹 어플리케이션 구조를 의미한다.
이때, 아키텍쳐의 각 요소는 여러 종류가 존재하며 다음과 같다.
Client의 경우, 이용자가 사용하는 플랫폼에 따라 구분된다.
(브라우저 <--> 어플을 사용하는 각종 기기)
Server의 경우, 서버가 제공하는 기능에 따라 구분된다.
(File-Server, Wep-Server, Mail-Server 등등..)
또한, DB도 서버에서 요청한 데이터를 제공하므로 일종의 서버라고 볼 수 있다.
클라이언트(Client)와 서버(Server) 간의 통신은 클라이언트의 요청과 서버의 응답을 통해 이루어진다.
일반적으로, 서버는 요청되지 않은 응답을 보내지 않는다.