: 기존의 서버를 관리하기 위해 존재했던 서버실의 공간 확장의 한계, 주기적인 관리로 인한 많은 인력 및 비용 등의 문제를 해결하기 위해 일부 대기업은 데이터 센터를 세워 유휴 자원을 대여하는 서비스를 제공했다.
☝️데이터 센터
서버의 자원과 공간, 네트워크 환경을 제공하며 물리적인 컴퓨터를 대여해주는 개념으로 서비스의 확대 및 축소에 맞춰 유연하게 컴퓨팅 능력을 조절하기 어렵고, 고정적인 비용이 들어간다는 단점을 가진다.
☝️가상화 기술
데이터 센터와 비슷한 역할을 하지만 물리적인 컴퓨터가 아닌 가상 컴퓨터를 대여해주는 방식이다.
인터넷으로 가상화된 IT 리소스를 서비스로 제공하며, 그 대상은 서버, 플랫폼, 소프트웨어가 있다.
운영 환경 자체가 클라우드 제공자에게 종속되어 있기 때문에 클라우드 서비스에 문제가 생기면 내가 서비스하는 환경에도 영향이 미친다.
또한, 이 종속성으로 인해 백엔드 구성 자체가 특정 회사의 기술로만 구성해야만 하는 경우가 발생할 수 있다.
: Infrastructure(기반, 물리적 자원)을 서비스로 제공하는 타입
: 플랫폼을 서비스로 제공하는 타입
: 소프트웨어를 서비스로 제공하는 타입
⭐ AWS는 IaaS에 가깝다.
참고 블로그
배포(Deployment) : 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정으로 4개의 단계를 거처 배포를 하게 된다.
팀의 모든 구성원이 각자의 로컬 환경에서 코드를 작성하고 테스트를 진행하는 과정.
개발 단계이기 때문에 실제 데이터가 아닌 더미 데이터를 이용해 테스팅하며, 변경사항이 있어도 문제가 되지 않는다.
각자의 로컬 환경에서 개발된 부분을 취합하는 과정으로 코드 간에 중복, 충돌 및 오류가 발생하지 않는지 확인한다.
실제 출시 단계인 Production단계와 가장 유사한 환경에서 테스팅을 진행하는 과정으로 실제 데이터를 복제해 테스팅에 이용한다. 출시 전에 모든 관계자들에게 해당 서비스를 검증하는 단계로 볼 수 있다.
개발된 서비스를 출시하는 단계로 개발환경과는 구분된 환경, 즉 사용자가 접속할 수 있는 환경에서 서비스를 제공하는 단계이다. 실제 데이터를 가지고 사용자에게 서비스하는 단계이기 때문에 문제가 발생하면 안된다.
배포에서 가장 중요한 것은 각자의 로컬 환경과, 데이터베이스, 클라우드 데이터베이스의 환경 차이를 이해 해야 하는 것이다.
Development 단계에서는 나의 로컬 환경에서 테스팅을 진행하고 Production 단계는 클라우드에서 서비스가 제공되기 때문에 개발에 필요한 여러 환경 설정을 코드와 분리하는 것이 중요하다.
☝️ 로컬 환경에서 작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면 환경 변수에 설정을 저장해야 한다.
🧐 이런 작업들을 플랫폼을 통해 진행할 수 있는데 그 중 하나다 아마존에서 제공하는 AWS(Amazon Web Service) 인 것!
: AWS에서 제공하는 클라우드 컴퓨팅 서비스로 사용한 만큼 비용을 지불한다는 장점을 가지고 있다.
Amazon EC2는 웹 서버를 설치하고, 이를 통해 사용자가 웹 브라우저를 통해 요청하는 서비스를 제공하는 역할을 한다.
💡 Elastic : 탄력적인
AWS에서 비용, 성능, 용량 면에서 탄력적인 컴퓨터를 제공하는 서비스
: Amazon EC2가 제공하는 서비스의 단위
: 소프트웨어 구성(운영체제, 애플리케이션 서버, 애플리케이션)이 기재된 템플릿
🧐조립 컴퓨터가 아닌 기성품으로 생각하면 될듯?
AMI를 선택하면 그것을 토대로 Instance를 구성한다.
: AWS에서 제공하는 관계형 데이터베이스 서비스
데이터베이스 유지 보수와 관련된 일들을 RDS가 전적으로 자동 관리를 한다. 사용자는 초기 설정을 하고 데이터베이스의 데이터를 관리하는 일만 신경 쓰면 되기때문에 큰 편의성을 얻을 수 있다.\
다양한 데이터베이스 엔진을 지원해 필요에 따라, 엔진을 선택 사용할 수 있어 효율성을 높일 수 있다.
: 인터넷 공간에 데이터를 저장하는 저장소. (Like 구글 드라이브, 네이버박스)
뛰어난 접근성을 가져 웹에 접속할 수 있는 기기만 있다면 언제 어디서나 저장된 데이터에 접속할 수 있다.
: AWS에서 제공하는 클라우드 스토리지 서비스
: 클라우드 스토리지는 웹 환경에 접속할 수 만 있다면 손쉽게 데이터에 접근이 가능
: 스토리지 규모를 손쉽게 확장 및 축소할 수 있다. 용량을 무한하게 확장할 수 있으나, 비용은 사용한 만큼 지불하면 되기에 비용적인 측면에서도 매우 효율적이다.
: 99.999999999%(❓)의 내구성을 보장한다.
: 리전의 가용 영역이 개별적인 위치에 존재해, 하나의 가용 영역이 재난 및 사고로 인해 가동이 불가하더라도 다른 가용 영역에서 백업해둔 데이터를 활용해 문제없이 서버를 가동한다.
🧐 가용성 : 서버, 네트워크 등의 정보 시스템이 장애 없이 정상적으로 요청된 서비스를 수행할 수 있는 능력
리전(Region) : AWS에서 클라우드 서비스를 제공하기 위해서 운영하는 물리적인 서버의 위치
가용 영역(Availability Zone) : 각 리전 안에 존재하는 데이터 센터(IDC)를 뜻한다.
: 목적에 따라 선택할 수 있는 다양한 스토리지 클래스를 제공한다.
☝️ 대표적인 클래스
Standard
클래스 : 범용적인 목적으로 사용하기 좋음. 데이터 접근 및 요청에 대한 처리 속도가 빠르다는 장점을 가지지만 데이터를 오랜 기간 보관하기에는 비용이 많이 들어 비효율적이다.Glancier
클래스 : 장기 보관이 목적일 경우 사용. 데이터에 액세스하는 속도는 느리지만 데이터 보관 비용이 매우 저렴!: S3는 버킷을 통해 정적 웹 사이트 호스팅이 가능하다.
버킷은 저장 공간의 역할을 해 버킷에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포할 수 있다.
❓버킷 : S3에서 저장되는 파일들이 담기는 저장 공간으로 파일을 저장하는 최상위 디렉토리
S3에서 저장되는 모든 파일은 버킷 안에 저장되어야 하고, 버킷에는 무한한 양의 파일을 저장할 수 있다.
버킷은 각 리전에서 고유한 이름을 가져야 하며 버킷의 정책을 생성해 액세스 권한을 부여할 수 있다.
💡 버킷에 저장되는 파일을 객체라고 한다.
S3 저장소에 데이터를 키-값 형식으로 저장하기 때문에 저장된 데이터를 객체라 한다. 객체는 파일과 메타데이터로 구성되어 있으며 모든 객체는 고유한 키와 URL를 가지고 있다. URL 주소를 통해 해당 객체에 접근이 가능하다.
🧐정적 파일 : 서버의 개입 없이 생성된 파일
동적 파일 : 클라이언트의 요청으로 서버가 생성한 파일
웹 호스팅 : 서버의 한 공간을 빌려줘 웹 사이트의 배포, 운영이 가능하게 만들어주는 서비스
📝 언젠간 추가하것지...