Overview
전통적인 3tier 아키텍처는 애플리케이션을 프레젠테이션, 애플리케이션, 데이터라는 세 가지 논리적 및 물리적 컴퓨팅 계층으로 구성하는 널리 사용되는 소프트웨어 애플리케이션 아키텍처이다.
그러나 현대 웹 개발에서는 특히 클라우드 기술과 서비스의 출현으로 인해 웹과 애플리케이션 서버(WAS)의 구분이 모호해졌다.
3tier 아키텍처에 대해서 알아본다.
전통적인 3tier 아키텍처
- 프레젠테이션 계층(Client Tier): 애플리케이션의 사용자 인터페이스이다. 이는 사용자에게 애플리케이션을 제시하고, 모든 데이터에 대해 애플리케이션 계층과 통신하며, 결과를 사용자에게 다시 제공한다.
- 애플리케이션 계층(Business Logic/Logic Tier): 이 계층은 애플리케이션을 조정하고, 명령을 처리하고, 논리적인 결정과 평가를 내리고, 계산을 수행한다. 또한 두 개의 주변 레이어 간에 데이터를 이동하고 처리한다.
- 데이터 계층(Data Tier): 여기에는 데이터베이스 및 데이터 저장 시스템이 포함된다. 데이터 계층은 데이터의 물리적 저장 및 검색을 관리한다.
웹 개발의 최신 접근 방식
현대 웹 개발에서는 특히 클라우드 기술과 서비스의 출현으로 인해 웹과 애플리케이션 서버(WAS)의 구분이 모호해졌다.
- 웹 서버(Web): 전통적으로 HTTP 요청을 처리하고, 정적 콘텐츠를 제공하고, 동적 콘텐츠 요청을 애플리케이션 서버에 전달했습다.
- 애플리케이션 서버(WAS): 사용자 인터페이스와 데이터베이스 간의 비즈니스 로직 및 상호 작용을 처리한다. 애플리케이션을 실행하고 데이터베이스에서 반환된 데이터를 처리했다.
요즘에는 많은 웹 프레임워크에 정적 콘텐츠와 동적 콘텐츠를 모두 처리할 수 있는 내장 서버(예: Spring Boot의 Tomcat)가 함께 제공되므로 많은 시나리오에서 별도의 웹 서버와 애플리케이션 서버가 필요하지 않다.
전통적인 3tier 아키텍처와 현대의 웹 개발방식과의 비교
Aspect | Traditional 3-Tier Architecture | Modern Web Development |
Separation | Clear separation of concerns | Blurred lines, often combined layers |
Web Server (WS) | 정적 콘텐츠만 제공 | 정적 및 동적 콘텐츠를 제공 |
Application Server (WAS) |
비즈니스 로직을 독점적으로 처리 | 애플리케이션에 내장되어 모든 비즈니스 로직을 처리 |
Scalability | 더 많은 중간 계층 서버를 추가하여 확장 가능 | 마이크로서비스, 컨테이너 또는 서버리스 컴퓨팅으로 확장 가능 |
Deployment Complexity | 별도의 유지 관리 및 확장이 필요한 별도의 레이어로 인해 높음 | 통합 서비스 및 클라우드 제공업체로 인해 감소 |
Development and Maintenance | 상호의존성으로 인해 더욱 복잡해짐 | 내부적으로 종속성을 관리하는 프레임워크 및 서비스로 단순화됨 |
Example Technologies | Apache 웹 서버, Oracle WebLogic, IBM WebSphere | Node.js, Spring Boot, Django(Tomcat 또는 Gunicorn과 같은 내장 서버 사용) |
웹과 WAS의 차이점
웹 서버
- HTTP 요청을 처리
- HTML, CSS, 이미지와 같은 정적 콘텐츠를 제공
- 동적 콘텐츠에 대한 요청을 응용 프로그램 서버로 프록시할 수 있다.
애플리케이션 서버(WAS)
- 비즈니스 로직을 처리
- 동적 콘텐츠 요청을 처리
- 데이터베이스 및 기타 서비스와 상호 작용하여 데이터를 가져오고, 처리하고, 유지
정적 콘텐츠와 동적 콘텐츠란?
간단하게 한 문장으로 설명하면, 정적콘텐츠는 immutable(불변) 동적 콘텐츠는 mutable(변)이다.
따라서 웹 개발에서 콘텐츠는 생성되어 최종 사용자에게 전달되는 방식에 따라 정적 콘텐츠와 동적 콘텐츠로 분류될 수 있다. 두 가지 유형에 대한 분석은 다음과 같다.
정적 콘텐츠
정적 콘텐츠는 자주 변경되지 않고 저장된 그대로 제공되는 파일을 의미한다. 이 콘텐츠는 모든 사용자를 위해 미리 준비되고 수정되어 파일을 요청하는 모든 사람이 동일한 버전을 받게 된다. 정적 콘텐츠는 상호 작용이나 실시간 업데이트가 필요하지 않은 웹페이지 구성 요소에 주로 사용된다.
따라서 정적 콘텐츠 전달은 정적 파일을 빠르고 효율적으로 제공하도록 최적화된 Apache HTTP Server 또는 Nginx와 같은 웹 서버를 활용하는 경우가 많다. 또한 CDN(콘텐츠 전송 네트워크)은 대기 시간을 줄이기 위해 정적 콘텐츠를 사용자에게 더 가까이 배포하고 캐시하는 데 일반적으로 사용된다.
- 일관성: 웹 개발자가 명시적으로 업데이트하지 않는 한 콘텐츠는 동일하게 유지
- 속도: 콘텐츠를 동적으로 생성하기 위해 서버에서 처리할 필요가 없기 때문에 사용자에게 빠르게 제공될 수 있다.
- 예: HTML 파일, CSS 스타일시트, JavaScript 파일(서버 요청을 하지 않음), 이미지, 비디오 및 PDF와 같은 다운로드 가능한 파일
동적 콘텐츠
반면 동적 콘텐츠는 사용자 요청, 상호 작용 또는 기타 조건을 기반으로 실시간으로 생성된다. 이는 정적 파일로 미리 저장되지 않지만 클라이언트 또는 서버 측 조건의 입력을 기반으로 서버에서 즉시 생성된다. 이 콘텐츠는 개별 사용자에게 맞춤화되어 사용자별 인터페이스와 경험에 적합하다.
동적 콘텐츠 생성에는 Apache Tomcat과 같은 애플리케이션 서버, Microsoft의 IIS(ASP.NET 포함) 또는 Python용 Django, Ruby용 Rails와 같은 프로그래밍 프레임워크가 포함되어 콘텐츠를 동적으로 생성하는 데 필요한 논리를 처리한다. 이러한 도구는 사용자 요청을 처리하고, 데이터베이스 액세스와 같은 서버에서 작업을 수행하고, 클라이언트에 보낼 HTML, JSON 또는 기타 형식을 동적으로 생성한다.
- 개인화: 개별 사용자의 필요나 선호도에 맞춰 개인화된 정보를 표시할 수 있다.
- 상호작용성: 동적 요소는 사용자 입력에 반응하여 사용자가 취한 작업에 따라 콘텐츠를 변경하는 경우가 많다.
- 서버 측 처리: 동적 콘텐츠 생성에는 데이터베이스 쿼리, 데이터 처리, 클라이언트에 보내기 전에 HTML 형식 지정이 포함되는 경우가 많다.
- 예: 사용자 프로필, 대시보드, 데이터베이스 쿼리 결과, 현재 시간, 날씨 업데이트 또는 주식 시장 동향을 표시하는 페이지(Instagram, Neflix.. etc)
Reference
https://www.wix.com/blog/static-vs-dynamic-website
https://gcore.com/learning/static-vs-dynamic-content-understanding-the-difference/
'CS 지식' 카테고리의 다른 글
[CS 지식16.] stdin(표준입력) vs stdout(표준출력) vs stderr(표준에러) (0) | 2024.11.09 |
---|---|
[CS 지식15.] SSR vs CSR vs ISR vs SSG (6) | 2024.09.05 |
[CS 지식13.] 동기 및 비동기 처리란? (0) | 2024.06.06 |
[CS 지식12.] SSO(Single Sign-On)란? (With OAuth SAML OIDC) (0) | 2024.03.23 |
[CS 지식11.] NAT(Network Address Translation)란? (0) | 2024.02.21 |