Web-WAS-DB 3-tier 서버 아키텍처에 대한 포스팅입니다.
서론
애플리케이션의 구성 요소는 보통 Web, WAS(Web Application Server), DB(Database)로 나뉩니다. 이 세 가지 구성 요소는 서로 협력하여 현대적인 웹 애플리케이션이 안정적이고 효율적으로 작동하도록 합니다.
Web은 사용자와 가장 가까운 계층으로, HTTP 요청과 응답을 처리합니다. WAS는 비즈니스 로직을 처리하고 Web과 DB를 연결합니다. DB는 데이터를 저장하고 관리하며, 요청에 따라 데이터를 제공합니다. 이 구조는 3계층 아키텍처라고 불리며, 성능, 확장성, 보안 등의 면에서 효율성을 제공합니다.
본론
1. Web 계층
Web 계층은 사용자의 브라우저와 서버 간의 중개 역할을 수행합니다. HTTP/HTTPS 요청을 수신하고, 정적 파일(CSS, JavaScript, 이미지 등)을 제공하거나 WAS로 요청을 전달합니다. 주요 구성 요소로는 Nginx, Apache, IIS 등이 있습니다. 이 서버들은 정적 콘텐츠 제공, WAS로의 요청 프록시, 부하 분산 처리 역할을 합니다. 사용자가 많아지면 웹 서버는 로드 밸런서를 통해 요청을 여러 WAS로 분산시킵니다. 이를 통해 서버 과부하를 방지하고 성능을 향상시킵니다. 또한 HTTPS를 사용하여 데이터를 암호화하고, 사용자와 서버 간의 통신을 보호합니다. 방화벽 및 DDoS 방어 시스템과 통합하여 외부 위협을 방지합니다.
2. WAS(Web Application Server) 계층
WAS는 Web과 DB 사이에서 비즈니스 로직을 처리하는 계층입니다. 데이터베이스 요청을 중개하고, 사용자 요청을 분석하여 처리합니다. Java 기반 WAS는 Apache Tomcat, WebLogic, JBoss 등이 있고, 비Java 기반 WAS: Microsoft IIS, Node.js, Python Flask/Django가 있습니다. 사용자가 상품 검색을 요청하면 WAS는 해당 요청을 분석한 뒤, DB에서 데이터를 가져와 사용자에게 반환합니다. 로직은 보통 프로그래밍 언어(Java, Python 등)와 프레임워크(Spring, Django 등)를 통해 구현됩니다. WAS는 로그인 정보 등 사용자의 상태를 관리하며, 이를 통해 개인화된 경험을 제공합니다. 세션과 쿠키를 사용하여 상태를 유지합니다. 그리고 다중 WAS 구성을 통해 가용성을 높이고, 트래픽 증가에 대응할 수 있습니다. WAS는 수평적 확장(서버 추가)과 수직적 확장(하드웨어 업그레이드)을 지원합니다.
3. DB(Database) 계층
데이터를 저장, 관리, 검색하는 계층입니다. WAS에서 요청한 데이터 쿼리를 처리하고 결과를 반환합니다. 주요 데이터베이스 유형으로 관계형 데이터베이스(RDBMS)는 MySQL, PostgreSQL, Oracle입니다. 데이터를 테이블 형태로 저장하며, SQL을 통해 관리합니다. NoSQL 데이터베이스는 MongoDB, Cassandra입니다. 비정형 데이터를 관리하며, 스키마가 유연합니다. 데이터베이스 성능 최적화를 위해 인덱스를 사용하여 데이터 검색 속도를 향상시킵니다. Redis, Memcached 등을 사용하여 반복적인 데이터 요청 속도를 향상시킵니다. 효율적인 SQL 쿼리를 작성하여 성능을 최적화합니다. 그리고 정기적인 백업과 복구 계획을 통해 데이터 손실을 방지합니다. 데이터 무결성과 보안이 가장 중요한 요소입니다.
4. Web-WAS-DB 간의 데이터 흐름
4.1 사용자 요청 처리
사용자가 브라우저에서 URL을 입력하거나 버튼을 클릭합니다.
웹 서버가 요청을 수신하고, WAS로 전달합니다.
WAS는 요청을 분석하고, 필요한 데이터를 DB에 요청합니다.
DB는 데이터를 반환하고, WAS는 비즈니스 로직을 처리한 후 웹 서버로 결과를 보냅니다.
웹 서버는 결과를 사용자에게 표시합니다.
4.2 예시
사용자가 로그인 폼을 제출합니다.
Web: 요청을 수신하고, SSL/TLS를 통해 암호화된 데이터를 전달합니다.
WAS: 로그인 정보를 처리하고, DB에 인증 요청을 보냅니다.
DB: 사용자 인증 정보를 검증한 뒤 결과를 반환합니다.
WAS: 성공 여부를 판단하고, 사용자 세션을 생성합니다.
Web: 최종 결과를 사용자에게 표시합니다.
5. 장점 및 단점
장점은 모듈화되어 각 계층이 독립적으로 관리 가능하며, 트래픽 증가에 따라 계층별 확장이 가능합니다. DB 접근을 제한하여 보안을 강화할 수 있습니다. 단점은 복잡성으로 설계 및 유지보수가 비교적 어렵다는 점, 계층별 추가 구성으로 인한 초기 투자 비용 증가한다는 점입니다.
결론
Web-WAS-DB 구조는 현대적인 웹 애플리케이션의 기본 골격입니다. 각 계층은 역할이 명확히 구분되어 있어 확장성과 보안성을 보장합니다. 이 구조를 효과적으로 활용하려면 각 계층의 역할과 특성을 깊이 이해해야 하며, 이를 기반으로 안정적이고 효율적인 애플리케이션을 설계할 수 있습니다.