오늘은 웹 심화과정에 대한 내용을 다루는 특강이 있었는데
웹 서버와 웹 애플리케이션의 대한 개념과 다양한 종류의 프레임워크를 들었다.
내용이 많아서 프레임워크는 따로 구글링을 통해 정보를 찾아가며 추가적으로 적고
오늘은 웹 서버와 웹 애플리케이션의 대한 강의 내용만 정리하려고 한다.
웹 서버
웹 서버란?
클라이언트(주로 웹 브라우저)에서 요청한 웹 페이지, 이미지, 동영상 등 웹 콘텐츠를 제공하는 서버 소프트웨어 또는 하드웨어를 의미하며 클라이언트의 HTTP 요청을 수신하고, 요청된 콘텐츠를 찾아 응답하는 역할을 한다.
웹 서버의 주요 구성 요소
- Listener (수신기): 네트워크에서 들어오는 클라이언트의 요청을 수신하는 컴포넌트로 지정된 포트를 열어 클라이언트의 연결을 대기한다.
- Request Handler (요청 처리기): 수신된 요청을 분석하고, 요청에 따라 필요한 작업을 결정한다. 정적 파일을 찾거나, 동적 콘텐츠를 생성하기 위해 적절한 스크립트를 실행한다.
- Response Generator (응답 생성기): 요청 처리 결과를 바탕으로 클라이언트에게 보낼 HTTP 응답을 생성한다. 응답은 상태 코드, 헤더, 바디(컨텐츠)로 구성되어 있다.
- Cache (캐시): 서버의 부하를 줄이고, 응답 속도를 향상시키기 위해 자주 요청되는 데이터나 페이지를 저장하여 빠르게 제공할 수 있도록 한다.
- Logging (로깅): 요청 및 응답, 오류 등의 정보를 기록하여 관리자는 서버 상태를 모니터링하고 문제 해결이 가능하다.
- Security Manager (보안 관리자): 클라이언트의 요청을 검증하고, 접근 권한을 확인한다. HTTPS를 통해 데이터 암호화를 관리하고, 인증 및 권한 부여를 수행한다.
- Configuration Manager (설정 관리자): 서버의 설정 파일을 관리하고, 가상 호스팅, 라우팅, 포트 등의 설정을 유지한다.
웹 서버 소프트웨어
- Apache HTTP Server: 가장 널리 사용되는 웹 서버 소프트웨어 중 하나로, 다양한 운영체제에서 동작하며 높은 유연성과 확장성을 제공해준다.
- Nginx: 경량화된 고성능 웹 서버로, 높은 동시 연결 처리 능력을 가지고 있으며 주로 리버스 프록시와 로드 밸런싱에 사용된다.
- Microsoft IIS(Internet Information Services): Windows Server 운영체제에서 동작하는 웹 서버 소프트웨어로, Microsoft 제품과의 높은 호환성을 가진다.
서버 설정 및 작동 원리
- 가상 호스트: 하나의 웹 서버에서 여러 도메인을 호스팅 할 수 있도록 하는 기술로 동일한 서버에서 다양한 웹 사이트를 운영 가능하게 해준다.
- 포트: 네트워크에서 서비스를 식별하는 번호로 웹 서버는 기본적으로 80 포트(HTTP 포트 번호)와 443 포트(HTTPS 포트 번호)를 사용하여 클라이언트 요청을 처리한다.
- 라우팅: 요청 URL을 분석하여 적절한 응답을 반환하는 과정으로 웹 애플리케이션의 특정 경로로 요청을 전달하고, 해당 경로에 맞는 콘텐츠나 데이터를 제공하는 역할을 한다.
서버 - 클라이언트 통신
- API: 소프트웨어 간의 상호작용을 가능하게 하는 인터페이스로 웹 API는 HTTP를 통해 클라이언트와 서버 간의 데이터를 교환한다. (예시: Twitter API, Google Maps API, OpenWeather API)
- RESTful API: 웹 서비스 디자인 아키텍처로, 클라이언트와 서버 간의 상호작용을 정의한 것이다. RESTful API는 자원을 URI로 표현하며, HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 자원에 대한 작업을 수행한다.
- AJAX: 웹 페이지를 새로 고침하지 않고 서버와 비동기적으로 데이터를 주고받는 기술이며 사용자 경험을 개선하고, 페이지 응답 속도를 향상시켜준다. (예시: 채팅 애플리케이션, 실시간 검색 기능, 비동기 데이터 로딩
- 프론트엔드: 사용자와 직접 상호작용하는 웹 애플리케이션의 부분으로, 사용자 인터페이스(UI)와 사용자 경험(UX)을 맡는다. HTML, CSS, JavaScript 등을 사용하여 웹 페이지를 구성하고 스타일을 적용하며, 동적인 기능을 구현한다.
기술: HTML, CSS, JavaScript, 프론트엔드 프레임워크(React, Angular, Vue.js) - 백엔드: 웹 애플리케이션의 서버 측 부분으로, 데이터베이스와 서버 로직을 관리하는 부분이다. 클라이언트 요청을 처리하고, 데이터베이스와 상호작용하며, 필요한 데이터를 클라이언트에 반환해준다.
기술: 서버 사이드 언어(Python, Java, Node.js), 데이터베이스(MySQL, MongoDB), 백엔드 프레임워크(Django, Spring, Express.js)
웹 애플리케이션
웹 애플리케이션이란?
웹 서버에서 동작하는 소프트웨어로, 사용자의 입력을 처리하고 동적인 웹 페이지를 생성하는 데 사용된다. 주로 특정 비즈니스 로직이나 기능을 구현하며, 데이터베이스와 상호 작용하여 정보를 저장하고 불러오는 역할을 수행한다.
웹 애플리케이션의 주요 구성 요소
- User Interface (사용자 인터페이스): 사용자와 상호 작용하는 화면이나 페이지를 말하며 HTML, CSS, JavaScript 등을 사용하여 구성한다.
- Business Logic (비즈니스 로직): 애플리케이션의 핵심 기능과 처리 로직을 구현한 것으로 사용자의 요청을 처리하고, 필요한 데이터를 조작하여 응답을 생성한다.
- Data Access Layer (데이터 접근 계층): 데이터베이스와 상호 작용하여 데이터를 저장하고 불러온다. 데이터베이스 쿼리를 생성하고, 결과를 반환한다.
- Web API (웹 API): 다른 서비스나 애플리케이션과 상호 작용할 수 있도록 API를 제공한다.
(RESTful API, GraphQL, SOAP 등) - Session Management (세션 관리): 쿠키나 세션 토큰을 사용하여 구현하며 사용자의 로그인 상태를 관리하고, 각 사용자의 세션을 유지한다.
- Error Handling (오류 처리): 오류 로그를 남기고, 사용자에게 적절한 메시지를 표시함으로써 애플리케이션에서 발생하는 오류를 감지하고 처리한다.
- Security (보안): 애플리케이션의 보안을 관리하는 부분으로 사용자 인증, 권한 부여, 입력 검증, 데이터 암호화 등의 기능을 포함하고 있다.
웹 서버와 웹 애플리케이션의 차이점
구분 | 웹 서버 | 웹 애플리케이션 |
역할 | 웹 콘텐츠 제공 (정적 파일, HTTP 응답 처리) | 비즈니스 로직 구현, 사용자 입력 처리, 동적 콘텐츠 생성 |
구성 요소 | Listener, Request Handler, Cache, Logging, Security | User Interface, Business Logic, Data Access Layer, API |
주요 기능 | HTTP 요청 수신, 응답 생성, 캐싱, 로깅, 보안 | 사용자 상호 작용, 데이터 처리, 비즈니스 로직, 세션 관리 |
사용 기술 | HTTP, HTTPS, SSL/TLS, 캐싱 | HTML, CSS, JavaScript, 서버 측 언어 (Python, PHP 등) |
작동 방식 | 클라이언트 요청을 처리하고 정적/동적 콘텐츠 제공 | 사용자의 입력에 따라 동적으로 콘텐츠 생성, 데이터베이스와 상호 작용 |
'CS' 카테고리의 다른 글
[CS] 웹 지식 복습 및 추가 정리 (1) | 2024.08.12 |
---|---|
[CS] 소프트웨어 문서 (0) | 2024.07.31 |
[CS] 빅데이터 및 인공지능 (0) | 2024.07.30 |
[CS] 네트워크 (0) | 2024.07.29 |
[CS] 소프트웨어 설계 (0) | 2024.07.26 |