Network

2. 애플리케이션과 플랫폼, 웹 서비스

남희정 2023. 8. 24. 01:20

얼마전, 크롬 웹 스토어에서 확장 프로그램으로 많이 쓰이는 Momentum Dashboard 서비스를 따라 만들어 보았다. 애플리케이션은 정확히 어떤 것이고, 그 중에서도 웹 앱에 대해서 깊게 알아보고 싶어서 공부해보게 되었다.


애플리케이션 Application

서버와 클라이언트는 컴퓨터의 역할에 따라 구분된다고 했다. 그러면 컴퓨터의 역할은 누가 어떻게 정하는 걸까?

서비스를 제공하는 애플리케이션이 설치된 컴퓨터가 서버, 서비스를 요청하고 받는 애플리케이션이 설치된 컴퓨터가 클라이언트 역할을 한다.

 

애플리케이션은 운영체제OS, Operating System 위에 설치되어 운영체제의 도움을 받아 실행되는 응용 소프트웨어(Application Software)를 의미한다. 플랫폼이나 맥락에 따라 프로그램, 솔루션, 시스템, 앱, 어플 등 다양한 이름으로 불리고 있다.

 

플랫폼 Platform

mac OS, Window, Rinux, iOS, Android ... PC와 핸드폰에 설치할 수 있는 앱이 각각 다른 것은 기본적으로 애플리케이션이 실행되는 운영체제가 다르기 때문이다. 이는 애플리케이션을 실행할 수 있는 환경인 플랫폼이 다르다는 말로 표현할 수 있다. 하나의 서비스를 여러 플랫폼에서 이용할 수 있게 하려면 플랫폼마다 별도의 애플리케이션을 만들어야 한다. 플랫폼 마다 개발 시 사용되는 언어가 다르고, 개발 시 사용하는 도구인 라이브러리 Library나 프레임 워크 Framework 등이 다르다. 하나의 IT 프로덕트를 만들더라도 맥 개발자, 윈도우 개발자, 안드로이드 개발자, iOS 개발자 등이 별도로 필요한 이유✔️

 

우리는 PC로 크롬, 사파리와 같은 웹 브라우저를 사용하고 스마트폰으로 네이버, 구글을 사용하여 서비스를 이용한다. 이는 기기에 설치된 애플리케이션이 클라이언트가 되어 구글과 네이버의 서버가 제공하는 서비스를 이용하는 것이다.

 

네트워크를 통해 데이터를 주고 받는 주체는 애플리케이션이다. 

 

서버가 제공하는 서비스의 종류에 따라 다양한 애플리케이션이 존재한다. 웹서비스를 제공하는 서버를 웹서버, 카카오톡 서비스를 제공하는 서버를 흔히 카카오톡 서버라 부르는 것처럼..!

웹 서비스 Web Service

웹 서버 Web Server

웹 서버는 하드웨어, 소프트웨어 혹은 두 개가 같이 동작하는 것 전부 가능하다.

 

하드웨어 측면: 웹 서버는 웹 서버의 소프트웨어와 Website의 컴포넌트 파일을 저장하는 컴퓨터. 컴포넌트 파일에는 HTML 문서, images, CSS stylesheets, 그리고 JavaScript files가 있다. 웹 서버는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터를 주고받을 수 있도록 한다.

 

소프트웨어 측면: 웹 서버는 기본적으로 사용자가 어떻게 호스트 파일에 접근하는지를 관리한다. 대표적으로 HTTP 서버는 URL과 HTTP의 소프트웨어 일부이다. 

웹 브라우저 Web Browser

웹 서비스 사용자는 웹 브라우저라는 전용 클라이언트 애플리케이션으로 웹 서버가 제공하는 서비스를 이용한다. www부터 모자이크, 넷스케이프의 내비게이터의 계보를 이어 현존하는 웹 브라우저 중 가장 긴 역사를 갖고 있는 비영리 재단 모질라(Mozilla)가 만든 파이어 폭스(Firefox), 구글의 크롬(Chrome), 마이크로소프트의 인터넷 익스플로러/에지(Edge), 애플의 사파리(Safari)가 대표적인 웹 브라우저이다.

 

애플리케이션 서버 개발과 웹 애플리케이션

인터넷의 대중화와 함께 개별적으로 제공되던 다양한 서비스들이 웹 서비스 형태로 이전되거나 통합되었다. 인스타그램, 페이스북 같은 SNS도 웹을 기반으로 한 서비스이다. 

웹 페이지를 매개로 작동하는 응용 프로그램들을 웹 서버와 구분하여 애플리케이션 서버, 또는 웹 애플리케이션 서버 WAS, Web Application Server라고 부른다.

 

웹 애플리케이션 서버는 제공하고자 하는 서비스에 맞게 데이터를 가공하거나 다른 서버와 상호작용하면서 즉석에서 웹페이지를 만들어 낸다. 애플리케이션 서버가 이메일, 파일 전송, 온라인 게임 등 다양한 서비스의 기능을 구현하는 것이다.

 

보통 웹 서버, 애플리케이션 서버, 데이터베이스(DB)를 합하여 웹(서버) 애플리케이션이라고 한다.  혹은 웹 스택(Web Stack)

 

웹 스택(Web Stack)

웹 애플리케이션 스택이라고도 하는 웹 스택은 솔루션 스택 유형이다. 최소한의 운영체제(OS), 프로그래밍 언어, DB, 소프트웨어 및 웹 서버를 통합하는 웹 개발에 사용되는 소프트웨어 모음이다. 작업의 목적은 웹 개발, 즉 웹 사이트 및 웹 애플리케이션 개발이며 올바른 스택을 고르는 것이 중요함. 

쉽게 예로 들어 인기 있는 웹 스택으로는 LAMP인데 Linux(OS) + Apache(Web Server) + MySQL(DB) + PHP(Language) 조합으로 사용하는 것..! 

 

또 다른 예:

  • WAMP: Windows , A pache, M ySQL, P HP
  • MAMP: Mac OS X, A pache, M ySQL, P HP
  • XAMPP: 모든 OS, A pache, M ariaDB, P erl 및 P HP
  • LAPP: L inux, A pache, PostgreSQL , P HP/ Python / P ERL
  • MEEN: MongoDB , Express, Ejs , Node
  • MERN: MongoDB , Express, React , Node

 

⚠️ 웹 서버랑 웹 애플리케이션 서버가 헷갈린다..!

웹 서버는 정적인 데이터를 처리하는 서버로 이미지나 단순 html 같은 정적인 리소스들을 전달하며, WAS만을 이용할 때보다 빠르고 안정적으로 기능을 수행한다. 

WAS는 동적인 데이터를 위주로 처리하는 서버이다. DB와 연결되어 사용자와 데이터를 주고받고, 조작이 필요한 경우 WAS를 활용한다.

 

또한 애플리케이션 서버는 사용자가 입력한 데이터를 바탕으로 사용자마다 다른 웹페이지를 만들의 "나의 최근 검색어", "나의 장바구니" 등 개인화된 웹페이지를 구현한다.

 

효율적인 웹 시스템 구성
웹 애플리케이션

사용자가 초기 웹 서비스를 통해 획일화되고 일방적인 정보를 담은 웹사이트를 이용할 수 있었던 것과 구별하여 사용자와 상호작용하며 개인화된 서비스를 이용할 수 있게 된 것을 웹 애플리케이션 Web Application, 줄여서 웹 앱 Web APP 이라 칭한다. 웹 애플리케이션은 인터넷을 통해 웹 브라우저로 다양한 기능을 이용할 수 있게 하는 애플리케이션이다.

웹이 웹 애플리케이션으로 발전하여 데스크탑 앱, 모바일 앱과 비슷한 기능을 갖추게 된 것.

플랫폼으로서의 웹

데스크탑 앱과 모바일 앱을 만들 때에는 운영체제마다 별도의 애플리케이션을 만들어야하는 비효율성이 발생하고, 이런 비효율성을 해결하기 위해 크로스 플랫폼 도구가 개발되고 있다. 

 

웹 앱에서는 이미 운영 체제마다 만들어져 있는 웹 브라우저를 이용하기 때문에 크로스 플랫폼에 대한 고민 없이 보다 쉽게 모든 컴퓨터에서 이용 가능한 서비스를 만들 수 있다. 웹 서비스는 보다 빠르고 쉽게 적은 비용으로 유연한 서비스를 만들 수 있는 도구가 되었다. 우리가 인터넷을 통해 사용하는 거의 모든 서비스가 웹 서비스화되었다고 해도 과언이 아니다. 

웹 1.0 , 2.0 , 3.0

웹 1.0 / 1991 ~ 2004

읽기만 가능하고 단순한 클릭 외에는 어떠한 상호 작용도 없는 정적인 웹페이지로 1990년대 시대를 풍미했던 야후의 디렉토리 방식이 대표적이다. 소수가 제공하는 콘텐츠를 대다수 이용자는 읽기만 했다.

 

웹 2.0 / 2004 ~ 🌟🌟🌟🌟🌟

동적이고 상호작용적인 웹 경험을 더 강조하는 데에 사용된다. 주요 특징으로는 사용자가 콘텐츠를 생성하고 공유할 수 있게 되었다.  블로그, 소셜 미디어, 위키, 포럼 등의 플랫폼을 통해 사용자들은 자신의 의견, 사진, 비디오 등을 업로드하고 공유할 수 있었다. 또한 다른 웹 애플리케이션과 상호작용하고 데이터를 공유하기 위한 웹 서비스 및 API가 더 보편화되었다.

 

웹 3.0 

블록체인 같은 탈중앙화된 시대로 데이터도 중앙서버가 아닌 블록체인에 분산 저장됨. 블록체인, IoT, VR, AR, NFT, 메타버스 등이 생태계를 구성함. 명확한 정의나 표준이 없는 개념이며 진화 중인 개념으로 계속 변화할 것으로 예상된다. 

 

웹 2.0의 개념은 웹 기술과 사용자 경험의 지속적인 발전과 함께 계속 진화하고 있다. 현재에는 웹 3.0이나 웹 관련 기술과 트렌드가 발전하고 있지만, 웹 2.0은 아직도 웹의 발전 과정에서 중요한 이정표로 남아있다.

 

🤔💭

지금 공부 중인 Testing JavaScript Application에서 DB가 꼭 필요하다는 부분이 이해가 잘 되지 않았었는데 이렇게 생각해보니 조금은 이해가 된다. 웹서버는 모킹으로 만들어보았었고 웹 애플리케이션은 지금 테스트 코드랑 같이 공부 중이라 추후에 프로젝트에 투입될 때 전체적인 그림을 잘 그려보아야겠다. 이미 알고 있다고 생각했는데 복습 느낌으로 다시 보았더니 또 모르는 것이 불쑥 나타난다. 앞으로도 겸손하게 깊게 공부해보자!


[웹서버와 WAS(Web Application Server)]

[웹 서버란 무엇일까?]

[[네트워크/HTTP]HTTP와 클라이언트-서버 아키텍처]

[쉽게 이해하는 네트워크 4. 서버, 클라이언트와 웹 서비스 (ft. 비즈니스 로직과 사용자 인터페이스)]

[웹 3.0의 개념과 웹 1.0, 웹 2.0 비교]

ChatGPT 🤖