• 웹 개발에서 WAS는 클라이언트의 요청을 처리하고 동적인 웹 콘텐츠를 생성하는 핵심 컴포넌트이다.
  • 프론트엔드와 백엔드 간의 원활한 통신을 가능하게 하며, 웹 애플리케이션의 성능, 보안, 확장성을 좌우하는 중요한 요소이다.

WAS

  • 웹 애플리케이션을 실행하고 관리하는 서버 소프트웨어
  • 클라이언트로부터 HTTP 요청을 받아 처리하고, 동적인 웹 페이지나 데이터를 생성하여 응답을 반환한다.
  • WAS는 주로 백엔드 로직을 처리하며, 데이터베이스와의 상호작용, 인증 및 권한 관리, 비즈니스 로직 실행 등을 담당한다.

WAS와 Web Server의 차이

  • 웹 서버 : 주로 정적인 콘텐츠들을 제공하며, HTTP 요청을 처리한다.
    • 대표적으로 Apache, Nginx 등이 존재한다.
  • 웹 애플리케이션 서버 : 동적인 콘텐츠를 생성하고, 복잡한 비즈니스 로직을 처리한다.
    • 대표적으로 Tomcat, Jetty, WildFly 등이 있다.

⇒ WAS는 웹 서버와 함께 사용되는 경우가 많으며 웹 서버가 정적인 콘텐츠를 제공하고 WAS가 동적인 처리를 담당하여 효율적인 자원 관리를 가능하게 한다.

WAS의 주요 역할

  1. 동적 콘텐츠 역할
    • 사용자 요청에 따라 동적으로 웹 페이지나 데이터를 생성하여 응답한다.
  2. 비즈니스 로직 처리
    • 애플리케이션의 핵심 기능을 구현하는 로직을 실행한다.
  3. 데이터베이스 연동
    • 데이터베이스와의 상호 작용을 관리하여 데이터를 조회, 삽입, 수정, 삭제한다.
  4. 인증 및 권한 관리
    • 사용자 인증 및 권한 부여를 통해 보안을 유지
  5. 세션 관리
    • 사용자 세션을 관리하여 상태 정보를 유지
  6. 트랜잭션 관리
    • 데이터의 일관성을 유지하기 위해 트랜잭션 관리

WAS의 주요 기능

  1. 로드 밸런싱
    • 여러 대의 서버에 요청을 분산시켜 서버 부하를 줄이고, 가용성을 높임
  2. 클러스터링
    • 여러 대의 WAS 인스턴스를 클러스터로 구성하여 고가용성과 확장성을 제공
  3. 캐싱
    • 자주 요청되는 데이터를 캐시에 저장하여 응답 속도 향상
  4. 보안
    • SSL/TLS 지원, 인증 및 권한 관리, 데이터 암호화 등을 통해 보안을 강화
  5. 모니터링 및 로깅
    • 애플리케이션의 성능을 모니터링하고, 로그를 기록하여 문제를 진단하고 해결
  6. API 관리
    • RESTful API나 GraphQL API를 제공하여 프론트엔드와의 원활한 통신을 지원

프론트엔드와 WAS의 연동

  • 프론트엔드 애플리케이션은 WAS와 API를 통해 데이터를 주고받으며, 사용자 인터페이스를 동적으로 업데이트한다.
  1. API 설계
    • RESTful API 또는 GraphQL을 설계하여 프론트엔드와 백엔드 간의 통신 규약을 정의합니다.
  2. HTTP 요청 처리
    • 프론트엔드에서 fetch 또는 axios 같은 라이브러리를 사용하여 WAS의 엔드포인트에 HTTP 요청을 보냅니다.
  3. 데이터 포맷
    • 일반적으로 JSON 형식을 사용하여 데이터를 주고 받습니다.
  4. 인증 및 권한
    • JWT나 OAuth를 사용하여 인증 및 권한을 관리합니다
  5. 에러 핸들링
    • 프론트엔드에서 백엔드로부터의 에러 응답을 적절히 처리하여 사용자에게 알립니다.
  6. CORS 설정
    • WAS에서 CORS를 설정하여 프론트엔드와의 교차 요청을 허용합니다.

결론

  • WAS는 현대 웹 애플리케이션의 핵심 구성 요소로 프론트엔드와 백엔드 간의 원활한 통신을 지원하고, 애플리케이션의 성능과 보안을 책임집니다. 다양한 WAS가 존재하며, 프로젝트의 요구사항에 맞는 적절한 WAS를 선택하는 것이 중요합니다.
  • WAS의 존재에 대해 잘 몰랐기 때문에 그 동안 서버라고 말하면 모두 웹 서버를 말하는 줄 알았는데 오히려 프론트와의 긴밀한 연결은 WAS와 이어지고 있다는 것을 깨달았습니다. 두 서버가 왜 다른 지 이해했고, WAS를 어떤 시각으로 바라보고 프론트에서 적절하게 사용해야 하는 지 알았습니다.

'TIL' 카테고리의 다른 글

AMP (Accelerated Mobile PAges)  (0) 2024.08.26
React (Redux , Context API, 클래스형과 함수형)  (0) 2024.08.22
자바스크립트의 ES6  (0) 2024.08.21
자바스크립트의 this  (0) 2024.08.20
자바스크립트의 타입  (0) 2024.08.19

+ Recent posts