프리온보딩 백엔드 AWS 챌린지 1차

Sung-min Seo·2022년 12월 27일
0

공부

목록 보기
1/2

주제: AWS 인프라 요소


1. AWS VPC

VPN에 대하여

VPN은 Virtual Private Network란 뜻으로 한국어로는 "가상 사설망"이라고 한다. VPN은 같은 네트워크 상에서 필요에 따라 구역을 나누어 A구역과 B구역을 따로 사용할 수 있게 해주는 기능을 말한다.

예를 들자면 회사에서 A팀과 B팀의 업무를 나눠야 할때 물리적으로 네트워크를 나누기 위해서는 기기를 추가 한다던지 선을 연장한다던지 많은 일이 추가로 필요하게 된다. 이때 VPN을 사용하여 같은 네트워크 상에서 구역을 나누어 서로 간섭하지 않는 네트워크를 사용할 수 있는 가상의 망을 사용 할 수 있게된다.

VPC란?

Virtual Private Cloud의 약자로 가상 사설 클라우드를 뜻한다. 가상 네트워크 서비스로 퍼블릭 네트워크와 프라이빗 네트워크를 분리하고 모니터링 할 수 있도록 해주는 서비스이다.

기본적으로 AWS에서는 아마존 클라우드 내에서 private ip를 사용하는 일종의 가상 사설 네트워크망을 만들어줄 수 있게 해주는 서비스이다. VPN에서와 같이 사용자의 계정에 따라 아마존 클라우드에서 사용자에게 독립된 개인 공간을 지정해주어 이 공간 안에서 사용자는 원하는 서비스를 개인적으로 구축 할 수 있게 된다. 기본적으로 많이 사용하는 EC2 인스턴스들과, RDS 혹은 S3같은 서비스들이 VPC라는 테두리 안에서 구축되게 된다.


2. 클라우드의 종류

IaaS, PaaS, SaaS, Faas

클라우드의 종류는 이렇게 나뉜다.

  1. IaaS(Infrastructure-as-a-Service)
    • Iaas 같은 경우 인프라스트럭쳐를 서비스로서 제공하게 된다. 기본적으로 서버, 네트워크, 스토리지같은 물리적인 자원을 제공해주며 이러한 물리적 자산을 완벽하게 가상화하여 제공하기 때문에 서버 사양의 변경 등 물리적 자산의 수정이 필요한 경우 빠른 대응이 가능하다. 다만 고객이 OS, 미들웨어, 어플리케이션 및 데이터와 같은 자원들을 관리해야 한다는 점이 있다. 예시로는 AWS의 EC2가 있다.
  2. PaaS(Platform-as-a-Service)
    • PaaS는 고객에게 소프트웨어 작성을 위한 플랫폼을 가상화하여 제공하고 관리한다. 보통 가상화된 플랫폼이 제공되면 고객은 인프라스트럭쳐와 운영체제에 대한 관리 없이 소프트웨어 개발에만 집중할 수 있다. 예시로는 AWS Elastic Beanstalk 또는 도커가 있다.
  3. SaaS(Software-as-a-Service)
    • SaaS는 고객을 대신하여 소프트웨어와 데이터를 제공하고 관리한다. 패키지 또는 On-premise 방식인 기존의 소프트웨어 전달 방식과 다르게 SaaS는 개별 컴퓨터에 응용 프로그램을 다운로드하고 설치할 필요가 없다. 기본적으로 모든 잠재적인 기술적 문제를 관리하기 때문에 고객은 유지 보수 및 자원을 간소화하면서 비즈니스에 집중할 수 있다. 예시로는 Office 365같은 응용 로그램이 있다.
  4. FaaS(Function-as-a-Service)
    • FaaS는 마이크로 서비스의 일환으로 어플리캐이션의 개발환경을 제공하며 보통 서버리스 컴퓨팅이라고 칭하기도 한다. 기본적으로 PaaS와 비슷한점이 많지만, PaaS와는 다르게 컴퓨팅을 수요에 따라 동적으로 제공하는 런타임 서비스를 제공하며 데이터 프로세싱을 제공하고 데이터를 저장하지 않는다. PaaS 같은 경우 전체 어플리케이션을 배포하여 서버에서 24시간 실행이 되고 있다면 FaaS 같은 경우는 함수를 배포하며 특정 이벤트가 발생할시 실행되고 작업을 마치면 종료된다는 점이 있다.

3. AWS API Gateway

MSA란?

전통적으로 기업의 어플리케이션 구현은 모놀리틱 아키텍처를 기반으로 구성되었다. 이러한 방식은 아키텍처 자체는 간단하다는 점이 있지만, 특정 서비스에 변경이 있을 경우 전체적인 구조를 변경해야 하는 경우도 있으며 서비스를 중단 해야 할 경우도 생기는 불편함이 있었다.

그래서 최근에는 MSA(MicroService Architecture), 마이크로 서비스 아키텍쳐에 대한 기업의 관심이 높아지는 것으로 알고있다. 기본적으로 MSA는 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다. 이렇게 된다면 각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없기 때문에 독립된 배포를 하게 되며, 필요에 따라 다른 서비스를 간섭하지 않고 부분적인 서비스의 확장이 가능하게 된다.

하지만 각 서비스가 독립적으로 개발/배포를 진행하기 때문에 API통신을 통해 가져와야 하는 다른 컴포넌트의 데이터를 URL이 각기 다르기 때문에 가져오는데 어려움이 생기거나 트랜젝션으로 묶을 수 없는 문제가 생기게 된다.

API Gateway란?

이러한 문제점을 해결하기 위해 사용되는 서비스가 API Gateway 이다. 서비스로 전달되는 모든 API요청의 관문 역할을 하며 시스템의 아키텍쳐를 내부로 숨기고 외부의 요청에 대한 응답만을 적절한 형태로 응답해주는 기능을 해준다. 이러한 기능을 보통 라우팅이라고 하며 이렇게 되면 클라이언트의 내부 구조가 모놀리틱인지 마이크로소프트인지 관계 없이 서로 약속된 형태로써 API 요청을 주고 받을 수 있게 된다.

API Gateway는 실제 백엔드 서비스 또는 데이터와 접속하고 API 호출에 대한 정책, 인증 및 일반 엑세스 제어를 적용하여 중요한 데이터를 보호하는 트래픽 관리자 기능을 해준다.


4. AWS ELB

로드 밸런서

보통 서버에 가해지는 부하가 커지게 될때 두가지 방법을 고려하게 되는데 서버의 인스턴스 성능을 올려주는 스케일 업(Scale -up)이라는 방법과 서버를 여러대로 나눠서 트래픽을 처리하는 스케일 아웃(Scale-out)이라는 방법이 있다. 로드 밸런서는 이 중 스케일 아웃에 속하며 서버에 가해지는 트래픽을 여러대의 서버에게 균등하게 분산시켜주는 역할을 해준다.

Elastic Load Balancer (ELB)

ELB는 AWS의 로드 밸런서 서비스이다. 기본적으로 AWS에서 제공하는 VPC 서비스에 탑재되는 기능이며 사용자의 요청을 받아 VPC내의 리소스에 적용되어 부하를 적절히 분산시켜 줄수 있다. 뿐만 아니라 ELB 서비스는 단순히 부하 분산 서비를 넘어 HTTP Header를 조작하여 전달 대상을 정하거나 보안 기능을 강화하고 CloudFront와 연동하여 반응 속도를 올리며 부하 분산 대상 리소스에 대한 지속적인 헬스체크로 다운된 서버를 제외해주는 기능을 가지고 있다.

AWS에서 제공하는 ELB의 경우 총 4가지의 종류로 나뉘게 된다.

  1. Classic Load Balancer (CLB)
    • CLB는 가장 오래된 로드밸런서로 ELB의 가장 초기 형태이다. L4 계층과 L7 계층을 지원하며 TCP, SSL, HTTP, HTTPS 등 다양한 프로토콜을 수용할수 있고 Sticky Session의 기능도 제공한다. CLB는 하나의 URL만 가질수 있으며 현재는 쓰이지 않는 추세라고 한다.
  2. Application Load Balancer (ALB)
    • ALB는 L7계층에서 작동하며 HTTP/HTTPS 트래픽을 처리하는데에 최적화 되어있다. SSL/TSL 암호 및 프로토콜이 항상 사용되도록 하여 어플리케이션의 보안을 단순화 하고 개선한다. ALB는 Path-based routing을 지원하여 연결된 인스턴스들은 여러개의 URL과 path를 가진다는 장점이 있다.
  3. Network Load Balancer (NLB)
    • NLB는 L4계층에서 작동하며 TCP/UDP 서버를 구축할때 최적화된 성능을 보여준다. ALB와 CLB와는 다르게 로드 밸런서에 대한 고정 IP주소를 지원하며 이로인해 갑작스럽고 변동성이 큰 트래픽 패턴을 처리하는데 최적화 되어있다.
  4. Gateway Load Balancer (GWLB)
    • GWLB는 타사 가상 어플라이언스를 쉽게 배포, 확장 및 관리할 수 있다는 장점이 있다. 여러 가상 어플라이언스에 트래픽을 분산하는 동시에 수요에 따라 확장 또는 축소할 수 있는 하나의 게이트 웨이를 제공한다. 이렇게 되면 네트워크의 잠재적 실패 지점이 줄어들고 가용성이 높아진다고 한다.

5. AWS S3

Simple Storage Service (S3)

S3는 AWS에서 지원하는 파일 서버의 역할을 해주는 서비스이다. 가장 오래된 서비스중 하나로 뛰어난 내구성과 가용성을 자랑하며 정적파일들을 용이하게 관리하도록 해준다.

특징으로는 단순한 웹 서비스 인터페이스를 사용하여 언제 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있으며 엑세스 감사 및 관리 기능을 제공하여 S3에서 생성된 버킷 및 객체를 프라이빗하게 관리할 수 있도록 해 높은 신뢰성을 보여준다.

또한 다른 AWS 서비스와의 호환성이 커 함께 사용될 수 있으며 클라우드 어클리케이션, 컨텐츠 배포, 백업 및 아카이빙, 재해 복구 및 빅데이터 분석을 포함한 다양한 사례에 적용 될 수 있다는 장점이 있다.

다만 매달 5GB의 프리티어 용량을 넘어가게 되는 사용량에 대해서는 요금이 청구되며 해당 리전 외에 대한 데이터 송수신 시에는 요금이 추가된다.


6. AWS CloudFront

Content Delivery Network (CDN)

CDN이란 전세계 어느 곳이던지 지리적인 한계에서 벗어나 콘텐츠 사용자에게 전송할 수 있는 기술을 의미한다. 사용자에게 더욱 빠른 콘텐츠 제공을 위해 CDN은 여러 지리적 위치에 접속 지점(POP) 또는 엣지 서버 그룹을 설정하는 방식으로 작동한다. 지리적으로 분산된 이 네트워크는 캐싱, 동적 가속 및 엣지 로직계산의 원리를 기반으로 작동된다.

  1. 캐싱
    • 캐싱은 더 빠른 데이터 액세스를 위해 동일한 데이터의 여러 복사본을 저장하는 프로세스이다. 보통 캐싱이라고 하면 여러가지 의미가 있겠지만 CDN에서의 캐싱은 네트워크의 여러 서버에 정적 웹 사이트 콘텐츠를 저장하는 프로세스를 의미한다.
    • 사용자가 정적 웹 콘텐츠를 요청 할 경우 오리진 서버에 저장된 정적 웹 콘텐츠는 사용자에게 보내지고 또한 지리적으로 가장 가까이에 있는 CDN POP서버에 복사본을 보내게 된다. 그 후 다시 요청이 있을 경우 오리진 서버가 아닌, 캐싱 서버에서 요청에 대한 응답을 하게된다.
  2. 동적 가속
    • 사용자가 동적인 웹 콘텐츠를 요청할 경우 캐싱이 제대로 작동하지 않기 때문에 이러한 경우 모든 동적 요청에 대해 오리진 서버가 응답을 해야 한다. 이럴 경우 CDN 서버는 자신과 오리진 서버간의 연결 프로세스 자체를 최적화해서 지연시간을 최소화한다.
  3. 엣지 로직 계산
    • 클라이언트와 서버 간의 통신을 단순화 하는 논리적 계산을 수행하도록 CDN 엣지 서버를 프로그래밍 할 수 있다.

AWS CloudFront

AWS CloudFront는 모든 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 아마존에서 지원하는 CDN 서비스이다. 아마존에서 제공하는 엣지 로케이션(또는 서버)를 통해 요청자에게 가장 가까운 지리적 위치에 있는 POP서버를 이용하여 지연시간을 최소화 시켜준다.


7. AWS Secrets Manager / Parameter Store

AWS Secrets Manager

AWS Secrets Manager란 AWS에서 제공하는 비밀 값 관리 서비스이다. Secrets Manager를 사용하면 보안 암호를 어플리케이션에 직접 포함하지 않아도 되기 때문에 코드를 볼 수 있는 제 3자에게 보안 암호를 누출하거나 손상될 일이 사라지게 된다. 또한 지정한 일자에 따라 자동으로 보안 암호를 교체하도록 구성할 수 있다.

Parameter Store

Parameter Store 또한 AWS에서 제공하는 비밀 값 관리 서비스이다. 구성 데이터 관리 및 암호 관리를 위한 안전한 계층적 스토리지를 제공하며, 암호, 데이터베이스 문자열, 라이선스 코드와 같은 데이터를 파라미터 값(String, StringList, SecureString)으로 저장할 수 있다.

AWS Secrets Manager VS Parameter Store

AWS에서 제공하는 두 서비스는 비슷하지만 엄연히 다른 서비스이므로 다른 점도 있다.
Secrets Manager에서는 AWS CLI 또는 SDK를 통해 임의의 암호를 생성하고 무작위로 생성된 암호값을 참조 받아 이용하는 서비스 구성에서 참조할 수 있다. 또한 암호 값을 교체하는 기능도 지원하며 다른 계정간 암호를 공유 할수 있다는 점도 있다.

보통 DB 정보와 같은 민감한 정보는 암호화가 지원이 되는 Secretes Manager에 저장을 하며 간단한 정보 같은 경우 Parameter Store를 사용하여 저장하게 된다. 다만 Secrets Manager는 Parameter Store와는 달리 유료로 서비스를 제공하고 있다.

profile
매일 문제 3개 이상 풀기!!

0개의 댓글