본문 바로가기
부트캠프/백

클라우드 컴퓨팅, AWS의 중요개념들

by 티코딩 2023. 2. 1.

ㅇ 클라우드 컴퓨팅

등장배경 - 이전엔 전산실에 컴퓨터 배치하고 인터넷에 연결해 서비스를 제공했다. 이 방식이 한게에 부딪히고 더많은 컴퓨터를 제공해 한대가 해결할 수 있는 요청을 여러대가 나누는 방식을 사용하거나 한대의 성능을 높이는 방식을 사용할 수 있다.

하지만 이런 방식도 문제가 있는데, 주기적인 관리가 필요하고, 공간의 한계가 있다.

이런 한게에 데이터 센터라는 거대한 건물이 등장했다. 서버의 자원과 공간, 네트워크 환경을 제공을 빌려 사용하는 클라우딩 컴퓨팅 서비스가 시작됐다. 현대의 클라우딩 컴퓨팅은 데이터센터와 역할은 비슷하지만 물리적인 컴퓨터가 아닌 가상 컴퓨터를 대여하는것이다. 

장단점 - 가상화의 장점은 필요할때마다 컴퓨팅 능력을 유연하게 조절하고, 고정적인 비용이 들어가는 온프레미스완 달리 사용한 만큼의 요금만 지불하고, 스냅샷을 이용해 다른 컴퓨터로 이주가 가능하다. 

이렇게 장점만 있는게 아니라 단점도 존재함. 웹서비스의 장애로 특정 서비스의 서버가 지연되거나, 운영환경이 특정클라우드 사업자에게 종속된다.(특정 기술로만 구성) 

클라우드 서비스의 형태 - Saas(Software as a Service) 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우, Paas(Platform as a Service) 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우, IaaS(Infrastructure as a Service) 클라우드 제공자가 가상 컴퓨터까지 제공하는 경우

한줄정리 : 가상의 컴퓨터를 대여하는 것!

 

ㅇ Deploy

지금까진 로컬 환경에서 코드를 작성했고, 작성한 코드가 로컬환경에서 구동되면 사람들은 이용할 수 없다. 사용자가 서비스를 이용할수있게 해주는 배포에대해 Araboza.

배포란 - 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정임. 기본적으로 4단계를 거침. 

Development - 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정. 실제 데이터사용하지않고 더미 데이터를 이용해 테스트함.

Integration - *위 사진엔 오타인듯* 각자의 컴퓨터에서 작성한 코드를 합치는 과정. 오류나 conflict 확인 하는 과정.

Staging - 실제 출시 단계인 Production단계와 유사한 환경에서 테스트를 진행함. 실제 데이터를 복사해 문제가 있지 않은지 등 다양한 환경에서 테스트를 진행함. 마케팅팀이나 디자인팀이 예상한결과랑 맞는지 확인

Production - 개발된 서비스를 출시하는 단계. 사용자가 접속할 수 있는 Production 환경에서 코드를 구동하고 서비스를 제공함. 문제가 있으면 아니아니아니되오.

 

ㅇ EC2(Elastic Compute Cloud)

AWS(Amazon Web Service) 에서 제공하는 클라우드 컴퓨팅 서비스. 클라우드 컴퓨팅은 인터넷을 통해 서버, 스토리지, 데이터베이스 등 컴퓨팅 서비스를 제공하는 서비스다.

Elastic Compute Cloud로 Elastic은 탄력있는이란 뜻. 사용한만큼 지불한다는 뜻임. 비용뿐 아니라 성능, 용량도 자유롭게 조절한다는 의미. 정리하면 EC2는 AWS에서 비용, 성능, 용량 면에서 탄력적인 클라우드 컴퓨터를 제공하는 서비스라고 할수있음. 장점 - 구성하는데 필요한 시간이 짧음. AMI(Amazon Machine Image)를 통해 필요한 용도에 따라 다양한 운영체제,CPU,RAM,용량 선택 가능. 

EC2는 컴퓨터를 빌리는 것. 네트워크를 통해 제어하는것뿐. 인스턴스는 1대의 컴퓨터를 의미하는 단위. AWS에서 컴퓨터를 빌리는 것을 인스턴스를 생성한다고 함.

AMI는 소프트웨어 구성이 기재된 템플릿. 이미지 종류는 단순히 운영체제만 깔려있는 템플릿, 특정 런타임이 설치되어 있는 템플릿이 제공되는 경우도 있음. 인스턴스는 선택한 AMI를 토대로 구성됨. AWS EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은런타임이 구성된 컴퓨터를 빌리는 것.

한줄정리 : 사용할 만큼 성능,용량을 지정해 클라우드 컴퓨터를 빌리는 것

 

ㅇ RDS(Relation Database Service)

AWS에서 제공하는 관계형 데이터베이스 서비스. 왜 데이터베이스만 따로 분리해 서비스를 이용할까? EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해 데이터를 관리하는것은 유지보수 및 관리를 본인이하는것이고, RDS를 사용하는것은 사용만하면된다. 그리고 다양한 데이터베이스 엔진 선택지를 제공해 실무자는 회사에 필요한 데이터베이스 엔진을 취사선택하여 이용할 수 있다. 

한줄정리 : 관리해주는 데이터베이스 서비스

 

ㅇ S3(Simple Storage Service)

갤럭시아님ㅋ S3이전, 클라우드 스토리지개념을 알아야함. 클라우드 스토리지란? 인터넷 공간에 데이터를 저장하는 저장소. 구글드라이브, 네이버mybox같은개념. 클라우드 스토리지를 이용하면 웹환경이라면 어디서든 파일에 접근할 수 있는 장점이 존재한다. 그리고 다른 전자기기를 통해서도 접근할수있는 장점이 있다. S3는 Simple Storage Service의 약자로 AWS에서 제공하는 클라우드 스토리지 서비스다. S3역시 좋은 접근성을 가진다.

S3의 장점 - 높은 확장성. 수고를 들이지않고 스토리지 규모를 확장/축소가 가능함. 매우낮은 유실률. 유실할 가능성이 벼락맞을 확률보다 낮음. 가용성이 높으면 스토리지에 저장된 파일들을 정상적으로 사용할 수 있는 시간이 길어진다. S3는 99.99%의 스토리지 가용성을 보장하게 설계되있음. AWS는 클라우드 서비스를 제공하기 위해 운영하는 물리적인 서버인 ‘리전’이 전세계적으로 분포되어있기 때문에 앵간한 재난이나 사고로도. 다른가용영역에 백업을 해놓은 데이터로 문제없이 가동되므로 높은 가용성과 내구성을 보장한다. 

다양한 스토리지 클래스 - S3는 다양한 스토리지 클래스를 제공하는데 대표적으로 많이 선택하는 클래스는 Standard 클래스와 Glacier클래스다. Standard클래스는 범용적인 목적으로 많이 사용한다. 하지만 데이터를 오래 보관하는데는 비효율적이다. 장기적인 보관목적이면 Glacier를 사용한다. 데이터 엑세스 속도는 느리지만 보관비용이 매우 저렴하기 때문이다. 

정적 웹 사이트 호스팅 - 먼저 ‘정적’파일이란 서버의 개입 없이 생성된 파일이다. 클라이언트의 요청에따라 응답으로 생성한 파일을 ‘동적’파일이라고 한다. 웹 호스팅이란 서버의 한 공간을 임대해 주는 서비스를 의미한다. S3에선 버킷이 사용자들이 정적 웹사이트를 배포할 수 있는 공간을 제공한다. 버킷이라는 저장공간에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포할 수 있다.

버킷 - 파일을 저장하는 최상위 디렉터리라고도 할 수 있다. S3에서 모든 저장되는 파일은 버킷안에 저장되고, 무한한 양을 저장할 수 있다. 각 버킷은 리전에서 유일해야한다. 버킷 안에 담기는 파일을 객체라고 부른다. 객체는 키 - 값 페어 형식으로 데이터를 저장한다. 파일의 값에는 실제 데이터를 저장함. S3 객체의 값으로써 저장될 수 있는 데이터의 최대 크기는 5TB. 파일의 키는 식별자 역할을 해, 객체 검색을 할 수 있다. 그리고 모든 객체는 고유 URL주소를 가진다. 

한줄정리 : 클라우드 스토리지 서비스

 

ㅇ 3 Tier-Architecture

여태까지 로컬환경에서 클라이언트와,서버,데이터베이스를 띄워 코드를 구동하고 확인했다. 외부에서 사용자들이 사용할 수있게 배포를 어떻게 할까?

먼저, 클라이언트 코드를 사용자들에게 제공하기 위해선 S3를 사용해 제공가능함.

로컬환경에선 자체개발 서버를 이용해서 클라이언트 앱을 실행시킴. EC2를 사용하지 않고 S3를 사용해 클라이언트 앱을 정적파일로 빌드해 제공함.

빌드 - 불필요한 데이터 없애고 데이터들을 통합/압축해 배포하기 쉬운형태로 만드는것. HTML, CSS, JS의 형태로 배포하는 경우는 정적파일의 형태로 만들어줘야 한다. 클라이언트 앱을제공하는데 파일을 더 빠르게 받게하는 방법은 AWS에서 제공하는 CDN서비스인 CloudFront를 통해 각자의 데이터센터에 데이터를 분산시켜 저장해 뒀다가 가까운 지역에서 데이터를 주는 방식으로 더빠르게 제공할 수 있다. 

서버 애플리케이션은 어떻게 배포할까? - AWS EC2서비스를 사용해 쉽게 서버를 구성하고 서비스를 제공할 수 있음. 

데이터베이스는? - AWS에선 Database 특화 서비스인 RDS를 이용해 데이터베이스를 사용할 수 있다. RDS서비스를 이용해 EC2를 통해 배포된 Server애플리케이션의 데이터를 저장, 제공하는 데이터베이스를 배포 할 수 있다.

도메인은? - AWS에서 제공하는 Route 53 서비스를 이용하면 직관적인 도메인 주소를 통해 서비스에 접근 가능하다.

한줄정리 : 클라이언트(S3), 서버(EC2), 데이터베이스(RDS)

'부트캠프 > ' 카테고리의 다른 글

Docker - container  (0) 2023.02.03
Section3-2  (0) 2023.02.01
Section3-1  (0) 2023.01.29
Reactive Programming  (0) 2023.01.28
12.6 Framework, SpringFramework, POJO  (0) 2022.12.10