배운 내용
Cloud Computing
등장배경
- 만약 서버가 요청에 대한 수용 능력이 한계에 도달한다면 어떻게 대처할까?
- 과거
- 같은 공간에 더 많은 컴퓨터를 제공하여 한 대가 해결할 수 있는 요청을 여러 대가 나누는 방식을 사용
- 혹은 컴퓨터 한 대의 성능을 높이는 방식
- 전산실 모습
- 기존 방식 한계
- 주기적인 유지 관리가 필요
- 공간의 한계 → 일부 거대 기업이 데이터 센터라는 거대한 건물을 세우기 시작 → 데이터 센터의 유휴 자원을 대여하는 서비스가 등장 →서버의 자원과 공간, 및 네트워크 환경을 제공을 빌려 사용하는 클라우드 컴퓨팅이 시작
- 온프레미스
- 데이터 센터에서 서버의 자원과 공간, 및 네트워크 환경을 제공하는 환경
- 현대의 클라우드 컴퓨팅은 앞서 설명한 데이터 센터와 비슷한 역할을 하지만, 물리적인 컴퓨터가 아닌, 가상 컴퓨터를 대여한다.
- 최근의 가상화 기술을 사용한 클라우드 서비스의 기존 온프레미스 형식 대비 장점
- 필요할 때마다 컴퓨팅 능력을 유연하게 조절할 수 있습니다.
- 고정적인 비용이 들어가는 온프레미스와는 달리 사용한 만큼의 요금만 지불하면 됩니다.
- 컴퓨터의 스냅샷("이미지"라고 부릅니다) 을 이용해 다른 컴퓨터로 즉시 이주(migration)가 가능합니다.
- 단점
- 운영환경이 특정 클라우드 사업자(vendor)에게 종속된다
- 클라우드는 모든 것을 서비스화하는 것을 목표로 합니다.
Deployment
- 배포란 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정
- 작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면, 설정을 환경 변수( env)에 저장해야 합니다.
- 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있습니다.
- 절대경로 대신 상대경로 사용
- docker와 같은 개발환경 자체를 통일시키는 솔루션을 사용
EC2
- 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스
- AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는것
- 아마존이 전 세계에 만들어 놓은 데이터 센터(인프라)에 만들어져 있기 때문에
컴퓨터를 조작하기 위해 네트워크(인터넷)를 통해서 컴퓨터를 제어해야 한다
- EC2에서는 AMI라는 다양한 템플릿을 제공하고 있어서 필요에 따라 손쉽게 운영체제를 선택하고 구성할 수 있습니다.
- 운영체제뿐만이 아니라 CPU와 RAM, 용량까지도 손쉽게 구성
- AMI(Amazon Machine Image)는 소프트웨어 구성이 기재된 템플릿
클라우드 컴퓨팅
인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스
클라우드 스토리지
- 클라우드 스토리지란 쉽게 말해서 인터넷 공간에 데이터를 저장하는 저장소
- ex) 구글의 Google Drive,
- 뛰어난 접근성 - 웹 환경이라면 언제 어디서나 저장된 파일에 접근가능
웹호스팅
- 웹 호스팅이란 서버의 한 공간을 임대해 주는 서비스
- 개인 또는 단체가 웹 호스팅 업체가 제공하는 서버의 한 공간을 빌려서 원하는 서비스를 배포할 수 있습니다.
- 정적 파일은 서버의 개입 없이 생성된 파일을 뜻합니다. 반대로 클라이언트가 서버에 요청을 보내면, 서버가 요청에 맞추어 그 자리에서 생성한 파일을 '동적' 파일이라고 부릅니다
S3(Simple Storage Service)
- AWS에서 제공하는 클라우드 스토리지 서비스
- 정적 웹사이트 호스팅이 가능
- 높은 확장성과 강력한 내구성
가용 영역(Availability Zone)이란 각 리전 안에 존재하는 데이터 센터(IDC)를 뜻합니다. 가용 영역은 각각 개별적인 위치에 떨어져서 존재합니다. 그래서 한 곳의 가용 영역이 재난이나 사고로 인해 가동이 불가능해지더라도 다른 가용 영역에 백업을 해놓은 데이터를 활용하여 문제없이 서버가 가동되게 합니다. 이런 가동 방식 덕분에 AWS에서 제공하는 서비스들은 높은 가용성과 내구성을 보장
Bucket
- S3에 저장되는 파일들이 담기는 바구니
- 버킷이 사용자들이 정적 웹 사이트를 배포할 수 있는 공간을 제공
- 버킷이라는 저장 공간에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포할 수 있습니다.
- 버킷의 이름은 각 리전에서 고유해야한다.
- 버킷의 정책을 생성하여 액세스 권한 부여 가능
- 객체
- 객체는 버킷에 담기는 파일을 뜻한다.
- 객체는 key-value 페어 형식으로 데이터를 저장
- 객체는 파일과 메타데이털 구성
- 모든 객체는 고유한 키를 가짐
- url 주소를 통해서 객체에 접근 가능
RDS( Relational Database Service)
- AWS에서 제공하는 관계형 데이터베이스 서비스
- EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리할 때와 RDS를 통해 데이터를 관리할 때의 차이
3 Tier Architecture
빌드란?
일반적인 의미의 빌드는, 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미
불필요한 데이터를 없애고, 통합/압축하여 배포하기 최적화된 상태를 만드는 것
데이터의 용량이 줄어들고 웹 사이트 로딩 속도가 빨라진다.
- S3로 사용자들에게 Client Application을 제공하고 있는데, 사용자가 지구 반대편에 있다면 어떻게 빠르게 서비스를 제공할 수 있을까요?
- AWS에서 제공하는 CDN 서비스인 CloudFront를 통해서 각지의 데이터센터에 데이터를 분산시켜서 저장해 뒀다가 가까운 지역에서 데이터를 주는 방식으로 사용자에게 더 빠르게 서비스를 제공할 수 있습니다
- 백엔드 배포
- AWS에서 제공하는 Route 53 서비스를 이용하면직관적인 도메인 주소를 통해서 서비스에 접근하도록 할 수 있습니다.
보안 그룹
- 보안그룹이란 인스턴스로 들어가고 인스턴스에서 나가는 트래픽에 대한 가상 방화벽
- 인스턴스로 들어가는 트래픽은 인바운드
- 인스턴스에서 나가는 트래픽을 아웃바운드
- 인바운드규칙
- EC2 인스턴스로 들어오는 트래픽에 대한 규칙입니다.
- 인바운드 규칙에 허용되지 않은 규칙은 인스턴스로 접근하지 못하도록 필터링
- EC2 인스턴스에서 실행중인 서버가 인터넷에서 요청을 받을수 있도록 인바운드 규칙을 설정
- 아웃바운드 규칙
- EC2 인스턴스에서 나가는 트래픽에 대한 규칙