728x90
클라우드 서비스 복습
인프라 자동화 서비스
- 수작업을 통한 인프라 배포는 시간도 많이 걸리고 관리하기도 어려워서 인프라 자동화 도구들이 만들어짐
코드형인프라(Infrastructure as Code, IaC)
- 코드를 통해 인프라를 배포하고 관리하는 방식
템플릿
- 인프라 사양을 담은 코드 형태
IaC 활용 시 이점
- 일관성: 동일한 인프라 환경을 일관되고 쉽게 구성할 수 있고 수동 구성 중에 자주 발생하는 오류나 구성 변경을 제거
- 효율성: 반복잡업을 자동화하고 운영자 한 명이 동일한 코드를 사용하여 100대 또는 1000대의 시스템을 구축하고 관리가능
- 속도: 템플릿 기반으로 시스템을 빠르게 구성하고 유지 보수 및 관리가 간소화되어 DevOps를 통해 신규 소프트웨어를 훨씬 더 신속하게 출시가능, DR 기능으로도 반드시 필요
- 위험 감소: IaC는 또한 다른 소프트웨어 소스 코드 파일과 마찬가지로 구성 파일이 소스 통제를 받을 수 있도록 버전 제어를 지원
교차스택
- 하나의 탬플릿에서 만든 아웃풋을 다른 템플릿을 만들기 위해 참조하는 것
중첩스택
- 내가 만들고싶어하는 인프라 환경이 있는데 하나의 템플릿 내에 다른 템플릿을 삽입하는 것
클라우드 아키텍처 설계
아키텍처(Architecture)
- 비즈니스 요구사항을 만족하는 시스템을 구축기 위해 필요한 전체 시스템에 대한 구조를 최적화하여 정의한 설계 문서
- 인프라, 소프트웨어, 데이터, 솔루션 아키텍처 등
클라우드 아키텍처 설계 핵심 요소
Cacoo를 이용한 아키텍처 설계
- Cacoo: 다이어그램, 구성도, 플로우차트 등을 간편하게 그릴 수 있는 웹 도구
클라우드 서비스 복습 + 총정리
VPC 생성
- 리전 정의
- IP주소 범위 지정
- 가용영역 구성(고가용성을 위해 최소 2개)
- 서브넷 생성
- 기본적으로 생성되는 서브넷은 보안을 위한 프라이빗 서브넷: VPC 내부만 통신
- 필요에 따라 인터넷의 접근, 인바운드, 아웃바운드를 허용해야하는 경우 퍼블릭 서브넷으로 전환
- 인터넷 게이트 웨이를 생성해서 VPC와 연결
- 퍼블릭 IP를 갖도록 설정
- 라우팅 테이블에 인터넷 게이트웨이로 빠져나가는 경로 (0.0.0.0/0 igw) 추가
- 퍼블릭 서브넷: 최소 1개, 티어의 개수에 따라 프라이빗 서브넷의 개수는 달라짐
NAT Gateway: 외부망과의 통신을 위해 프라이빗 IP를 퍼블릭 IP로 변환하게 도와주는 것
- NAT Gateway 생성 후 EIP를 설정
- 프라이빗 서브넷에 있는 라우팅 테이블에서 NAT로 트래픽을 보낼 수 있도록 경로(0.0.0.0.0/NGW) 추가
- NAT 하나만 있어도 괜찮지만 장애 발생 시 대처가 어려우므로 2개를 설치해 고가용성 확보
NACL: 보안을 위해 서브넷 경계에 설치
- 서브넷 경계에 들어오는 모든 트래픽에 대한 인바운드, 아웃바운드 트래픽을 제한할 수 있음
- 상태비저장(Stateless) , 아웃바운드 규칙 반드시 설정
보안그룹: 리소스 단위의 보안을 위해 설정
- 상태저장(Stateful), 아웃바운드 따로 설정하지 않아도 허용
가상머신(Virtual Machine)
- 서버가 처리할 수 있는 모든 컴퓨팅 리소스
- AWS에서는 EC2이며 수분내에 가상머신 실행이 가능하고 민첩한 실행, 변경 및 확장 용이, 비용 최적화 옵션 등
가상머신 생성
- AMI(OS+APP) 지정
- 인스턴스 유형 설정(t2.micro): CPU, 메모리를 얼마나 사용할 건지 지정
- 디스크 용량 설정
- N/W 설정
- User Data 등록(쉘 스크립트)
- Key 페어 생성
- SSH, 22포트
- 퍼블릭 키(AWS 보관), 프라이빗키(Local에 다운)
클라우드 스토리지
블록 스토리지(AWS_EBS)
- 균일한 블록단위로 나누어 저장
- 현업에서는 디스크의 IOPS 성능이 높아야 할 때
- 트랜잭션 처리 DB서버용으로 쓰임
- 동일 가용영역 내 EC2와 연결
파일 스토리지(AWS_EFS)
- 디렉토리 파일구조
- 공유파일시스템 사용
- NAS
- 리전단위의 서비스로 가용영역마다 가상머신과 App이 설정되어 있음
오브젝트 스토리지(AWS_S3)
- 오브젝트: 데이터와 메타데이터를한꺼번에 저장하는 것
- 장점
- 오브젝트에 URL 부여하기 때문에 Rest API를 활용해 접근 가능
- 무한대의 확장 가능
- 미디어서비스,정적웹사이트 호스팅, 데이터 백업용, 데이터 장기보관(아카이브), 데이터레이크에도 쓰임
- 버킷(저장용량 제한X)에 객체저장
- 권한이 없는 사람의 접근을 막기 위해 액세스 정책, 암호화 필요
- Default: 소유주만 가능
- Make public: 모든 사람 접근 가능
데이터베이스
- 온프레미스와 DB의 다른점은 관리형 DB서비스라는 점
- DB는 디스크에 데이터를 저장
데이터베이스의 종류
RDB(AWS_RDS)
- 행과 열로 되어있는 테이블 구조
- 데이터 구조가 고정되어 있어 데이터 중복에 대한 문제 X
- 수직적 확장이기 때문에 기본적으로 Fail-over 구성이 필요
NoSQL DB(AWS_DynamoDB)
- 다양한 데이터 유형을 사용할 수 있음
- 스키마가 유연(동적)하기 때문에 데이터 유형을 쉽게 추가
- 수평적 확장이기 때문에 Fail-over 불필요(장애 발생 시 다른 DB에 영향 X)
탄력성 / 고가용성 아키텍처
- ASG, Auto Scaling Group
- 탄력성 보장
- 시작 템플릿 생성
- 그룹(min, desired, max)
- 조정정책(Scaling Policy)
- 동적조정(Dynamic Scaling): 임계치를 설정하고 그 임계치를 초과할 때 조정이 들어가는 것
- 예약조정(Sheduled Scaling): 특정일정을 예약해 놓는 것(리소스 추가, 축소 등)
- 예측조정(Predictive Scaling): AI 기반의 조정 방식으로 규칙을 수동으로 조정할 필요가 없음
Load Balancing
- 고가용성 보장
- 부하 분산
- 헬스체크
- 웹티어
- 로드 밸런서의 유형
- ALB: 컨텐츠, 가중치 기반 라우팅 지원, L7계층(HTTP, HTTPS트래픽) 부하분산
- NLB: L4(TCP/UDP) 형태의 부하분산
- GWLB: L3(트래픽검사/필터링) 부하분산
Loosely Coupled 아키텍처(결합해제 아키텍처)
- 웹, 앱, DB 티어간 영향력을 분리해서 어느 한개의 티어가 영향을 받아도 다른 티어에는 영향을 주지 않도록 함
동기식(Synchronous)처리 요청 - 서버처리 - 응답 - 다음 요청처리 |
비동기식(Asynchronous)cjfl 요청 - (서버처리 진행 중) 다음 요청 처리 |
- 클라이언트에서 요청을 보냈을 때 서버가 처리 후 응답이 돌아와야 다음 동작을 수행(그동안 클라이언트는 대기) - 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 함 |
- 서버에 요청만 보내 놓고 응답이 오는 것과 상관없이 클라이언트는 대기 없이 다음 동작을 수행 - 처리시간이 걸리더라도 그동안 다른 작업을 할수 있으므로 자원을 효율적으로 사용할 수 있음 |
SQS(메세지 큐)
- 큐에 요청을 쌓아놓고 올아가면서 가져감 버퍼나 비동기식 처리를 위해 사용
SNS(앱 알림 서비스)
- 푸시 기반의 다대다 메시징을 위한 주제(Topics)를 제공, 팬아웃(Fan-Out)방식
SQS, SNS 결합 시: 비동기식 병렬 처리 가능
728x90