[KT AIVLE] DX트랙 클라우드 서비스(14주차) 복습(클라우드 서비스: 인프라 자동화 서비스, 클라우드 아키텍처 설계, 정리)

728x90

클라우드 서비스 복습

인프라 자동화 서비스

  • 수작업을 통한 인프라 배포는 시간도 많이 걸리고 관리하기도 어려워서 인프라 자동화 도구들이 만들어짐

 

코드형인프라(Infrastructure as Code, IaC)

  • 코드를 통해 인프라를 배포하고 관리하는 방식

 

템플릿

  • 인프라 사양을 담은 코드 형태

 

IaC 활용 시 이점

  • 일관성: 동일한 인프라 환경을 일관되고 쉽게 구성할 수 있고 수동 구성 중에 자주 발생하는 오류나 구성 변경을 제거
  • 효율성: 반복잡업을 자동화하고 운영자 한 명이 동일한 코드를 사용하여 100대 또는 1000대의 시스템을 구축하고 관리가능
  • 속도: 템플릿 기반으로 시스템을 빠르게 구성하고 유지 보수 및 관리가 간소화되어 DevOps를 통해 신규 소프트웨어를 훨씬 더 신속하게 출시가능, DR 기능으로도 반드시 필요
  • 위험 감소: IaC는 또한 다른 소프트웨어 소스 코드 파일과 마찬가지로 구성 파일이 소스 통제를 받을 수 있도록 버전 제어를 지원

 

교차스택

  • 하나의 탬플릿에서 만든 아웃풋을 다른 템플릿을 만들기 위해 참조하는 것

 

중첩스택

  • 내가 만들고싶어하는 인프라 환경이 있는데 하나의 템플릿 내에 다른 템플릿을 삽입하는 것

 

클라우드 아키텍처 설계

아키텍처(Architecture)

  • 비즈니스 요구사항을 만족하는 시스템을 구축기 위해 필요한 전체 시스템에 대한 구조를 최적화하여 정의한 설계 문서
  • 인프라, 소프트웨어, 데이터, 솔루션 아키텍처

 

클라우드 아키텍처 설계 핵심 요소

 

Cacoo를 이용한 아키텍처 설계

  • Cacoo: 다이어그램, 구성도, 플로우차트 등을 간편하게 그릴 수 있는 웹 도구

 

클라우드 서비스 복습 + 총정리

VPC 생성

  1. 리전 정의
  2. IP주소 범위 지정
  3. 가용영역 구성(고가용성을 위해 최소 2개)
  4. 서브넷 생성
    • 기본적으로 생성되는 서브넷은 보안을 위한 프라이빗 서브넷: 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이며 수분내에 가상머신 실행이 가능하고 민첩한 실행, 변경 및 확장 용이, 비용 최적화 옵션

가상머신 생성

  1. AMI(OS+APP) 지정
  2. 인스턴스 유형 설정(t2.micro): CPU, 메모리를 얼마나 사용할 건지 지정
  3. 디스크 용량 설정
  4. N/W 설정
  5. User Data 등록(쉘 스크립트)
  6. Key 페어 생성
  7. SSH, 22포트
  8. 퍼블릭 키(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