본문 바로가기
  • GDG on campus Ewha Tech Blog
G-day (정규 세션)

[GDGoC Ewha] Part Exchange 세션 - BE 4조

by bhyerain 2024. 11. 20.

[HTTP란?]

1) 서버와 클라이언트가 서로 데이터를 주고받기 위해 사용되는 프로토콜

2) 역할 : 웹 브라우저와 서버 간 데이터 요청 및 응답 처리.

 

[HTTP의 통신구조]

  • 클라이언트와 서버로 나누어진 구조 → 각자의 역할에 집중하기 위해
  • 클라이언트가 서버에 요청을 보내고 서버가 응답을 반환

 

[HTTP의 무상태성(Stateless)]

1) 클라이언트와 서버 사이에 상태를 유지하지 않는다.

  • 서버가 클라이언틍틔 상태를 보존하지 않음.
  • 클라이언트가 상태 정보를 갖고 있기 때문에, 아무서버나 호출해도 돼서 서버의 스케일아웃에 유리
  • stateful보다 데이터를 많이 사용한다.

2) 서버가 클라이언트의 상태를 보존

  • 서버가 장애나면 클라이언트는 처음부터 다시 작업을 요청해야함
  • 서버가 바뀔때마다 클라이언트의 내용을 기록해서 상태를 유지해야함

 

[HTTP의 비연결성(Connectionless)]

: HTTP는 기본이 연결을 유지하지 않는 모델

  • 서버와 클라이언트의 connection 연결을 지속하지 않음
  • 1시간동안 수천명 이상이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하
  • 서버 자원을 효율적으로 사용가능
  • TCP/IP 연결을 매번 새롭게 맺어야하므로, 시간이 걸린다 → 현재는 HTTP 지속 연결로 해결
  • HTTP/2, HTTP/3에서 최적화

1) 비연결성의 한계 - 단기 커넥션

  • HTTP 초기 - 연결, 종료 낭비
  • 새로 연결을 맺을 때마다 TCP Handshake가 발생
  • HTTP 초기에는 모든 자료에 대해 비연결성으로 각각의 자원에 대해 연결/응답/종료를 반복하다보니 1초가량 소모됨

2) 비연결성 극복 - HTTP 지속 연결

  • 클라이언트는 서버와 소켓 연결을 한 다음 필요한 자원을 요청/응답으로 다운받음
  • 소켓을 일정시간동안 더 유지함으로써, 필요한 자원들을 모두 다운로드 받을 때까지 연결이 종료되지 않고 요청/응답이 반복된 뒤 종료

 

[HTTP 상태 코드]

: 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

  • 1xx(정보): 요청을 받았으며 프로세스를 계속 진행
  • 2xx(성공): 요청을 성공적으로 받았으며 인식했고 수용
  • 3xx(리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요
  • 4xx(클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
  • 5xx(서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패

 

[HTTP 메세지]

HTTP 메세지 구조

  • 시작 라인
  • 헤더
  • 공백 라인: HTTP 메세지 값 구분을 하기 위한 라인. 반드시 있어야한다.
  • 바디: HTTP 요청 종류에 따라 있을 수도 있고 없을 수도 있음.

 

[HTTP 메서드]

HTTP 메서드 종류

  • GET: 리소스 조회
  • POST: 요청 데이터 처리
  • PUT: 리소스를 전체적으로 업데이트, 해당 리소스가 없으면 생성
  • PATCH: 리소스를 부분 업데이트
  • DELETE: 리소스 삭제
  • HEAD: GET과 동일하지만 메시지 부분을 제외하고 상태줄과 헤더만 반환
  • OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명(CORS에서 사용)
  • CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE: 대상 리소스에 대한 경로를 따라 메세지 루프백 테스트를 수행

 

[HTTP vs HTTPS]

1) HTTP : 데이터 전송이 암호화되지 않음

  • 보안에 취약하지만 속도 빠름

2) HTTPS

  • SSL/TLS를 통해 데이터를 암호화하여 전송
  • 보안이 중요한 페이지 에서 사용

 

[HTTPS란?]

: HTTP에 데이터 암호화가 추가된 프로토콜

  • SSL/TLS를 통해 데이터를 암호화하여 전송
  • HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원.

 

[SSL의 암호화 - 대칭키 암호화와 비대칭키 암호화]

1) SSL이란? :  HTTPS를 사용하기 위해 안전한 보안 채널을 생성해주는 프로토콜

2) 대칭키

  • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행
  • 노출되면 매우 위험하지만 연산 속도가 빠름

3) 비대칭키

  • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
    • 공개키 암호화: 개인키로만 복호화할 수 있음 -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있다.
    • 개인키 암호화: 공개키로만 복호화할 수 있음 -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장 가능
  • 키가 노출되어도 비교적 안전하지만 연산 속도가 느림

→ HTTPS는 대칭키와 비대칭키를 모두 사용

: 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되고, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키 사용

 

동작방식

 

IT 인프라

  1. 개념 : 컴퓨터를 온전히 사용하기 위해 필요한 자원
  • Application : 응용 프로그램
  • Data : 응용 프로그램의 서비스를 제공하기 위해 축적하는 데이터
  • Runtime : 프로그램 코드 실행 도구
  • Middleware : 운영체제 및 응용프로그램 연결용 소프트웨어
  • OS : 운영 체제
  • Virtualization : 가상화 기능
  • Server : 전송 장치
  • Storage : 데이터 저장 장치
  • Networking : 외부 통신을 위한 네트워크 시스템

→ IaaS, PaaS, SaaS는 ‘얼마만큼 외부에서 제공하는 클라우드 컴퓨팅으로 대체하느냐’에 따른 분류

 

IaaS (Infrastracture as a Service)

  1. 개념 : 컴퓨팅 인프라 사용
  2. 특징
    • 데이터 센터를 구축하는 대신 클라우드를 이용해 원하는 컴퓨팅 인프라 사용
    • 물리적 설치가 아닌 클라우드 환경에서 구축 가능
    • 사용자는 빌려온 인프라에서 운영체제, 어플리케이션을 설치한 후에 원하는 서비스 운영 가능
    • 대표적인 제공 업체 : AWS, MS, 구글, IBM, 오라클 등
  3. 장점
    • 서버나 스토리지를 구입, 운영하는 비용을 줄일 수 있음
    • 수요에 따라 필요한 인프라 사용 사용할 수 있음

 

PaaS (Platform as a Service)

  1. 개념: 앱 구축 및 개발 환경 플랫폼을 서비스로 제공
  2. 특징
  • 사용자는 PaaS에서 필요한 서비스를 선택해 어플을 개발하면 된다.
  • 응용 프로그램이 플랫폼에 종속되어 다른 플랫폼으로 이동하기 어렵다
  • AWS Elastic Beanstalk, Heroku, Red Hat OpenShift
  1. 장점
  • 기존의 기술과 투자를 활용합니다. 개발자는 알고 있는 언어를 사용하여 빠르게 코딩할 수 있습니다.
  • 비용이 절감됩니다. 대규모 컴퓨팅 인프라에 투자할 필요 없이 사용한 만큼만 비용을 지불합니다.
  • 애플리케이션 개발 주기가 단축됩니다
  • DevOps가 효과적으로 구현됩니다
  • 보안 조치를 유지 관리합니다. PaaS 제공업체와 협력하면 고도로 숙련된 팀이 보안에만 집중하며 클라우드 기반 서비스의 보안을 강화합니다.

 

SaaS (Software as a Service)

  1. 개념 : 필요한 SW, 설치없이 웹에서 해결
  2. 특징
    • 클라우드 환경에서 운영되는 애플리케이션 서비스
    • 소프트웨어를 웹에서 쓸 수 있는 서비스로 설치 없이 웹에서 이용 가능
    • 웹메일 서비스랑 비슷한 개념 (클라우드 스토리지 서비스) ⇒ 지메일, 드롭박스, 네이버클라우드, MS 오피스 365
  3. 장점
    • 비용만 지불하면 어디서든 곧바로 쓸 수 있음
    • PC나 기업 서버에 SW를 설치할 필요 없음
    • SW 설치를 위해 비용과 시간을 아낄 수 있음

 

[비유]

Saas : 이미 만들어진 레고 모형 (개발자들이 미리 만들어놓음)

IaaS : 레고 공장 (재료를 만들어 냄, 필요에 따라 언제든지 조절 가능)

PaaS : 레고 블럭을 활용할 수 있도록 제공하는 업체

댓글