TIL : Interaction With Server

영아·2021년 5월 4일
0
post-thumbnail

이전까지 배운 내용들로 만든 스프린트 과정을 보면 어딘가에 저장이 되는것이 아니라서 새로고침을 하면 모든 데이터가 초기화되는 형식이었다.
이번에는 서버에대해 배웠다 ㅎ
(이전 스프린트부터 짧은시간에 너무 많은것을 배워서 머리가 아프고 정리가 안되는 기분 😭😭😭😭😭😭😭😭😭😭)

서버, 클라이언트, HTTP, API, Ajax 등 ... 여러가지에 대해 배웠다. 차근차근 하나씩 정리해야지


1. Client Server Architecture

2-tier architecture

쇼핑몰 앱을 사용할때 인터넷이 없다면 우리는 상품에대한 정보를 받아 볼수가 없다. 우리가 찾는 데이터는 서버에 저장되어있고 그것을 가져와서 사용해야지 웹페이지에 보이기 때문이다. 이 데이터가 전부 앱안에 있는 상황일때는 서버가 존재하지 않는다고 생각하자. 이럴때는 새로운 상품이 하나 추가 될때마다 앱을 업데이트 해야하고 만약 앱을 업데이트 하지 않는다면 새로운 상품을 볼 수가 없을 것이다. 그리고 서버가 없다면 결제도 불가능 할 것이다.

  • 클라이언트는 리소스를 사용하는 대상

  • 서버는 리소스(상품데이터)를 저장하고있는 곳

이렇게 불편한 상황을 해결하기위해서 2-tier architecture를 사용하게 되었다.
리소스에 접근하는 앱은 서버에 요청을 해야 서버에서 응답을 주는데 이떄 데이트를 받아서 사용 할 수 있게된다.
(손님이 커피를 주문해야지 커피를 주는것과 같은 원리! EZ)

클라이언트 : 요청 (아아 하나만 주세요) -----> 서버

클라이언트 <----- 서버 : 응답 (주문하신 아이스 아메리카노 나왔습니다)

클라이언트와 서버는 요청-응답을 주고받는 관계이다!
(요청이 없는데 응답이 오는 경우는 없다!)

3-tier architecture

보통 서버는 리소소를 전달 해주는 역할을 할 뿐, 리소스를 저장하는 공간은 따로 둔다고 한다.
리소스를 저장하는 공간을 데이터베이스 라고한다. 기존의 2티어 아키텍처에서 데이터베이스를 추가된 형태를 3티어 아키텍처(3-tier architecture) 라고한다.

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

프로토콜

클라이언트와 서버간의 통신을 알아보기전에 프로토콜이라는 개념을 이해해야한다!

프로토콜은 통신규약이라는 의미다.

손님이 주문을 받는 사람에게 가서 외계어로 주문을 할 수 없듯이, 주문을 하기 위해서는 꼭 지켜야 하는 약속이 존재한다!

웹 애플리케이션 프로토콜 : HTTP

웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을
이용한다.

- 주요 프로토콜

    1. 응용계층
    1. 전송

OSI 7 Layers

위의 7,4는 OSI 7 Layers 에서 각자가 속해 있는 계층을 의미한다..

OSI 7 Layers은 정확하게 무엇인지 모르겠다 ㅠ..

OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7 계층이라고 한다. -위키피디아

API

참 많이 들어본 이름이다 .. API

우리가 컴퓨터에게 요청을 할때는 정확한 주문 방법에 따라 요청해야한다.
서버가 어떻게 구성되어있는지 모르면? 클라이언트는 어떻게 자원을 확인할 수 있을까?

정답은?
---> API(Application Programming Interface)다. 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스(interface)를 제공해야한다. 이것을 API라고 합니다.

(주문할때 보는 메뉴판 같은 느낌)

서버가 리소스를 전달을 위한 API를 만들어놔야지 클라이언트가 서버를 활용 할 수 있다.
보통 인터넷에 있는 데이터를 요청할때는 HTTP라는 프로토콜, 주소(URL,URI)를 통해 접근 할 수 있다.

HTTP API 디자인

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

위의 API 디자인처럼 메소드에 맞게 구분해야지 클라이언트가 사용하는데 어려움을 겪지 않는다.

(친절한 설명서 느낌~ 👍🏻👍🏻)

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

GET을 요청했는데 서버 리소스가 지워지면??

용서 할 수 없어!!

주의해서 작성해야한다


마무리

한번에 많은 개념을 배우다보니 여전히 헷갈리는 부분이 많다....
그리고 계속해서 프론트? 영역만 배운것같은 백앤드 부분도 슬슬 시작하게되서 걱정도 되지만 (나는 사실 프론트로 가고싶은 생각이기때문 ㅎ...)
배우다보면 또 새롭게 재밌는것들이 등장하지 않을까 기대된다 😚

자료구조, 알고리즘을 하다와서 그런가 그나마 편안한 기분? ㅎㅎ

아무튼 웹이 어떻게 돌아가는지 약간 맛보기한듯?

그리고 블로그 쓰는 부분이 생각보다 많이 힘든것 같다 ... 밀리더라도 차근차근 써보아야지;;

profile
코딩 배우는 아이

0개의 댓글