[Cloud] 클라우드가 뭔데?

devicii·2025년 2월 17일

클라우드

목록 보기
1/3

1. 클라우드 컴퓨팅?

클라우드 컴퓨팅은 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어, 분석 등의 컴퓨팅 서비스를 제공하는 패러다임이다. 사용자가 필요한 만큼의 컴퓨팅 리소스를 사용하고 그에 대한 비용만 지불하는 방식으로 운영된다. 대표적으로 AWS, Azure 등이 있다. 조금 멀게만 느껴지지만 아래의 글을 보고 나면 조금이나마 더 이해하기 수월할 것이다.

그럼 왜 클라우드를 써야하지 ?

  1. 쉬운 시작과 확장
    • 빠른 시작: 서버를 직접 구매하고 설정할 필요가 없다. 몇 번의 클릭만으로 필요한 컴퓨팅 자원을 사용할 수 있다.
    • 유연한 확장: 프로젝트가 성장하면 쉽게 자원을 늘릴 수 있다. 새로운 서버를 사서 증설하거나 할 필요가 없다.
  2. 비용 절감
    • 사용한 만큼만 지불: 필요한 자원만 사용하고 그에 대한 비용만 지불하면 된다. 이에 대한 갑론을박도 있긴 하다.
    삼성 SDS- 클라우드를 도입하면 무조건 비용 절감? 잠시만요…
    • 하드웨어 구매 불필요: 고가의 서버나 네트워크 장비를 직접 구매할 필요가 없어 초기 스타트업이나 빠른 MVP를 구축해야 할 때 유리하다.

2. 클라우드 컴퓨팅의 역사

클라우드 컴퓨팅의 역사는 1960년대부터 시작되어 현재까지 지속적으로 발전했다.

1960년대-1980년대: 초기 개념의 탄생

1960년대에 시분할(time-sharing) 개념이 등장하면서 클라우드 컴퓨팅의 기초가 마련되었다. 1963년 DARPA(ARPA의 전신)가 지원한 Project MAC은 최초의 컴퓨터 시분할 시스템이다. 이 시기에 리클라이더가 "Intergalactic Computer Network"라는 개념을 제안하며 전 세계적으로 연결된 컴퓨팅 환경이 구상되었다고 한다.

1970년대와 1980년대에는 네트워크 기술이 발전했다. 1977년 세계 최초의 상용 LAN이 뉴욕의 은행에서 서비스를 시작했고, 1984년 썬 마이크로시스템즈(현재 오라클에 인수됌. 자바 및 솔라리스 만든 곳)가 네트워크 파일 시스템 프로토콜을 개발했다.

1990년대: 웹의 등장과 가상화 기술

1989년 팀 버너스리가 웹을 발명하면서 인터넷이 급속도로 확산되었다. 1999년에는 VMware가 VMware Workstation을 출시하여 사용자가 가상 머신을 설정할 수 있게 되었고, Salesforce가 설립되어 최초로 인터넷을 통해 소프트웨어를 서비스(SaaS)로 제공하기 시작했습니다.

2000년대: 클라우드 서비스의 상용화

2002년 Amazon Web Services(AWS)가 무료 서비스로 시작되었고, 2006년에는 Elastic Compute Cloud(EC2)를 출시하여 사용자가 가상 컴퓨터를 대여할 수 있게 되었다. 2008년 구글이 Google App Engine을 발표하며 클라우드 애플리케이션 호스팅을 크게 발전시켰다.

2010년대: 주요 빅테크 기업의 참여와 확산

2010년 Microsoft가 Azure를 출시했고, 2011년 IBM이 SmartCloud 프레임워크를 공개했다. 2013년에는 Docker가 오픈 소스 컨테이너 소프트웨어를 도입하여 클라우드 환경에서의 애플리케이션 배포를 가능케 했다.

현재와 미래 전망

2020년 이후 코로나19 팬데믹으로 인해 클라우드 기반 서비스로의 전환이 더욱 가속화되었다.
클라우드 컴퓨팅 시장은 계속해서 성장할 전망이며, 가트너는 2025년에는 클라우드 서비스에 대한 총지출이 7,234억 달러(원화 1000조원 가량)에 이를 것이라고 전망했다.

3. 클라우드 서비스 - IaaS, PaaS, SaaS

Software-as-a-Service (SaaS)

SaaS는 인터넷을 통해 소프트웨어를 제공하는 서비스

Google Workspace : 이메일, 문서 작성, 스프레드시트 등을 웹 브라우저에서 사용할 수 있다.
Dropbox: 파일 저장 및 공유 서비스를 클라우드를 통해 제공한다.

💡 ex)
중소기업이 Google Workspace를 사용하여 이메일, 문서 작성, 일정 관리 등을 수행한다. 별도의 서버나 소프트웨어 설치 없이 웹 브라우저만으로 모든 업무를 처리할 수 있다.

Platform-as-a-Service (PaaS)

PaaS는 개발자들이 애플리케이션을 개발, 실행, 관리할 수 있는 플랫폼

Vercel: 프론트엔드 개발자가 웹 애플리케이션을 쉽게 배포하고 관리할 수 있는 플랫폼

💡 ex)
스타트업에서 Vercel를 사용하여 새로운 웹 서비스를 개발하고 배포한다. 개발자들은 인프라 관리에 신경 쓰지 않고 코드 작성에만 집중할 수 있다.

Infrastructure-as-a-Service (IaaS)

IaaS는 가상화된 컴퓨팅 리소스를 인터넷으로 제공한다.

Amazon EC2 (Elastic Compute Cloud): 가상 서버를 제공한다.

💡 ex)
ex) 기업에서 Amazon EC2를 사용하여 자사의 웹사이트를 호스팅 한다. 트래픽이 증가하면 자동으로 서버를 추가하고, 감소하면 줄일 수 있어 효율적으로 관리할 수 있다.

4. 마이크로서비스 vs 모놀리식

"왜 갑자기 마이크로서비스와 모놀리식 이야기가 나오는 걸까?"
그 이유는 간단하다. 현대 클라우드 서비스와 마이크로서비스는 뗄레야 뗄 수 없는 천생연분이다.

클라우드 환경에서는 마이크로서비스 아키텍처를 활용해 서비스의 요구사항을 유연하게 변경할 수 있다.
클라우드는 단순한 저장소가 아니라 마이크로서비스가 자유롭게 확장되고 진화할 수 있는 최적의 환경을 제공하여 서비스의 확장성을 유연하게 가져갈 수 있다.

마이크로서비스 아키텍처(MSA)는 현대 소프트웨어 개발에서 매우 중요하다. 안 쓰는 곳이 없다. 기존의 모놀리식 아키텍처와 비교하여 장점을 살펴보자

확장성

마이크로서비스는 개별 서비스 단위로 독립적인 확장이 가능하다. 그에 비해 모놀리식 구조에서는 전체 애플리케이션을 확장해야 하므로 리소스 낭비가 발생할 수 있다.

💡 ex)
배달 앱에서 ‘주문 시스템’에 많은 사용자가 몰릴 경우, 마이크로서비스 구조라면 ‘주문 서비스’만 서버를 추가해서 확장하면 됨

유연성과 민첩성

마이크로서비스는 각 서비스를 독립적으로 개발, 배포, 업데이트할 수 있어 빠른 시장으 변화에 대응이 가능하다. 모놀리식 구조에서는 작은 변경사항에도 전체 시스템을 재배포해야 해야 한다.

💡 ex)
쇼핑몰에서 ‘결제 시스템’을 업데이트해야 한다면?
마이크로서비스 → ‘결제 서비스’만 업데이트하면 끝
모놀리식 → 결제 기능 하나 수정하려고 전체 앱을 다시 빌드 & 배포해야 함 → 번거롭고 위험

장애 격리

한 서비스의 문제가 전체 시스템에 영향을 미치지 않아서 더 안정적이다. 모놀리식 구조에서는 한 부분의 오류가 전체 시스템 장애로 이어질 수 있다.

💡 ex)
넷플릭스에서 ‘추천 시스템’이 다운됐다면?
마이크로서비스 → 추천 기능만 오류 나고, 영화 검색/재생은 문제없이 작동
모놀리식 → 추천 기능 하나 때문에 전체 넷플릭스가 다운될 수도 있음

기술 다양성

각 서비스에 적합한 기술 스택을 선택할 수 있어 최적의 도구를 사용할 수 있다.

💡 ex)
핀테크 앱에서
‘사용자 인증’은 Python (보안 강함)
‘데이터 분석’은 R (데이터 처리 최적화)
‘프론트엔드’는 React (빠른 UI 구현)
위처럼 각 기능별 최적의 기술을 선택 가능함 (마이크로서비스)
하지만 모놀리식이면? → 한 가지 기술만 써야 해서 유연성이 떨어짐

정리하자면
✅ 마이크로서비스 = 확장성 좋고, 장애에도 강하고, 최신 기술을 자유롭게 활용 가능하다
❌ 모놀리식 = 구조가 단순하지만, 수정·확장이 어렵고 장애에 취약하다.

그래서 최근 IT 기업들은 마이크로서비스 아키텍처를 많이 사용하고 있다.

5. 마이크로서비스 아키텍처 기업 사례 & 클라우드 운영

Netflix – 마이크로서비스의 대표 주자

Netflix는 마이크로서비스 아키텍처를 활용해 확장성복원력이 뛰어난 시스템을 구축했다.
모든 기능(추천 엔진, 콘텐츠 전송, 사용자 인증, 결제 등)을 독립적인 서비스로 운영된다고 한다.

📌 Netflix의 핵심 기술 스택

  • Eureka → 서비스 디스커버리(서비스 간 연결 관리)
  • Hystrix → 장애 격리 및 복원력 향상 (하나가 오류 나도 전체 시스템 영향 최소화
  • Zuul → API 게이트웨이 (트래픽 관리 & 보안 기능)

Uber – 빠른 확장과 유연성

Uber도 마이크로서비스를 도입하여 빠르게 확장 & 새로운 기능 추가가 가능하다.
사용자 인증, 운전자 매칭, 실시간 추적, 결제 처리 등을 각각 독립적인 서비스로 운영한다.

ex)
운전자 매칭 시스템에만 변경이 필요할 때, Uber는 전체 앱을 수정할 필요 없이 운전자 매칭 서비스만 업데이트 가능


클라우드에서의 마이크로서비스 운영

마이크로서비스는 클라우드 환경에서 가장 효과적으로 운영된다. 이유는 클라우드의 다양한 기능들이 마이크로서비스의 복잡성을 해결해 준다.

컨테이너화

  • Docker 같은 컨테이너 기술로 각 마이크로서비스를 패키징 & 배포
  • 환경이 달라도 문제없이 실행 가능! (OS & 서버 문제 해결)

오케스트레이션

  • Kubernetes(K8s)를 활용해 컨테이너 관리 & 자동 확장
  • 트래픽이 증가하면 자동으로 새로운 컨테이너 생성 & 부하 분산

서버리스 컴퓨팅

  • AWS Lambda, Azure Functions 같은 서버리스 서비스 활용
  • 필요할 때만 실행되므로 비용 절감 & 인프라 관리 부담 낮아짐

클라우드 네이티브 서비스

  • 클라우드 제공업체의 관리형 데이터베이스, 메시징, 모니터링 서비스 활용
  • 개발자는 비즈니스 로직에 집중 가능

‼️ 마이크로서비스는 복잡성이 증가할 수 있지만, 클라우드 환경과 결합하면 아래와 같은 것들을 구현하기 수월하다.
1. 더 높은 확장성
2. 더 강력한 장애 대응력
3. 더 빠른 서비스 배포 & 유지보수

마무리

사실 처음에는 클라우드라는 개념이 막연하게 느껴졌다. 그냥 인터넷 어딘가에 데이터를 저장하는 기술 정도로만 생각했었다. 이번에 공부하면서 클라우드가 단순한 저장 공간이 아니라 현대 IT 인프라의 매우 중요한 부분 중 하나라는 걸 알게 되었다.

특히 요즘 네카라쿠배 같은 빅테크 기업들이 마이크로서비스, 모놀리식 같은 용어를 자주 언급하는 이유도 이제야 이해할 수. 있었다. 단순히 ‘어떤 기술이 더 좋다’가 아니라, 트레이드오프(Trade-off) 관점에서 상황에 맞는 유연한 환경을 구축하는 게 가장 중요하다는 것 또한

아무리 좋고 트렌디한 기술에도 무조건 정답은 없다는 걸 알게 된 게 가장 큰 배움이었다.

다음 포스팅에선 도커(Docker)와 쿠버네티스(Kubernetes)에 대해 더 깊이 알아보려 한다.

다음 포스팅에서는 마이크로서비스를 실제로 어떻게 운영하는지, 클라우드 환경에서 컨테이너가 어떤 역할을 하는지 다뤄봐야징

profile
흘러가는대로 사는

0개의 댓글