클라우드 컴퓨팅 서비스

이진경·2023년 1월 15일
post-thumbnail

✅ 운영서버

✍️ 운영서버란?

운영서버는 실제 사용자들을 대상으로 서비스하는 서버를 말한다. 운영서버는 테스트 서버와 다르게 트래픽 대응도 해야 하고 빠른 응답 속도와 높은 가용성을 보장해 안정적으로 제품이 서비스될 수 있도록 해야 한다.

👉 단일서버

환경을 구축하기 쉽기에 테스트 서버나 간단한 애플리케이션을 서비스 할 때 사용된다. 데이터베이스애플리케이션같은 서버에서 실행되고 있기 때문에 별도의 네트워크를 설정할 필요가 없다. 하지만 아래와 같은 단점도 있다.

  • 전체 서비스의 장애 발생 가능성이 높다. 같은 자원을 공유하고 있기에 애플리케이션과 DB 둘 중 하나라도 장애가 발생할 경우 전체가 다운된다.
  • 서버 자원을 효율적으로 사용하기 어렵다. 서비스의 속성에 따라 운영체제 설졍과 리소스의 종류가 다를 수 있기때문이다.
  • 보안성이 떨어진다. DB는 보안상 IP주소나 포트 등 접속 지점을 최소화해야 한다. 그러나 애플리케이션 특성상 여러 불특정한 IP주소나 포트에 대해 요청을 받아야하기에, 애플리케이션과 DB가 한 서버에 구축되어 있다면 DB 보안에 취약하다
  • 서버의 수를 여러개로 늘려 자원을 확장하는 방식인 Scale-out(수평적인 확장)이 어렵다. 애플리케이션과 DB가 하나의 서버로 구성되면 똑같은 데이터를 여러 서버에 복제해야 하므로 관리가 힘들다.

👉 애플리케이션과 데이터베이스 서버 분리하면 되지 않을까?

애플리케이션과 데이터베이스를 각각의 서버로 구성하는 방법은 두 서버가 서로 다른 자원을 사용하고 있기에 위에서 언급한 단일 서버의 단점을 어느 정도 해소해준다. 그치만 두개의 서버를 관리하므로 다소 복잡해지고, 두 서버간의 지연 시간과 네트워크 보안을 고려해야한다.
또한 클라이언트틑 여전히 하나의 애플리케이션 서버를 보고 있기에 Scale-out은 여전히 어렵다.

👉 서버 단위의 로드 밸런서

애플리케이션 서버에 요청을 보내는 클라이언트의 수가 상당하다면 하나의 애플리케이션 서버로 그 많은 요청을 감당하기 힘들다. 이때 Scale-out 방식을 통해 서버를 여러 대로 늘릴 수 있는데, 로드밸런스는 이렇게 들어오는 수많은 요청들을 앞서 늘린 여러대의 서버에 적절히 나눠주는 네트워크 장치 혹은 프로세서라고 볼 수 있다.

클라이언트는 서버와 직접 통신하는게 아닌 로드 밸런서 서버와 통신하며, 그 뒤에 여러대의 애플리케이션 서버를 두는 방식이다.

로드밸런서를 통해 Scale-out을 통한 확장이 가능해지고 특정 서버 장애 발생시, 로드 밸런서가 정상 서버에 요청을 넘기면 되므로 서버 다운을 최소화 할 수 있다.

👉 서버 내 앱 단위의 로드 밸런서

기존의 애플리케이션 서버 안에서 똑같은 애플리케이션을 여러 프로세스로 만들어 실행 해놓고 외부에서 들어온 요청을 프로세스 중 하나로 보내주는 방식이다.
하나의 서버에 여러 개의 프로세스를 실행해 하나의 서버에서 여러개의 요청을 동시에 처리 할 수 있다.
서버 자원을 최대한으로 효율적으로 사용가능하다.


✅ On Premise

✍️ 온프레미스란?

자체적으로 보유한 물리적인 전산실 서버에 직접 설치해 운영하는 방식이다. 클라우드 컴퓨팅 기술이 나오기 전까지 기업 인프라 구축의 일반적인 방식이었다.
서비스에 필요한 시스템을 구축하기 위해 기업이 직접 구성에 맞게 하드웨어를 구입하거나 대여해야 한다.

  • 장점 : 보안성을 높게 관리할 수 있다는 것이다.
  • 단점 : 시스템을 구축하는데 많은 시간과 비용이 들어가는 것이다. 그리고 구축 후에도 문제가 발생하지 않는지 지속적인 모니터링이 필요하며 필요에 따라 구성을 변경하는 등 유지 , 보수가 필요하다.

보안에 민간함 조직의 경우 자체적으로 강력한 보안 시스템을 개발하거나 외부망과의 단절을 위해 여전히 온프레미스 환경을 구축한다.


✅ Cloud Computing

✍️클라우드 컴퓨팅이란?

서로 다른 물리적 위치에 존재하는 컴퓨팅 자원을 가상화 기술로 통합하여 인터넷에 제공한다.
클라우딩 컴퓨팅 서비스를 제공하는 업체는 흔히 서버팜 이라고 불리는 곳에 엄청난 수의 물리적 서버를 갖추고 있다.

👉 클라우드 컴퓨팅의 특징

직접 장비를 구매하지 않고도 요청하는 즉시 컴퓨팅 자원을 제공해주는 기술로 원하는 시간동안 원하는 만큼의 컴퓨팅 자원을 이용할 수 있다. 불필요한 절차 없이 쉽게 프로젝트를 구성할 수 있다. 이는 프로젝트 초기 구성 시 사용되는 비용을 줄이는 효과를 가져온다.

또한 서비스의 규모에 따라 리소스를 확장하거나 축소할 필요가 있는데 대부분의 클라우드 컴퓨팅 서비스는 이러한 기능을 기본적으로 지원하기 때문에 손쉽게 서비스를 확장 및 축소 할 수 있다.

✍️ 클라우드 컴퓨팅의 주요 기능 3가지

1️⃣ 서비스형 인프라 스트럭쳐 (Iaas)

클라우드 컴퓨터의 가장 기본적인 계층은 IaaS(Infrastructure as a Servie)이다.
비즈니스 운영에 필요한 스토리지, 네트워킹 및 컴퓨팅 자원을 제공한다. 사용자가 관리할 수 있는 영역이 가장 넓고 OS, Middleware, Runtime 등을 사용자가 직접 구성하고 관리할 수 있다.

IaaS는 사용자가 직접 많은 부분을 구성하고 관리할 수 있다는 장점이 있지만, 인프라 운영에 대한 지식, 경험이 준비되지 않은 경우 활용이 어려울 수 있다.

2️⃣ 서비스형 플랫폼 (PaaS)

PaaS는 애플리케이션 및 서비스를 구축할 수 있는 플랫폼을 제공한다. OS, Middleware, Runtime 등 개발 환경을 미리 구축해 서비스 형태로 제공하기때문에 관리적인 측면에서 IaaS보다 자유도가 낮다.

하지만 서비스를 제외한 외적인 부분을 신경 쓸 필요가 없기 때문에 개발과 비즈니스에만 집중할 수 있고 인프라를 운영하는 인력이 필요하지 않으므로 유지보수 비용을 절약할 수 있다.

3️⃣ 서비스형 소프트웨어 (SaaS)

클라우드 컴퓨팅 서비스의 주요 기능 3가지 중 가장 완성된 형태의 서비스이다. 서비스의 제공업체가 기능을 구축한 뒤 제공하기 때문에 사용자가 직접 관리해야 하는 영역이 가장 좁다.

기본적인 클라우드 인프라와 소프트웨어를 함께 제공하는 형태로 소프트웨어 업데이트, 버그 픽스 등의 서비스를 업체가 직접 도맡아 제공한다.

사용자에게 필요하지 않은 기능에 대해서도 비용을 지불한다.
ex ) google drive, icloud, slack, netflix, zoom

profile
멋찐 프론트엔드 개발자가 되자!

0개의 댓글