다시 이음

(2) AWS 코어 서비스로 간단한 웹 애플리케이션 직접 만들기 본문

참가 컨퍼런스 정리/AWS Builders Korea Program

(2) AWS 코어 서비스로 간단한 웹 애플리케이션 직접 만들기

Taeho(Damon) 2022. 6. 23. 11:18

오늘은 AWS Builders Korea Program의 두번째 실습 내용입니다.

 

이 과정을 통해서 EC2 인스턴스 < 서브넷 < 로드밸런서 < VPC 의 구조와 왜 이런 기본 구성을 가지게 되는지 기본적인 이해를 할 수 있었습니다.

 

출처 : AWS 자료

VPC(Virtual Private Cloud)란?

VPN(Virtual Private Network)을 먼저 알면 좋을 것 같아 VPN 설명부터 하겠습니다.

 

말그대로 가상사설망이라고 할 수 있으며 같은 회사의 같은 네트워크에서 보안상과 같은 이유로 네트워크를 분리하였을 때 같은 네트워크더라도 같은 논리적으로 다른 네트워크처럼 동작하는 것을 생각하면 됩니다.

 

VPC란 AWS 내부에서 논리적으로 격리된 네트워크 공간입니다. AWS와 같은 클라우드 서비스에선 수많은 인스턴스들이 물리적으로 동일한 네트워크나 장비에서 돌아가게 되는데, 이를 논리적으로 완전히 분리시켜준다고 할 수 있습니다.

 

VPN과 비슷하며 AWS의 VPC는 리전에 종속되고 클라우드를 위한 네트워크 구성이라는 점을 빼면, 논리적인 네트워크를 구성하는 개념이라는 점에서 동일합니다.

 

VPC는 AWS에서 같은 리전안에서만 실행이 가능합니다.

 

VPC의 목적은 다양할 수 있지만  일반적으로 보안을위해 AWS 리소스간 허용을 최소화하고 그룹별로 손쉽게 네트워크를 구성하기위해 많이 사용합니다.

 

 

서브넷 이란?

 

VPC안에 있는 개념으로 VPC를 나눌 수 있는 단위입니다. 각각의 서브넷은 가용 영역안에 존재합니다.

 

각 리전은 완전히 독립적입니다만 각 가용 영역은 기본적으로 서로 격리되어 있지만, 한 리전의 가용 영역들은 낮은 수준의 지연 시간을 가진 링크를 통해 연결되어 있습니다.

 

그러면 왜 서브넷을 나누는 것일까요?

 

그 이유는 고가용성을 확보하기 위해서는 다중 가용 영역에 서비스를 배포하는 것이 중요하기 때문입니다.

 

 

라우팅 테이블

 

라우팅 테이블(Routing table)이란 네트워크상의 특정 목적지까지의 거리와 가는 방법등을 명시하고 있는 테이블입니다.

라우팅 테이블에는 서브넷 또는 게이트 웨이의 네트워크 트래픽이 전송되는 위치를 결정하는데 사용되는 라우팅이라는 규칙 집합이 포함되어 있습니다.

 

라우터?
라우터란 둘 혹은 그 이상의 네트워크와 네트워크 간 데이터 전송을 위해 최적 경로를 설정해주며 데이터를 해당 경로를 따라 한 통신망에서 다른 통신망으로 통신할 수 있도록 도와주는 인터넷 접속 장비이다.

라우트테이블 확인

라우팅테이블은 가장 먼저 목적지의 주소가 10.0.0.0/16에 매칭되는지를 확인한 후 매칭되지 않는다면 igw-000으로 보냅니다.

 

 

게이트웨이

 

VPC와 인터넷을 연결해주는 하나의 관문입니다.

 

 

CIDR(Classless Inter-Domain Routing)

 

클래스 없는 도메인 간 라우팅 기법으로 최신의 IP 주소 할당 방법이다.

 

 

보안그룹(가상방화벽)

 

EC2 인스턴스 생성을 위해 필요하며, AWS 인스턴스에 대한 접근(Inbound)과 인스턴스로부터의 접근(Outbound)에 대한 패킷을 포트 번호로 제어하기 위한 설정입니다.

 

인바운드 : 인터넷을 포함한 외부 네트워크에서 EC2 인스턴스로 향하는 정책
아웃바운드 : EC2 인스턴스에서 인터넷을 포함한 외부 네트워크로 향하는 통신 정책

 

 

Amazon Elastic Compute Cloud(EC2)

 

EC2는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다.

 

  • 인스턴스: 가상 컴퓨팅 환경

 

AMI(Amazon Machine Image)

 

서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있습니다.

하나의 인스턴스를 먼저 구성한 뒤에 해당 인스턴스를 가지고 AMI를 만들어서 여러 인스턴스를 만들 수 있었습니다.

 

로드밸런서(Load balancer)

 

부하분산 또는 로드 밸런싱(load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미합니다.

 

AWS에서는 Elastic Load Balancing(ELB)를 통해 로드밸런서 기능을 제공하는 서비스입니다.

 

ELB(Elastic Load Balancing)는 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 자동으로 분산시킵니다.

 

로드밸런서 종류

 

 로드 밸런서는 몇 계층에서 분산작업을 수행하느냐에 따라 NLB(Network LoadBalancer)와 ALB(Application LoadBalancer), CLB(Classic LoadBalancer), GLB(Gateway Load Balancer) 로 나뉩니다.

 

  • Application Load Balancer
    • HTTP 및 HTTPS 트래픽을 사용하는 애플리케이션을 위한 유연한 기능이 필요한 경우 Application Load Balancer를 선택합니다. 요청 수준에 따라 작동하는 Application Load Balancer는 마이크로서비스 및 컨테이너를 비롯한 애플리케이션 아키텍처를 대상으로 하는 고급 라우팅 및 표시 기능을 제공합니다.
  • Network Load Balancer
    • 애플리케이션에 초고성능, 대규모 TLS 오프로딩, 중앙 집중화된 인증서 배포, UDP에 대한 지원 및 고정 IP 주소가 필요한 경우 Network Load Balancer를 선택합니다. 연결 수준에서 작동하는 Network Load Balancer는 안전하게 초당 수백만 개의 요청을 처리하면서도 극히 낮은 지연 시간을 유지할 수 있습니다.
  • Gateway Load Balancer
    • GENEVE를 지원하는 서드 파티 가상 어플라이언스 플릿을 배포 및 관리해야 할 경우 Gateway Load Balancer를 선택합니다. 이러한 어플라이언스를 사용하면 보안, 규정 준수 및 정책 제어를 개선할 수 있습니다.
  • Classic Load Balancer(22년 8월 부로 사라짐)

 

Optinal

 

  • 모니터링 : Amazon SNS와 Amazon CloudWatch를 통해 EC2 인스턴스가 사용자가 설정한 기준(예시.CPU 사용량)을 넘으면 설정한 이메일에 알람서비스를 구축합니다. 
    • Amazon SNS(Simple Notification Service)는 애플리케이션 간 혹은 애플리케이션과 사용자 간 통신 모두를 위한 완전관리형 메세징 서비스입니다. Amazon SNS 주제를 사용하면 게시자 시스템에서 병렬 처리를 위해 Amazon SQS 대기열, AWS Lambda 함수, HTTPS 엔드포인트를 비롯한 많은 구독자 시스템으로 메시지를 팬아웃할 수 있습니다.
    • Amazon CloudWatch는 모니터링 및 관찰 기능 서비스입니다. CloudWatch는 애플리케이션을 모니터링하고, 시스템 전반의 성능 변경 사항에 대응하며, 리소스 사용률을 최적화하고, 운영 상태에 대한 통합된 보기를 확보하는데 필요한 데이터와 실행 가능한 통찰력을 제공합니다. CloudWatch는 로그, 지표 및 이벤트 형태로 모니터링 및 운영 데이터를 수집하여 AWS와 온프레미스 서버에서 실행되는 AWS 리소스, 애플리케이션 및 서비스에 대한 통합된 보기를 제공합니다. CloudWatch를 사용하여 환경에서 이상 동작을 감지하며, 경보를 설정하고, 로그와 지표를 나란히 시각화하며, 자동화된 작업을 수행하고, 문제를 해결하며, 통찰력을 확보하여 애플리케이션을 원활하게 실행할 수 있습니다.
  • 오토 스케일링 : EC2에 Auto Scaling 서비스에서 AMI, 대상 그룹, VPC, 모니터링 설정을 할 수 있고 오토스케일링이 발생하는 기준을 설정하면 최대,최소 설정에 맞게 인스턴스의 용량이 늘어나거나 인스턴스의 개수가 추가,감소하는 기능을 사용할 수 있습니다.   
    • Amazon EC2 Auto Scaling를 통해 애플리케이션의 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 보유하도록 보장할 수 있습니다. Auto Scaling 그룹이라는 EC2 인스턴스 모음을 생성합니다. 각 Auto Scaling 그룹의 최소/최대 인스턴스 수를 지정할 수 있으며, 그룹의 크기가 최소/최대 사이 값을 유지합니다. 조정 정책을 지정했다면 Amazon EC2 Auto Scaling에서는 애플리케이션의 늘어나거나 줄어드는 수요에 따라 인스턴스를 시작하거나 종료할 수 있습니다.
      • 내결함성 향상 : 인스턴스가 비정상 상태일 때 이를 감지하여 종료한 다음 이를 대체할 인스턴스를 시작할 수 있습니다. 여러 개의 가용 영역을 사용하도록 구성할 수도 있습니다.
      • 가용성 향상 : 애플리케이션이 항상 현재 트래픽 요구를 처리할 수 있는 올바른 용량을 갖추도록 도와줍니다.
      • 비용 관리 개선 : 필요에 따라 용량을 동적으로 확장 및 축소할 수 있습니다. 사용한 EC2 인스턴스에 대해서만 비용을 지불하므로, 인스턴스가 필요할 때 이를 시작하고 필요 없어지면 종료함으로써 비용을 절감합니다.
 

 

느낀 점

 

네트워킹 시스템에 대한 개념이 부족했는데 기초적인 내용, 시스템의 틀 정도를 확인할 수 있어서 좋았습니다.

 

그리고 이전에도 AWS에서 어떤 서비스를 사용해야하는가에 대한 컨퍼런스 강연을 들은 적이 있지만 결국 실습을 해서 하나하나 어떤 작용을 하는지에 대한 설명이 들어간 실습을 하니 그제서야 이해가 되는...

 

 

 

이정도는 기초내용이라 쉬웠고 다음날 실습한 쿠버네티스 관련 내용은 개념부터도 어렵고 정리하는 데 시간이 걸릴 것 같습니다.

 

마지막으로 보고 실습할 수 있는 AWS builders 100 Hands on Lab 링크를 첨부드립니다.