웹 아키텍쳐

웹 아키텍처3 - 웹 애플리케이션 서버(WAS) - 스프링은 WAS?

dodo4723 2024. 2. 17. 09:54
728x90
반응형

제 프로젝트는 사용자가 특정 차트를 고르면, 코스피 코스닥 전 종목의 과거(5년) 차트들을 모두 탐색하여 가장 유사한 차트 10개 정도를 골라 사용자에게 보여주는 것이 목표입니다.

 

비슷한 차트 검색기

 

similar chart finder

내 종목의 차트는 상승하는 차트일까요?

3.35.36.208

 

 

웹 애플리케이션 서버(WAS) 이해하기

저는 작년 스프링을 공부할 때, 웹 서버와 웹 애플리케이션 서버가 뭔지도 모르고 스프링과 스프링부트 공부를 하여 부끄러웠던 경험이 있습니다.

 

그리고 또 궁금한 점이 있습니다. 스프링을 공부할 때 제 기억으로는 스프링에 톰캣이라는 웹 애플리케이션 서버가 내장되어 있다고 들었던 것 같습니다.

 

음? 저는 스프링이 웹 애플리케이션 서버인 줄 알았는데, 톰캣이 WAS라면 스프링은 뭐였던 걸까요? 오늘 WAS를 공부하면서 궁금한 점을 제대로 해결하고 가야겠습니다.




웹 애플리케이션 서버(WAS)란?

웹 애플리케이션 서버(WAS)는 클라이언트와 데이터베이스 사이에서 동작하여, 웹 애플리케이션을 수행하는 기능을 가진 서버입니다. WAS는 클라이언트의 요청에 따라 비즈니스 로직을 수행하고 그 결과를 클라이언트에게 전달하는 역할을 합니다.




웹 애플리케이션 서버(WAS)의 주요 기능

 

웹 애플리케이션 서버(WAS)는 다음과 같은 주요 기능을 가지고 있습니다.

  1. 동적 컨텐츠 처리 : WAS는 동적 콘텐츠를 처리하는 역할을 합니다. 동적 콘텐츠란 사용자의 요청에 따라 실시간으로 생성되는 콘텐츠를 의미합니다.
  2. 비즈니스 로직 수행 : WAS는 클라이언트의 요청에 따라 비즈니스 로직을 수행합니다. 비즈니스 로직이란 데이터베이스의 데이터를 처리하여 원하는 결과를 생성하는 프로그램을 말합니다.
  3. 데이터베이스 연동 : WAS는 데이터베이스와 연동하여 데이터를 조회, 수정, 삭제 등의 작업을 수행합니다.
  4. 트랜잭션 관리 : WAS는 트랜잭션을 관리합니다. 트랜잭션이란 하나의 작업 단위를 말하며, 이 작업들은 모두 성공하거나 모두 실패해야 합니다.
  5. 보안: WAS는 웹 애플리케이션의 보안을 관리합니다. 이에는 인증, 권한 관리, 데이터 보호 등이 포함됩니다.
  6. 세션 관리 : 웹 애플리케이션 서버(WAS)는 클라이양트의 상태 정보를 유지하기 위해 세션 관리 기능을 제공합니다. 이를 통해 로그인 정보, 장바구니 정보 등의 상태를 유지할 수 있습니다.
  7. 캐싱 : WAS는 자주 사용하는 데이터나 처리 결과를 임시로 저장하는 캐싱 기능을 제공합니다. 이를 통해 같은 요청에 대한 처리 시간을 단축시키고, 서버의 부하를 줄일 수 있습니다.
  8. 클러스터링 : 클러스터링은 여러 대의 WAS를 하나처럼 사용하는 기능입니다. 이를 통해 서버의 부하 분산, 장애 복구, 고가용성 등을 구현할 수 있습니다.
  9. 로드 밸런싱 : WAS는 요청을 여러 서버에 분산하여 처리하는 로드 밸런싱 기능을 제공합니다. 이를 통해 서버의 부하를 고르게 분산시키고, 서버의 처리능력을 향상할 수 있습니다.
  10. 메시징 : 메시징은 WAS가 서로 다른 애플리케이션 또는 컴포넌트 사이에서 데이터를 교환하는 기능입니다. 이를 통해 시스템 간의 결합도를 낮추고, 확장성을 높일 수 있습니다.
  11. 배치 작업 : WAS는 주기적이거나 대량의 작업을 처리하는 배치 작업 기능을 제공합니다. 이를 통해 정해진 시간에 데이터 처리, 일괄 업데이트 등의 작업을 수행할 수 있습니다.

 

 

웹 애플리케이션 서버(WAS)의 종류

웹 애플리케이션 서버(WAS)에는 여러 종류가 있습니다. 대표적으로는 Tomcat, JBoss, WebLogic 등이 있습니다.

  1. Tomcat : Apache Tomcat은 Apache Software Foundation에서 개발한 오픈 소스 웹 애플리케이션 서버로, 주로 자바 서블릿 컨테이너 역할을 합니다. 가볍고 설정이 비교적 쉬워 소규모 프로젝트에서 많이 사용됩니다.
  2. JBoss : JBoss는 Red Hat에서 개발한 오픈 소스 기반의 웹 애플리케이션 서버로, EJB(Enterprise JavaBeans)를 지원합니다. 비즈니스 로직 처리에 특화되어 있어 대규모 엔터프라이즈 시스템에서 많이 사용됩니다.
  3. WebLogic : WebLogic은 Oracle에서 개발한 상용 웹 애플리케이션 서버로, 풍부한 기능과 높은 안정성을 가지고 있습니다. 대규모 엔터프라이즈 시스템에서 높은 성능과 안정성을 요구할 때 주로 사용됩니다.



 

스프링은 웹 애플리케이션 서버인가?

스프링 프레임워크란?

스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크입니다. 스프링은 복잡한 엔터프라이즈 애플리케이션 개발을 더 쉽고 효율적으로 만들기 위해 고안되었습니다. 스프링은 제어 역전(Inversion of Control, IoC)과 의존성 주입(Dependency Injection, DI) 같은 프로그래밍 원칙을 구현하여 코드의 결합도를 낮추고 유연성을 높입니다.

 

스프링은 웹 애플리케이션 서버인가?

스프링 프레임워크 자체는 웹 애플리케이션 서버(WAS)가 아닙니다. WAS는 웹 애플리케이션과 클라이언트 사이에서 요청을 처리하는 역할을 하는 반면, 스프링 프레임워크는 개발자가 웹 애플리케이션을 더 쉽게 개발할 수 있도록 도와주는 도구입니다.

 

그러나 스프링 부트와 같은 스프링 프로젝트를 사용하면, 내장 톰캣 등의 WAS를 이용하여 웹 애플리케이션을 독립적으로 실행시킬 수 있습니다. 이런 의미에서 스프링 부트는 마치 WAS처럼 동작하지만, 스프링 프레임워크 자체가 WAS인 것은 아닙니다.

 

결론적으로 스프링 프레임워크는 웹 애플리케이션 개발을 위한 프레임워크로, 웹 애플리케이션 서버(WAS)는 아니지만, 스프링 부트와 같은 도구를 사용하면 내장 WAS를 이용하여 웹 애플리케이션을 독립적으로 실행시킬 수 있습니다.




그러면 내가 지금 웹프로젝트에 사용하는 flask는?

Flask는 파이썬으로 작성된 웹 애플리케이션 프레임워크입니다. Flask 자체는 웹 애플리케이션 서버(WAS)가 아닌, 웹 애플리케이션을 개발하기 위한 도구입니다.

 

하지만 Flask는 개발 및 테스트 용도로 간단한 내장 서버를 제공하며, 실제 운영 환경에서는 Apache, Nginx와 같은 실제 웹서버 또는 Gunicorn, uWSGI와 같은 WAS(WSGI)와 함께 사용되어야 합니다.

 

결론적으로 Flask만으로는 WAS로서의 역할을 완전히 수행하기 어렵습니다.

반응형