Fairy ' s

[24. March] WAS Web Server / TIL 본문

Devops Bootcamp

[24. March] WAS Web Server / TIL

berafairy 2023. 3. 24. 11:22

서버 ?

  • 하드웨어적 : 정적인 파일들이 제공되고, 서버 애플리케이션이 실행되는 컴퓨터.
  • 소프트웨어적 : 정적인 파일이나 서비스를 제공하는 애플리케이션 그 자체
  • 즉, 서버는 사용자의 요청을 받고 이에 따른 응답과 데이터를 보내준다.
  • 서비스를 제공하는 컴퓨터 내의 프로그램(프로그램)이며, 프로그램 실행되는 컴퓨터(하드웨어)도 서버이다.
  • 웹 서버
    - 클라이언트로부터 HTTP 요청을 받아들이고, 웹 페이지를 그대로 반환하는 서버
    - 웹 페이지 : 그림, CSS, JS 등 정적 파일
    - 정적 파일들을 브라우저에 그대로 전달하기 때문에 정적 웹 서버 라고 부르기도 한다.
    - ex. nginx, Apache Web Server 등

  • 웹 애플리케이션 서버 (WAS)
    - 웹 페이지를 전달하는 역할을 하기도 하지만, 핵심 역할은 웹 페이지를 구성하는 동적인 컨텐츠를 생성하거나 업데이트 하는 비즈니스 로직을 수행할 수 있게 하며, 서버 측 비즈니스 로직에 클라이언트가 접근할 수 있는 방법을 제공한다.
    - 동적인 요소를 생성하는 *서버 사이드 코드가 구동될 수 있는 프로그래밍 언어적 런타임 / 소프트웨어 엔진을 제공한다.
    - DB 조회, 여러 개의 트랜잭션 관리, 비즈니스 로직 처리 등의 기능이 요구된다.
    - 경우에 따라 다양한 형태의 아키텍처(웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버 등)가 생성될 수 있다.
    - 따라서 웹 사이트의 *인터랙티브 부분을 처리한다.

  • 데이터베이스 서버
    - 사용자 정보, 사진, 영상 등에 대한 정보를 담고 있으며, 사용자가 데이터베이스에 연결할 수 있도록 해준다.
    - ex. MySQL, MongoDB, Oracle 등
  • 프록시 서버
    - 클라이언트의 리소스를 요청에 대한 응답으로 리소스를 전달하는 서버 사이의 중계 역할을 하는 서버
    - 위치 하는 곳에 따라 포워드 프록시, 리버스 프록시로 나누어 진다.
    - 프록시 서버가 수행하는 기능으로는 보안, 캐시, 로드밸런싱 등이 있다.

정적 웹사이트 vs 동적 웹사이트

  • 정적 웹사이트 : HTML 파일(코드) 자체로 배포되는 사이트 (CSR, Client Side Rendering)
    - JavaScript는 동적인 렌더링을 지원하지만, 결국 서버가 웹 페이지를 렌더링하지 않으며, HTML/CSS/JS 파일의 소스 코드 그대로 작동하는 특징을 가지고 있기 때문에, 이는 정적 웹사이트 이다.
  • 동적 웹사이트 : 서버에 의해 HTML 파일이 동적으로 생성되는 사이트 (SSR, Server Side Rendering)
    - 동적 웹 사이트를 만드는 기술 : PHP, JSP, ASP 등 (node.js도 가능)

 

  • 빌드
    - 프로그램 소스 코드를 독립적인 아티팩트로 변환하는 과정
    - 때로는 아티팩트 자체로 실행이 가능하며, 대체로 런타임(소프트웨어 실행 환경)이 필요한 경우가 많다.
도구 설명
JavaScript 기반 React create-react-app 또는 next.js 같은 프레임워크를 사용하며,
프로덕션용 빌드 결과물(아티팩트)을 만들어낼 수 있다.
Java/Kotlin 기반 Spring Boot JVM(자바 런타임) 위에서 실행되는 war 파일이 아티팩트로 생성된다.
대표적인 빌드 도구로를 maven, Gradle이 있다.
빌드가 필요없는 경우 node.js 앱이나 Python과 같이 소스 코드 그대로 런타임을 실행할 수 있는 경우,
즉 다른 변환 작업이 필요 없는 경우 빌드 과정이 생략될 수 있다.

 

  • 프레임워크 : 소프트웨어 개발을 쉽게 만들어주기 위해 필요한 도구, 규약의 집합체
목적 종류
백엔드 Spring (Java, Kotlin), Django (Python), Express (JavaScript)
프론트엔드 React 및 관련 라이브러리 (JavaScript), Vue.js, Svelte (JavaScript)
모바일 및 데스크탑 Flutter (Android, iOS 등), .Net Framework (Windows),
Apple 운영체제 기본 Native 프레임워크 Cocoa(macOS), Cocoa Touch (iOS),
Android 기본 Native 프레임워크 (Android)

 

 

*서버 사이드 코드 : 사용자 웹 브라우저에서 실행되는 클라이언트 측 코드와 달리 웹 애플리케이션의 서버 측에서 실행되는 모든 코드
*인터랙티브 : 사용자와 시스템/응용 프로그램 간의 양방향 통신 또는 참여를 허용하는 모든 기술/경험

'Devops Bootcamp' 카테고리의 다른 글

[29. March] 발표 / TIL  (0) 2023.03.29
[29. March] 데이터베이스 개념 / TIL  (0) 2023.03.29
[23. March] HTTPS / TIL #2  (0) 2023.03.23
[23. March] REST API / TIL #1  (0) 2023.03.23
[22. March] HTTP #2 / TIL  (0) 2023.03.22
Comments