카테고리 없음

[ WIL ] Spring 심화 주차 키워드 예제

따갓 2022. 8. 11. 20:56

CORS란?

https://ddsiq.tistory.com/97

 

CORS 정리

CORS (Cross Origin Resource Sharing) :  다른 출처의 자원을 공유하는 것. 교차 출처 리소스 공유는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 어플리케이션이 다른 출처의 선택한 자원에 접근

ddsiq.tistory.com

 

Q1. API란 무엇인가?

 

  • API는 서버와 데이터베이스에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해준다.
  • API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.
  • API는 모든 접속을 표준화하기 때문에 기계/ 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있다. 쉽게 말해, API는 범용 플러그처럼 작동한다고 볼 수 있다.

API의 유형

  •  private API
    >> private API는 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행한다. 따라서 제 3자에게 노출되지 않는다.
  • public API
    >> public API는 개방형 API로, 모두에게 공개된다. 누구나 제한 없이 API를 사용할 수 있는 게 특징이다.
  •  partner API
    >> partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있다. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.

API 사용시 장점

  • Private API를 이용할 경우, 개발자들이 애플리케이션 코드를 작성하는 방법을 표준화함으로써, 간소화되고 빠른 프로세스 처리를 가능하게 한다.
  • 소프트 웨어를 통합하고자 할 때는 개발자들 간의 협업을 용이하게 만들어준다.
  • public API와 partner API 를 사용하면, 기업은 타사 데이터를 활용하여 브랜드 인지도를 높일 수 있다.
  • 고객 데이터베이스를 확장하여 전환율까지 높일 수 있다.

 

[ 참고 ] https://blog.wishket.com/api%EB%9E%80-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85-%EA%B7%B8%EB%A6%B0%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8/

 

Q2. Client와 Sever란 무엇인가?


클라이언트 (Client)

  • 영어 뜻 자체로는 고객을 의미한다. 클라이언트는 1 이상의 서버 제공 서비스를 사용하는 소비자의 개념이다.
  • 클라이언트/서버 모델에서 네트워크를 이용하여 서버(Server)측에 서비스 요청을 의뢰하는 측이다.

 서버 (Server)

  • 클라이언트들이 요구하는 각종 서비스를 제공하는 측이다. 특정 역할에 특화된 것이다.
  • 클라이언트/서버 모델에서 네트워크 상에 구현된 하드웨어 또는 소프트웨어로써, 서비스의 요청을 받는 측이다

클라이언트/서버 출현배경

  • 과거에는, 동일 컴퓨터 내에서 호출 및 피호출 프로그램이 상호작용함으로써 이 둘을 굳이 분리할 필요가 없었음
  • 그러나, 컴퓨터 및 네트워크 기술발전에 따라 많은 프로그램을 대신하여, 서비스 제공 또는 자원 관리하는 전문화된 프로그램이 널리 확산되어 이를 서버라 하고 서비스 또는 자원을 의뢰(요청)하는 측을 클라이언트라고 하게됨

클라이언트/서버 모델의 특징

  • 요청-응답의 형태 : 
         - 이 모델에서의 통신은 항상 요청-응답의 형태를 취한다.
         - 즉, 클라이언트에 의해서만 시작되고 서버에 의해서는 결코 시작되지 않는다.
  • 동시 요구 처리를 필요로 한다.
         - 서버란 많은 다른 클라이언트들의 동시적인 요구를 처리할 수 있도록 설계된 프로세스이기 때문이다.
  • 클라이언트/서버 환경
         - 최종 사용자에게는 많은 장점을 제공하는 반면에 망 운영자에게는 복잡하고 어려운 문제를 끊임없이 제기하게된다.
  • 구성 요소 셋
         - Client,  Server,  Network
  • 소프트웨어의 위치
         - 변화가 적은 소프트웨어는, 클라이언트측에 놓는다.
         - 변화가 잦은 소프트웨어는, 서버측에 놓는다.
  • 분산처리
         - 클라이언트/서버 모델은 분산협동처리(distributed cooperative processing)
           의 특별한 예라고 할 수 있다.
         - 지능형 동배간 처리에서 한 서버는  여유있는 서버에게 계산 부담을 분배함으로써 서버와 네트워크 특성을 기반으로 하는 분산을 최적화할 수 있다.
  • 서버 이중화
         - 통상, 안정성을 위해 서버 이중화가 요구된다.

 

 

Q3. WAS란 무엇인가? Web Server와 차이점은 무엇인가?

웹(WEB)서버

사전적 의미

  • 웹 서버(하드웨어) : Web 서버가 설치되어 있는 컴퓨터
  • 웹 서버(소프트웨어) : 클라이언트로부터 HTTP 요청을 받아 정적 컨텐츠(.html, .jpg, .css 파일등)를 즉 각종 리소스를 제공하는 컴퓨터 프로그램을 뜻한다. 여기서 정적 컨텐츠란 변화가 없는 컨텐츠, 어느 사용자에게나 동일한 결과값을 보여주는 컨텐츠이다 ( ex. html, jpg, css 등..)

종류

  • Apache Server
  • Nginx
  • IIS
  • WebToB

웹 어플리케이션 서버(WAS, Web Application Server)

개념

  • Web container 혹은 Servlet Container라고도 불린다.
  • DB 조회나 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server를 뜻한다. 여기서 배너 광고나 카테고리 등 모두가 볼 수 있어야 하는 컨텐츠는 정적으로두고 , 마이페이지나 장바구니 등 사용자 맞춤형 정보를 제공해야 할때에는 동적 컨텐츠를 사용한다. ( DB, 비즈니스 로직 )
  • Container란 jsp, Servlet을 실행시킬 수 있는 소프트웨어를 말한다.

기능

  • 프로그램 실행 환경과 DB 접속 기능 제공한다.
  • 여러 개의 트랜잭션 관리기능
  • 업무 처리하는 비즈니스 로직수행
  • ex) Tomcat, Websphere, Weblogic, Jeus, JBoss, Resin 등..

 

Q4. HTTP 프로토콜이란 무엇인가?

 

HTTP(Hypertext Transfer Protocol)

프로토콜이란 상호 간에 정의한 규칙을 의미하며 특정 기기 간에 데이터를 주고받기 위해 정의되었다. 웹에서는 브라우저와 서버 간에 데이터를 주고받기 위한 방식으로 HTTP 프로토콜을 사용하고 있다.

 

HTTP 프로토콜 특징

  • HTTP 프로토콜은 상태가 없는(stateless) 프로토콜이다. 여기서 상태가 없다라는 말은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 뜻이다. 즉 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없게 된다.
  • 이러한 특징 때문에 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있게 된다.
  • HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번이다.

 

HTTP Request & HTTP Response

HTTP 프로토콜로 데이터를 주고받기 위해서는 아래와 같이 요청(Request)을 보내고 응답(Response)을 받아야 한다.

 

HTTP 요청 : URL  + 요청 메서드

URL

>> 서버에 자원을 요청하기 위해 입력하는 영문 주소이다.

url 구조

HTTP 요청 메서드

URL을 이용하면 서버에 특정 데이터를 요청할 수 있다. 여기서 요청하는 데이터에 특정 동작을 수행하고 싶으면 바로 HTTP 요청 메서드(Http Request Methods)를 이용해야 한다.

일반적으로 HTTP 요청 메서드는 HTTP Verbs라고도 불리우며 아래와 같이 주요 메서드를 갖고 있다.

  • GET : 존재하는 자원에 대한 요청
  • POST : 새로운 자원을 생성
  • PUT : 존재하는 자원에 대한 변경
  • DELETE : 존재하는 자원에 대한 삭제

 

[ 참고 ] https://joshua1988.github.io/web-development/http-part1/

Q5. Restful API는 무엇인가?

 

REST API 

REST API(RESTful API, 레스트풀 API)REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스이다.

REST의 뜻 

“Representational State Transfer” 의 약자로 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉, 자원(resource)의 표현(representation) 에 의한 상태 전달을 의미한다.

자원(resource)의 표현(representation)

  • 자원: 해당 소프트웨어가 관리하는 모든 것.  Ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
  • 자원의 표현: 그 자원을 표현하기 위한 이름. Ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다.

상태(정보) 전달 

  • 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
  • JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
  • REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.

REST 의 구조

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다. 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

CRUD

  • Create : 생성(POST)
  • Read : 조회(GET)
  • Update : 수정(PUT)
  • Delete : 삭제(DELETE)
  • HEAD: header 정보 조회(HEAD)