서버란 무엇일까?

sion Jeong·2024년 7월 26일
0

네트워크란?

  • 여러대의 컴퓨터 또는 장비가 서로 연결되어서 → 정보를 주고 받을 수 있게 도와주는 기술
    • 컴퓨터, 라우터, 스위치, 허브 등의 장비들이 각각의 역할을 수행하여 정보를 주고 받는다.
    • 서로 정보를 주고 받기 위해서는 IP 주소, 서브넷 마스크, 게이트웨이등의 정보를 설정하고 네트워크 프로토콜을 이용하여 통신을 하게 된다.

왜 네트워크를 알아야 할까?

  • 우리는 서버를 개발하게 될 것이다.
    • 서버 = 사용자가 요청을 했을 때 해당 요청에 대한 응답을 수행하는 프로그램
  • 사용자의 요청에서 시작하여 우리가 만든 서버에 도착하고 다시 사용자에게 까지 되돌아가는 흐름을 잘 파악하고 있다면 서버 개발에 큰 도움이 될 것이기 때문에 네트워크를 알아야한다.

Client와 Server

  • 사용자(클라이언트)는 브라우저를 이용하여 서버에 정보를 요청하고 응답을 받는다.
  • 사용자의 요청이 서버에 도달하기 위해서는 해당 서버의 정보가 필요하다.
  • 사용자의 요청이 해당 서버에 정확하게 도달할 수 있게 제공되는 정보가 IP 주소이다.
  • IP 주소: 거대한 네트워크망에서 여러분의 컴퓨터를 식별하기 위한 위치 주소
  • 네트워크에서 정보를 요청 받고 전달하려면 주소에 해당하는 IP 와 받는 사람에 해당하는 포트번호를 알려줘야 한다.
네트워크
주소(IP)192.168.*.
받는 사람(포트)8080

웹 서버란?

  • HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해주는 통신을 하는 일종의 컴퓨터

    💡 웹 서버의 기본 동작 원리

    1. 브라우저를(크롬) 통해 → HTTP Request로 웹사이트를 웹서버에 요청한다.
    2. 웹 서버는 HTTP Response에 웹사이트 데이터(HTML, CSS, 정적데이터)를 담아
      → 브라우저에 전송
    3. 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려내는 일을 한다.

API란? (application programming interface)

  • 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
  • 쉽게 말하면 약속이다.
    • 서로 다른 애플리케이션이 약속한 방식의 API 요청을 수행하면 정해진 결과물을 반환한다.

RESTful API란?

  • API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
  • 통신을 관리하기 위한 지침으로 만들어졌다.
  • 해당 API에 적절하게 HTTP 메서드를 사용했다면, RESTful하게 설계했다고 볼 수 있다.
    - REST 아키텍처 스타일을 따르는 API를 → REST API라고 부른다.
    - REST 아키텍처를 구현하는 웹 서비스를 → RESTful 웹 서비스라고 부른다.

Web Server 와 Web Application Server(WAS)

💡 Web Server

  • 정적인 컨텐츠 요청을 처리해주는 웹 서버
    • 브라우저에서 URL을 입력하여 → 어떠한 페이지를 요청 → HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할
  • 브라우저로부터 → ‘로그인하여 MyPage를 요청’과 같은 동적인 요청이 들어왔을 때 웹 서버 자체적으로 처리하기 어렵기 때문에 해당 요청을 WAS에 전달

종류
- Apache
- Nginx

💡 WAS (Web Application Server)

  • 동적인 컨텐츠 요청을 처리해주는 WAS(웹 어플리케이션 서버)
  • 웹 서버와 똑같이 HTTP 기반으로 동작함
  • 웹 서버에서 할 수 있는 기능 대부분을 WAS에서도 처리할 수 있다.
  • WAS를 사용하면 로그인,회원가입을 처리하거나 게시물을 조회하거나 정렬하는 등의 다양한 로직들을 수행하는 프로그램을 동작시킬 수 있다.

종류
- Tomcat
- JBoss

Apache Tomcat이란?

  • 웹서버는 정적인 요청만 처리하고, WAS는 동적인 것만 처리해…? 너무 비효율적이지 않나?
  • Apache(정적)Tomcat(동적)이 합쳐진 형태로 정적인 데이터 처리와 동적인 데이터 처리를 효율적으로 해줄 수 있다.

Spring과 SpringBoot

💡 Spring

  • Spring 프레임워크는 아주 오래되고 강력한 프레임워크
  • 스프링의 3대 요소 = AOP, IoC/DI, PSA 같은 핵심 기능을 가지고 있다.
  • 하지만 이런 핵심 기능을 사용하기 위해선 → 너무나도 많은 xml 설정들이 필요했다.
  • 이러한 스프링의 핵심 기능을 사용하기 위해 → 엄청난 설정을 해야하는것을 간편하게 하기 위해 → 스프링 부트가 등장!!

💡 SpringBoot

  • 스프링 핵심 기능을 사용하기 위해 기존의 xml 설정 대신
    → Java의 애너테이션 기반의 설정을 적극적으로 사용
  • xml 대신에 애너테이션을 사용하여 아주 간편하게 설정할 수 있다.
  • 또한 외부 라이브러리나 하위 프레임워크들의 의존성 관리가 매우 쉬워졌다.
  • 그리고 내장 Apache Tomcat 을 제공한다 (starter-web dependency만 설정하면됨)
    (너무나 간편해졌다.)

Postman이란?

  • API 개발을 빠르고 쉽게 구현할 수 있도록 도와주는 소프트웨어 플렛폼
  • API를 통해 → HTTP 요청을 서버에 보내고 → 응답을 보내주는 이 과정을 간편하게 테스트하고 확인할 수 있게 도와주는 플랫폼이다.
profile
개발응애입니다.

0개의 댓글