본문 바로가기

인프라를 구축하기 위한 AWS 기본 지식 쌓기

@xuv22025. 11. 3. 13:21

스프링 애플리케이션을 로컬에서 테스트할 때 프로메테우스 + 그라파나는 아주 훌륭한 모니터링 툴이다.

하지만 내가 정말 좋은 PC로 테스트를 했을 때와 , 타인의 컴퓨터로 똑같은 테스트를 진행할 때 반드시 똑같은 결과가 나온다는 보장이 없다.

왜냐하면 컴퓨터 자원처럼 물리적 자원이 좋을 수록, 높은 성능을 낼 수 있기 때문이다. 아무리 도커로 여러 컨테이너를 쓴다고 해도, 정확한 테스트가 불가능하다.

또한 운영 환경과 로컬 서버의 가증 큰 차이점은 운영 환경에서는 여러 인프라가 동작한다.

예를 들면 클라우드 서버 / 로드 밸런서 / 데이터베이스 샤딩 / 스토리지 연동 등등 여러 고려요소가 많다.

그렇기 때문에 우리는 다중 사용자가 확인하더라도 동일한 성능 측정을 하기 위해선 클라우드 컴퓨팅 인프라 서비스를 활용하여 컴퓨팅을 호스팅받아 성능 측정을 하는 것이 정확하다.

대표적으로 AWS 의 EC2/RDS/S3 등의 환경이 있다.

현 시점 로컬에서 프로젝트를 끝낸 나는 내 프로젝트에 이 인프라 시스템을 구축해볼 것인데, 나는 EC2,ECR, RDS, CloudWatch 등을 활용할 것이다. 프리티어로 해결 되지 않는 부분도 있어서 과금도 있을테지만, 경험이라 생각하고 충분히 지출할 의향이 있다. (대신 인스턴스 종료 잘해야함!!)


VPC : Virtual Private Cloud

AWS에서 서비스를 실행하려면 네트워크 환경이 필요한데, VPC는 AWS에서 제공하는 나만의 전용 아파트 단지이다.

VPC는 독립적인 공간이며, VPC 안에서 서브넷 / 인터넷 게이트웨이 / 시큐리티 그룹등 다양하게 설정할 수 있다.

즉 VPC는 우리가 AWS에서 사용할 서비스를 안전하게 운영할 수 있도록 만들어주는 독립적 네트워크 공간이다.

 


Gateway

AWS의 모든 서비스는 기본적으로 인터넷에 연결되지 않은 상태이다.

즉, 우리는 외부에서 우리의 서비스에 접근할 수도, 우리의 서비스에서 외부 인터넷에 접근할 수도 없다.

그래서 우리의 VPC를 외부 인터넷에 연결하기 위해 인터넷 게이트웨이를 설정해줘야 인터넷 통신이 가능해진다.

 


Subnet 

VPC라는 단지를 만들었다면, 그 안에서 공간을 여러 공간으로 또 나눌 수 있다. 예를 들면 아파트를 여러층으로 나누는 것과 같다.

예를 들면 아파트의 1층은 누구나 접근이 가능하도록 하고, 2층부턴 입주자만 접근할 있도록 만드는 것인데,

 우리가 AWS의 서브넷을 구성하기 위해 다음과 같이 구성하면 된다.

1. 누구나 접근한 스프링 부트 애플리케이션 서버 -> Public Subnet

2. RDS 등의 실제 데이터를 관리하는 서버 -> Private Subnet

 

서브넷은 그래서 VPC 내부에서 서비스의 역할에 따라 네트워크를 분리하는 공간이다.


EC2 : Elastic Compute Cloud

EC2는 실제 애플리케이션을 실행할 가상의 컴퓨터이다.

즉 AWS에서 우리가 실제 빌리는 컴퓨터가 바로 이 EC2이다.

우리는 여기에 스프링 부트 서버를 띄울 예정

 


RDS : Relational Database Service

AWS에서 제공하는 관계형 데이터베이스 서버이다.

사실 EC2에 DB서버와 애플리케이션 서버 두가지를 모두 띄우는 것이 쉬운 방법이다.

하지만 이처럼 각자 다른 역할을 수행하는 서버를 나누어서 컴퓨터를 사용하면, 각 컴퓨터의 부담이 확실히 적어진다.

 

AWS RDS는 DB만 설정해주면 자동으로 관리가 되는 데이터베이스이고, 특히 자동 백업 기능을 통해 데이터를 안전하게 보관할 수 있다.

 


ECR : Elastic Container Registry

우리가 컴퓨터에서 도커를 통해 각 프로그램을 이미지를 컨테이너로 띄워 놓고 사용했다. 

AWS에서도 이렇게 도커 컨테이너를 저장할 ECR을 제공하는데, 우리는 우리의 애플리케이션을 이미징하여 ECR에 저장해두고 EC2가 ECR에서 해당 이미지를 가져다가 사용할 수 있도록 구축하면 된다.

정리하면 ECR은 AWS에서 도커 이미지를 저장하고 배포할 수 있도록 도와주는 저장소이다.

 


CloudWatch

클라우드 워치는 우리가 프로메테우스 + 그라파나로 모니터링하던 것 처럼 클라우드 환경에서 CPU나 메모리 사용향을 실시간으로 확인할 수 있는 모니터링 시스템이다.

우리는 앞으로 부하를 여기서 체크하고 병목 지점을 탐색해야한다.

xuv2
@xuv2 :: xuvlog

폭싹 늙었수다

목차