Programmers

[88일차]클라우드 컴퓨팅의 이해와 마이크로서비스 아키텍처

PARKpatchnotes 2026. 1. 26. 10:41

현대 IT 인프라의 표준이 된 클라우드 컴퓨팅은 단순한 서버 임대 서비스를 넘어 소프트웨어 아키텍처와 개발 방법론 전반에 영향을 미치고 있다. 본 글에서는 클라우드 컴퓨팅의 등장 배경과 핵심 원칙, 그리고 이를 기반으로 한 마이크로서비스 아키텍처(MSA)의 개념을 정리한다.

1. 컴퓨팅 패러다임의 변화

클라우드 컴퓨팅이 등장하기까지 컴퓨팅 환경은 하드웨어와 네트워크 기술의 발전에 따라 진화해왔다.

  • 메인프레임(Mainframe): 1960~70년대의 거대한 중앙 컴퓨터 시대를 의미한다. 터미널(Terminal)을 통해 중앙 서버에 접속하는 방식이었으며, 시분할 시스템(Time Sharing System)을 통해 다수의 사용자가 하나의 자원을 나누어 썼다.
  • 클라이언트-서버(Client-Server): PC의 보급과 인터넷의 발전으로 등장했다. 클라이언트가 데이터를 요청하고 서버가 응답하는 분산 처리 구조로, 현재 웹 환경의 기초가 되었다.
  • 그리드 컴퓨팅(Grid Computing): 분산된 컴퓨팅 자원을 초고속 네트워크로 연결하여 하나의 거대한 슈퍼컴퓨터처럼 활용하는 기술이다. 주로 과학 연산 등 대규모 데이터 처리에 사용되었으며 클라우드의 기술적 모태가 되었다.
  • 클라우드 컴퓨팅(Cloud Computing): 인터넷을 통해 컴퓨팅 리소스(서버, 스토리지, DB 등)를 필요한 만큼 빌려 쓰고, 사용한 만큼 비용을 지불하는 방식이다.

2. 클라우드 컴퓨팅의 핵심 원칙과 특징

핵심 원칙

클라우드가 성립하기 위해서는 다음과 같은 기술적, 운영적 원칙이 전제되어야 한다.

  1. 공유된 컴퓨팅 자원: 물리적 자원을 여러 사용자가 논리적으로 공유한다.
  2. 컴퓨팅 자원의 가상화: 하이퍼바이저(Hypervisor) 등을 통해 물리적 하드웨어를 가상 머신(VM)이나 컨테이너 형태로 추상화한다.
  3. 탄력성(Elasticity): 트래픽이나 리소스 수요의 증감에 따라 인프라를 유동적으로 확장하거나 축소할 수 있어야 한다.
  4. 자동 제어: 자원 할당과 회수가 관리자의 수동 개입 없이 시스템에 의해 자동으로 이루어진다.
  5. 종량제 과금(Metering): 전기나 수도처럼 사용한 리소스의 양(시간, 용량, 트래픽)만큼만 비용을 청구한다.

장점과 단점

  • 장점: 비즈니스 민첩성(Agility) 확보, 트래픽 변화에 대응하는 탄력성, 초기 투자 비용 절감, 고가용성(Availability) 보장.
  • 단점: 관리 미흡 시 예측보다 높은 비용 발생(Cost Shock), 벤더 종속(Lock-in) 문제, 새로운 환경에 대한 학습 난이도.

개방형과 폐쇄형

  • 퍼블릭 클라우드(Public): AWS, Azure, GCP 등 누구나 사용할 수 있는 개방형 환경.
  • 프라이빗 클라우드(Private): 특정 기업이나 조직 내부에서만 사용하는 폐쇄형 환경. 보안이 중요할 때 사용한다.

3. 서비스 모델과 경제적 타당성

서비스 모델 (Service Models)

클라우드는 제공하는 관리 범위에 따라 세 가지 모델로 구분된다.

  • IaaS (Infrastructure as a Service): 서버, 스토리지, 네트워크 등 인프라 자원만 임대한다. OS와 애플리케이션은 사용자가 직접 관리한다. (예: AWS EC2)
  • PaaS (Platform as a Service): 애플리케이션 개발 및 실행을 위한 플랫폼을 제공한다. 인프라 관리는 클라우드 제공자가 담당한다. (예: Heroku, Google App Engine)
  • SaaS (Software as a Service): 완성된 소프트웨어를 서비스 형태로 제공한다. (예: Google Docs, Dropbox)

경제적 관점: CAPEX에서 OPEX로

클라우드 도입의 가장 큰 경제적 의의는 자본 지출(CAPEX)에서 운영 지출(OPEX)로의 전환이다. 초기 하드웨어 구축 비용을 없애고, 매달 발생하는 운영 비용으로 리스크를 분산할 수 있다.

구축 형태의 비교

  • In-house / On-premise: 자체 전산실에 서버를 구축하고 직접 운영. 보안과 통제권이 가장 높다.
  • Colocation: 서버는 소유하되, 데이터센터의 공간과 네트워크 시설만 임대.
  • Managed Service: 서버 운영 및 관리를 외부 전문 업체에 위탁.
  • Cloud: 인프라 소유권 없이 서비스만 이용.

클라우드가 부적합한 경우

모든 시스템이 클라우드에 적합한 것은 아니다.

  • 레거시 시스템: 클라우드 환경으로 마이그레이션하기에 기술적 부채가 너무 큰 경우.
  • 미션 크리티컬 시스템: 생명과 직결되거나 극도의 안정성이 요구되어 0.1초의 지연이나 외부 네트워크 의존도 허용할 수 없는 경우.
  • 기밀 데이터: 법적 규제나 보안상의 이유로 데이터의 외부 반출이 금지된 경우.

4. 마이크로서비스 아키텍처 (MSA)

클라우드 환경의 탄력성을 극대화하기 위해 소프트웨어 아키텍처 또한 진화했다.

Shutterstock

모놀리틱(Monolithic) vs 마이크로서비스(Microservices)

  • 모놀리틱 아키텍처: 모든 기능이 하나의 거대한 코드베이스와 프로세스로 통합된 형태다. 개발 초기에는 단순하지만, 규모가 커질수록 빌드/배포 시간이 길어지고 특정 기능의 장애가 전체 시스템으로 전파될 위험이 있다.
  • 마이크로서비스 아키텍처: 시스템을 독립적으로 배포 가능한 작은 서비스 단위로 쪼갠 형태다. 각 서비스는 API를 통해 통신한다.

MSA의 핵심

MSA는 단순히 기술적인 유행이 아니라 조직과 비즈니스의 문제를 해결하기 위한 도구다.

  • 서비스별로 서로 다른 기술 스택을 사용할 수 있다.
  • 특정 서비스에 트래픽이 몰릴 경우 해당 서비스만 스케일 아웃(Scale-out)하여 효율을 높일 수 있다.
  • 기술적 복잡도(네트워크 통신, 데이터 정합성 등)는 증가하지만, 배포의 유연성과 조직의 확장성을 확보하는 데 중점을 둔다.

5. 맺음말: 좋은 소프트웨어 엔지니어란

기술은 끊임없이 변화한다. 메인프레임에서 클라우드로, 모놀리틱에서 MSA로 패러다임이 바뀌어도 변하지 않는 '좋은 엔지니어'의 자질은 다음과 같다.

  1. 대화가 되는 사람: 복잡한 기술적 문제를 동료나 비개발자가 이해하기 쉽게 설명할 수 있는 커뮤니케이션 능력.
  2. 함께 일하는 것이 즐거운 사람: 협업 태도가 좋고 팀의 분위기에 긍정적인 영향을 주는 사람.
  3. 끈기와 호기심을 가진 사람: 해결되지 않는 문제에 집요하게 파고들며, 새로운 기술에 대해 '왜?'라는 질문을 던지는 사람.
  4. 컴퓨터 시스템에 대해 넓고 깊게 아는 사람: 특정 언어나 프레임워크에 매몰되지 않고 OS, 네트워크, 하드웨어 등 근본적인 원리를 이해하는 사람.
  5. 좋은 습관을 가진 사람: 코드를 깔끔하게 작성하고, 문서를 남기며, 지속적으로 학습하는 습관이 몸에 밴 사람.

결국 도구(Cloud, MSA)는 바뀔 수 있지만, 문제를 해결하고 시스템을 견고하게 만드는 것은 엔지니어의 본질적인 역량에 달려 있다.