[cs 정리] 개발 상식

jiwon·2022년 3월 29일
0

Computer Science

목록 보기
1/5
post-thumbnail

1. Rest API 란 무엇인가?

REST api는 REST의 특징을 기반으로 만들어진 api를 의미합니다. 여기서 REST란,자원(Resource)을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미합니다.

즉 어떤 자원에 대해 CRUD 연산을 수행하기 위해 URI에 HTTP Method를 사용하여 요청을 보내면, 자원이 특정한 형태로 반환되는 것이 REST의 개념!

🔎 CRUD 연산이란?
기본적인 데이터 처리 기능인 Creat, Read, Update, Delete를 묶어서 일컫는 말.

🔎 REST?
Representational State Transfer의 약자

REST의 구성 요소

  • 자원: HTTP URI
  • 행위: HTTP Method(Get, Post, Put 등등...)
  • 표현: Client와 Server가 데이터를 주고받는 형태. xml, json 등..

🔎 URI와 URL의 차이점
URL: Uniform Resource Locator. 인터넷 상 자원의 위치
URI: Uniform Resource Identifier. 인터넷 상의 자원을 식별하기 위한 문자열의 구성

REST의 특징

  • Server-Client(서버-클라이언트 구조)
  • Stateless(contex를 서버에 저장하지 않음)
  • Cacheable(캐시 처리 가능)
  • Layered System(REST Server는 다중 계층으로 구성될 수 있다. 프록시 서버 등을 거쳐갈 수 있다.)
  • Uniform Interface(인터페이스 일관성. HTTP 표준 따르는 모든 플랫폼에서 사용 가능)
  • Code-On-Demend(서버로부터 스크립트를 받아서 클라이언트에서 실행. 선택사항)

REST의 장단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 별도의 인프라를 구출할 필요가 없다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • 의도하는 바를 쉽게 파악할 수 있다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 존재하지 않음.
  • 사용할 수 있는 메소드가 4가지 밖에 없음.
  • 구형 브라우저가 아직 제대로 지원해지지 못하는 부분(PUT, DELETE)이 존재함

🔎 REST api와 RESTful api
REST의 설계 규칙을 잘 지켜서 만든 api를 restful api라고 한다. ( REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭한다.)

2. 쿠키, 세션, 토큰의 차이점

쿠키는 사용자 편의성을 위한 작은 정보들을 클라이언트에 저장합니다. 세션은 노출되면 안되는 보다 더 중요한 정보들을 서버에 저장합니다.
세션과 쿠키는 별도의 저장소 관리가 필요하지만,토큰은 저장소가 필요하지 않습니다.

stateless한 프로토콜로 stateful한 서비스를 구현하기 위해 사용하는 것이 쿠키와 세션, 인증을 위해 사용하는 암호화된 문자열이 토큰! git bash에서 일일히 로그인 안해도 되는 것도 토큰을 사용한 뒤였던 걸 기억하자😻

🔎 캐시 ?
다시 사용될 확률이 있는 데이터들을 빠르게 접근 가능한 저장소에 저장한다. 프록시 서버..cache hit, cache miss...

🔎 세션 통신 ?
클라가 서버에 접속시, 세션 ID를 받는다. 클라는 세션ID를 쿠키에 저장. 서버는 헤더에 포함된 쿠키 정보(세션 ID)로 클라 판별 가능

3. JWT 토큰의 장단점

모든 정보는 토큰 자체에 포함하기 때문에 별도의 저장소가 필요 없고, 트래픽 부담이 적다는 장점이 있습니다. 하지만 토큰 자체에 정보를 담고 있으므로 양날의 검이 될 수 있습니다. 만약 페이로드를 탈취당하면 데이터가 노출될 위험이 있습니다.

JWT(JSON Web Token) 토큰이란?

클레임 기반 토큰 중 가장 대표적인 것이 JWT다.

🔎클레임 토큰?
클레임이란 사용자 정보나 데이터 속성 등을 의미한다. 토큰 안에 저런 정보를 가지고 있으면 클레임 토큰이라고 한다.

JWT는 3 부분으로 구성된다.

  • Header: 토큰의 타입과 해싱 알고리즘 지정
  • Payload: 위에서 설명한 클레임이라 부르는 것들이 저장되어 있다.
  • Signature: 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드

각각은 .을 통해 구분된다.

4. HTTP 메서드 중 Put과 Patch의 차이점

put은 리소스의 모든 것을 업데이트하고, patch는 리소스의 일부를 업데이트 합니다.

put의 경우, 전체가 아닌 일부만 전달하면 나머지 값들은 null이 되어버린다.

5. 동기와 비동기 처리 방식의 차이점

동기는 순차적, 직렬적으로 테스크를 수행하고, 비동기는 병렬적으로 테스크를 수행한다.

동기

(synchronous : 동시에 일어나는)
요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야한다.

동기방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다.

비동기

(Asynchronous : 동시에 일어나지 않는)
요청과 결과가 동시에 일어나지 않는다.

비동기방식은 동기보다 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.

6. MVC 패턴에 대한 간단한 설명

MVC 패턴은 구성 요소를 Model, View, Controller의 세가지 역할로 분리시켜 개발하는 방법론입니다. MVC 패턴을 사용하면 서로 영향 없이 개발하기 수월하다는 장점이 있습니다.

Model

어플리케이션이 “무엇”을 할 것인지를 정의. 백그라운드에서 동작하는 로직을 처리한다. (데이터를 가진 객체, 파라미터로 주로 쓰인다.) DB와의 상호작용도 주로 여기서 이루어짐.

View

사용자가 보게 될 결과 화면을 출력한다.

Controller

사용자의 입력처리와 흐름 제어를 담당한다. Model 또는 View중개인 역할이다.

7. 객체지향 프로그래밍이 무엇인지 설명

객체지향 프로그래밍문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 말합니다. JAVA, C# 등이 대표적인 객체지향 프로그래밍 언어입니다.

8. 자바의 특징

자바는 대표적인 객체 지향 프로그래밍 언어입니다. 멀티스레딩을 지원하며, JVM을 사용하기 때문에 플랫폼에 의존하지 않고 실행이 가능합니다.

  • 자바는 객체 지향 프로그래밍 언어
  • JVM 위에서 실행되기 때문에, 플랫폼에 의존하지 않고 실행이 가능
  • 고성능(High Performance)
  • 멀티 스레딩을 지원

🔎JVM이란?
Java Virtual Machine, 즉 자바 가상 머신을 줄여 부르는 말. OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.

9. Docker란 무엇인지 설명하고, 도커의 장,단점에 대한 설명

Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. 쉽고 빠르게 실행환경을 구축하고 배포하는 것이 가능하지만, linux에서만 실행 가능하다는 단점이 있습니다.

10. 메세지 큐 (Message Queue)란?

메시지 큐는 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나입니다.

큐에 넣어놓고 나중에 꺼내도 되므로, 비동기이다!

11. TDD란 무엇인지 설명

Test Driven Development의 약자로, 테스트를 먼저 만든 뒤 테스트를 통과하기 위한 코드를 작성하는 것입니다.

🔎TDD를 하는이유
테스트와 개발을 같이 진행하여 개발 초기의 오류를 발견하고, 수정하여 좋은 소프트웨어를 개발하기 위한 방법

🔎단점
개발시간이 오래걸린다

profile
개발 공부합니다. 파이팅!

0개의 댓글