클라우드 컴퓨팅의 개요
서버는 클라이언트의 요청을 받아 필요한 데이터나 서비스를 제공한다. 시간에 관계없이 언제든지 요청을 받아 처리하기 때문에 24시간 내내 가동한다. 가용자가 많아지면 서버의 수를 늘리고 운영 및 관리 인원도 보강해야 하지만, 클라우드 컴퓨팅이 등장하면서 이러한 서버 관리의 부담이 획기적으로 줄어들었다.
클라우드 컴퓨팅의 개념
클라우드 컴퓨팅(cloud computing)은 언제 어디서든 인터넷을 통해 접속할 수 있는 컴퓨팅 환경으로, 간단히 ‘클라우드’라고도 한다. 데이터, 소프트웨어, 컴퓨팅 자원 등을 인터넷을 통해 제공 받아 사용하는 형태인 클라우드가 도입되기 전에 개인 또는 기업은 자체적으로 서버를 구축하고 운영하는 온프레미스(on-premise) 시스템을 사용했다. 그러나 클라우드가 보급됨으로써 자체 서버를 보유하지 않고 컴퓨팅 자원을 대여받아 사용할 수 있게 됐다.
온프레미스 시스템
사용자가 직접 컴퓨팅 자원을 보유하고 관리하는 방식이다. 자체적으로 서버, 스토리지, 네트워크 장비 등을 구입해 설치 한 후 유지보수, 업그레이드 등을 수행한다. 온프레미스 시스템의 특징
- 사용자가 보안과 데이터 소유권을 직접 통제할 수 있다.
- 외부 네트워크와 연결하지 않아도 내부 네트워크에서 서버에 접근할 수 있다.
- 초기 투바 비용과 유비보수 비용이 많이 들고, 자원의 확장성과 유연성이 제한될 수 있다.
클라우드 시스템
IT 자원을 클라우드 서비스 제공 업체에 의뢰해 관리하는 방식이다. 사용자는 인터넷을 통해 업체로부터 서버, 스토리지, 네트워크 장비 등을 대여 받아 사용한다. 클라우드 시스템의 특징
- 사용한 자원에 대해서만 비용을 지불하므로 초기 비용이 크게 줄어들고, 복잡한 인프라 구축과 유치보수의 부담을 덜 수 있다.
- 클라우드 서비스 제공 업체가 인프라 관리를 담당하므로 개발자는 서비스에만 집중할 수 있다.
- 확장성과 유연성이 뛰어나 서비스의 규모에 따라 필요한 자원을 신속하게 확장하거나 축소할 수 있다.
- 인터넷에 연결된 어느 장치에서나 접속이 가능하며, 업체가 제공하는 다양한 기능과 서비스를 이용할 수 있다.
클라우드 서비스의 종류
클라우드 서비스는 서비스의 제공 방식과 환경을 기준으로 공용 클라우드(public cloud), 사설 클라우드(private cloud), 하이브리드 클라우드(hybrid cloud)로 구분된다. 또한 서비스의 제공 범위에 따라 IaaS(Infrastructure as a Service), PaaS(Platform as a Service), Software(Software as a Service)로 구분하기도 한다.
공용 클라우드, 사설 클라우드, 하이브리드 클라우드
공용 클라우드 : 다수의 사용자가 공유하는 클라우드 환경으로, 클라우드 서비스 제공 업체가 소유하고 관리한다. 다양한 조직이나 개인이 인터넷을 통해 클라우드에 접근해 컴퓨팅 자원을 사용한다. 대표적으로 아마존의 AWS, 마이크로소프트의 애저(Azure), 구글의 GCP(Google Cloud Platform) 등이 있다.
- 사설 클라우드 : 단일 조직이나 기업이 사용하는 클라우드 환경으로, 조직이나 기업 자체가 소유하고 운영한다. 기업의 보안 및 관리에 필요한 다양한 요구 사항을 충족하기 위해 자체 클라우드를 사설 데이터 센터에 구축하거나, 외부 클라우드 서비스 제공 업체로부터 전용 자원을 배정받아 사용한다.
- 하이브리드 클라우드 : 공용 클라우드와 사설 클라우드를 조합한 형태이다. 단일 조직이나 기업이 자체 데이터 센터에서 사설 클라우드를 운영하면서 필요에 따라 공용 클라우드의 자원을 이용한다. 사설 클라우드와 공용 클라우드 간에 데이터와 애플리케이션을 유연하게 이동하며 운영함으로써 효율성과 확장성을 극대화할 수 있다.
IaaS, PaaS, SaaS
클라우드 서비스의 컴퓨팅 자원을 어느 범위까지 제공하는지에 따라 다음과 같이 나눌 수 있다.
- 인프라 : 네트워크 장비, 데이터 스토리지, 서버 등 컴퓨터 시스템을 구성하는 물리적 요소를 말한다. 직접적인 인프라는 아니지만 가상화 기술도 여기에 포함된다.
- 플랫폼 : 소프트웨어 개발 및 실행 환경을 제공하는 기술적 기반을 말한다. 일반적으로 운영체제, 미들웨어, 런타임 등이 포함된다.
- 소프트웨어 : 컴퓨터에 명령을 내려 작업을 수행하는 프로그램으로, 애플리케이션과 데이터의 집합이 포함된다.
- IaaS 클라우드 서비스 제공 업체가 가상 인프라를 제공하는 모델로, 플랫폼과 소프트웨어를 지원하고 실행하기 위한 기반을 제공한다.개발은 로컬에서 하고 웹 애플리케이션 배포와 운영을 위한 컴퓨팅 자원을 클라우드 서비스로부터 제공받는다. Iaas의 대표적인 예는 AWS, 애저, GCP 등이 있다.
- PaaS 웹 애플리케이션을 구축하고 실행할 수 있는 인프라와 플랫폼을 제공한다. 개발자는 자신이 사용한 개발 언어와 프레임워크에 따라 웹 애플리케이션을 빌드하고 배포할 수 있는 다양한 개발 도구와 서비스를 제공 받는다. PaaS에서 개발자는 소스 코드에만 집중하고 서버 구성 및 관리, 스케일링(scaling, 시스템의 처리 능력을 축소하거나 확장하는 것), 보안 등의 작업을 고려하지 않아도 된다. PaaS의 대표적인 예로 헤로쿠(Heroku), 구글 앱 엔진(Google App Engine), 애저 앱 서비스(Azure App Service) 등이 있다.
- SaaS 클라우드 서비스 제공 업체가 아예 웹 애플리케이션을 제공하는 모델이다. 웹 애플리케이션을 클라우드 서버에서 바로 실행할 수 있어 사용자는 웹 브라우저 또는 모바일 앱을 통해 웹 애플리케이션에서 필요한 작업을 수행한다. SaaS의 대표적인 예는 세일즈포스(Salesforce), 구글 워크스페이스(Google WorkSpace), 마이크로소프트 365(Microsoft 365) 등이 있다.
클라우드 서비스 : AWS
AWS는 아마존의 공용 클라우드 서비스이다. 아마존은 대규모 서버와 네트워크 인프라를 보유하고 있으며, 사용자는 AWS에서 필요한 만큼의 서버 용량, 데이터 스토리지, 네트워크 대역폭 등을 선택해 사용할 수 있다. AWS의 대표적인 서비스는 Amazon EC2, Amazon S3, Amazon RDS, AWS IAM 등 이다.
Amazon EC2 : 가상 서비스
Amazon EC2(Amazon Elastic Compute Cloud)는 원격으로 제어할 수 있는 서버 컴퓨터를 빌리는 서비스이다. 가상의 서버 컴퓨터를 프로비저닝(provisioning)하고 실행할 수 있게 하는 것으로, 프로비저닝이란 필요할 때 바로 사용할 수 있도록 인프라 구성 및 관리 작업을 자동화하는 것을 말한다. Amazon EC2에서 사용자는 손쉽게 컴퓨팅 자원을 빌리고, 사용한 만큼만 비용을 지불한다. Amazon EC2는 다양한 사양(CPU, 메모리, 스토리지 등)의 인스턴스 유형과 다양한 운영체제(윈도우, 맥, 리눅스)를 지원한다. 따라서 사용자는 자신의 필요에 맞게 서버를 세팅할 수 있다.
EC2 인스턴스를 구성할 때는 어떤 서버로 쓸 것인지 용도를 결정해야 하며, 서버에 설치할 운영체제도 그에 따라 달라진다. 많이 사용되는 서버의 용도는 아래와 같다.
- 웹 서버 : 클라이언트로부터 HTTP 요청을 받아 정적인 웹 페이지를 제공하는 서버이다. 주로 HTML, CSS, 자바스크립트, 이미지 등의 정적인 파일을 제공한다.
- API 서버 : 클라이언트로부터 API 요청을 받아 응답하는 서버이다. 주로 JSON 또는 XML 형식의 데이터를 다루며, 클라이언트와 서버 간의 상호작용을 위한 인터페이스를 제공한다.
- 프록시 서버 : 클라이언트와 서버 사이에서 중계 역할을 수행하는 서버이다. 클라이언트와 서버간의 통신 중계, 보안, 로드 밸런싱, 캐싱 등의 기능을 수행한다.
- FTP 서버 : 파일 업로드 및 다운로드 서비스를 제공하는 서버이다.
AmazonEC2 서비스를 사용하면 개발자는 필요에 따라 EC2인스턴스를 시작, 중지, 다시 시작, 종료 및 스케일링을 할 수 있다. 또한 보안 그룹, 네트워크 접근 제어 목록(ACL, Access Control List) 가상 사설 네트워크(VPC, Virtual Private Cloud) 등을 구성하여 웹 애플리케이션의 보안을 강화할 수 있다.
Amazon EC2는 다른 AWS 서비스와 통합하기에도 용이하다. 예를 들어 EC2 인스턴스에서 실행되는 웹 애플리케이션에 대해 Amazon S3, Amazon RDS 등의 스토리지 및 데이터베이스 서비스를 사용할 수 있다. 또한 Amazon CloudWatch(아마존 클라우드워치)를 사용하면 인스턴스 및 웹 애플리케이션을 모니터링 할 수 있고, AWS Auto Scaling을 사용하면 인스턴스 수를 자동으로 조정할 수 있다.
Amazon S3 : 스토리지 서비스
Amazon S3(Amazon Simple Storage Service)는 파일을 저장하는 데 사용되는 스토리지 서비스이다. 이는 클라우드사아에 큰 창고를 제공하는 것과 같으며, 이 창고는 전 세계 어디서든 접근할 수 있다. Amazon S3에는 실제 파일이 보관되는 여러 개의 바구니가 존재한다. 이를 S3 버킷(S3 bucket)이라고 하며, 각 버킷 안에 원하는 만큼의 파일을 보관할 수 있다. S3의 버킷 특징
- 버킷은 빈 상태에서 시작한다.
- 버킷에 보관하는 파일의 개수, 크기, 유형의 제한이 없다.
- 필요한 사용자에게만 버킷 단위 또는 버킷 내 파일 단위의 접근 권한을 부여한다.
- 파일의 안전성을 보장하는 다양한 보안 및 암호화 기술을 제공한다.
이와 같이 S3 버킷은 안전하고 신뢰성이 높은 데이터 저장 및 관리 기능을 제공한다. S3 버킷에 파일을 저장하거나 꺼낼 때 비용은 파일의 크기와 저장 기간에 따라 달라진다.
Amazon S3는 실제로 다음과 같이 활용된다.
- 웹 사이트 호스팅 : Amazon S3는 웹 사이트 호스팅을 지원한다. HTML, CSS, 자바 스크립트, 이미지 파일 등을 S3 버킷에 저장하면 웹 브라우저에서 해당 콘텐츠를 사용할 수 있다.
- 미디어 콘텐츠 호스팅 : Amazon S3는 웹 애플리케이션의 각종 사진, 배너 이미지, 음악, 영상 등과 같은 미디어 콘텐츠를 저장하고 관리하기 위한 기능을 제공한다. 이를 통해 사용자는 손쉽게 미디어 파일을 업로드 및 다운로드하고 웹 페이지에 노출할 수 있다.
- 데이터 백업 및 복원 : Amazon S는 데이터 백업 및 복원을 위한 솔루션을 제공한다. 서비스 운영 중에 발생하는 데이터의 손실을 방지하기 위해 Amazon S3에 데이터를 백업하고 필요 시 복원할 수 있습니다.
- 데이터 저장 및 분석 : Amazon S3는 대량의 데이터를 저장하고 분석하는 데에도 많이 사용된다. 머신 러닝, 데이터 분석, 비즈니스 인텔리전스 등 다양한 분야에서 데이터를 수집하고 저장하는데 사용된다.
Amazon RDS : 데이터베이스 서비스
Amazon RDS(Amazon Relational Database Service)는 관계형 데이터베이스를 구축하고 관리할 수 있도록 도와주는 클라우스 서비스이다. Amazon RDS를 통해 다음과 같은 작업을 할 수 있다.
- 데이터베이스 생성 : 다양한 관게형 데이터베이스 엔진(MySQL, PostgreSQL, Oracle 등)을 지원하며, 각 엔진의 최신 버전을 사용할 수 있다.
- 데이터 백업 및 복원 : Amazon RDS는 자동 백업 기능을 제공해 일관된 시점의 스냅숏을 생성하고 보관한다. 이를 통해 데이터의 손실을 방지하고, 필요시 스냅숏을 이용해 데이터베이스를 복원할 수 있다. 또한 수동으로 백업하고 보존 기간을 설정할 수 있다.
- 데이터베이스 모니터링 : Amazon RDS는 데이터베이스 인스턴스의 성능, 용량, 연결 등을 모니터링하는 기능을 제공한다. 이를 통해 CPU, 메모리, 디스크 사용량 등을 실시간으로 확인하고 성능 문제를 식별해 대응할 수 있다.
- 자원 자동 조정 : Amazon RDS는 데이터베이스 인스턴스의 크기와 용량을 필요에 따라 자동으로 조정할 수 있다. 즉 트래픽의 변동에 따라 자동으로 자원을 확장하거나 축소해 데이터베이스의 성능을 효율적으로 유지할 수 있다.
AWS IAM : 보안 및 접근 권한 제어
AWS IAM(AWS Identity and Access Management)은 AWS 자원에 접근하고 사용할 수 있는 사용자의 권한을 제어한다. Amazon IAM을 통해 할 수 있는 작업은 아래와 같다.
- 사용자 권한 관리 : 각 사용자에게 고유한 자격 증명(사용자 이름과 비밀번호 또는 액세스 키)을 부여한다. 이를 통해 사용자에게 권한을 부여하거나 사용자의 권한을 제한한다.
- 사용자 역할 관리 : AWS 자원에 접근하는 서비스 또는 특정 사용자 계정에 역할을 부여하는 데, 이를 IAM롤(IAM role)이라고 한다. 일시적으로 사용되는 IAM 롤은 사용자에게 인증서를 주거나 시간 기반 권한 등의 다양한 조건을 설정함으로써 특정 작업에 대한 권한을 제한한다.
- 사용자 그룹 관리 : 비슷한 역할이나 권한을 가진 사용자를 그룹으로 묶어 관리한다.
- 자원 접근 정책 관리 : AWS 자원에 대한 접근 권한을 세부적으로 제어하는 정책을 작성하고 관리하며, 이러한 정책은 JSON 형식으로 작성된다. 정책은 사용자, 그룹, 롤 단위로 적용되며, 이를 통해 누가 어떤 작업을 수행할 수 있는지를 명시한다.
- 암호 정책 : 사용자가 강력한 암호를 사용하도록 강제하는 정책을 설정한다. 이를 통해 사용자 계정의 보안성을 높이고, 사용자가 특정 자원에 무단으로 접근하는 것을 방지할 수 있다.
- MFA 관리 : AWS IAM은 추가 인증 수단으로 MFA(Mutli-Factor Authentication)를 지원한다. MFA는 사용자의 신원을 확인하기 위해 여러 가지 인증 요소를 사용하는 보안 메커니즘이다.