본문 바로가기
Computer Science

[CS] 서버 개발을 위한 기초 지식

by jyc_ 2025. 1. 13.

Network

  • 여러 대의 컴퓨터 또는 장비가 서로 연결되어 정보를 주고 받을 수 있게 도와주는 기술
  • 클라이언트가 요청하면, 서버가 요청에 대한 응답을 수행한다.

 

Client & Server

  • 사용자는 브라우저 등(Client)을 이용해 서버(Server)에 정보(Data)를 요청(Request)하고 응답(Response)를 받는다.
  • 서버 또한 클라이언트가 될 수 있다. (외부 서버에 API 요청하는 경우 등)
  • 요청이 서버에 도달하기 위해서는 IP 주소, 포트 번호가 필요하다.

 

Web Server & Web Application Server

  • Web Server
  • 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠를 사용자에게 전달하는 역할
  • Web Application Server
  • 게시물 조회나 정렬처럼 다양한 동적 로직을 수행하는 프로그램을 동작시키는 역할

현대의 프레임워크는 분리된 두 구조의 장점을 유지하면서, 편의성과 생산성을 높이기 위해 웹 서버와 WAS의 기능을 통합하는 방향으로 발전하고 있다.

  • Spring Boot의 내장 Tomcat, NestJS의 내장 Express
  • 통합을 통해 개발효율의 증가, 과도한 서버 설정 및 관리의 간소화

 

요청과 응답의 흐름

  1. 특정 사이트의 주소를 입력하는 순간, 웹 브라우저가 해당 URL 주소로 웹 서버에 홈페이지를 요청
    1. 브라우저는 먼저 DNS 조회를 통해 해당 웹 사이트의 IP 주소를 찾게 됨, IP 조소로 서버에 요청하는데 HTTP를 통해 요청과 데이터가 전송
    2. Web Server는 HTTP 메시지를 확인
  2. 요청에서 필요한 추가 데이터가 있을 경우 WAS에 전달
  3. WAS는 필요한 데이터를 내부 로직, 동적 처리, DB 연동 등을 통해 데이터 가공
  4. WAS는 데이터 처리 결과를 Web Server에 전달
  5. Web Server는 WAS로 부터 반환된 데이터를 활용하여 HTML, CSS, Image 등 정적 페이지를 구성하고, 결과를 클라이언트측 웹 브라우저에 출력

 

API (Application Programming Interface), RESTful API

Interface

  • 소프트웨어공학 또는 일반적 의미
    • 서로 다른 두 개의 시스템이나 장치 간 정보나 신호를 주고받는 접점 또는 경계면
    • ex) 컴퓨터와 주변 장치(프린터) 간 연결 지점이나 소프트웨어 간 통신 방식
    • API, UI/UX에서 사용되는 인터페이스의 의미
  • 프로그래밍 언어적 의미
    • 클래스가 구현해야 하는 멤버 집합의 정의
  • 공통으로 연결부, 매개체라는 의미로 해석 가능

 

API

  • 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
  • 개발자는 다른 애플리케이션들이 서로 통신할 수 있도록 API(규칙)를 표시하거나 생성해야 한다.
  • “약속”, “개발자의 애플리케이션 사용 설명서”
  • 약속한 방식의 API 요청을 수행하면, 정해진 결과물을 반환하는 것을 정의 한다.
  • 핵심 요소
    • Endpoint
    • HTTP Method
    • 요청과 응답 데이터 형태
    • Status Code
    • Parameter(Query String, PathVariable)

 

Rest API

  • REST (Representational State Transfer)
  • API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
  • 자원(Resource) 중심으로 설계, URI로 식별
    • ex) /users, /products
    • HTTP Method 매칭
      • GET: 자원 조회
      • POST: 자원 생성
      • UPDATE: 자원 갱신
      • DELETE: 자원 삭제
    • 클라이언트는 서버로부터 자원의 표현을 요청하고, 서버는 해당 표현을 반환한다.
    • 인터페이스 일관성 확보
      • 자원 식별, 표현, 메시지 전송 방식 등을 표준화
      • api를 쉽게 이해할 수 있도록 구성, 표현
  • RESTful API
  • REST 설계 규칙을 따라 설계하고 지향하는 API
  • 이러한 규칙들을 통해 클라-서버 간 상호작용을 효율적이고 유연하게 만들며, 웹 서비스의 확장성과 유지보수성을 높일 수 있음

 

HTTP

  • Protocol
  • 전자기기 간 원할한 통신을 위해 지키기로 약속한 규칙의 집합
  • HTTP
  • 데이터를 주고 받는 양식을 정의한 “통신 규약”
  • 대부분의 웹 서버가 HTTP를 기반으로 데이터를 송/수신한다.
  • Methods
    • GET: 리소스 조회 → Read
    • POST: 요청 데이터 처리, 등록에 사용 → Create
    • PUT: 리소스 대체, 리소스가 없으면 생성 → Update
    • DELETE: 리소스 삭제 → Delete
    • PATCH: 리소스 부분 변경

    • HEAD: 상태 줄과 헤더만 반환
    • OPTIONS: 해당 리소스에 대한 통신 가능 옵션을 설명
    • CONNECT: 대상 자원으로 식별되는 서버에 대한 양방향 연결 터널 설정
    • TRACE: 보낸 통신이 어느 지점에서 에러가 발생했는지 추적
  • Status Code
    • 1xx: Informational
    • 2xx: Successful
    • 3xx: Redirection
    • 4xx: Client Error
    • 5xx: Server Error