웹서비스란
웹 서비스는 클라이언트(사용자)와 서버 간의 상호작용을 통해 데이터를 주고받으며 작동하는 시스템입니다. 이 과정은 HTTP 프로토콜을 기반으로 클라이언트가 요청(Request)을 보내고 서버가 응답(Response)을 반환하는 방식으로 이루어집니다.
웹 서비스는 주로 Stateless(상태 비저장) 특성을 가지며, 이는 요청 간에 상태가 유지되지 않음을 의미합니다. 이를 보완하기 위해 Cookie와 같은 기술이 사용됩니다.
구성 요소
1. 클라이언트(Client):
- 사용자 인터페이스를 제공하며, HTTP 요청을 생성하여 서버로 전달합니다.
- 클라이언트의 예시: 웹 브라우저, 모바일 앱 등.
- 요청 방식: GET, POST, PUT, DELETE와 같은 HTTP 메서드.
2. 서버(Server):
- 클라이언트로부터 요청을 받고 이를 처리한 뒤 응답합니다.
- 정적 리소스(HTML, CSS, JS 파일) 제공 또는 동적 데이터 생성.
- 주요 구성 요소: 웹 애플리케이션 서버(WAS), 미들웨어, 데이터베이스.
3. 데이터베이스(Database):
- 데이터의 영구 저장소로 사용됩니다.
- 서버 요청에 따라 데이터를 저장하거나 반환합니다.
- SQL을 통해 데이터를 관리하며, ODBC/JDBC 드라이버를 사용해 서버와 연결됩니다.
요청과 응답의 흐름
웹 서비스의 핵심은 클라이언트 요청과 서버 응답의 흐름에 있습니다.
1. 사용자의 요청:
- 사용자가 URL을 입력하거나 버튼을 클릭하여 서버에 HTTP 요청을 생성합니다.
- 예시: http://example.com/api/resource.
2. HTTP 요청 처리:
- 요청은 브라우저에서 HTTP 메서드(GET, POST 등)를 통해 전달됩니다.
- 요청 헤더(Header)에는 필요한 인증 정보 및 클라이언트 정보를 포함.
3. 서버 응답:
- 서버는 요청을 분석하고 비즈니스 로직에 따라 데이터를 처리한 뒤 HTTP 응답을 반환합니다.
- HTTP 응답 코드: 200(성공), 404(리소스 없음), 500(서버 오류) 등.
웹 서비스 아키텍처
클라이언트 측 기술
1. HTML (HyperText Markup Language):
- 웹 페이지의 구조를 정의합니다.
- 예: <div>, <h1> 태그를 사용하여 콘텐츠 계층화.
2. CSS (Cascading Style Sheets):
- HTML 요소의 시각적 스타일(색상, 레이아웃 등)을 적용합니다.
3. JavaScript:
- 동적 콘텐츠와 사용자와의 상호작용을 구현합니다.
- 주요 역할:
- 비동기 데이터 요청(예: Ajax).
- 이벤트 처리(버튼 클릭, 입력 폼 제출 등).
- 프레임워크 예시: React.js, Vue.js.
서버 측 기술
1. WAS (Web Application Server):
- 클라이언트의 요청을 처리하고 응답을 생성하는 역할.
- 주요 예: JSP(Java Server Pages), PHP, ASP.
2. Middleware (미들웨어):
- 웹 애플리케이션 서버와 데이터베이스 사이의 데이터 흐름을 중재합니다.
- 역할: 데이터 변환, 보안 정책 적용.
3. Spring Framework:
- Java 기반의 웹 애플리케이션 개발을 위한 프레임워크.
- Spring Container를 통해 비즈니스 로직 관리.
데이터베이스와 연결
1. ODBC (Open Database Connectivity) / JDBC (Java Database Connectivity):
- 서버와 데이터베이스 간 연결을 제공하는 표준 드라이버.
- 요청에 따라 데이터를 조회하거나 저장.
2. SQL (Structured Query Language):
- 데이터베이스와의 상호작용을 위한 언어.
- 주요 명령어: SELECT, INSERT, UPDATE, DELETE.
아키텍처 계층 구조
3-Tier Architecture (3계층 구조)
웹 서비스는 클라이언트와 서버, 데이터베이스로 구성된 3계층 구조를 따릅니다. 이 구조는 기능을 분리하여 확장성과 유지보수성을 높입니다.
1. Presentation Layer (프레젠테이션 계층):
- 클라이언트가 직접 상호작용하는 인터페이스 제공.
2. Application Layer (애플리케이션 계층):
- 비즈니스 로직과 데이터 처리 수행.
- 주요 기술: Spring Framework, RESTful API.
3. Data Layer (데이터 계층):
- 데이터 저장 및 관리.
- 데이터베이스와의 직접적인 연결.
RESTful API
- HTTP 기반으로 클라이언트와 서버 간의 통신 방식을 정의.
- 주요 특징:
- 요청 URL은 리소스를 명확히 식별.
- HTTP 메서드를 사용하여 작업(GET, POST 등) 지정.
보안 및 최적화
보안
1. SSL (Secure Sockets Layer):
- HTTPS(HTTP + SSL)를 통해 클라이언트와 서버 간 데이터를 암호화하여 전송.
2. Web Application Firewall (WAF):
- 클라이언트 요청 중 악성 요청을 탐지하고 차단.
3. IPS (Intrusion Prevention System):
- 네트워크 계층에서 웹 서비스로 향하는 악성 트래픽을 실시간으로 감지 및 차단.
4. Cookie 보안:
- Key-Value 구조로 사용자의 세션을 관리.
- 데이터 암호화와 Secure 플래그로 보안 강화.
최적화
1. Application Performance Monitoring (APM):
- 서버 및 애플리케이션의 성능을 모니터링.
- 주요 기능: 트래픽 분석, 병목현상 탐지.
2. 캐싱(Cache):
- 서버와 클라이언트 간 자주 사용하는 데이터의 전달 속도를 향상.
'네트워크' 카테고리의 다른 글
IDS, IPS (2) | 2024.11.13 |
---|---|
방화벽 Firewall (0) | 2024.01.18 |
DDoS (0) | 2024.01.10 |
Well Known Port (0) | 2023.11.10 |
DNS (0) | 2023.11.10 |