백엔드 개발자라면 알고 있어야할 지식, 용어 정리

백엔드 개발자는 대부분이 서버 to 서버, 서버 to 클라이언트 개발을 주로하기 때문에, URL을 호출하였을 때 어떻게 동작하는지, 그 과정에서 어떠한 용어들이 사용되는지에 대해 어느정도 알아야한다고 생각하기에 기록합니다.

목차

  1. 웹 브라우저에 URL을 호출하였을때 일어나는 현상
  2. TCP/IP
  3. HTTP/HTTPS 프로토콜
  4. DNS (Domain Name System)
  5. SSL/TLS
  6. 웹 소켓 (WebSocket), gRpc, Rest Api
  7. CORS
  8. 로드 밸런싱, Proxy
  9. HA
  10. Waf(방화벽), Inbound, Outbound
  11. CDN

웹 브라우저에 URL을 호출하였을때 일어나는 현상

  1. 웹 브라우저 창에 URL 입력 (https://bbs.ruliweb.com/userboard/board/700127/read/9381)
  2. URL 파싱 (URL을 구성 요소로 분해하고, 각각의 구성 요소를 추출)
    2-1) 프로토콜 : https, 도메인 : bbs.ruliweb.com, Port : 80, 경로 : /userboard/board/700127/read/9381
  3. 브라우저에서는 자신의 로컬 hosts 파일과 브라우저 캐시에 해당 URL이 존재하는지 확인합니다.
    존재하지 않는다면 도메인 주소를 IP주소로 변환해주는 DNS(Domain Name System) 서버에 요청하여 해당 URL을 IP주소로 변환합니다.
  4. 변환된 IP주소로 TCP 연결 설정
  5. 웹 브라우저가 HTTP 요청을 서버로 전송
  6. 웹 서버가 요청을 처리하고 응답을 전송
  7. 웹 브라우저가 컨텐츠를 랜더링

TCP/IP

  • 인터넷 상에서 컴퓨터들 끼리 서로 정보를 주고 받는데 일상적으로 사용되는 통신 프로토콜
  • TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP(전송 제어 프로토콜)로 이루어져 있다.
  • TCP/IP 4계층 모델은 네트워크 연결 계층, 인터넷 계층, 트랜스포트 계층, 어플리케이션 계층으로 나누어져 있다.
  • TCP 프로토콜을 이용하여 통신하기 위해서는 핸드 쉐이크(Handshake)라는 과정이 일어남.

HTTP/HTTPS 프로토콜

  • HTTP(Hyper Text Transfer Protocol)이란 텍스트 기반의 통신 규약으로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜입니다. (80 포트사용)
  • HTTPS(Hyper Text Transfer Protocol Secure)란 HTTP 프로토콜의 데이터 노출에 대한 문제점을 해결하기 위해 SSL/TLS 암호화 프로토콜을 사용하여 데이터를 암호화하여, 데이터 노출에 대한 위험을 최소화합니다. (443 포트 사용)

DNS

  • DNS (Domain Name System)란 컴퓨터 네트워크에서 호스트의 도메인 이름을 해당하는 IP 주소로 변환하는 시스템을 말합니다.
  • AWS 기준으로 CDN(Cloud Front) 서비스를 이용하면, 호출한 도메인 정보가 캐시 되어지므로, DNS 서버까지 도달하여 IP 주소를 반환하는 시간의 레이턴시를 일부 줄 일 수 있습니다.

SSL/TLS

  • SSL(Secure Sockets Layer)/TLS(Transport Layer Security)는 웹서버와 웹 브라우저 간의 암호화 통신 프로토콜 입니다.
  • TLS는 SSL의 취약점을 보완하고자 보안을 강화하여, 등장하였고 SSL은 더이상 사용하지 않고 있습니다.
  • 현재 TLS 1.3이 최신 버전이며, 핸드 쉐이크가 100ms 개선되어 빠르고 안정적으로 통신이 가능합니다.
    (TCP 핸드쉐이크 이후 통신이 연결되면 TLS 핸드쉐이크가 동작함)

웹 소켓 (WebSocket), gRpc, Rest Api

  • 웹 소켓 (WebSocket)은 실시간 양방향 통신을 지원하는 프로토콜이며, 클라이언트와 서버 간에 지속적인 연결을 유지하고 양쪽에서 데이터를 주고받을 수 있음 (실시간성이 중요한 어플리케이션에 사용 -> 채팅, 온라인 게임, 주식 등)
  • gRpc는 구글에서 개발한 어느 환경에서 실행할 수 있는 최신 오픈 소스 고성능 RPC 프레임워크이며, Protocol Buffers를 사용하여 효율적이고 이진 형식으로 데이터를 직렬화함 (HTTP/2 기반의 양방향 스트리밍 지원)
  • Rest Api (Representational State Transfer)는 분산 시스템에서 자원을 관리하기 위한 HTTP 기반 아키텍처 스타일이며, URI를 통해 자원을 명시하고, HTTP Method에 의해 자원을 관리 합니다.

Cors

  • 웹 브라우저는 SOP (Same-Origin Policy)라는 기본 정책을 가지고 있는데, 이는 보안 상의 이유로 인해 웹 페이지에서 스크립트로부터의 HTTP 요청이 동일한 출처에서만 허용되도록 하는 정책 (출처가 같다는 말은 https://example.com:80 의 같은 도메인 내에서만 호출 가능)
  • CORS (Cross-Origin Resource Sharing)는 SOP의 제한을 완화하기 위해 도입된 표준으로, 웹 페이지에서 다른 출처의 리소스에 안전하게 접근할 수 있도록 허용하는 정책

로드 밸런싱, Proxy

  • 로그 밸런싱은 네트워크 또는 서버 환경에서 발생하는 트래픽이나 작업을 여러 대의 서버 또는 네트워크 장치로 분산시켜 서비스의 안정성과 성능을 향상시키는 기술 (고가용성 아키텍처에는 필수적인 요소)
  • Proxy 클라이언트와 서버 간의 중계자 역할을 하는 컴퓨터 시스템이나 응용 프로그램을 가리킵니다. 사용방법에 따라 크게 Forward Proxy, Reverse Proxy로 나뉜다. (Proxy Server로 많이 사용하는 웹서버 중 하나는 Nginx이다.)

HA

  • HA(High Availability)는 고가용성이라 불리며, 시스템이 오랜 기간 동안 중단 없이 정상 운영이 가능한 것을 의미함
    고가용성이 유지되기 위해서는 서버의 이중화, 스케일 아웃, 클러스터링, failover 등이 필요하다.

Waf(방화벽), Inbound, Outbound

  • WAF는 웹 애플리케이션 보안을 강화하기 위한 방화벽입니다. 주로 웹 애플리케이션에서 발생할 수 있는 다양한 보안 위협과 취약점에 대한 방어를 제공합니다.
  • Inbound는 클라이언트의 요청이 네트워크를 따라 서버로 전달되는 데이터 흐름을 말하며, 방화벽 외에도 서버로 들어오는 요청에 대한 제한을 설정할 수 있다.
  • Outbound는 서버의 요청이 네트워크를 따라 클라이언트 혹은 외부로 전달되는 흐름을 말하며, 대부분은 제한을 두지 않는 경우가 많지만 특정한 서버 호출의 경우만 허용 해야하는 경우가 있다면 제한을 설정 할 수 있다.

CDN

  • CDN(Content Delivery Network)은 지리적 제약 없이 전 세계 사용자에게 빠르게 콘텐츠를 전송하는 기술을 의미 합니다.
    전 세계 지역에 위치한 엣지 서버와 DNS 서비스 기반으로 정적 및 동적 콘텐츠를 빠르게 전송하고 사용자에게 최적의 성능을 제공합니다. (대표적인 CDN서비스는 AWS의 CloudFront)

참조

https://aws.amazon.com/ko/blogs/korea/what-happens-when-you-type-a-url-into-your-browser
https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C_%EC%8A%A4%EC%9C%84%ED%8A%B8

profile
어제보다 오늘이 더 나은 개발자

0개의 댓글