쿠키,세션,캐시 / 프로세스,스레드 / RestAPI

🪐 C:on·2021년 8월 8일
0

Development_sense

목록 보기
3/6

쿠션 세션 캐시


눈치 빠른 사람들은 어렴풋이 이것들이 웹에서 사용되고, 뭔가를 저장한다는 것은 알 것이다.

조금 더 자세하게 왜 사용되고 어떻게 사용되는지 알아보자

🔎 쿠키와 세션

쿠키는 사이트를 이용할 때 내 브라우저에 저장되는 정보들이다.

세션은 서버에서 유저의 인증상태 (로그인 여부) 을 임시로 저장한 정보들이다.

브라우저가 사이트의 페이지에 접속하면 서버에서는 사용자를 구분하기 위해 짧은 임시키 하나를 보낸다. 브라우저는 이 키를 쿠키로 저장을 하고 http 요청에 이 키를 실어서 보내면 서버는 이 키를 보고 사용자가 누구인지를 인식해서 사용자의 정보를 가공해서 응답으로 보내준다.

네이버에 한번 로그인 한 다음 다른 페이지를 이용할 때마다 로그인이 유지되어 있는 것은 이 쿠키와 세션의 조합이다.

쿠키는 로그인창의 아이디를 자동완성하거나, 공지메세지를 하루 안보기, 로그인 안한 상태로 장바구니를 하는 등 지워지거나 조작되거나 가로채이더라도 큰 일은 없을 그런 수준의 정보를 브라우저에 저장하는데 사용된다.

이외 서비스 제공자가 직접 관리해야 할 정보들은 세션으로 서버 안에서 다룬다. 세션이 많으면 접속자가 많을 때 서버 부하를 발생시킬 수 있으므로 쿠키와 세션을 적절히 사용할 수 있어야 한다.

🔎 캐시

캐시는 웹 뿐 아니라 안드로이드, 컴퓨터의 메모리 등 에서 공통적인 의미로 쓰이는 데, 가져오는데 비용이 드는 데이터를 처음 가져올 때 임시로 저장해둬서 다음에 필요할 때는 저장해두는 것을 사용하는 방식이다.

웹 캐시는 이미지 등의 데이터를 가져올 때 데이터 사용량도 발생하고 시간도 들기 때문에 사용자가 여러번 방문할 법한 사이트에서는 한번 받아온 데이터를 사용자의 컴퓨터 또는 중간 역할을 하는 서버에 저장해두는 방식을 말한다.



프로세스와 스레드


🔎 프로세스

멀티태스킹이 가능해지기 전까지 예전 컴퓨터들은 게임이 다운받아 질때까지 마우스로 입력 받는 작업, 브라우저 작업을 동시에 하지 못했따.

exe 파일은 프로그램이라 하며, 이 프로그램이 실행돼서 컴퓨터가 돌아가고 있는 상태를 프로세스라고 한다.

요즘 컴퓨터는 여러개의 프로세스를 함께 돌려 쾌적한 작업을 도와준다. 이것은 동시성, 병렬성 또는 이 둘의 혼합으로 진행된다.

동시성여러 프로세스를 조금씩 일부분을 진행해서 모든 프로세스를 작업하는 것으로, 이 과정이 매우 빠르게 돌아가서 사람들에게는 마치 동시에 진행되는 것 처럼 보인다.

병렬성프로세스 하나에 코어 여러개가 달려서 각각 동시에 작업들을 수행하는 것이다. 듀얼코어, 쿼드코어, 옥타코어 등 이러한 명칭이 붙는 멀티코어 프로세서가 달린 컴퓨터에서 할 수 있는 방식이다. CPU가 발열 등의 문제 때문에 예전만큼 빠르게 발전하지 못하게 되자 그 대안으로 코어를 여러개 달아서 작업을 분담할 수 있도록 만든것이다.

🔎 스레드

한 프로세스 내에서도 여러 갈래의 작업들이 동시에 진행될 필요가 있다.
이 갈래를 스레드 라고 부른다.

컴퓨터는 프로세스마다 자원을 분할해서 할당한다.

스레드는 프로세스에서 각 작업에 따라 나눠진 자원들을 함께 사용하는 것이다.

프로세스 하나에 사용되는 변수를 스레드 두 개가 동시에 사용하면 에러가 발생하는 단점을 가지고 있기도 하다.

요즘에는 이런 상황들을 예방하고 방지하기 위해 디버깅을 해서 오류를 찾아내고 원인을 밝히기 까다로운 점을 Lambda, Actor 등의 도구들로 해결한다.



REST API


🔎 API란

인터페이스란 기계와 인간간의 소통을 도와주는 도구이다. 마우스, 키보드, 버튼, 모니터 등이 인터페이스에 해당하는데 웹에서는 버튼, 스크롤바, 슬라이더, 브라우저 창 등 소프트웨어와 인간의 소통을 위한 인터페이스가 있다.

UI 뿐만 아니라 소프트웨어가 다른 소프트웨어에게 지정된 형식으로 요청, 명령을 받을 수 있도록 소통을 하는 수단을 API(Applicatoin Programming Interface)라고 한다.

🔎 REST API란

REST API는 정보들이 주고 받아 지는데 있어서 개발자들 사이에 널리 쓰이는 일종의 형식이다.

RESTful하게 만든 API는 요청을 보내는 주소만으로도 대략 이게 뭘 하는 요청인지 파악이 가능하다.

형식이기 때문에 내가 무슨 언어를 쓰고 무슨 프레임워크를 쓰던 그냥 이 폼에 맞춰서 기능을 만들어 낼 수 있다.

과거의 SOAP이라는 복잡한 형식을 대체한 것으로 가장 중요한 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론 가능하다는것이다.

서버에 REST API로 요청을 보낼때는 HTTP라는 규약에 따라 신호를 전송한다.

http의 method 중 POST, PUT, PATCH는 body라는 일종의 주머니가 있기 때문에 GET이나 DELETE 보다 정보를 더 많이, 비교적 안전하게 실어보낼 수 있다.

이것들의 기능은 특정용도에 제한되어 있지는 않다. POST 하나로도 데이터를 읽고 쓰고 수정하고 지우고까지 다 할 수 있다.

하지만 누구든 각 요청의 의도를 쉽게 파악할 수 있도록 RESTful하게 API를 만들기 위해서는 목적에 따라 구분해서 사용하는 것이 좋다.

GET은 데이터를 READ(조회)하는데 사용한다.

class/2/students

다음 주소를 GET으로 요청을 보내면 2반의 학생이 누구인지 요청하는 것이다.

POST는 CREATE(정보추가)에 사용한다.

class/2/students

다음 주소를 POST로 요청해서 Body에 학생의 정보를 실어 보내면 2반에 새 학생을 추가하게 된다.

PUT 또는 PATCH를 사용해서 UPDATE(변경) 될 새 정보를 역시 BODY에 실어보낼 수도 있다.

알려진 정석으로는 PUT은 통째로 갈아야 할 때, PATCH는 정보 중 일부를 특정 방식으로 변경할 때 사용한다고 한다.

0개의 댓글