본문 바로가기
카테고리 없음

클라우드 컴퓨팅 기술의 모든 것 완벽 정리

by 허니리뷰어 2022. 1. 3.

클라우드 컴퓨팅

 

클라우드 컴퓨팅의 개념

 

클라우드 컴퓨팅이란?

클라우드 컴퓨팅이란 인터넷을 통해 가상화된 컴퓨터에 it 리소스를 제공하는 것이라고 볼 수가 있습니다. 다른 표현으로는 인터넷 기반 컴퓨팅의 일종으로 정보를 처리하는데 자신의 컴퓨터가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술이라는 사전적 의미가 있습니다. 무언가 처리를 하는데 인터넷 연결된 다른 컴퓨터가 it 리소스를 제공해줘서 다른 컴퓨터로 처리를 한다는 것이죠.

여기서 it 자원 즉, it 리소스는 무엇을 의미하는 걸까요. 쉽게 생각하면 여러분들이 컴퓨터를 구매하실 때 가장 많이 고민하시는 요소들이라고 생각하시면 되겠습니다. 바로 CPU, 메모리, 스토리지, 네트워크 등이죠. 물론 이것보다 더 다양한 it 자원들이 있지만 단순하게는 이런 것들이 클라우드 컴퓨팅이 제공하는 it 자원이라고 생각하시면 되겠습니다. 클라우드 컴퓨팅은 우리가 다양한 디바이스를 통해서 목표로 하는 작업을 처리할 때 우리의 컴퓨터에 it 자원을 사용하는 것이 아니라 인터넷에 연결된 '다른 컴퓨터'에 CPU 메모리 스토리지를 사용해서 무언가를 처리한다는 개념이라고

클라우드-컴퓨팅
 
이 그림으로 이해를 하시면 됩니다.
 
 

클라우드 컴퓨팅의 어원

 

우리가 모두 인터넷은 알고 있지만, 인터넷이 어떻게 구현돼 있는지 알지는 못합니다. 그래도 인터넷을 사용할 수는 있죠. 이렇게 복잡해서 굳이 알지 않아도 사용할 수 있는 존재, 이 대상을 구름으로 형상화하였고 이게 바로 클라우드의 용어의 어원입니다.
 
 

클라우드 컴퓨팅의 특징

 클라우드는 컴퓨팅 자원을 내가 원할 때 원하는 만큼 사용하는 것이 가능합니다. 그리고 사용한 만큼만 요금을 지불하게 되면 되는 것이죠. 서울시에서 제공하는 자전거 대여 서비스 따릉이와 자동차를 빌릴 수 있는 쏘카라는 서비스가 있습니다. 이런 것들이 자전거와 자동차를 원할 때 원하는 만큼 사용하고 사용한 만큼 요금을 지불하는 서비스들이죠. 이와 관련된 개념으로 X As A Service라는 개념이 있습니다.
 X라는 것을 서비스 형태로 받고 사용료를 지불하는 형태인데요. 예를 들면 앞에서 소개해드렸던 쏘카 같은 경우 모빌리티 As A Service라고 표현을 하게 됩니다. 과거에 저희가 차를 사용하려면 '1' 단위로 렌트를 하거나 차를 구매했어야 했었죠. 그러나 쏘카를 사용하면 훨씬 더 작은 시간 단위로 차를 임대해서 사용 할 수 있게 됩니다.
 그리고 최근에 많이 사용되고 있는 에어비앤비 같은 경우도 이러한 서비스의 일종인데요. 과거에는 해외 나가서 주거를 일 단위로 임대하는 것은 불가능했습니다. 최소 월 단위로 렌트를 하거나 연 단위로 렌트를 하거나 해야 했습니다. 하지만 에어비앤비를 사용하게 되면 훨씬 더 작은 규모의 단위로 주거의 형태를 사용할 수 있게 된 것입니다.
 넷플릭스도 비디오를 서비스 형태로 제공을 하고 있습니다.
이러한 예시를 X As A Service라고 통칭을 하게 됩니다. 클라우드 컴퓨팅은  Computing As A Service 또는 IT Resource As A Service라고 표현 할 수가 있습니다. 즉 컴퓨팅 리소스, 아이피 리소스를 위에서 설명한 자전거, 자동차, 주거, 비디오 등과 마찬가지로 서비스 형태로 제공을 하게 되는 것입니다.

 

컴퓨팅 리소스는 무엇일까? , 클라우드 컴퓨팅의 역할

그렇다면 우리가 서비스 형태로 받아야 할 컴퓨팅 리소스는 무엇이며 왜 이러한 컴퓨팅 리소스를 서비스 형태로 받아야 하는 걸까요?
이때 컴퓨팅 리소스에서 서버라는 개념이 나오게 됩니다. 인터넷 세상은 서버와 클라이언트라는 요소로 이루어져 있습니다. 서버와 클라이언트가 인터넷이라는 걸로 묶여서 상호 작용하는 것입니다.
서버와 클라이언트를 음식점으로 비유해 보도록 하겠습니다.
 
  • 음식점에는 고객과 서빙 아르바이트하는 서버가 존재하게 됩니다.
  • 고객이 서버에게 음식을 주문하게 되면 서버는 고객의 주문에 맞게 음식을 조리한 후에 결과로서 음식을 제공하게 됩니다.
  • 요약하자면 클라이언트는 요청하고 요청에 대한 결과를 받는 주체이고, 서버는 요청을 받아서 적절하게 처리한 후 음식점에서 하는 요리가 됩니다.
  • 그리고 결과를 클라이언트로 응답하는 역할을 하는 게 바로 서버라는 존재입니다. 
 
인터넷 세상에서도 서버가 비슷한 역할을 하게 됩니다. 컴퓨팅 세상에서도 서버가 마찬가지로 클라이언트의 요청을 받아서 처리한 후에 결과를 클라이언트로 넘겨주는 역할을 하게 되고 이러한 서버는 인터넷 세상에서 핵심 컴퓨팅 리소스 역할을 하게 됩니다. 예를 들어 우리가 브라우저를 열어서 네이버에 접속하면 어떠한 일이 발생할까요. 네이버 닷컴에 접속하는 순간 우리는 접속이라는 표현을 쓰지만 실제로는 네이버 서버한테 특정 데이터를 요청한 것이 됩니다. "네이버 닷컴 주소에 해당하는 페이지 데이터를 주세요"라고 요청을 하는 것이죠. 그러면 네이버 서버는 그 요청을 받아서 적절하게 처리한 후 클라이언트에게 데이터를 전달하게 됩니다. 이 데이터는 일반 사람들이 보기에는 좀 어려운 형태로 되어 있고, 브라우저라는 클라이언트가 하는 역할이 이 데이터를 받아서 일반 사람들이 보기 쉽게 예쁘게 만들어주는 역할을 하게 되는 것이죠.
 
인스타그램의 예를 한 번 더 들어보겠습니다. 저희가 인스타그램 앱에서 '좋아요'를 클릭을 하게 되면 인스타그램 서버로 요청을 하게 됩니다. '나의 좋아요를 처리해 주세요'라고 요청을 하게 되는 것이죠. 인스타그램 서버는 해당 요청을 적절하게 처리한 후 요청에 대한 결과로 '좋아요가 잘 처리되었습니다'라는 결과를 앱에 해주게 됩니다. 앱은 클라이언트로서 응답을 받고 '좋아요' 카운트를 올리는 등의 결과를 처리하게 되는 것이죠.
이게 바로 클라이언트와 서버의 상호작용입니다. 문제는 이러한 서버가 굉장히 많이 필요하다는 것입니다. 아마존이나 넷플릭스, 인스타그램처럼 고객이 많으면 많을수록 아주 많은 서버가 필요하게 됩니다. 그렇다면 우리가 만약에 서비스를 만들면 얼마나 많은 서버가 필요하게 될까요. 10대가 필요할까요. 100대가 필요할까요. 혹은 1만 대가 필요할까요?
 
이걸 말씀드리기 전에 곱창 가게를 열었다고 한번 비유를 들어보겠습니다. 저희가 곱창을 너무 좋아해서 곱창 가게를 하나 차렸습니다. 장사를 시작한 지 얼마 안 됐기 때문에 하루에 손님이 대략 30명쯤 올 것이라 예상하고 30인분의 재료를 준비했는데요. 그 전날 밤에 유명한 예능 프로그램에서 유명 연예인이 곱창을 아주 맛있게 먹었습니다. 흔히 말하는 곱창 대란이 발생한 것이죠. 저희는 30명 정도의 고객이 올 것이라 예상했는데 200명의 고객이 저희 가게로 방문하였습니다.  물론 준비했던 30명의 재료는 다 소진했겠지만, 저희는 훨씬 더 많은 매출을 올릴 수 있었던 기회를 잃어버리게 된 것입니다.
반대로 곱창 대란을 준비한 경우를 생각해 볼까요? 곱창 100인분을 준비한 것이죠. 때마침 먹거리 x 방송에서 곱창 위생 문제를 다뤘습니다. 이렇게 곱창 안에 뭔가 이상한 게 보인다는 방송을 내보낸 것이죠. 어떻게 됐을까요. 준비했던 곱창 100인분은 모조리 쓰레기통으로 가게 됐습니다. 장사에 실패하게 된 것이죠. 인터넷 업계에서도 이러한 일들이 빈번하게 발생합니다. 예를 들어 BTS 콘서트를 예약한다든지 블랙 프라이데이라든지 수강 신청을 할 때는 항상 저희가 원하는 사이트에 접속이 원활하지 않게 되는 것이죠. 이것의 가장 큰 원인은 내가 준비한 서버 자원의 양과 실제 사용량이 일치하지 않아서 발생하게 됩니다. 즉 실제 사용량보다 더 많은 자원을 준비했다면 불필요한 자원이 낭비되게 되는 것이고, 준비했던 자원의 양보다 실제 사용량이 더 많게 된다면 고객이 불만족하게 되는 것이죠.
다시 곱창 가게로 돌아와서 만약에 곱창 가게 근처에 소고기 도매 시장이 있다면 어떻게 될까요? 훨씬 더 수요에 따라서 탄력적으로 대응할 수 있을 것입니다. 그러면 곱창이 부족해서 못 팔거나 재료가 넘쳐서 버리는 문제를 사전에 막을 수가 있게 되는 것이죠.
 
클라우드를 도입하면 컴퓨팅 리소스를 수요에 대해서 탄력적으로 대응을 할 수 있게 됩니다. 예를 들어 트래픽이 몰릴 때 "지금 바로 서버 1천 대 임대할게요"라든지 트래픽이 없을 때 "1,000대 중에서 지금 900대 반납하고 100대만 쓸게요" 이런 것들이 가능해지게 되는 것이죠. 그래서 실제 사용량과 저희가 필요로 하는 서버 자원의 양을 비슷하게 일치시킬 수가 있게 되는 것입니다. 그래서 서버를 낭비한다든지 고객이 불만족 한다든지 이러한 문제를 사전에 막을 수 있게 되는 것이죠. 결과적으로 클라우드 컴퓨팅의 개념은 인터넷으로 연결된 다른 컴퓨팅의 자원을 사용해서 작업을 처리하는 것이고 그렇기에 클라우드 컴퓨팅은 컴퓨팅 리소스를 서비스 형태로 받는다라는 개념이라고 볼 수가 있겠습니다.
정리하면 클라우드 컴퓨팅을 사용하게 되면 자원을 불필요하게 낭비한다든지 그리고 자원이 부족해서 고객이 불만족하면 이러한 문제를 해결해서 수요에 탄력적인 대응이 가능하다는 장점이 있게 되는 것입니다.

댓글