웹 애플리케이션 아키텍처
웹 애플리케이션을 도식화하면 위의 사진으로 나타낼 수 있다.
웹사이트 vs 웹 애플리케이션
웹 개발 영역에서 웹사이트는 일반적으로 정적 페이지들의 집합체를 의미한다.
웹사이트에서 동적 페이지를 포함하게 된다면 이는 웹 애플리케이션이 된다.
웹 애플리케이션 아키텍처는 웹 사이트나 웹 서비스 등의 애플리케이션을 구성하는데 사용되는 시스템 구조를 의미한다.
웹 애플리케이션 아키텍처는 보통 3가지 레이어로 구성된다.
1. 프레젠테이션 레이어 : 웹사이트나 웹 어플리케이션의 사용자 인터페이스를 제공하는 부분이다. 주로 HTML, CSS, JavaScript를 사용하여 웹페이지를 렌더링하고 사용자와의 상호작용을 담당한다.
2. 비즈니스 레이어 : 웹 어플리케이션의 핵심 비즈니스 로직을 처리하는 부분이다. 데이터 베이스에서 데이터를 검색하거나 저장하는 등의 작업을 수행하고, 결과를 프레젠테이션 레이어로 전달한다.
3. 데이터베이스 레이어 : 데이터를 저장하고 관리하는 부분이다. 주로 관계형 데이터베이스를 사용하며, SQL 쿼리를 사용하여 데이터를 검색하고 업데이트 한다.
이러한 3가지 레이어는 서로 분리되어 독립적으로 작동하며, 각 레이어에 영향을 미치지 않도록 설계해야 한다.
이를 위해 MVC, MVP, MVVM 등의 디자인 패턴을 사용할 수 있다.
클라이언트-서버 아키텍처
클라이언트-서버 아키텍처는 웹 애플리케이션에서 가장 일반적으로 사용되는 아키텍처 중 하나이다.
클라이언트-서버 아키텍처는 일반적으로 클라이언트와 서버 간의 분리된 두 개의 프로세스 또는 컴퓨터로 이루어진다.
클라이언트는 사용자 인터페이스와 같은 프레젠테이션 레이어를 담당하고, 서버는 데이터베이스와 같은 백엔드 레이어를 담당한다.
클라이언트는 서버에게 응답을 요청하고 서버는 리소스를 응답을 하고 이러한 구조를 2-Tier 아키텍처라고도 부른다.
사실 일반적으로 서버는 리소스를 전달만 해줄 뿐, 리소스를 저장하는 별도의 공간을 마련해 두는데 이 공간을 "데이터베이스"라고 한다.
2-Tier 아키텍처에 데이터베이스가 추가된 구조는 3-Tier 아키텍처라 부른다.
🤔 클라이언트와 서버는 어떻게 통신할까?
클라이언트와 서버와의 통신을 알기 위해서는 프로토콜이라는 것을 먼저 확인하자.
프로토콜
이 규칙은 정보를 주고 받을 때, 데이터를 전송하고 받는 방법, 데이터의 형식, 데이터 전송 중 일어날 수 있는 에러 처리 방법 등을 포함한다.
프로토콜은 컴퓨터 네트워크에서 정보를 주고 받기 위한 필수적인 요소이고, 웹 애플리케이션에서 클라이언트와 서버 간 통신을 구현하는데 중요한 역할을 한다.
HTTP
: 웹 애플리케이션에서 클라이언트와 서버 간 통신을 할 때는, HTTP(HyperText Transfer Protocol)라는 프로토콜을 사용한다.
HTTP를 통해 주고 받는 메세지는 "HTTP 메세지"라고 부른다.
API
API(Application Programming Interface)란, 소프트웨어 애플리케이션 간 상호작용을 돕는 인터페이스이다.
즉, 서로 다른 소프트웨어 애플리케이션 간 데이터를 주고받을 수 있도록 하는 매개체 역할이다.
예를 들어보자.
클라이언트가 서버에게 "커피 좀 맛있게 타와!"라고 했을 때 컴퓨터는 알아 듣지 못한다.
하지만 클라이언트는 서버가 어떻게 구성되어 있는지 알 수 없을 때도 있다. 그럼 클라이언트는 어떤식으로 요청을 해야하는지 모른다.
이럴 때, 식당에서 메뉴판을 제공하듯 => "아메리카노는 /americano로 주문해주세요"
API가 바로 이 메뉴판 역할을 한다. 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공해줘야 하는데 이것이 바로 API이다.
API를 구축해 놓아야 클라이언트가 이를 활용할 수 있다.
보통 인터넷에 있는 데이터를 요청할 때는 HTTP 프로토콜을 사용하며, 주소(URL, URI)를 통해 접근할 수 있다.
HTTP API 디자인
HTTP API 디자인은 클라이언트와 서버 간의 통신을 위한 HTTP API를 설계하는 것을 말한다.
HTTP API는 일반적으로 JSON 형태로 데이터를 전송하고, REST 원칙을 따르는 경우가 많다.
HTTP API 디자인에서는, 클라이언트가 API를 사용하기 쉽도록 API 문서를 제공하는 것이 중요하다.
API문서는 API 엔드포인트(URL), 요청 및 응답 형식, 사용가능한 HTTP 메서드 등을 설명하는 문서이다.
API 문서를 잘 작성하면, 다른 개발자들이 API를 더 쉽게 이해하고 사용할 수 있다.
또한, HTTP API 디자인에서는 보안과 에러 처리에 대한 고려도 중요하다.
API 토큰 인증 및 HTTPS(SSL/TLS)를 사용하는 것이 좋다.
URL과 URI
URL
네트워크 상에서 웹페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다.
URL은 scheme, hosts, url-path로 구분할 수 있다.
- scheme : 통신 방식(프로토콜)을 결정
- hosts : 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다.
- url-path : 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명
URI
일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, fragment를 포함한다. query는 웹 서버에 보내는 추가적인 질문이다.
URI는 리소스를 식별하는 일반적인 개념을 나타내며, URL은 URI의 하위 집합으로, 인터넷 상의 리소스의 위치를 나타낸다.
다시 말해, 모든 URL은 URI지만, 모든 URI가 URL은 아니다.
IP와 PORT
IP
IP는 데이터 그램을 사용하여 정보를 주고받는다.
인터넷은 매우 큰 네트워크이다. 컴퓨터 간 통신을 위해서는 각각의 컴퓨터에 대해 고유한 식별자가 필요하다.
이를 위해 IP 주소가 사용된다. IP주소는 32비트(IPv4) 또는 128비트(IPv6)의 이진수로 표현된다.
IP는 라우터를 사용하여 인터넷 상의 다른 컴퓨터와 통신한다. 데이터 그램은 각 라우터를 거쳐 목적지에 도달하게 되고,
각 라우터는 목적지 주소를 확인하여 데이터를 다음 라우터로 전달한다.
PORT
터미널에서 리액트를 실행하면 나타나는 화면에는, 로컬 PC의 IP 주소인 127.0.0.1 뒤에 :3000과 같은 숫자가 표현된다.
이 숫자는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)를 의미한다.
포트 번호는 0~ 65535 까지 사용할 수 있다. 그중에서 0 ~ 1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있고 반드시 알아야 할 잘 알려진 포트 번호는 다음과 같다.
- 22 : *SSH
- 80 : HTTP
- 443 : HTTPS
*SSH(Secure Shell) : 네트워크 상에서 안전하게 원격 제어를 할 수 있도록 해주는 프로토콜.
도메인과 DNS
Domain name
웹 브라우저를 통해 특정 사이트에 진입을 할 때, IP 주소를 대신하여 사용하는 주소가 있다.
만약 IP 주소가 지번 또는 도로명 주소라면, 도메인 이름은 해당 주소에 위치한 상호로 볼 수 있다.
위 사진에서 코드스테이츠 홈페이지 IP 주소는 3.34.153.168 이고, 도메인 이름은 codestates.com 입니다.
DNS
인터넷에서 도메인 이름과 IP 주소 간의 변환을 수행하는 시스템이다. 사용자가 웹 사이트나 이메일과 같은 리소스에 엑세스 할 때, DNS를 사용하여 해당 도메인 이름에 대한 IP 주소를 찾아서 연결할 수 있다.
+http message, ajax,ssr,csr 내용 추가적으로 작성
'Network' 카테고리의 다른 글
[Proxy를 설정해 HTTP 통신하기] (0) | 2023.06.07 |
---|---|
[네트워크 심화] (0) | 2023.05.01 |
[HTTP/네트워크 실습] (0) | 2023.03.29 |
댓글