[책 공부] AWS 잘하는 개발자 되기
책 소개

AWS에서 제공하는 서비스들이 어떤 것들이 있는지, 왜 생기게 되었는지, 어떻게 설정하면 좋은지에 대한 내용을 배울 수 있습니다. 만약 AWS에 익숙하다면 굳이 이 책을 보지 않아도 되지만 사용해보지 않은 경우에는 한번쯤 볼만한 책입니다. (하지만 요새는 AI가..)
IAM
AWS에서 권한 관리는 주로 AWS IAM을 활용하여 이루어지낟. 예외로 데이터 관리와 보안에 아마존 S3와 백업과 복원 등을 지원하는 AWS 백업의 백업 볼트(Backup Vault)와 같은 서비스를 이용해 자체적인 엑세스 정책을 설정하여 관리할 수도 있다.
IAM(Identity and Access Management)은 AWS 계정 내에서 각 사용자, 그룹 또는 리소스에 대한 권한을 중앙 집중적으로 관리한다. 이를 통해 AWS에 대한 엑세스를 제어하고 각 사용자에게 필요한 작업만 수행할 수 있는 권한을 부여한다. 예를들면, EC2 인스턴스에 접근할 수 있는 권한, RDS에 접근할 수 있는 권한 같은 것들이 있다.
- IAM 사용자
- IAM 그룹
- IAM 정책
- IAM 역할
EC2
아마존 EC2(AWS Elastic Compute Cloud)는 AWS에서 제공하는 가상 클라우드 서버를 의미한다. 아마존 EC2를 이용하면 단 몇분으로 서버를 구축하며, 물리서버 구축과 환경 구축의 어려움을 해소할 수 있다.
- AMI(Amazon Machine Image): EC2 인스턴스를 시작하는 템플릿
- 인스턴스 유형: CPU, 메모리와 같은 하드웨어의 조합
- 스토리지 옵션: 인스턴스 스토어 볼륨, EBS 볼륨으로 구분되며, EC2 인스턴스의 저장 공간
- 보안그룹: EC2 인스턴스에 대한 네트워크 트래픽을 제어하는 가상 방화벽
- 키 페어: EC2 인스턴스 접속에 사용되는 키
퍼블릭 서브넷에 생성된 EC2 인스턴스는 외부에서 접근할 수 있어야 하므로 퍼블릭 IP주소와 프라이빗 IP주소 모두 할당된다. 그러나 퍼블릭 IP주소는 EC2 인스턴스를 재부팅하거나 재시작할 때마다 주소가 변경될 수 있는데 이는 AWS에서 자원을 효율적으로 관리하기 위한 동적 IP 할당 방식이다. 이 동적 IP주소를 변하지 않고 고정시킬 수 있는데, 이를 탄력적 IP주소라 한다.
RDS
아마존 RDS(Amazon Relational Database Service)는 AWS에서 관계형 데이터베이스를 제공하는 서비스를 말한다. 데이터베이스의 백업, 소프트웨어 패치, 장애 감지 및 복구를 자동으로 관리해주며, 사용자는 애플리케이션만 집중할 수 있도록 도와준다.
- 엔진 유형: MySQL, MariaDB, PostgreSQL …
- 인스턴스 클래스:
- 스탠다드: 범용 DB
- 메모리 최적화: 메모리 소비가 높은 애플리케이션에 최적화된 DB
- 버스터블: 최대 CPU 사용량까지 버스트 가능한 DB
- 스토리지 유형:
- 범용 SSD: 비용, 성능면에서 밸런스가 잡혀 있으며, 폭 넓게 사용 가능
- 프로비저닝된 IOPS(io1): 낮은 대기 시간과 높은 I/O 성능이 요구되는 DB에 적합
- 마그네틱: 데이터의 액세스 빈도가 낮은 상황에서 사용되지만 구세대 유형이기 때문에 권장X
- DB 그룹:
- 서브넷 그룹: 서브넷의 집합
- 파라미터 그룹: 시간(time_zone), 문자집합(characterset) 등을 관리
- 옵션 그룹: 스냅샷 관리
S3
S3는 객체 스토리지 서비스이다. 객체 스토리지는 객체라고 하는 일정한 형태나 형식, 틀이 정해지지 않은 비정형 형식의 데이터를 저장하고 관리하는 스토리지를 의미한다. 빚정형 데이터를 저장하기 때문에 어떠한 파일 형식이든 상관없이 저장할 수 있다.
아마존 S3는 버킷(Bucket)이라는 스토리에 객체를 저장한다. 버킷은 전 리전에 걸쳐 고유한 이름을 가지며, 다른 리전에서 같은 이름의 버킷을 사용할 수 없다. 객체 또한 버킷 내부에서 고유한 키를 가지며, 버킷 내부에서 같은 이름의 키 객체를 저장하면 덮어쓰기가 일어난다.
라우트53
AWS에서는 도메인 관리를 위한 서비스로 아마존 라우트53을 제공한다. 이 서비스를 사용해 도메인을 구매하고, AWS에서 구축한 웹 서버와 연결해 효율적으로 트래픽을 전달할 수 있다. 또한 라우트53는 회사내부에서 사용할 수 있는 비공개 도메인과 인터넷에서 사용할 수 있는 공용 도메인을 지정할 수 있다.
CDN
아마존 클라우드프론트는 사용자에게 동영상, 이미지와 같은 정적 컨텐츠를 사용자에게 빠르고 안전하게 배포하는 CDN(Content Delivery Network) 서비스이다. 사용자는 에지 로케이션에서 컨텐츠를 빠른 속도로 안전하게 전송받을 수 있으며, 이 아마존 클라우드프론트는 AWS에서 제공하는 다양한 서비스와 연동할 수 있다.
프론트엔드 서비스
Amplify
AWS에서는 앰플리파이(Amplify)라는 웹 애플리케이션 배포용 프론트 서비스를 제공하고 있으며, 이 서비스를 사용하면 AWS 클라우드에 쉽고 빠르게 웹 애플리케이션을 배포할 수 있다. 개발자는 프론트엔드 개발을 가속화할 수 있으며, 서버리스 아키텍처로 인한 비용 절감과 웹 애플리케이션 개발을 단순화할 수 있다. 또한 다른 클라우드 기능과의 간편한 연동할 수 있다.
코그니토
아마존 코그니토는 AWS에서 사용자 관리와 인증 기능을 제공하는 서비스이다. 코그니토를 사용하면 별도로 사용자를 관리할 프로그램을 구성할 필요없이 AWS에서 사용자를 관리할 수 있다. 또한 사용자는 웹 애플리케이션에 로그인할 시, 아마존 코그니토를 사용해 사용자의 인증 정보를 검증할 수 있으므로, 개발자는 보안 및 사용자 관리에 대한 부담을 줄이고 효율적으로 웹 애플리케이션을 구축할 수 있다.
백엔드 서비스
부하 분산 서비스, 탄력적 로드 밸런서
AWS에서는 부하 분산 서비스인 탄력적 로드 밸런서를 제공하고 있다. 탄력적 로드 밸런서를 사용한다면, 사용자가 급증하더라도 적절하게 트래픽을 부하 분산 할 수 있으며, 안정적으로 서버를 운영할 수 있다. 탄력적 로드 밸런서는 웹 서버 앞에 배치되며, 사용자는 이 탄력적 로드 밸런서를 경유해 웹사이트로 접근하게 된다.
사용자가 인터넷을 통해 웹사이트에 접근할 수 있도록 탄력적 로드 밸런서는 퍼블릭 서브넷에 배치된다. 탄력적 로드 밸런서에서는 이 서비스에 접근할 수 있는 DNS 이름을 별도로 제공하고 있으며, 아마존 라우트53와 연동해 별도록 도메인을 할당할 수 있다.
아마존 EC2 오토스케일링
오토스케일링은 스케일업과 스케일아웃 그리고 스케일인을 구현하는데 사용된다. 이를 활용해 클라우드 서버를 최적화할 수 있다. EC2 오토스케일링은 오토스케일링 그룹을 생성해 EC2 인스턴스에 대한 스케일업, 스케일아웃, 스케일인을 구현할 수 있으며, 오토스케일링 그룹을 생성하려면 기본적인 EC2 인스턴스의 구성을 설정할 필요가 있다. 이 EC2 구성을 설정하려면 사용하는 것이 시작 템플릿이다.
ECS
아마존 ECS(Elastic Container Service)는 AWS에서 도커 컨테이너를 배포하고 운영, 관리하는 완전 관리형 컨테이너 서비스이다. ECS는 정적인 이미지를 보관하는 아마존 ECR(Elastic Container Registry) 서비스를 제공하고 있다. ECR에 푸시한 정적인 이미지를 동적인 이미지로 변환해 하나의 컨테이너로 사용하기 위해 ECS를 사용한다.
AWS 람다
AWS 람다는 AWS에서 제공하는 서버리스 서비스로 서버를 구축하지 않고도 작성한 코드를 실행할 수 있는 이벤트 구동형 프로그램 실행 환경이다. AWS 람다는 이벤트 기반 아키텍처를 기반으로 하며, 특정 이벤트가 발생하면 해당 이벤트를 처리하는 별도의 함수를 생성해 실행하는 서버리스 컴퓨팅 서비스이다.
클라우드워치
AWS에서 아마존 EC2, RDS와 같은 리소스를 실시간으로 감시하는 아맞존 클라우드워치 서비스를 제공한다. 클라우드워치는 실시간으로 모니터링을 수행하며, 로그, 메트릭, 이벤트를 통해 모니터링 및 운영 데이터를 수집한다. 이런 데이터는 대시보드를 통해 정보를 받아볼 수 있으며, 수집된 데이터를 바탕으로 향후 서비스 운영 방침을 결정하는데 도움을 준다.
WAF
AWS에서는 허용하지 않는 사용자의 접근을 차단하기 위해 보안 그룹을 제공하고 있다. 이런 보안 그룹은 EC2, RDS에서 설정할 수 있으며, 네트워크 계층과 전송 계층에서 효율적인 보호 기능을 제공한다. 반면에 사용자가 개발한 애플리케이션을 외부 공격으로부터 보호하려면 보안 그룹만으로는 부족하다. 이런 상황에 대비해 AWS는 AWS WAF를 제공하고 있다. 아마존 클라우드프론트, 애플리케이션 로드밸런서와 같은 서비스에 연결할 수 있는 서비스로 공격을 방어하는데 효과적인 서비스이다.
Comments