오늘은 AWS 강의를 들었습니다. B2B 서비스를 제공한다. 또한, 크래프톤에서 워크플로우에서 어떤식으로 해결해나갈지 알려주는 팀이다.

네트워크 부분 (AWS VPC)
AWS 글로벌 인프라
리전: 데이터 센터를 클러스터링하는 물리적 위치
가용영역: AWS 리전 내 중복 전력
→ 가용영역이 여러개가 모여서 리전이 된다.
PoP: 세계적으로 분산된 450개 이상의 PoP을 통해 데이터를 네트워크 엣지에서 제공하므로써 대기 시간 단축
AWS 리전 설계/디자인
AWS 리전은 고가용성, 높은 확장성 및 높은 내결함성을 위해 복수개의 가용영역(AZ)으로 구성된다.
AWS 리전확장
총 37개의 리전 및 신규 4개 리전 계획중
Amazon VPC
- 사용자가 정의한, 논리적으로 격리된 사상의 프라이빗 네트워크환경
- 가상 네트워크 제어 기능 (IP주소 범위, 서브네팅, 라우팅, 보안 그룹 등)
- CIDP블록으로 VPC 크기를 지정하여 생성
→ 간단한 구성만으로도 AWS의 확장 가능한 인프라를 기존 데이터 센터와 비슷하게 사용
Amazon VPC 아키텍쳐
아래의 서비스별로의 레벨을 잘알아야한다.

VPC 구성 절차

VPC IP 대역 정의
내부에서 사용하는 IP를 정하는 것이 좋다. IP 뒤에 프리픽스를 지정할 수 있다.

VPC 서브넷

라우팅 테이블 - 로컬 통신

라우팅 테이블 - 인터넷 통신
인터넷 게이트 웨이를 통한 통신
퍼블릭 서브넷과 프라이빗 서브넷
서브넷을 나눠서 관리가능하다.
프라이빗 서브넷의 인터넷 통신

DNS와 DHCP
DNS: 도메인을 발급하여 연결해준다.
DHCP: IP 주소를 자동으로 부여해준다.
Public IP
- 인터넷 통신을 위한 필요요건
- Public IP 할당 옵션으로 할당
- 고정 IP 필요 시 EIP 사용
엑세스 제어
VPC 액세스 제어: NACL과 보안그룹
VPC에서 액세스를 제어하는 2가지 방법
Network Access Control List (NACL)
- 서브넷 단위 방화벽
- 상태 비저장 (Stateless)
- Allow, Deny 설정 가능
보안그룹
- 인스턴스 (ENI) 단위 방화벽
- 상태 저장 (Stateful)
- Allow 만 설정 가능
VPC 액세스 제어: NACL과 보안그룹
NACL 설정
- Inbound, Outbound 별도 설정
- Inbound에서 허락된 트래픽의 응답도 Outbound 규칙 내 명시적 Allow가 있어야만 리턴

보안그룹 설정
- Inbound로 허용된 트래픽의 Outbound는 자동 허용
- 다른 보안그룹을 참조하여 Source로 지정 가능
운영환경을 위한 VPC 디자인
- 원하는 수준의 가용성을 달성하기 위한 중복 구성 (최소 2+ 가용영역)
- 적절한 크기의 VPC 대역 확보 및 주소범위 중복 고려
- 여분의 IP 대역 확보 (가용영역 추가, 서브넷 분리 등)
- 모든 리전 동일 대역을 쓰는 Default VPC 보다는 Custom VPC 활용(중복대역 방지)
- 보안성을 위해 인터넷 통신을 의도하지 않은 환경은 프라이빗 서브넷으로 분리
- 프라이빗 서브넷 아웃바운드 통신용 NAT 게이트웨이 활용
- NACL과 보안그룹으로 VPC 내 자원 액세스 제어
VPC Endpoint
관리형 서비스로의 통신이다.
Amazon EC2 서버
Amazon EC2 개요
서버 구성 요소
서버를 구성하기 위해서는 하드웨어(CPU, Memory, Storge), 네트워크(라우터, 스위치, 연결), OS(리눅스, 윈도우), 보안 (Firewall, IPS*)
→ 서비스 초기에 서버를 위해 이걸 구성하기 쉽지 않다.
왜 EC2인가?
- 여러 국가에 서버를 구성해야 할 때..?
- 초기 서버 소량 구성 후 추후 확장을 검토할 때
EC2란?
- EC2는 전세계적 AWS 리전의 물리적 서버에 호스트 됩니다.
- EC2 인스턴스는 클라우드에서 안전하고 크기 조정 가능한 컴퓨팅 용량 제공.
- 수요 변화에 따라 컴퓨팅 용량을 추가하거나 제거.
Amazon EC2 특징
- Linux | Windows | Mac
- Arm 및 x86 아키텍처
- 범용 및 특정 워크로드 최적화
- 베어 메탈, 디스크, 네트워킹 기능
- Packaged | Custom | Community AMI
- 다양한 구매 옵션: 온디맨드 인스턴스, 스팟 인스턴스, 예약 인스턴스 (RI), 절감형 플랜 (Savings Plans), 전용 호스트
EC2의 호스트 가상화
AWS 글로벌 리전에 위치한 물리적 서버로 호스트서버, 하이퍼바이저를 통해 가상화를 지원한다.

Amazon EC2 운영체제
- Windows Server 2012/2012 R2/2016/2019/2022
- Amazon Linux
- Debian
- SUSE
- CentOS
- Red Hat Enterprise Linux (RHEL)
- Ubuntu
- Mac (M1 Mac 인스턴스 포함)
- 더 많은 운영 체제를 보려면 AWS Marketplace를 방문해주세요.
Amazon Machine Image (AMI)
- 인스턴스 시작에 필요한 정보 제공
- 동일한 구성으로 한 AMI에서 여러 인스턴스 시작
- AMI는 다음을 포함합니다.
- 1개 이상의 Amazon Elastic Block Store (Amazon EBS) 스냅샷 또는 루트 볼륨에 대한 템플릿(운영 체제, 애플리케이션)
- AMI를 사용하여 인스턴스를 시작할 수 있는 AWS 계정을 제어하는 시작 권한
- 인스턴스에 연결할 볼륨을 지정하는 블록 디바이스 매핑
AMI를 통한 EC2 생성하기

나만의 AMI 생성하기 (Custom AMI)
- 기본 AMI로 인스턴스 생성
- 변경 및 구성 후, 사용자 정의 AMI 작성
- 사용자 정의 AMI를 사용하여 필요한 인스턴스들 생성
Amazon Machine Image (AMI) 지정
AWS Console, AWS Marketplace에서 사용
Amazon EC2 인스턴스 스토어
- 블록 수준 임시 스토리지
- 인스턴스 수명 기간 동안만 지속
- 물리적으로 연결된 디스크
- Snapshot 기능 미 지원
- SSD 또는 NVMe 지원
Amazon Elastic Block Store (Amazon EBS)
- 블록 수준 영구 스토리지
- 인스턴스 수명에 관계없이 지속
- API를 이용하여 생성, 연결, 수정
- 워크로드에 따라 스토리지 선택
- io1/io2 볼륨을 최대 16개의 Nitro 기반 인스턴스에 연결
- 볼륨 암호화 지원
- 스냅샷 지원 : 특정 시점 백업
- 필요에따라 동적인 증설도 가능
Amazon EC2 인스턴스 수명 주기
- 실행중 (Running)
• 인스턴스 동작 중 상태
• 과금 발생
• 정지/종료/리붓 명령으로 상태 전이 가능
- 정지됨 (Stopped)
• 중지된 상태
• EBS 볼륨을 루트로 사용하는 인스턴스만 가능
• 과금 안 됨
• 시작/종료 명령으로 상태 전이 가능
- 종료됨 (Terminated)
• 인스턴스가 완전히 제거된 상태
• 시작이나 정지 불가능
• 과금 안 됨

Amazon EC2 인스턴스 유형
인스턴스 유형

Amazon EC2 인스턴스 선택
인스턴스 명명 규칙
인스턴스 패밀리, 인스턴스 세대, 추가 기능, 인스턴스 크기로 이루어져 있다. 오히려 세대가 높아질수록 가격이 싸진다.

인스턴스 추가 기능
인스턴스는 하나 이상의 추가 기능을 가질 수 있다.

인스턴스 크기
크기가 분할을 해서 사용하는게 바용에서 이득이 있다. 사용하는 환경이나 매트릭을 고려하여 크기를 정해야한다.

컴퓨팅 관련 서비스
Elastic Load Balancing (ELB)
- 네트워크 트래픽 분산을 통한 애플리케이션 확장성 개선
- 여러 가용 영역을 기반으로 고가용성 제공
- 트래픽에 따라 자동 조정
- 트래픽을 받는 대상
Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스
- 종류
- Application Load Balancer
- Network Load Balancer
- Gateway Load Balancer
ELB 종류
시간상 생략
Amazon EC2 Auto Scaling
변화하는 수요에 동적으로 대응하고 비용을 최적화
사용자 데이터 (User data)
일반적인 구성 작업을 자동으로 수명
쉘스크립트 방식이 있다.
대화형으로 실행되지 않으므로 사용자의 입력이 필요한 명령은 포함할 수 없음
Amazon EC2 연결을 위한 자격 증명
- EC2 키 페어
Linux – 최초 호스트 로그인을 위한 SSH 키 페어
Windows – Windows 관리자 암호 검색
- 표준 SSH RSA 키 페어
퍼블릭 키, 프라이빗 키
AWS에는 프라이빗 키가 보관되지 않음
- 일반 OS에 대한 초기 액세스를 제공하기 위한
AWS 접근 방식.
안전하고 개인화됨.
비제네릭 (NIST, PCI DSS)
Amazon EC2 Instance Connect
- Secure Shell(SSH)을 사용하여 인스턴스에 연결
- 인스턴스에 대한 SSH 액세스 제어 및 SSH 키 공유/관리가 필요 없음
- AWS CloudTrail 로깅을 통해 연결 요청을 감시
Amazon CloudWatch - 모니터링
- AWS 리소스 및 애플리케이션의
모니터링 및 관찰 기능
- 로그, 지표 및 이벤트 형태로
모니터링 및 운영 데이터를 수집
- AWS 리소스, 애플리케이션 및
서비스에 대한 통합 뷰
- 이상 동작 감지
- 경보 설정
- 로그와 지표 시각화
VPC 설정하고 EC2 만들기 (식사전)
연결이 안될때 확인할 것. → 보안그룹, VPC, 서버가 퍼블릭 IP가 있는가
오토스케일링 (자동 증설)
서버에 단기간에 유저가 몰리게 되면 서버가 뻗거나 요청들을 처리하지 못한다. 우리가 추석이나 수강신청 때 처럼 비슷하다. 그렇기 때문에 유저 요청량이 많아지면 자동으로 인스턴스를 이미지를 통해 증설하므로써 서버가 버벅이고, 처리를 못하는 증상을 해소한다.
오토스케일링을 하려면 런치 템플릿을 무조건 해줘야한다.
로드밸런스
로드밸란스를 통해 외부 인터넷에서 EC2로 직접 들어가지 못하게 만들어준다. 또한 EC2가 수용할 수 있는 상태인 EC2에 접속을 할 수 있게끔 밸런스를 맞추는 역할도 한다.
스토리지
스토리지 기초
스토리지 타입
-
블록 스토리지: 데이터를 일정 크기의 블록으로 나누어 저장, 호스트에서 파일 시스템을 생성 (SAN)
-
파일 스토리지: 디렉토리 구조로 파일을 저장, 스토리지단에서 파일 시스템을 생성(NAS)
-
오브젝트 스토리지: REST 기반의 API 호출을 통해 데이터에 접근 HTTP 프로토콜
→ 오늘은 S3버킷이랑 EBS를 주로 설명할 것이다.
오브젝트 스토리지
Amazon S3 (Simple Storage Service)
- 무제한에 가까운 스토리지 용량과 오브젝트
- Amazon S3 기반의 데이터 레이크 구축
- S3 Intelligent-Tiering을 통한 자동화된 비용 절감
- S3 Glacier Deep Archive를 사용해 비용 효율적인 스토리지 저장
원하는 오브젝트 스토리지 클래스

관리 기능 및 데이터 복제
현재 중요하지 않아서 생략
Amazon S3 Storage Lens
Amazon S3 Storage Lens는 AWS Organization에서 사용중인 오브젝트 스토리지에 대한 가시성을 제공하는 분석 솔루션입니다.
활동 지표와 대화형 대시보드를 통해 스토리지를 이해, 분석 및 최적화하여 Organization, 특정 Account, Region, Bucket 등에 대한 데이터를 집계할 수 있습니다.
블록 스토리지
현재 중요하지 않아서 생략
데이터 베이스
종류
• Amazon RDS
• Amazon Aurora
• Amazon DynamoDB
• Amazon ElastiCache
AWS의 데이터 베이스를 쓰는이유?
- 자체 관리 Database 및 분석 서비스의 어려움
- 완전 관리형 DB 서비스로 이동
- AWS의 완전 관리형 DB 서비스
- 완전 관리형 DB로 마이그레이션
- 비용 절감 / 성능개선 / 관리 오버 헤드 감소
- 목적에 맞는 DB 사용
Amazon RDS
RDS의 이점
- Multi-AZ 배포: 다른 AZ에 Stanby DB 인스턴스를 운영하여 단일 위치 장애로부터 어플리케이션 보호
- 읽기전용 복제본: 읽기 트래픽을 분담하여 Primary DB 인스턴스의 워크로드 부하 완화
- DB 인스턴스 특정 시점 복구(PITR)를 위한 자동 백업
- 다양한 AWS 서비스와 통합
- 성능 개선 도우미 지원 (DB 성능 정보 표시)
Amazon Aurora
클라우드용으로 구축된 MySQL 및 PostgreSQL 호환 관계형
Architecture
- Database용으로 설계된 Log기반의 분산형 스토리지
- Storage Volume은 3개의 AZ에 걸쳐 수백 개 이상의 Storage Node로 스트라이핑
- 총 6개의 복제본(3개의 AZ에 AZ당2개)을 저장하여 AZ+1 장애 상황에도 데이터베이스 복구 가능
- 스토리지 공유 구조로 복제 작업 부하 감소
Global Database
빠른 재해 복구를 위해 읽기
전용 복제본을 Primary로 승격
데이터를 고객 Application과
가장 가까운 지역에 위치
간편한 마이그레이션을 위해
Primary로 승격
Amazon DynamoDB

SQL과 NoSQL

→ 즉 확장시 적합한 데이터 설계 필요
구성
테이블을 생성하고 데이터를 일력하면, 적합하게 배정

DynamoDB는 상황에 따라 테이블을 짠다.

Amazon ElastiCache
캐싱이 필요한 이유?
- FAST: Memory is at least 50x faster than SSDs
- PREDICTABLE: No disk seek time for memory
→ 캐싱을 통해 저장소까지 가는 시가을 줄이고 메모리에서 데이터를 바로 가져와서 응답성을 빠르게 한다.
위의 배운 내용들 실습!
16:12부터 아마존 Q Developer
Q Developer

Q Developer CLI를 통해 프로젝트를 CI/CD를 해줄 수 있다.
아마존 관련된 서비스도 알아서 처리해준다.
더욱이 좋은 것은 CLI 자체가 터미널에서 처리하기 때문에 작업 전반의 것들을 자동으로 처리할 수 있습니다.
특히, 네트워크 관련된 내용이 복잡하고 세팅하기 힘든데, 해당 Q Developer CLI을 통해 작성한다면 자동으로 세팅을 해준다. 심지어 오류까지 찾아서 바꿔준다.
다양한 OS에서 사용 가능하다.
보안 취약점 스캐닝, 단계별 코드 리뷰 가능. 그리고 부족하거나 부족한 부분은 코드를 고쳐준다.
19달러로 모든 기능을 토큰 제한없이 쓸수 있다. 프리티어라고 성능제한은 없지만 토큰 제한이 있다.
Ai Chat Bot
할 수 있는 것들은 다음과 같다.
Q CLI MCP
MCP
표쥰화된 오픈 프로토콜로 LLM과 외부 다양한 데이터 소스와 도구를 표준화된 방식으로 연결한다.
위의 기능들을 실습해 봤는데, 그냥 Ai와 프롬포트로 개발부터 배포까지 모든 과정을 자동으로 해주니까 신선한 충격이었다… 과연 개발자의 의미가 있는가싶고, 미래에는 아이디어 좋은 사람이 지배하지 않을까 싶다.
질문
- VPC 돈이 나간적 있는데, 어떤 경우인가?
→ 퍼블릭 ip, dto비용 등이 나간 것으로 예상이 된다.
비용 청구는 Post exploer로 확인가능하다.
- 예산 관리 부분(프리티어)에서 예산 설정을 해도 오버해서 나가는데, 막는 방법은 없는가?
→ 임계치 받으면 리소스 차단하는 것도 좋다. 큐로 구현하면 되지 않을까?
- IAM을 통해서 팀원들에게 권한을 나눠줄 수 있는것인가?
→ IAM 역할 전환? 유저 개별로 권한을 나눠줄 수있다.
세션 매니저로 로그처럼 접근정보확인 가능하다. 퍼블릭 아이피으로 확인
세션 매니저는 IAM Role로 확인