클라우드 컴퓨팅이란
등장배경
서버-클라이언트 아키텍쳐가 기본
- 서버-클라이언트 아키텍처는 클라이언트와 서버가 통신하는 방식
- 서버는 데이터와 서비스를 제공하고 클라이언트는 사용자 인터페이스를 제공. 클라이언트는 사용자가 입력한 정보를 서버로 전송하고, 서버는 필요한 작업을 수행한 후 클라이언트에 결과를 반환.
- 분산 컴퓨팅 환경에서 가장 일반적으로 사용.
서버가 늘어남에 따라 필수적인 데이터 센터
- 어플리케이션의 서버를 호스팅하는 실제 시설
- 운영에 필요한 인프라
- 컴퓨팅 시스템을 위한 하드웨어, 네트워킹 장비, 전원공급장치, 전기 시스템,백업 발전기, 환경 제어장치(냉각 장치, 팬 등) 등
- 운영에 필요한 많은 비용
- 건물 유지비용, 서버 구매비용, 셋업, 유지보수, 수요에 상관없이 보유
- 느린 구축시간
- 유저의 수요에 빠르기 대처하기 힘듦
- 장애 기기를 교체하는 시간 느림
클라우드 컴퓨팅
- IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불
- 온디맨드 : 수요에 반응해서 서비스를 제공하는 것
- 장점
- 자본 비용을 가변 비용으로 대체 : 데이터 센터 구축 비용, 서버 구매 비용 → 운영비
- 규모의 경제로 얻게 되는 이점 : AWS의 서버 대량 구매로 구매비용 절감 → 고객에게 낙수효과
- 용량 추정 불필요
- 속도 및 민첩성 개선
- 몇 번의 클릭으로 리소스 확보 가능
- 개발 비용 절감
- 데이터 센터 운영 및 유지관리에 비용 투자 불필요 : 비즈니스에 집중 가능
- 빠른 확장성
클라우드 컴퓨팅 모델
클라우드 컴퓨팅 모델
구성 요소 : App, OS, Computing, Storage (HDD/SSD), Network (이하 A O C S N)
1.IaaS (Infrastructure as a Service)
- C/S/N 제공
- OS를 직접 설치하고 필요한 소프트웨어를 개발해서 사용
- 가상의 컴퓨터를 하나 임대하는 상황
- 대표적으로 EC2 가 있음
- 비유 - 라면을 먹기 위해 ‘주방’을 빌림. ‘레시피’, ’요리재료’, ’주방기기’는 알아서
2.PaaS (Platform as a Service)
- O(+Runtime)/C/S/N 제공
- 바로 코드만 올려서 돌릴 수 있도록 구성
- Firebase, Google App Engine 등
- 비유 - 라면을 먹기 위해 ‘주방’, ‘요리재료’, ‘주방기기’를 빌림. ‘레시피’만 알아서
3.SaaS (Software as a Service)
- A/O/C/S/N 전부 제공
- 서비스 자체를 제공
- 다른 세팅 없이 서비스만 제공
- Gmail, DropBox, Slack, Google Docs 등
- 비유 - 라면을 먹기 위해 버튼만 누름.
클라우드 배포 모델
공개형 클라우드
-
모든 부분이 클라우드에서 실행
-
낮은 비용
-
높은 확장성
폐쇄형 클라우드
-
모든 부분을 사설 데이터센터에서 실행
-
높은 수준의 커스터마이징 가능
-
초기 비용, 유지보수 비용이 비쌈
-
높은 보안
하이브리드 클라우드
클라우드 관련 개념 및 용어
고가용성(High Availability)
- 장애 상황을 해결하고 서비스를 지속할 수 있는 능력
- 장애 상황의 준비가 되어있는 아키텍쳐가 필요
장애 내구성 or 내결함성 (Fault Tolerance)
- 장애 상황에서도 서비스를 지속할 수 있는 능력
- 장애 상황에 영향을 받지 않는 아키텍쳐가 필요
재해 복구 (disaster recovery)
확장성 (scalable)
- 쉽고 빠르게 규모를 늘릴 수 있는 능력
- 수요에 따라 컴퓨팅 파워 혹은 용량 확장
탄력성 (Elastic)
- 수요에 따라 컴퓨팅 파워/용량을 확장하거나 축소할 수 있는 능력
- 불필요한 자원을 사용하지 않고 최적화에 필수적인 능력
결합 (Coupling)
- Tight Coupling
- 다른 주체에 대해서 단단하게 얽힌 상태
- 주체끼리 높은 의존성을 가지고 있어 변경이 쉽지 않음
- Lose Coupling
- 다른 요소에 대해 얽히지 않고 연결되어 있는 상태
- 주체끼리 낮은 의존성을 가지고 있어 쉽게 변경할 수 있고 유연
- 클라우드 환경에 좋은 상태
AWS의 구성
AWS는 여러 리전으로 구성되어 있고, 리전 안에는 ‘2개 이상의 가용영역’, ‘엣지 로케이션’으로 구성
Region
- AWS의 서비스가 제공되는 서버의 물리적 위치
- 전 세계에 흩어져 있으며 큰 구분(동남아, 유럽, 북미 등)으로 묶여 있음
- 각 리전에는 고유 코드가 부여됨
- 서울 : ap-northeast-2
- 버지니아 북부 : us-east-1
- 리전별 가능한 서비스가 다름
리전 선택할 때 고려할 점
-
지연 속도 : 서비스하기 가까운 지역 선택
-
법률 (데이터, 서비스 제공 관련)
-
사용 가능한 AWS 서비스
US-East-1 리전
가용 영역 (Availability Zone)
- 리전의 하부 단위 : 하나의 리전은 반드시 2개 이상의 가용영역으로 구성
- AZ라고 줄여 부름
가용 영역의 구성
-
하나 이상의 데이터 센터로 구성
-
AZ간 연결은 매우 빠른 전용 네트워크로 연결
-
반드시 물리적으로 일정 거리 이상 떨어져 있음
-
다만 모든 AZ는 서로 100km 이내의 거리에 위치 : 여러 재해에 대한 대비 및 보안
가용 영역의 위치
- 각 계정별로 AZ의 코드와 실제 위치는 다름 : 보안 및 한 AZ로 몰림을 방지
- ex. 계정1의 AZ-A ≠ 계정2의 AZ-A
Edge Location
- AWS 의 CloudFront(CDN)등의 여러 서비스들을 가장 빠른 속도로 제공(캐싱)하기 위한 거점
- Global Accelerator와 유저를 연결하는 거점
- 전 세계에 여러 장소에 흩어져 있음
서비스의 종류
AWS 서비스가 제공되는 지역의 기반에 따라 글로벌 서비스, 리전 서비스로 분류
글로벌 서비스
- 데이터 및 서비스르 전 세계의 모든 인프라가 공유
- IAM, Route53, WAF 서비스
리전 서비스
- 특정 리전을 기반으로 데이터 및 서비스를 제공
- 대부분의 서비스
- S3 서비스는 전 세계에서 동일하게 사용할 수 있으나 모든 리전에서 사용 가능한 리전서비스임
ARN (Amazon Resource Names)
- AWS의 리소스에 부여되는 고유 아이디
- 형식 : arn:[partition]:[service]:[region]:[account_id]:[resource_type]/resource_name/(qualifier)
AWS 계정 생성 및 초기 설정
루트사용자
- 생성한 계정의 모든 권한을 가지고 있는 유일한 유저
- 생성시 만든 이메일 주소로 로그인
- 탈취 당할 시 복구가 매우 힘듬 : 사용을 자제하고 MFA 설정 필요
- 루트 사용자는 관리용으로만 이용 권장 : 계정 설정 변경, 빌링 등
IAM
- IAM (Identity and Access Management)을 통해 생성한 사용자
- 만들 때 주어진 아이디로 로그인
- 기본 권한 없음 : 따로 권한을 부여해야 함
- 관리자 IAM User, 개발자 IAM User, 디자이너 IAM User, 회계팀 IAM User
- 권한 부여 시 루트 사용자와 같이 모든 권한을 가질 수 있지만 빌링 관련 권한은 루트 사용자가 허용해야 함
- 꼭 사람이 아닌 어플리케이션 등의 가상의 주체를 대표할 수도 있음
admin 관련 IAM 계정 설정
- 루트 사용자에서 IAM 콘솔 이동
- MFA 설정 후 왼쪽 사용자 → 사용자 생성
- MFA 설정 시 QR 코드 이미지 반드시 private하게 저장 → 복구 시 필요
- 권한 옵션 : 직접 정책 연결 → AdministratorAccess
- 태그 커스텀 설정
- 사용자 → admin 계정에서 MFA 설정
- QR 코드 이미지 필요 X → 해킹 등의 이슈 발생 시 삭제 후 root계정에서 생성하면 됨
Biling 알람
- 콘솔에 AWS budgets 검색 후 콘솔에서 이동
- 예산 작성