HTTP/네트워크_01. 웹 애플리케이션 아키텍처

유슬기·2023년 1월 30일
0

프론트엔드

목록 보기
32/64

클라이언트 - 서버 아키텍처

2-Tier 아키텍처

인터넷 연결 없이 쇼핑몰 앱이 작동되지 않는 이유 → 상품 정보를 인터넷 어딘가에 존재하는 서버로부터 받아와야 하기 때문!

상품 정보가 전부 앱에 담긴 경우를 가정했을 때, 앱과 연결된 서버가 존재하지 않는다면? → 신상품 목록을 받기 위해서는 앱 자체를 업데이트 해야함 & 결제 불가

빈번한 데이터 업데이트가 필요한 경우, 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시키는 것이 유리하다.

리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 것을 2-Tier 아키텍처, 클라이언트 - 서버 아키텍처 라고 함

  • 리소스를 사용하는 앱: 클라이언트(client, 손님)
  • 리소스가 존재하는 곳: 서버(server, 서빙하는 사람)

리소스에 접근하려는 앱은 카페로 치면 손님(클라이언트)과 같아서, 리소스를 가지고 있는 점원(서버)에게 물품을 요청해야 하며, 요청에 따라 점원(서버)은 리소스를 담아 응답한다.

  • 클라이언트와 서버는 요청과 응답을 주고받는 관계
  • 클라이언트-서버 아키텍처에서는 요청이 선행되고 그 후에 응답이 온다.

3-Tier 아키텍처

일반적으로 서버는 리소스를 전달해 주는 역할만 담당한다.

리소스를 저장하는 공간을 별도로 마련해 두는데 이 공간을 "데이터베이스"라고 부르며, 데이터베이스는 창고와 같은 역할을 한다.

서버는 데이터베이스에 요청을 보내고, 응답을 받는다.

이처럼 기존 2티어 아키텍처에 데이터베이스가 추가된 형태를 3티어 아키텍처라고 부른다.

프론트엔드와 백엔드

클라이언트처럼 사용자가 직접 눈으로 보고, UI를 클릭 또는 터치하는 등의 상호작용을 할 수 있는 앱을 주로 개발하면 프론트엔드 개발자라고 한다.

사용자 눈에 보이지 않지만, 상품 정보를 API로 노출한다든지, 로그인/로그아웃, 권한 관리 등의 사용자 인증을 주로 다루는 개발자는 백엔드 개발자. 백엔드 개발자는 데이터베이스 등의 시스템 설계까지 맡아서 하는 경우가 많다.

클라이언트와 서버의 종류

  1. 클라이언트
    • 웹사이트(웹 앱): 브라우저를 통해 주로 이용하는 웹 플랫폼에서의 클라이언트
    • 스마트폰/태블릿용 앱: iOS나 안드로이드와 같은 스마트폰/태플릿 플랫폼에서의 클라이언트
    • 데스크탑 앱: 윈도우와 같은 데스크탑 플랫폼에서 이용하는 앱에서의 클라이언트
  2. 서버
    • 웹 서버: 웹사이트에서 필요로 하는 정보들을 제공하는 앱
    • 파일 서버: 파일을 제공하는 앱
    • 메일 서버: 메일을 주고받을 수 있도록 도와주는 앱
    • 데이터베이스 서버: 데이터 제공

클라이언트 - 서버 통신과 API

프로토콜(Protocol)

프로토콜은 통신 규약, 즉 약속이다.

웹 애플리케이션 아키텍처에서는 HTTP라는 프로토콜을 이용해서 통신한다. HTTP를 이용해 주고받는 메시지는 HTTP 메시지 라고 부른다.

주요 프로토콜

OSI 7 Layers는 컴퓨터공학과 네트워크에서 자주 등장하는 개념으로, 해당 프로토콜이 어떤 계층(layer)에 속해있는지를 표시하고 있음

OSI 7 Layers

  1. 물리
  2. 데이터 링크
  3. 네트워크 계층
  4. 전송 계층
    TCP: HTTP, FTP 통신의 근간이 되는 인터넷 프로토콜
    UDP: (양방향의 TCP와는 다르게) 단방향으로 작동하는 훨씬 더 단순하고 빠르지만, 신뢰성이 낮은 인터넷 프로토콜
  5. 세션 계층
  6. 표현 계층
  7. 응용 계층
    HTTP: 웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜
    HTTPS: HTTP에서 보안이 강화된 프로토콜
    FTP: 파일 전송 프로토콜
    SMTP: 메일을 전송하기 위한 프로토콜
    SSH: CLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
    RDP: Windows 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
    WebSocket: 실시간 통신, Push 등을 지원하는 프로토콜

API

컴퓨터에게 요청할 때에는, 정확한 주문 방법을 따라 요청해야 하지만, 클라이언트는 서버가 어떻게 구성되어 있는지 알 수 없다.

서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 메뉴판과 같은 인터페이스(interface)를 제공해 줘야 한다. 이것을 API라고 한다.

API는 Application Programming Interface의 약자이며, Interface의 사전적 의미는 "의사소통이 가능"하도록 만들어진 "접점"을 의미한다.

보통 인터넷에 있는 데이터를 요청할 때에는 HTTP라는 프로토콜을 사용하며, 주소(URL, URI)를 통해 접근할 수 있다.

API 예제

요청URL 디자인사용하는 메소드
모든 사용자 조회/usersGET
새 사용자 추가/usersPOST
1번 사용자 정보 갱신/users/1PUT
1번 사용자 정보 삭제/users/1DELETE
1번 사용자 정보 조회/users/1GET

HTTP 요청 시 메소드를 지정하여 리소스와 관련된 행동(CRUD, create/read/update/delete)을 지정할 수 있다.

HTTP 메소드는 CRUD 행동에 따라 목적에 맞게 사용해야 한다.

  • 조회(Read) - GET
  • 추가(Create) - POST
  • 갱신(Update) - PUT or PATCH
  • 삭제(Delete) - DELETE
profile
아무것도 모르는 코린이

0개의 댓글