✅ AWS(Amazon Web Service)
AWS는 소위 클라우드 서비스라고도 한다. 클라우드 서비스는 서버, 스토리지, 네트워크 등의 infrastructure를 필요한대로 on-demand로 사용할 수 있는 서비스다. 클라우드 서비스는 서버를 구입하고 설치할 필요 없이 AWS상에서 바로 서버를 구축하고 사용할 수 있다.
✅ Traditional IT의 문제점
- datacenter 렌트 비용을 지불해야한다(월,년 단위).
- power supply, cooling, maintenanace 비용을 지불해야한다.
- 새로운 하드웨어(서버)를 추가하거나 교체할 때 시간이 많이 소모된다.
- 확장하는데 제한사항이 많다.
- 현재 유지되고 있는 인프라를 24/7 모니터링 할 인원을 고용해야 한다.
- 천재지변에 대응하기 어렵다(지진, 화재, power shutdown 등).
✅ Cloud Computing
- IT 리소스를 인터넷을 통해 on-demand, 즉 필요할 때 바로바로 제공해주는 서비스.
- 사용한 만큼만 지불하면 되는 pay-as-you-go pricing 적용.
- 정확하게 필요한 타입과 크기의 리소스를 지정하여 사용할 수 있다. 사이즈별 지정.
- 기존보다 간편하게 서버, 스토리지, 데이터베이스 등에 접근가능한 솔루션을 제공한다.
✔ 클라우드가 해결해주는 문제들
- Flexibility : 유동적으로 원하는 리소스의 타입과 사이즈를 쉽게 변경 가능하다.
- Cost-Efefctiveness: pay-as-you-go(사용한 만큼만 금액 지불)
- Scalability : 쉽게 새로운 리소스를 추가할 수 있으므로 확장하는데 용이하다.
- High-availability and fault-tolerance : 글로벌하게 확장되어있는 인프라.
- Agility : 뻐르게 개발하고 테스트하여 사용할 수 있는 소프트웨어 어플리케이션.
✔ 클라우드 서비스의 3가지 종류
참고하면 좋은 사이트: [WEB] 🌐 클라우드 컴퓨팅 개념 💯 총정리 (IaaS / SaaS / PaaS)
✅ AWS를 사용하는 이유
Cloud Computing의 장점을 그대로 혹은 그 이상 사용할 수 있게 지원해준다. AWS region 분포도가 높아서 서버 통신 속도도 올려준다.
- 기업의 기존 자원 및 아키텍처를 사용할 수 있게 지원하는 유연성
- 애플리케이션에 AWS 리소스를 신속하게 추가, 제거 할 수 있는 확장성 및 탄력성
- 보안 모범 사례에 따라 서비스를 구축하고, 서비스마다 적절한 보안 기능을 제공하는 보안성
- 아마존의 인프라적 안정성과 신뢰성(15년 이상의 경험을 활용)
✅ AWS의 Key Services
✔ EC2(Elastic Compute Cloud)
- 몇 분안에 구동 가능한 가상 서버.
- 제일 많이 사용하는 서비스.
- AWS 상에서 사용하는 Server. EC2 서버에 API를 배포하게 된다.
- EC2는 다양한 사양 옵션을 제공한다. t2.nano (CPU 1, 0.5 GB memory) 부터 x1.32xlarge (CPI 128, 1952 GB) 까지 다양하게 제공함으로 필요한 사양의 EC2 인스턴스(instance)를 선택해서 사용하면 된다 (물론 사양이 좋을 수록 비싸다).
✔ VPC(Virtual Private Cloud)
- AWS 네트워크 망안의 사용자 전용의 사설 네트워크 망.
- 많이 사용하는 서비스
✔ CloudFront
✔ Secuirty Group
- EC2 인스턴스에 대한 네트워크 트래픽을 제어하는 가상 방화벽 역활을 한다.
- 즉 security group 설정을 해줘야 EC2 인스턴스에 HTTP와 SSH 접속이 가능하다.
✔ RDS(Relational Database Service)
- 클라우드에서 데이터베이스 관리.
- AWS의 database 서비스
- RDS를 사용하면 사용자가 직접 서버를 생성해서 데이터 베이스를 설치하고 설정하고 관리 하지 않아도 된다.
- 사용자가 직접 데이터 베이스를 설치하고 운영하는 것보다 RDS를 사용하는것이 더 저렴해서 RDS를 사용 하지 않을 이유가 거의 없다.
✔ Load Balancer
- 로드발란서는 HTTP 요청들을 여러 서버에 분산할때 사용된다.
- HTTP 요청이 많을때는 서버 하나만으로 모두 처리 하기 힘들기 때문에 서버 수를 늘리는것이 일반적이다.
- 그럼으로 여러 서버를 실행하고 로드발런서가 HTTP 요청들을 서버들에 분산 해주는 형태로 시스템이 구성된다.
✔ Route 53
- AWS의 DNS 서비스.
- API 시스템을 실제 도메인과 연결 시키주는 기능을 제공한다.
✔ S3(Simple Storage Service)
- 파일, 사진, 동영상 등 정적인 데이터를 업로드 및 공유
- 데이터베이스에 저장하면 용량이 커지고 속도가 떨어지는 문제 해결.
- 파일을 쉽게 저장할 수 있는 공간을 제공하는 서비스.
- 파일을 저장 할 수 있을 뿐만이 아니라 파일마다 고유 주소를 부여해주기 때문에 S3에 저장한 파일을 웹상에서 쉽게 읽어들일수 있다.
- 주로 사이트상의 이미지들을 저장하고 사이트에서 읽어들여 렌더링 해주는데 사용한다.
✔ ELB(Elastic Load Balancing)
- 서버로 들어오는 트래픽을 골고루 여러개의 머신으로 전달.
- 트래픽이 한 곳에 몰리는 것을 방지해서 골고루 나눠줌.