S2_U7_CH1. 웹 애플리케이션 아키텍처

Judevv·2023년 5월 24일
0

Chapter 1. 웹 애플리케이션 아키텍처

학습 목표

  • 클라이언트-서버 아키텍처를 이해할 수 있다.
  • HTTP를 이용한 클라이언트-서버 통신을 이해할 수 있다.
  • API의 개념을 이해할 수 있다.

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


  • 쇼핑몰을 예로 들면, 상품 정보 같은 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리한 것(2티어 아키텍처)

  • 리소스를 사용하는 앱 : 클라이언트

  • 리소스를 제공(serve)하는 곳 : 서버

  • 클라이언트와 서버는 요청과 응답을 주고 받는 관계

    • 요청이 선행되고, 그 후에 응답이 옴
    • 리소스를 사용하는 앱(클라이언트)이 리소스가 존재하는 곳(서버)에 요청을 보내고, 요청에 따라 서버에서 응답
  • 일반적으로 서버는 리소스를 전달해 주는 역할만 담당

    • 리소스를 저장하는 공간을 별도로 마련 : 데이터 베이스 (창고 같은 역할)
  • 3티어 아키텍처

    • 2티어 아키텍처에 데이터 베이스가 추가된 형태
  • 프론트엔드 : 클라이언트 영역

    • 사용자가 직접 눈으로 보고, UI를 클릭 또는 터치하는 등의 상호작용을 할 수 있는 앱을 주로 개발
  • 백엔드 : 서버, 데이터 베이스 영역

    • 사용자 눈에 보이지 않지만 리소스를 API로 노출을 하거나, 로그인/로그아웃, 권한 관리 등의 사용자 인증을 주로 다룸, 데이터 베이스 등의 시스템 설계까지 맡아서 하는 경우가 많음
  • 클라이언트와 서버의 종류

    • 클라이언트(플랫폼에 따라 구분)
      • 웹 사이트, 웹 앱: 브라우저를 통해 주로 이용하는 웹(web) 플랫폼
      • 스마트폰/태블릿 앱: iOS나 안드로이드
      • 데스크탑 앱: 윈도우 등
    • 서버(무엇을 하느냐에 따라 구분)
      • 파일 서버: 파일을 제공하는 앱
      • 웹 서버: 웹사이트에서 필요러 하는 정보들을 제공하는 앱
      • 메일 서버: 메일을 주고 받을 수 있도록 도와주는 앱
      • 데이터 베이스: 데이터 제공자로서 일하므로 일종의 서버라고 볼 수 있음

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


  • 클라이언트-서버 아키텍처에서는 서버 마음대로 클라이언트에 리소스를 전달하지 않음

  • 클라이언트와 서버 간의 통신을 알아보려면, 프로토콜 이라는 개념을 이해해야 함

  • 프로토콜

    • 통신 규약(약속)
    • 두 개 이상의 장치가 통신할 수 있도록 일련의 규칙과 절차를 정의한 것
  • 웹 앱 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 소통 → HTTP 메시지 : HTTP를 이용해 주고받는 메시지

  • 제대로 된 통신을 위해서는 규약(약속)을 지켜야 함

    • 예를 들면, 우편: 적절한 위치에 올바르게 우편물 주소를 표기해야 잘 전달됨

주요 프로토콜

  • OSI 7 Layers
    • 해당 프로토콜이 어떤 계층(layer)에 속해 있는지 표시
  • 응용계층(7)
프로토콜 이름설명
HTTP웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜
HTTPSHTTP에서 보안이 강화된 프로토콜
FTP파일전송 프로토콜
SMTP메일을 전송하기 위한 프로토콜
SSHCLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
RDPWindows 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
WebSocket실시간 통신, Push 등을 지원하는 프로토콜
  • 전송 계층(4)
프로토콜 이름설명
TCPHTTP, FTP 통신의 등의 근간이 되는 인터넷 프로토콜
UDP(양방향의 TCP와는 다르게) 단방향으로 작동하는 훨씬 더 단순하고 빠르지만, 신뢰성이 낮은 인터넷 프로토콜

💡) 프로토콜 더 알아보기
프로토콜은 데이터의 형식, 전송 방법, 에러 처리 등을 정의하여 네트워크 간의 효율적이고 안정적인 통신을 가능하게 한다.

통신 계층의 다양한 계층에서 정의되며, 대표적으로 OSI 7계층 모델과 TCP/IP 프로토콜 스택에서 사용되는 계층적인 구조를 가지고 있다.

각 계층은 특정한 역할과 책임을 맡고 있으며, 상위 계층은 하위 계층의 서비스를 이용하여 데이터를 전송하고, 하위 계층은 상위 계층으로부터 받은 데이터를 전송하기 위해 하위 계층의 서비스를 이용한다.

프로토콜은 일반적으로 패킷이라는 작은 데이터 조각으로 전송된다. 패킷은 출발지와 목적지 주소, 제어 정보, 데이터 등의 필요한 정보를 포함하고 있다. 출발지에서 목적지까지 패킷은 여러 네트워크 장비를 거치며 전송되는데, 각 장비는 패킷의 정보를 읽고 적절한 처리를 수행한 후 다음 장비로 전달한다.


API(Application Programming Interface)

  • 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공하는 것
  • 앱이 요청할 수 있고, 프로그래밍 가능한 인터페이스
  • 예를 들어, 클라이언트(손님)이 카페에서 제공하는 자원의 종류(아메리카노, 콜드브루, 프라푸치노 등)를 모른다고 가정했을 때, 엉뚱한 메뉴(예를 들어, 설렁탕)를 주문하지 않도록 도와주어야 함. 카페에서 클라이언트를 위한 메뉴판을 만들어 놓았기 때문에, 적절한 요청을 할 수 있는 것
  • 서버가 리소스 전달을 위한 메뉴판, 즉 API를 구축해놓아야 클라이언트가 활용할 수 있음
  • 인터넷에 있는 데이터를 요청할 때에는 HTTP라는 프로토콜을 사용하고, 주소(URL, URI)를 통해 접근 가능
    • 파라미터를 사용하기 위해 물음표(?)와 & 기호를 사용
  • HTTP API 디자인
    • Best Practice가 존재
    • 예를 들어, 사용자 관리 API
요청URL 디자인사용하는 메서드
모든 사용자 조회/usersGET
새 사용자 추가/usersPOST
1번 사용자 정보 갱신/users/1PUT
1번 사용자 정보 삭제/users/1DELETE
1번 사용자 정보 조회/users/1GET
  • CRUD 각각의 행동과 일치하는 HTTP 메서드의 종류가 존재
profile
감성있는 개발자를 꿈꿔요

0개의 댓글