소소한 컴퓨터 이야기

WAS, NAS, ~aaS 찍먹하기

by Cori

CS

회사 다니면서, 실제 서비스를 제공하기 위해 NLP 이외의 분야들에 대한 공부도 많이 필요하다는 것을 느끼고 있다.

여기서는 요즘 가장 많이 듣고 있는 WAS, NAS, ~aaS에 대한 간단한 내용을 정리해보려 한다.


WAS, Web Application Server 란 ?

HTTP 프로토콜을 통해 Client의 요청을 받고, 정적인 서비스를 제공하는 서버를 Web Server라 부른다. Web Server에서는 정적인 컨텐츠 밎 자원 제공, 동적인 컨텐츠 제공을 위한 요청 전달을 하며, 대표적으로 Apache Server, Nginx, IIS가 있다. 이에 더 나아가, 다양한 로직 처리를 요구하는 동적인 서비스를 제공하는 서버를 Web Application Server라 한다. HTTP를 통해 컴퓨터나 장치에 Application을 수행해주며, 대표적으로 Apache Tompcat, JBoss, Jeus, Web Sphere 가 있다. 

 

쉽게 말해, 정적 파일 관련 요청은 Web Server에서 처리하고, 동적 파일 관련 요청은 Application Server로 전달해서 처리한다고 보면 된다. 이를 가능하게 하는 것은 WAS에 웹 컨테이너 (서블릿 컨테이너)가 탑재되어 있기 때문인데, 웹 서버에서 JSP를 요청하면 컨테이너가 JSP 파일을 서블릿으로 변환하여 컴파일을 수행 (동적 페이지 생성)하고, 서블릿 수행 결과를 웹 서버에 전달한다. 

더보기

정적 컨텐츠: 변화가 없는 컨텐츠로, 어느 사용자에게나 동일한 결과값을 보여줌  ex) html, jpg, css 등 

동적 컨텐츠: 자주 변경되는 컨텐츠로, 접속자의 요청에 따라 다른 결과값을 보여줌  ex) 은행 잔고, 장바구니 등

 

사용자 요청 -> 웹 서버 -> WAS -> 데이터베이스 -> WAS -> 웹 서버 -> 사용자 형태로 동작하기에, 사용자에게 WAS는 공개되어 질 필요가 없으며 WAS의 경우 DB 서버에 대한 접속 정보가 있기 때문에 외부로 노출될 경우 보안상 문제가 될 수 있다. WAS는 백앤드의 일부로 간주될 수 있지만, 정확히는 백엔드 어플리케이션 (Spring Boot, Django, Express(Node).js)을 실행하는 플랫폼이라 할 수 있다. 실질적인 백앤드 개발이라 하면 주로 WAS 위에서 실행되는 애플리케이션 로직 (비즈니스 로직, 데이터 처리, API 설계)을 작성하는 작업을 뜻한다. 

더보기

 

- Spring Boot(Java)로 REST API를 설계하고, 데이터베이스와 연동.

- Django(Python)로 인증 및 권한 관리 로직 구현.

- Express.js(Node.js)로 클라이언트 요청을 처리.

 

 

웹 서버는 주로 프록시 역할을 하며, 외부에서 접근 가능한 위치에 배정된다. WAS와의 통신만을 허용하여 보안을 강화한다. WAS는 보통 내부 네트워크에 위치하며, 직접 외부에 노출되지 않는 것이 일반적이다. 

 

JSP와 Servlet

JSP는 HTML 내부에 JAVA 소스코드가 들어가서, HTML 코드를 작성하기 간편하다. 반면 서블릿은 JAVA 소스코드 내에 HTML 코드가 있어 읽고 쓰기가 굉장히 불편하다.

 

클라이언트가 oo.jsp 를 요청하면, JSP 컨테이너가 JSP 파일을 읽는다. JSP 컨테이너가 생성 작업을 통해 Servlet(.java) 파일을 생성하고, .java 파일은 다시 .class 파일로 컴파일된다. 컴파일된 class 파일은 실행을 통해 HTML 파일로 생성되고, 이는 JSP 컨테이너에게 전달된다. HTML 파일을 전달받은 JSP 컨테이너는 HTTP 프로토콜을 통해 HTML 페이지를 클라이언트에게 전달한다. 

 

NAS, Network Attached Storage 란 ?

네트워크에 연결되는 저장장치로, 기본적으로 하드와이어 이더넷 (RJ45) 케이블 또는 Wi-Fi를 통해 네트워크에 직접 연결하여 LAN을 생성한다. IP 주소가 할당되고 TCP/IP를 통해 사용자, 서버, NAS 간에 데이터가 전송되며, 기존의 파일 시스템 (NTFS) 또는 원격 파일 서비스와 데이터 공유를 위한 NFS로 작동된다. 

 

NAS는 RAID (Redundant Array of Independent Disks)라는 기술을 사용하기 때문에, 저장된 데이터를 여러 하드 디스크에 분산하고 복제할 수 있다.

 

SaaS, Software as a Service 란 ?

우리 회사가 SaaS로의 변화를 추구한다고 하길래, 정확한 개념이 궁금해서 찾아봤다. SaaS는 클라우드 기반의 소프트웨어 제공 모델로, 클라우드 제공업체가 클라우드 애플리케이션 소프트웨어를 개발 및 유지 관리하고, 자동 소프트웨어 업데이트를 제공하고, 인터넷을 통해 Pay-as-you-Go 방식으로 고객에게 소프트웨어를 제공한다. 

https://www.cloudflare.com/ko-kr/learning/cloud/what-is-saas/

SaasS 애플리케이션은 브라우저나 앱을 통해 액세스할 수 있으며, Gamil, Office 365 등 사용자가 브라우저를 통해 액세스하는 온라인 이메일 어플리케이션이 SaaS 애플리케이션의 대표적인 예이다. 

 

IaaS, Infrastructure as a Service 란 ?

클라우드 호스팅 IT Infrastructure를 온디맨드 방식으로 액세스하는 구조로, 여기에는 서버, 네트워킹 리소스, 스토리지 용량, 시각화 기능 등이 포함된다. 고객은 사용자로서 데이터, 애플리케이션, 운영 체제, 런타임, 미들웨어에 대한 책임을 갖고, 제공업체는 서버, 가상화, 스토리지, 네트워크에 대한 액세스 권한을 부여한다. 고객이 온프레미스 데이터 센터를 업데이트하거나 유지 보수할 필요는 없지만, 대시보드나 애플리케이션 프로그래밍 인터페이스를 통해 Infrastructure에 액세스하고 이를 제어한다.   ex) Amazon Web Service, Google Cloud, IBM Cloud, Microsoft Azure  

 

IaaS에서는 필요한 구성 요소만 구매하여 사용하고, 필요에 따라 확장하거나 축소할 수 있다. (유지보수 비용이 들지 않고 오버헤드가 적은 경제적인 선택) 

 

PaaS, Platform as a Service 란 ?

애플리케이션 개발, 실행, 관리를 위한 클라우드 기반 플랫폼을 사용자에게 제공하는 구조. 클라우드 제공업체가 자체 Infrastructure에 소프트웨어 및 하드웨어를 호스팅하고, 인터넷 연결을 통해 통합 플랫폼 솔루션을 스택 또는 서비스의 형태로 사용자에게 제공한다. 

 

PaaS는 주로 프로그래머와 개발자에게 유용한데, 사용자는 기본 Infrastructure를 유지 관리하지 않고도 애플리케이션을 개발, 실행, 관리할 수 있다.  ex) Microsoft Windows Azure, AWS Elastic Beanstalk, Google App Engine 

 

* 온프레미스에서는 고객이 애플리케이션, 데이터, 미들웨어, 런타임, 운영체제, 서버, 스토리지, 시각화, 네트워킹 등 모든 것을 관리한다. IaaS에서는 고객이 애플리케이션, 데이터, 미들웨어, 런타임, 운영 체제를 관리하고, 서비스 제공업체는 가상화, 서버, 스토리지, 네트워킹을 관리한다. PaaS에서는 고객이 애플리케이션과 데이터만 관리하고, 서비스 제공업체는 그 밖의 모든 것 (운영체제 ~ 네트워킹) 등을 담당한다. 마지막으로, SaaS에서는 서비스 제공업체가 모든 것을 관리한다. 


참고

[IT기초지식] WEB/WAS 란 ?

IaaS vs PaaS vs SaaS

블로그의 정보

코딩하는 오리

Cori

활동하기