본문 바로가기

클라우드(Cloud)

[스나이퍼팩토리] 카카오클라우드 AIaaS 마스터 클래스 1주차 후기

 

이번에 클라우드 개발에 관심이 생겨 클라우드 부트캠프 교육을 찾다가 위의 교육을 알게 되었다. 클라우드 환경을 평소에 경험해 보기 힘든데 경험해 볼 수 있다는 점과 산업공학을 전공하며 머신러닝을 배운 나로서는 AIaaS도 다가가기 좋다고 생각되어 결정하였다. 

 

Cloud는 뭘까?🤔

사실 클라우드라는 단어는 많이 들어보곤 하지만 정확히 어떤 것을 의미하는지 알고있지는 못했다. 

 

글로 설명하는 클라우드는 아래와 같다. 

인터넷을 통해 데이터 저장, 서버 관리, 소프트웨어 제공 등 IT 자원을 이용할 수 있는 기술

 

이렇게 읽기만 해서는 이해가 잘 되지 않기에 클라우드 이전의 환경과 몇개의 예시를 비교해 보며 함께 이해해 보자. 

온프레미스(On-Premise)

클라우드 환경이 등장하기 전에는 물리적으로 서버를 구축해 사용했고, 온프레미스는 물리적으로 데이터센터와 같은 것들을 통해 관리가 되므로 높은 제어력과 보안에 특화될 수 있다는 장점을 가지고 있지만 서버를 보관할 공간과 그것들을 관리하는 유지보수 등에 어려움이 많은 시스템이다. 

 

기존 온프레미스 환경을 사용하던 기업들도 클라우드 환경을 구축해 넘어오는 추세를 보이고 있다. 

그럼 왜 기업들은 클라우드 환경으로 넘어오려고 할까?

 

클라우드(Cloud)

일단 클라우드 환경은 물리적인 제약을 따르지 않는 장점이 있다. 

초기 투자 비용이 적으며 필요한 만큼 자원을 사용할 수 있고, 유연한 시스템을 통해 기업에서 관리하기 편하다는 이점이 있기에 기업들은 클라우드 환경을 잘 구축하기 위해 많은 노력을 하고 있다. 

 

Ex)

음반/MP3  VS  음원 스트리밍 서비스

 

USB  VS  클라우드 드라이브

 

데이터센터/서버실  VS  AWS/카카오클라우드

 

등을 예시로 비교할 수 있다. 

 

이제 클라우드가 무엇인지 조금이나마 이해했으니 클라우드 컴퓨팅 유형에 대해 알아볼 것이다. 

 


클라우드 컴퓨팅 유형

 

클라우드 컴퓨팅 유형은 우리가 가지고 있는 범위에 따라 IaaS / PaaS / SaaS 등으로 구분된다고 생각하면 된다. 

 

클라우드 컴퓨팅 특징 

- On-Demand: 즉시 생성, 직접 변경, 손쉬운 삭제.

- 확장성(Scalability): 자원을 필요한 만큼 자동 또는 수동으로 늘리거나 줄일 수 있는 유연성을 가짐.

탄력성(Elasticity): 급격한 수요 변화에 맞춰 자원을 빠르게 조정할 수 있습니다. ‘확장성’과 유사하지만 자동화 측면이 강조.

- 리소스 풀링 (Resource Pooling): 서버, 저장소, 네트워크 등의 자원이 다수의 사용자(테넌트)에게 공유되 며 동적으로 할당. 가상화를 통해 구현.

- 측정가능성 (Measured Service): 사용량이 정확히 측정되어 청구. 

 

클라우드 배포모델 

 

- 퍼블릭 클라우드(Public Cloud): 외부 서비스 제공자가 인터넷을 통해 다수의 고객에게 서비스를 제공하는 클라우드 인프라.

 

- 프라이빗 클라우드(Private Cloud): 단일 조직만을 위해 구축된 전용 클라우드 환경. 

 

- 하이브리드 클라우드(Hybrid Cloud): 퍼블릭과 프라이빗 클라우드를 결합하여 활용하는 모델. 

 

클라우드 배포 전략

클라우드 환경에서 애플리케이션을 클라우드 인프라에 효과적으로 배포하고 운영하기 위한 필수 요소이다. 이로써 적절한 배포 전략을 선택함으로써 다운타임을 최소화하고 리소스 효율성을 극대화할 수 있다. 

 

- 빅뱅 배포(단순 배포): 새 버전의 애플리케이션을 기존 시스템에 직접 덮어씌우는 방식. 

 

- 카나리 배포 (Canary Deployment): 새 버전의 애플리케이션을 전체 사용자에게 배포하기 전에 일부 사용자에게 먼저 배포해 문제를 조기에 감지하고 대응할 수 있도록 하는 전략. 

 

- 블루-그린 배포 (Blue-Green Deployment): 두 개의 환경(블루와 그린)을 운영하여 하나의 환경에서 새로운 버전을 테스트한 후, 문제가 없으면 트래픽을 전환하는 방식.

 

- 롤링 배포(Rolling Deployment): 전체 시스템을 한 번에 배포하는 대신, 여러 단계로 나누어 배포하는 방식.

 

- 기능 플래그(Feature Flag): 소프트웨어 개발에서 특정 기능을 쉽게 켜거나 끌 수 있도록 해주는 스위치 같은 역할. 

 

- AB테스팅(AB Testing): 두 가지 버전(예: A와 B)을 실제 사용자에게 무작위로 보여주고, 어느 버전이 더 좋은 성과를 내는지 데이터를 통해 비교하는 방법. 

 

이렇게 클라우드 환경을 구축해서 사용하다보면 문제들이 발생하곤 한다.

이 문제들 중 특정 클라우드 서비스 제공자(예: AWS, Microsoft Azure, Google Cloud Platform 등)의 서비스나 도구에 의존하게 되어, 다른 벤더로 쉽게 이전하거나 멀티 클라우드 환경을 구축하기 어려운 상태인 벤더 락인(Vendor Lock-In)을 대비해야 한다. 

 

벤더 락인(Vendor Lock-In)은 멀티 클라우드와 도커(Docker)나 쿠버네티스(Kubernetes), IaC(Infrastructure as Code) 등을 통해 예방하고 해결할 수 있다. 

클라우드와 네트워크

클라우드 서비스를 이용하려면 반드시 네트워크가 필요하고, 네트워크가 클라우드의 연결, 전송, 보안, 확장을 가능하게 만든다.

 

이렇게 네트워크를 설정할 때는 알맞는 프로토콜을 이용해 네트워크를 구축하는데, 

네트워크 프로토콜이란, 서로 다른 컴퓨터나 네트워크 장비 간에 데이터를 주고받기 위해 미리 정해놓은 통신 규약을 말한다. 

 

데이터를 주고 받는 순서 / 데이터의 형식과 크기 / 오류 처리 및 복구 방식 / 연결의 시작과 종료 방법 등을 프로토콜을 통해 정한다. 

 


 

위 내용을 비롯해서 클라우드를 배우기 위해 알아야 할 기본적인 개념들을 한 주 동안 배웠다. 사실 비전공자로 참여해 이번에 배운 이론 내용들과 실습 내용들을 쉽게 이해하는 건 불가능했다. 하지만 이론과 실습을 모두 해보았다는 점과 Docker를 이용해 보고 시작했다는 점이 마음에 들었다. 

 

성격이 시작을 하면 잘 하고 싶어서 많이 파고들어 보는 성격이라 시작한다는 것이 제일 어려운데 시작하는 것을 쉽게 도와주신다는 점이 좋았다. 그렇지만 이론과 실습을 진행할 때 배우는 내용뿐 아니라 설명에 사용하시는 단어들 또한 모르기에 이해하기 쉽지 않다는 어려움이 있지만 이런 것들부터 차근차근 이해하다 보면 할 수 있는 것들이 많아질 것이라는 것을 믿어 의심치 않는다. 

 

이번 주 실습은 Docker를 사용해 보는데 초점이 있었다. 하지만 아직 Docker와 그것들을 비롯한 실습 내용에 대해 이해가 부족해 Docker에 대해 먼저 공부하기보다 클라우드의 개념 자체에 대해 이해하는 것이 중요하다고 생각된다. 


본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 (B-log) 리뷰로 작성되었습니다.