7월29일 목요일 TIL

김병훈·2021년 7월 29일
0

til

목록 보기
49/89

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

클라이언트

서버

  • 상품 정보 같은 리소스가 존재하는 곳, 리소스를 사용하는 앱을 분리 시킨 것 === 2티어 아키텍처 (클라이언트-서버 아키텍처)
  • 리소스를 사용하는 앱이 클라이언트다.(상품정보를 조회)
  • 리소스가 제공하는 곳은 서버이다.(상품정보제공)

리소스에 접근하는 앱은 마치 손님(Client)과 같아서 리소스를 가지고 있는 점원(Server)에게 물품을 요청해야한다.
따라서 점원(Server)는 리소스를 담아 응답한다.

  • 이처럼 Client와 Server는 요청과 응답을 주고 받는 관계이다. 클라이언트 - 서버 아키텍처에서는 요청이 선행되고, 그 후에 응답이 온다. 요청하지도 않았는데, 응답이 오는 경우는 없다.

데이터베이스

  • 보통 서버는 리소스를 전달해줄 뿐, 리소스를 저장하는 공간은 데이터베이스라는 창고에 둔다.
  • 이처럼, 클라이언트-서버 아키텍처에 데이터베이스가 추가된 형태를 3티어 아키텍처라고 부른다.

프론트엔드와 백엔드

프론트엔드(클라이언트)

  • 리소스를 사용하는 앱 (클라이언트)
    • 결제기능
    • 상품 조회 기능
      • 사용자가 직접 눈으로 보고 UI를 클릭 또는 터치하는 등의 상호작용을 할 수 있는 앱을 주로 개발

백엔드(서버, 데이베이스)

  • 리소스를 저장해주는 앱
    • 상품 정보 노출
    • 사용자 인증
      • 사용자 눈에 보이지 않지만, 상품 정보를 API로 노출한다던지, 로그인/로그아웃, 권한권리 등의 사용자 인증을 주로 다루는 개발
      • 서버가 단순히 전달만 하는 것이 아니다. 백엔드 개발자는 데이터베이스 등의 시스템 설계까지 도맡아서 하는 경우도 있다.

데이터베이스

  • 상품 목록 저장

클라이언트와 서버의 종류

  • 클라이언트
    • 보통 플랫폼에 따라 구분된다. 브라우저를 통해 주로 이용하는 웹 플랫폼에서의 클라이언트는 웹사이트 또는 웹앱이라고 부른다.
    • IOS나 Android, 그리고 Window같은 플랫폼에서 이용하는 앱 역시 클라이언트가 될 수 있다.
      • 웹사이트(웹앱)
      • 스마트폰/태블릿용 앱
      • 데스트탑 앱
  • 서버
    • 서버는 무엇을 하느냐에 따라 종류가 달라진다.
    • 파일서버는 파일을 제공하는 앱
    • 웹 서버는 웹사이트에서 필요로 하는 정보들을 제공하는 앱
    • 메일 서버는 메일을 주고 받을 수 있도록 도와주는 앱
    • 데이터베이스도 데이터 제공자로서 일하므로 일종의 서버라고 볼 수 있다.
      • 웹 서버
      • 파일 서버
      • 메일 서버
      • 데이터베이스 서버

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

클라이언트와 서버가 어떤 식으로 통신하는지, 그리고 이때 등장하는 API라는 것은 무엇을 의미하는 가?
=> 클라이언트와 서버 간의 통신은 요청과 응답으로 구성된다.
요청이 있어야 응답이 온다. 클라이언트- 서버 아키텍처에서는 서버 마음대로 클라이언트에 리소스를 전달하지 않는다.

  • 생각해볼 주제 : 간혹 서버에서 일방적으로 클라이언트에 정보를 전달하는 적이 있다면 어떤 경우인가?

프로토콜

  • 통신 규약 (약속) 이다. 카페로 예를 들어 Client가 Server에 외계어로 주문을 할 수 없듯이, 주문을 하기 위해서는 꼭 지켜야하는 약속이 몇가지 있다.

HTTP 메시지

  • 웹 어플리케이션 아키텍처에서 Client 와 Server가 서로 HTTP라는 프로토콜을 이용해서 서로 대화를 나눈다. HTTP를 이용해 주고 받는 메시지를 HTTP 메시지 라고 한다.
  • 서버와 통신할 수 있는 다양한 방법이 존재한다.
    • 프로토콜 1 : 직접 카운터로 찾아감
    • 프로토콜 2 : 모바일 앱 이용
    • 프로토콜 3 : 키오스크

API

  • Application Programming Interface
  • 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 interface를 제공해줘야한다.
    • 이것을 API라고 한다. 다만 API는 앱이 요청할 수 있고 프로그래밍 가능한 인터페이스라는 점이 다르다.
  • 예시
    • 서버에는 마치 식당에서 메뉴판을 제공하듯, 리소스를 잘 활용할 수 있도록 API를 제공해야한다.
  • interface
    • 의사소통이 가능하도록 만들어진 접점

서버가 리소스 전달을 위한 API(메뉴판)을 구축해놓아야 클라이언트가 이를 활용할 수 있다.
보통 인터넷에 있는 데이터를 요청할 때는 HTTP라는 프로토콜을 사용하며, 주소(URL,URI)를 통해 접근하게 된다.
HTTP 요청시 메소드를 지정하여 리소스와 관련된 행동(CRUD)을 지정할 수 있다.

기억해야할 다섯가지 메소드

  • 각각 조회, 추가, 갱신, 삭제와 관련이 있다. 설명은 MDN에 "HTTP 요청 메서드"
  • GET
  • POST
  • PUT(PATCH)
  • DELETE
  • 이때 HTTP 메소드는 리소스를 이용해 하려는 행동에 맞게 적절하게 써야한다는 점에 주의해야한다. GET을 요청했는데 서버에서 리소스가 지워진다면, 좋지않은 API 디자인이다.
profile
블록체인 개발자의 꿈을 위하여

0개의 댓글