모각소 5주차
오늘 모각소 시간에는 HTTP 웹 공부를 했고, 단국대 FAC 대자보팀과 협업하기 위한 첫 번째 회의를 진행했다.
웹 서버 vs 웹 어플리케이션
분리하는 이유
→ 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성
웹 서버
- 정적인 사이트
- 이미지, 파일, CSS, HTML
- nginx, apache 등
- HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능
- 정적인 컨텐츠 → WAS 거치지 않고 바로 제공
- 동적인 컨텐츠 → Client의 Request를 WAS로 전송, WAS에서 반환한 결과를 Client로 Response 보냄
웹 어플리케이션
- WAS (Web Application Serer)
- Web Server + Web Container
- Web Server의 기능을 구조적으로 분리하여 처리하고자하는 목적
- 분산 트랜잭션, 보안, 메시징, 쓰레드 처리
- 기능적 분리 → 서버 부하 방지
- 물리적 분리 → 보안 강화
- 주로 DB 서버와 같이 수행됨
- 동적인 사이트
- HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어 (소프트웨어 엔진)
- 로그인, DB 접속 등
- 프로세스 실행 + 서버 자원 최적화 / 프로세스 수 or 메모리 조절
- 여러 개의 트랜잭션 (논리적인 작업 단위) 관리 기능
- phusion passenger, apache tomcat, JBoss
HTTP vs HTTPS
HTTP
- Hyper Text Transfer Protocol
- 서버/클라이언트 모델에 따라 데이터를 주고 받기 위한 프로토콜
- 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약
- 80번 포트 사용
- HTTP 서버가 80번 포트에서 요청을 기다림
- 클라이언트는 80번 포트로 요청을 보냄
HTTPS
- Hyper Text Transfer Protocol Secure
- HTTP + 데이터 암호화 프로토콜
- 443번 포트 사용
- 연결 과정
- Client가 Server로 최초 연결 시도
- Server는 공개키(인증서)를 Client로 넘겨줌
- Client는 공개키의 유효성을 검사 → 세션키 발급
- Client는 세션키를 보관, Server의 공개키로 세션키를 암호화 → Server로 전송
- Server는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- Client와 Server는 동일한 세션키 공유 → 데이터 전달할 때 세션키로 암호화/복호화 진행
HTTP 상태 코드
- 200
- 요청이 성공적으로 이루어짐
- 요청에 따른 응답이 반환됨
- 404
- 서버는 요청받은 리소스를 찾을 수 없음
- 브라우저에서 : 알려지지 않는 URL
- 서버는 인증받지 않은 클라이언트로부터 리소스를 숨기기 위해서 403 대신 404를 보내기도 함
- 503
- 서버가 요청을 처리할 준비가 되지 않음
- 유지 보수를 위해 작동이 중단되거나 과부하가 걸린 서버
- 1xx (정보) : 요청 받음, 프로세스가 계속 진행함
- 2xx (성공) : 요청을 성공적으로 받고 인식했고 수용함
- 3xx (리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요함
- 4xx (클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
- 5xx (서버 오류) : 서버가 유효한 요청에 대해 충족 실패함
Restful API
- Representational State Transfer
- 리소스의 이름을 구분하여 리소스의 상태를 주고받음
- HTTP URL을 통해 리소스 명시
- HTTP METHOD (GET, POST, PUT, DELETE)를 사용하여 CRUD Operation 적용
3가지 요소
- 리소스 : HTTP URL
- 리소스에 대한 행위 : HTTP METHOD
- 리소스에 대한 행위의 내용 : HTTP Message Payload
특징
- Server-Client 구조
- Server : 리소스 보유
- Client : 리소스 요청
- Self-Descriptiveness 요청 메시지만 보고도 이해할 수 있음
장점
- HTTP 프로토콜 을 따르는 모든 곳에서 사용 가능
- HTTP 프로토콜 인프라를 사용 → REST API 사용을 위한 별도의 인프라 구축 X
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도를 정확하게 파악 가능 → 여러가지 서비스 디자인에서 발생할 수 있는 문제를 최소화
단점
- 사용 가능한 Method 4가지 → 제한적인 형태
- 구형 브라우저에서 호환되지 않음 → 지원되지 않는 동작 있음