[AWS] AWS 구조와 서비스 정리
기초 지식
aws 소개
- 클라우드 서비스 중 하나
- 컴퓨팅, DB, Storage, 모바일, IoT, 기계 학습 등의 서비스를 제공
- 개방형 클라우드(GCP, AWS, Microsoft Azure, Cloudlink)
- AWSKRUG - https://awskrug.github.io
클라우드 용어 정리
- 온프레미스
- 사용자가 관리하는 시설 내에 서버 등의 기기를 설치해 운용하는 환경
- 기기 설치/운용하는 시설을 데이터 센터
- 클라우드
- 클라우드 서비스 제공자가 기기, 가상 서버, 응용프로그램을 사용자에게 제공하여 이용료를 받음
- 클라우드 컴퓨팅이 정식 명칭이며 사용자에겐 보이지 않지만 중앙의 서버 컴퓨팅 자원을 활용하여 서비스를 받을 수 있게 함
- 서비스 제공자가 모든 하드웨어를 관리하므로 사용자는 하드웨어 장애를 신경쓰지 않아도 됨
- 가상화
- 사용자가 서버를 임대할 때, 사용하고 싶은 사양으로 서버를 선택하여 가상화 기술을 이용해 가상의 서버를 생성하여 사용함
- 가상 서버는 하나, 혹은 클러스터링 된 물리 서버 내에 만들어짐
- 한 개의 물리서버 내에서 가상 서버를 여러개 구축해 대여하는 방식
- 물리 서버의 CPU나 메모리와 같은 컴퓨터 자원을 일부 독점하여 물리적으로 독립된 서버와 같이 동작함
- 서버 뿐 아닌 스토리지, 네트워크 장비 등도 가상화기술로 여러 기기처럼 취급할 수 있음
- 서버리스 (↔ 프로비저닝)
- 서버가 없다, 즉 서비스가 이용될 때에만 서버를 가동하는 방식
- 서버를 사용하는 만큼 요금이 발생하여 비용을 낮출 수 있다는 장점이 있음
- 개방형 vs 폐쇄형 클라우드
- 혼합형 클라우드도 있음
- 폐쇄형 - 기업 내부의 비밀 유지를 위해 기업 내부에 구축하는 형태
- 온프레미스
- 시설 내부에 클라우드 컨테이너를 두고 전용 클라우드 환경을 구축해서 사용함
BUT
vpc에서도 보안 확보가 가능하며, 초기 투자비용이 커서 현재는 개방형을 더 많이 사용함
- 온프레미스
- 개방형 - 모든 사람이 쓸 수 있도록 공개된 형태
- AWS에는 (개방형)
- 전용 기기를 사용자에게 할당하는 베어 메탈 서비스
- 가상으로 사용자의 점유 공간을 제공하는 VPC 서비스
- AWS에는 (개방형)
- 서비스 형태에 따른 클라우드 분류
- SaaS
- 응용 프로그램을 서비스로 제공하는 형태
- zoom, gmail, office365 등
- PaaS
- platform as a service
- 응용프로그램을 만들기 위한 기능을 서비스로 제공
- 클라우드 서비스 제공자는 OS와 미들웨어까지 관리하며 필수 기능만 사용자에게 제공
- RDS, DynamoDB, Lambda 등
- 유지보수는 aws에서 담당하며 사용자는 제공 범위 안에서 기능 이용가능
- IaaS
- infrastructure as a service
- 응용프로그램을 만들기 위한 기능을 서비스로 제공
- 서버 및 네트워크 기능만 제공하며 설정과 관리는 사용자가
- EC2, VPC, EBS 등
- SaaS
AWS 특징 정리
- aws & 사용자 책임 공유 - 공동 책임 모델
- 고객 클라우드 내 보안에 대한 책임
- 고객 데이터
- 플랫폼, 응용 프로그램, ID 및 접근 관리
- 운영 체제, 네트워크, 방화벽 구성
- 클라우드 측 데이터 암호화, 데이터 무결성 인증
- 서버 측 암호화
- 네트워크 트래픽 보호 - 암호화, 무결성, 신원
- AWS 클라우드 내 보안에 대한 책임
- 소프트웨어
- 컴퓨터, 스토리지, DB, 네트워크
- 하드웨어/aws 글로벌 인프라스트럭쳐
- 리전, 가용영역, 엣지 로케이션
- 책임 범위는 이용 서비스에 따라 다르고 사용자는 자신의 책임 범위만 관리하면 되므로 업무 부하가 줄어듬
- 고객 클라우드 내 보안에 대한 책임
- 글로벌 시스템의 구축
- 지역별로 리전이라는 단위로 분리되어 있음
- 리전에는 가용 영역이 여러 개 존재하며 리전의 각 AZ는 다른 위치에 존재 → 데이터 센터 장애와 같은 대규모 장애가 발생하여도 다른 AZ에서 서비스를 제공할 수 있음
- 사용량만큼만 지불
- 종량 과금제
- 요금 * 이용시간이라는 형태로 이용료가 발생함
- 온프레미스는 하드웨어 구매 등의 초기 비용이 발생하나 그런 단점 없음
- EC2를 예시로 사용 인스턴스의 종류와 스토리지에 따라 금액이 달라질 수 있음
- 서버 자원과 수를 설정에서 변경 가능
- CPU, 메모리 양이나 수를 쉽게 변경할 수 있으며 구축된 서비스의 사용자가 증가했을 때 유연한 대응 가능
- 장애를 고려한 설계
- 장애는 언제라도 발생할 수 있다는 전제로 AWS 설계
- 장애가 발생하더라도 언제든 서비스를 지속하여 제공할 수 있어야 한다 > Design for Failure
- 이를 가용성이라고 함
- 설계 모범이 되는 프레임워크
- Well-Architected라는 모범 사례를 모아서 사용자가 효율적인 인프라를 구축하도록 도움
- 운영 우수성, 보안, 안정성, 성능 효율성, 비용 최적화, 지속 가능성의 6가지 원칙을 중심으로 함
사용 시작
로그인에 관하여
루트 사용자가 아닌 보안을 위해서 IAM 계정을 만들고, 적절한 권한을 부여해 사용할 것 루트 사용자는 계정의 구성 변경, 계약 해지나 변경 등이 가능하므로 유출되지 않도록 할 것
AWS 서비스 사용하는 법 3가지
- 웹 브라우저에서 관리 콘솔을 이용하여 조작
- 명령줄 도구 - AWS CLI를 이용하여 조작
- 파워셸에서도 사용할 수 있음
- 웹 브라우저에서 작업하는 것보다 어렵지만, 같은 명령을 실행했을 때 항상 같은 결과 = 재현성 높음
- 자주 사용하는 명령 저장 후 바로 사용할 수 있음 = 자동화하여 실수 줄이기
- 프로그램 방식으로 aws 조작
- 각 개발 언어에 AWS SDK를 설치해야 한다
- JS, Ruby, Python, Java, PHP, Go, .NET, C++에서 사용할 수 있음
AWS 이용료 시각화
- 종량 과금제로 청구되기 때문에 AWS Billing and cost management에서 관리해줘야 함
- cost explorer로 현황을 파악하고 방침을 수립하기
- Budgets에서 예산을 설정하고 이용량을 감시하기
리전
- 세계 각지에 리전이 위치하기 때문에
- 통신 지연을 줄일 수 있음
- 법적 요구 사항으로 특정 국가에 시스템을 구축해야 한다면 특정 리전을 사용하여 요건 충족 가능
- 재난이 발생하여 특정 리전에서 사용 못할 경우, 다른 리전에서 시스템을 가동 가능
- 리전을 분리하여 자원을 관리할 수 있음
가용 영역
- 각 리전에 있는 복수의 가용 영역은 하나 이상의 데이터 센터로 구성되어 모두 독립적임
- 거리상 떨어져 있고, 네트워크나 전력원도 독립적으로 작동하므로 AZ간 간섭 없음
- 각 AZ는 고속의 네트워크로 연결되어 있으며 암호화된 통신을 사용함
- AZ 이름 + AZ ID로 구성되어 있어 문제가 발생하면 이름이 아닌 ID를 확인해야 함
🍐 여러 AZ에 자원을 배치하여 시스템 가용성을 높일 수 있음 → 상용 시스템 운영이나 중요 데이터 저장과 같은 경우에는 여러 AZ에서 실행하도록 자원 생성
시스템 개발 기본 용어
- 인프라
- 정보 시스템의 기반이 되는 서버, 스토리지, 기기, 네트워크 케이블 등의 하드웨어나 OS, 미들웨어같은 일부 소프트웨어를 이르는 말
- 시스템 개발에서 실제 처리를 수행하는 응용 프로그램의 반대 의미
- 코드
- 소스코드, 작성된 프로그램의 코드
- 빌드
- 소스 코드를 컴퓨터가 실행 가능한 형식으로 변환하는 것
- 언어에 따라 빌드 없이 실행 가능한 것도 있음
- 배포
- 응용 프로그램을 대상 컴퓨터에 배치하고 실행 가능하도록 준비하는 것
- 기본값
- 초기 설정, 아무것도 설정하지 않았을때 무슨 동작을 한다 = 디폴트 동작
- 스케일, 스케일링
- 컴퓨터 자원의 양을 변경하는 것
- 서버 한 대의 사양을 높이거나 낮추는 것 = 스케일 업 / 다운
- 서버 자체의 수를 늘리거나 줄이는 것 = 스케일 아웃 / 인
컴퓨팅 서비스
서버
- 네트워크에서 데이터나 서비스를 제공하는 컴퓨터
-
그 서비스를 이용하는 프로그램 = 클라이언트 ex) 웹 사이트와 웹 브라우저(클라이언트)
- 클라이언트는 서버에 데이터를 요청, 서버는 요청에 대한 응답을 반환
- 프로그램 및 사람의 조작이 필요 없는 클라이언트도 존재함
웹 서버와 DB 서버, 메일 서버
- 웹 서버
- 웹 페이지 자체의 구조를 만드는 HTML, 디자인 정의의 CSS, 이미지 등의 정보가 저장됨
- 웹 사이트를 구성하는 데 필요한 데이터를 저장하고 시스템을 제어하는 프로그램을 설치한 서버
- 데이터베이스 서버
- 시스템이 취급하는 데이터를 통합 관리하는 데이터베이스 관리 시스템이 설치된 서버
- 데이터 보존, 갱신, 백업 등의 관리 기능과 데이터 검색을 실시하는 데이터 처리 기능
- 클라이언트에서 특정 데이터의 참조, 수정, 삭제 등의 데이터 처리 요구를 요청으로 받아들이며 실행 결과를 응답으로 반환함
- RDS, DynamoDB등이 이에 해당함
- 메일 서버
- SMTP 프로토콜, POP3 프로토콜을 이용하여 메일을 송/수신, 전달하는 서버
- SMTP 서버
- 메일을 보내는 역할을 하는 서버
- 메일 클라이언트 프로그램에서 메일을 작성하여 서버에 전송 요청
- 서버로 요청 이후 메일의 수신처를 DNS 서버에서 확인하여 특정, 메일 전송
- EC2에 메일 서버 구축 가능, Amazon SES라는 서비스도 존재함
웹 서버 작동 방식
- 클라이언트 - 서버 통신 과정에서 HTTP, HTTPS라는 프로토콜로 데이터를 주고 받음
- 클라이언트가 웹사이트에 필요한 데이터를 요청, 요청에 따라 서버가 데이터를 반환
- HTML, CSS, 서버 스크립트(PHP, Ruby), 클라이언트 스크립트(JS), 이미지 등을 처리함
- 서버 스크립트 - 웹 서버에서 처리하는 프로그램, 요청에 따른 결과를 클라이언트에 반환
- 항상 웹 서버에서 처리, 결과는 클라이언트 환경에 의존 X
- 클라이언트 스크립트 - 클라이언트가 처리하여 서버 부하 X
- 클라이언트 환경에 따라 처리 속도와 결과가 다름
- 서버 스크립트 - 웹 서버에서 처리하는 프로그램, 요청에 따른 결과를 클라이언트에 반환
서버 OS
- 주로 리눅스나 윈도우
- 리눅스
- 무료, 오픈소스이므로 다양한 기업과 단체가 개발한 OS를 리눅스 배포판으로 제공하고 있음
Red hat Enterprise Linux(RHEL)
레드햇이 개발한 상용 리눅스 배포판, 대규모 시스템의 서버에서 많이 이용 패키지 관리 시스템으로 RPM 사용CentOS
RHEL의 복제 OS, 상용 부분을 제거한 리눅스 배포판Debian GNU/Linux
Debian Project에서 개발한 리눅스 배포판, 패키지 관리 프로그램 dev 사용Ubuntu Linux
Debian 기반 리눅스 배포판, 개인 용도로 많이 이용 - 윈도우
- OS 자체 라이선스 및 서버 이용 라이선스(CAL)을 구매해야 함
- GUI로 조작, 데스크톱 윈도우와 사용법이 비슷함 (↔ 리눅스는 CUI, Character User Interface)
- 쾌적함을 위해 고사양 필요(↔ 리눅스는 상대적 낮은 사양 ok)
- Active Directory, SQL 서버와 같은 MS 소프트웨어와 연계성 우수
서버 가상화
- 1대의 기기 = 1개의 OS가 정석인데, 가상화 소프트웨어를 이용하여 1대의 기기에서 여러개의 OS를 사용할 수 있음
- 하드웨어를 나눠 독립된 가상의 서버를 만듬, 자원 할당을 고려해야 함
- Amazon Elastic Compute Cloud ⇒ Amazon EC2
- 대규모 서버에서 가상화를 수행함
- 사용 용도에 따라 OS, Cpu, 메모리 크기를 선택하여 가상 서버인 인스턴스를 생성할 수 있음
댓글