Fairy ' s
[24. March] WAS Web Server / TIL 본문
서버 ?
- 하드웨어적 : 정적인 파일들이 제공되고, 서버 애플리케이션이 실행되는 컴퓨터.
- 소프트웨어적 : 정적인 파일이나 서비스를 제공하는 애플리케이션 그 자체
- 즉, 서버는 사용자의 요청을 받고 이에 따른 응답과 데이터를 보내준다.
- 서비스를 제공하는 컴퓨터 내의 프로그램(프로그램)이며, 프로그램 실행되는 컴퓨터(하드웨어)도 서버이다.
- 웹 서버
- 클라이언트로부터 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