[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 인프라
- 개념 : 컴퓨터를 온전히 사용하기 위해 필요한 자원
- Application : 응용 프로그램
- Data : 응용 프로그램의 서비스를 제공하기 위해 축적하는 데이터
- Runtime : 프로그램 코드 실행 도구
- Middleware : 운영체제 및 응용프로그램 연결용 소프트웨어
- OS : 운영 체제
- Virtualization : 가상화 기능
- Server : 전송 장치
- Storage : 데이터 저장 장치
- Networking : 외부 통신을 위한 네트워크 시스템
→ IaaS, PaaS, SaaS는 ‘얼마만큼 외부에서 제공하는 클라우드 컴퓨팅으로 대체하느냐’에 따른 분류
IaaS (Infrastracture as a Service)
- 개념 : 컴퓨팅 인프라 사용
- 특징
- 데이터 센터를 구축하는 대신 클라우드를 이용해 원하는 컴퓨팅 인프라 사용
- 물리적 설치가 아닌 클라우드 환경에서 구축 가능
- 사용자는 빌려온 인프라에서 운영체제, 어플리케이션을 설치한 후에 원하는 서비스 운영 가능
- 대표적인 제공 업체 : AWS, MS, 구글, IBM, 오라클 등
- 장점
- 서버나 스토리지를 구입, 운영하는 비용을 줄일 수 있음
- 수요에 따라 필요한 인프라 사용 사용할 수 있음
PaaS (Platform as a Service)
- 개념: 앱 구축 및 개발 환경 플랫폼을 서비스로 제공
- 특징
- 사용자는 PaaS에서 필요한 서비스를 선택해 어플을 개발하면 된다.
- 응용 프로그램이 플랫폼에 종속되어 다른 플랫폼으로 이동하기 어렵다
- AWS Elastic Beanstalk, Heroku, Red Hat OpenShift
- 장점
- 기존의 기술과 투자를 활용합니다. 개발자는 알고 있는 언어를 사용하여 빠르게 코딩할 수 있습니다.
- 비용이 절감됩니다. 대규모 컴퓨팅 인프라에 투자할 필요 없이 사용한 만큼만 비용을 지불합니다.
- 애플리케이션 개발 주기가 단축됩니다
- DevOps가 효과적으로 구현됩니다
- 보안 조치를 유지 관리합니다. PaaS 제공업체와 협력하면 고도로 숙련된 팀이 보안에만 집중하며 클라우드 기반 서비스의 보안을 강화합니다.
SaaS (Software as a Service)
- 개념 : 필요한 SW, 설치없이 웹에서 해결
- 특징
- 클라우드 환경에서 운영되는 애플리케이션 서비스
- 소프트웨어를 웹에서 쓸 수 있는 서비스로 설치 없이 웹에서 이용 가능
- 웹메일 서비스랑 비슷한 개념 (클라우드 스토리지 서비스) ⇒ 지메일, 드롭박스, 네이버클라우드, MS 오피스 365
- 장점
- 비용만 지불하면 어디서든 곧바로 쓸 수 있음
- PC나 기업 서버에 SW를 설치할 필요 없음
- SW 설치를 위해 비용과 시간을 아낄 수 있음
[비유]
Saas : 이미 만들어진 레고 모형 (개발자들이 미리 만들어놓음)
IaaS : 레고 공장 (재료를 만들어 냄, 필요에 따라 언제든지 조절 가능)
PaaS : 레고 블럭을 활용할 수 있도록 제공하는 업체
'G-day (정규 세션)' 카테고리의 다른 글
[exchange session]5조. CI/CD와 DevOps, 컨테이너 환경과 쿠버네티스 (1) | 2024.11.20 |
---|---|
Gdg on Campus Ewha - Part Exchange 세션 3조 (1) | 2024.11.20 |
[Part Exchange FE 7조] CSR vs SSR vs ISR, DOM과 Virtual DOM (0) | 2024.11.20 |
Gdg on Campus Ewha - Part Exchange 세션 1조 (0) | 2024.11.20 |
Gdg on Campus Ewha - Part Exchange 세션 8조 (0) | 2024.11.20 |
댓글