본문 바로가기

Computer Science

[CS] 서버와 클라우드 컴퓨팅

728x90

서버란? 

서버의 사전적 의미는 무언가를 제공해주는 사람이나 물건을 의미합니다. 좀 더 나아가서 우리가 일상생활, 그리고 IT 업계에서 말하는 서버는 "무언가를 제공해주는 컴퓨터"를 의미합니다.

 

 우리는 흔히 인터넷으로 특정한 웹사이트나, 리소스에 접근합니다. 하지만 정확히 말하자면, 우리가 접근하는 대상은 웹사이트, 리소스 자체가 아니라 웹사이트와 리소스를 응답해주는 컴퓨터에 접속하는 것 입니다.

 

서비스를 운영하기 위해서 특정한 컴퓨터를 가동시키고, 해당 컴퓨터에서 특정 프로그램을 실행시켜서 컴퓨터에 네트워크를 통해 접근하면, 특정한 리소스를 응답해주도록 만듭니다. 그리고 인터넷을 통해서 이 컴퓨터를 외부에서 접근 가능하도록 설정합니다. 이러한 동작을 하는 컴퓨터를 우리는 "서버"라고 부릅니다.

 

서버 운영의 두가지 방법

1. 온 프레미스(On-Premise)

 온 프레미스는 서버를 운영하는 측에서 서버에 필요한 물리적인 공간, 컴퓨터, 제반시설 등을 직접 구축해서 활용하는 방식을 의미합니다. 이 방식은 직접 물리적인 서버를 구축하고 관리할 수 있는 전문 인력이 하드웨어를 구입해서 서버실을 구성하고 설계합니다.

 

 온 프레미스 방식은 서버를 운영하는 가장 기본적이고 전통적인 방식이지만, 서버에 필요한 하드웨어를 직접 구매해서 사용하므로 추후 필요한 하드웨어 사양이 변경되었을 경우 그에 맞춰서 하드웨어를 다시 판매 및 구축하기 어렵다는 점, 컴퓨터를 제외하고도 물리적인 제반 시설을 모두 갖추고, 지속적인 모니터링을 해야한다는 점 등 급변하는 소프트웨어에 맞춰서 유지보수하기가 어렵다는 단점이 있어, 많은 기업들이 현재는 온 프레미스 방식을 벗어나서, 클라우드 컴퓨터 기반의 환경으로 변경하고 있습니다.

 

 다만 서버를 물리적인 부분까지 온전히 통제할 수 있다는 장점으로 인해서 보안이 중요한 환경에서는 여전히 온 프레미스 방식을 활용하기도 합니다.

 

2. 클라우드 컴퓨팅(Cloud Computing)

 클라우드 컴퓨팅은 컴퓨터를 인터넷을 이용한 클라우드 서비스를 통해서 사용하는 것을 의미합니다. 직접 물리적인 서버를 구매해서 관리할 필요 없이 클라우드 서비스 프로바이더를 원하는 사양을 원하는 시간만큼 대여해서 사용할 수 있습니다.

 

 클라우드 서비스 프로바이더는 전세계에 걸쳐 서버를 운영할 수 있는 인프라를 구축해두고 여기서 물리적인 컴퓨터를 관리하고 있으며 이를 가상화 기술을 통해서 원하는 만큼 분리해서 서비스의 사용자에게 제공할 수 있습니다.

 사용자의 입장에서는 물리적인 관리에 대한 필요성이 없이지며 개별 기업에서 운영하는 것보다 훨씬 안정적인 환경을 제공받을 수 있기에 관리상의 이점이 있습니다.

 

 또한, 클라우드 컴퓨텅을 사용할 경우 내가 필요한 사양을 필요한 시간만큼 대여해서 사용할 수 있기에 비용적인 측면에서도 효율적이며, 단순히 클릭 몇번으로 컴퓨터의 사양 및 개수를 늘릴 수 있기 때문에 서비스의 확장 측면에서 이점을 가지고 있습니다.

 

클라우드 컴퓨팅의 구분

1. IaaS(Infrastructure as a Service)

IaaS는 클라우드 컴퓨팅의 가장 기본적인 형태로서, 인프라를 구축하기 위해 필요한 컴퓨터를 대여해주는 것을 의미합니다. IaaS는 대여받은 컴퓨터의 대부분의 리소스에 접근해서 서비스를 구성하고 관리할 수 있으므로 가장 많은 제어권을 가지고 있지만 반대로 가장 많은 부분을 사용자가 일일이 구성하고 관리해줘야 한다는 단점이 있습니다.

AWS EC2

 

2. PaaS(Platform as a Service)

PaaS는 IaaS에 더불에 소프트웨어를 개발하고 운영하기 위해 필요한 구성요소들을 플랫폼화해서 제공해주는 서비스 입니다. PaaS를 사용하면 개발자들은 소프트웨어의 운영에 대한 관리를 PaaS에 위임할 수 있기 때문에 효율적인 개발이 가능합니다. 다만, 플랫폼의 형태로 제공된다는 점으로 인해 특정 플랫폼에 종속적이 될 수 있다는 점, 해당 플랫폼에서 접근을 허용하지 않는 부분은 제어할 수 없다는 점, IaaS에 비해 더 높은 비용을 지불해야 할 수도 있다는 점 등 단점들도 있습니다.

Heroku, Github Pages, AWS Elastic BeanStalk

 

3. SaaS(Software as a Service)

SaaS는 클라우드 서비스에 더불어, 고객이 이를 사용할 수 있는 소프트웨어가 함께 제공되는 형태를 의미합니다. 클라우드 서비스를 통해서 제공받기에 명시적으로 애플리케이션을 PC에 설치할 필요가 없으며, 서비스를 활용하기 위해 만들어진 소프트웨어가 제공되기에 이를 통해 편리하게 여러 기능 등을 제공받고 활용할 수 있는 형태입니다.

DropBox, iCloude, Google Apps, Slack

 

AWS 란?

AWS(Amazon Web Service)는 클라우드 컴퓨팅 서비스를 제공하는 프로바이더 중 하나로서, 현재 전세계에서 가장 많이 사용되고 있는 클라우드 컴퓨팅 서비스입니다. AWS는 단순 컴퓨팅 자원을 제공해주는 것 뿐만 아니라 이를 편리하게 관리할 수 있는 서비스, 서버리스 서비스 등 수많은 서비스를 확장성, 안정성, 높은 보안수준과 함께 제공해줍니다.

 

AWS S3

AWS의 S3서비스는 Simple Storage Service의 약자입니다. Storage라는 표현 그대로 특정한 파일을 저장하고 인터넷상으로 접근할 수 있게 해주는 서비스입니다. 보통 서비스에 필요한 이미지나 파일등을 저장해두는 용도로 사용하지만 정적인 파일들을 안정적으로 제공할 수 있다는 점을 이용해서 정적 웹사이트 호스팅에도 사용할 수 있습니다.

 

 Create React App을 이용해서 만든 리액트 프로젝트의 경우 build 명령어를 실행하면 정적인 build 파일들이 생성되고 이를 브라우저에서 접근해서 실행하면 Client Side Rendering을 통해서 동작하는 특징을 이용해서 S3서비스를 통해서 배포를 할 수 있습니다.

 

 

출처: 원티드 프론트엔드 프리온보딩 인턴쉽 

https://pollen-port-115.notion.site/AWS-15863a8f083044df80650de719368753