CI/CD - CI/CD를 위한 AWS

2025. 10. 3. 15:50CI\CD/CI\CD 종합

반응형

AWS의 EC2란

EC2는 Elastic Compute Cloud의 약자로 AWS에서 가상 서버(인스턴스)를 필요할 때 바로 만들고, 크기와 수량을 탄력적으로(Elastic) 늘이고 줄일 수 있게 해주는 IaaS서비스이다.

 

IaaS란

IasS는 Infrastructure as a Service의 약자로 클라우드에서 가상화된 인프라(서버, 스토리지, 네트워크)를 필요한 만큼 빌려 쓰는 서비스 모델을 말하는 것으로 사용자가 하드웨어를 직접 구매하거나 설치할 필요 없이 Console이나 API로 인프라를 만들고 지우면서 운영하는 서비스를 말한다.

 

이 EC2에는 뭐든 올릴 수 있게 되어 있으나 보통 백엔드, 배치, 소켓/미디어 서버 같은 애플리케이션을 올리고 데이터 베이스나 정적프론트의 경우는 관리형 서비스로 분리한다.

 

단순하게 EC2에는 서버를 올리는 용도로 사용한다고 생각해도 좋을것 같다.

 

우리가 가진 컴퓨터를 사용해서 직접 사용도 가능은 하다만 EC2가 제공하는 좋은 기능들(로드, 오토스케일링, 로드벨런싱등)의 활용을 생각했을땐 EC2가 좀 더 강점이 있다고 볼 수 있다.

 

AWS EC2의 생성

먼저 AWS의 홈페이지를 검색해서 접속해주고

https://aws.amazon.com/ko/

 

클라우드 컴퓨팅 서비스-Amazon Web Services(AWS)

Amazon Web Services는 안정성이고 확장 가능하며 저렴한 클라우드 컴퓨팅 서비스를 제공합니다. 무료로 가입하여 사용량에 따라 요금을 지불하세요.

aws.amazon.com

 

AWS에 로그인 혹은 회원가입 후 로그인해주자.

** 회원가입이 다른웹페이지 회원가입하는거에 비하면 매우 빡세니 잘해주도록 하자..**

 

접속해서 콘솔에 로그인을 하면 

이런 화면이 나오게 될텐데 검색 창에 EC2를 검색하면

이렇게 나오게 되고 클릭해서 들어가 준 다음에 우측 상단의 지역(region)을 선택해줘야 한다.

 

Region(리전)이란

리전은 AWS가 전 세계에 물리적으로 분리해둔 데이터 센터 묶음의 지리적인 구역을 의미한다.

각각의 리전에는 가용영역(AZ)이라는 독립적인 전원, 네트워크를 가진 데이터 센터가 3개 이상 존재하고 보통 멀티 AZ로 고가용성을 구성한다.

 

이를 선택하는 것이 필요한 이유는 아래와 같다

  • 지연시간(Latency) : 리전이 사용자의 시스템과 가까울 수록 응답이 빠르다. 한국의 경우는 Seoul이 우선적이다.
  • 데이터 주권/컴플라이언스 : 어떤 리전에 저장하느냐가 법적 관할에 바로 연결된다. 국내 보관 요구가 있다면 Seoul 이여야한다
  • 서비스/인스턴스 가용성 : 모든 신형 서비스/인스턴스가 모든 리전에 동시에 나오지 않는다. 필요한 기능이 해당 리전에 존재하는지를 파악해야한다.
  • 비용 차이 : 리전별로 단가가 다르다(EC2, EBS, 데이터 전송 등). 월 비용이 크게 달라질 수 있으니 잘 파악해서 사용하자
  • 재해 복구 전략(DR) : 리전은 서로 독립적이기에 다른 리전을 백업/복제 대상으로 쓰면 리전의 장애에도 복구가 가능하다

그렇기에 리전의 선택 기준은 EC2에 올릴 서비스를 사용할 대상이 되는 지역과 가까운 리전을 선택하는 것이 유리하다.

 

EC2는 이 리전을 기준으로 분리되어 있기 때문에 없어졌다고 혼란스러워하지 말고 리전을 다시 선택해주도록 해서 확인해보자.

이렇게 아시아 태평양의 서울을 선택해주도록 하자.

 

1) 기본 세팅

이제 리전을 선택했다면 EC2라는 컴퓨터를 한번 빌려보도록 할 것이다.

대시보드로 들어가준 다음에 아래 보이는 인스턴스 시작 버튼을 눌러서 EC2 인스턴스를 생성할 수 있다.

 

그러면 아래처럼 설정값을 설정해줄 수 있는데

 

 가장 먼저 인스턴스의 이름 및 태그는 해당 EC2 인스턴스가 무엇을 하는 인스턴스인지를 작성해서 추후 추가되는 인스턴스들을 구분할 수 있도록 지정해주면 된다.

 

그리고 두번째 항목인 애플리케이션 및 OS 이미지는 이 EC2를 어떤 OS로 올릴건지를 설정하는 것이다.

우리는 여기서 Windows를 쓰지말고 Ubuntu를 사용해주자(windows나 mac은 용량을 너무 많이 차지함)

버전같은거나 그런건 그냥 건드리지 말고 넘어가도록 하자.

세번째는 인스턴스 유형이다.

여기서 인스턴스란, 지금 생성하는 EC2 하나 그 자체를 말한다.

그러면 인스턴스 유형이란 이 EC2의 사양을 의미한다.

이는 용도에 따라 설정하면 되지만 프리티어로 사용해도 조그만 서비스를 운영하는데는 성능적으로 문제는 없다고 한다.

 

그 다음은 키 페어라는 설정이다.

키 페어는 EC2 컴퓨터에 아무나 접근할 수 없도록 EC2에 접근할 수 있는 비밀번호라고 생각하면 된다.

우측에 있는 새 키페어 생성을 클릭하고

 

키 페어의 이름은 어떤 EC2에서 생성한 키페어 인지를 인식할 수 있도록 설정해주면 된다.

여기서 중요한건 키 페어를 구분할 수 있게 명확한 명칭을 제공해야한다는 점이고 추가적인 설정은 그대로 두고 생성해주도록 하자.

그러면

키페어가 선택되고 페어가되는 키가 하나 설치된다.

이건 유출되지 않고 잃어버리지 않도록 잘 보관해두자.

 

이제 네트워크 설정 부분이다.

이 부분을 수정하기 위해서는 우측 상단의 편집 버튼을 눌러주면 아래와 같이 화면이 조금 바뀌게 된다.

여기서 VPC는 우리가 CI/CD를 하면서 당장에는 필요 없는 부분이니까 그냥 두고 나중에 조금 익숙해진 후에 더 알아보도록 하고 여기서 우리가 볼건 방화벽(보안 그룹)에 대한 내용이다.

보안 그룹이란, 클라우드 환경(VPC)에서 우리의 서버(인스턴스)로 들어오고 나가는 트래픽을 통제하는 가상의 방화벽이다.

이 방화벽은 서버(EC2)자체에 걸리는게 아니라 서버에 연결되는 네트워크 인터페이스(ENI)라는 문에 붙어서 작동한다.

이건 아파트의 실제 집 문이 아니라 동의 정문에 걸려 있는 인터폰 같은 개념의 경비 규칙이라고 생각하면 된다.

 

이 보안 그룹에는 허용 규칙만이 존재하는데, 이건 내가 원하는 사람만 들어와 라고 설정은 할 수 있으나 내가 싫어하는 누구는 못들어오게 해줘 라는 설정은 불가능 한것으로 기본적으로 허용을 하지 않으면 기본적으로 모든 트래픽을 차단한다.

 

이 보안 그룹은 상태 저장(Statefl)의 성격을 갖고 있는데 이건 연결의 상태를 기억한다는 의미이다.

단순하게 한번 통과 했으면 그 응답은 방향에 관련 없이 자동으로 허용한다는 것으로 인바운드(외부에서 내부로 들어오는 요청)를 허용 하면 서버는 아웃바운드(이전 요청에 대한 응답)를 별도의 규칙을 지정하지 않아도 자동으로 허용한다.

이건 동일하게 반대로 서버가 아웃바운드(외부로 요청을 내보내는 것)를 허용하면 외부 서버가 인바운드(이 요청에 대한 응답을 다시 서버로 보내는 것) 은 별도의 규칙 없이 자동으로 허용 한다.

 

이제 이 보안 그룹의 설정을 해보자.

먼저 우리는 보안그룹을 생성할것이기 때문에 그냥 보안 그룹 생성으로 유지해두고 

 

보안그룹의 명칭을 임의로 구분하기 좋게 설정해주고 설명은 원한다면 구체적으로 내용을 작성해줘도 좋다.

그리고 이제 인바운드 보안 그룹 규칙을 넣을 것인데

이건 외부에서 내부로 들어오는 요청중 어떤걸 설정할 것인지를 설정하는 건데 ssh로 22 번 port로 이미 설정이 되어 있는 것을 볼 수 있다.

 

이건 이 EC2에 접속해서 ssh로 EC2를 조작하도록 할 수 있다는 건데 보면 

소스 유형을 위치 무관을 설정하면 원본이 0.0.0.0/0이 자동으로 설정된다. 

이건 모든 접근을 모두 허용하겠다는 설정으로 이렇게 그냥 설정하면 어떤 컴퓨터나 해당 EC2에 ssh로 접근이 가능하다는 설정이 된다.

 

여기서 만약 특정 IP에서만 연결할 수 있게 하기를 원한다면

소스 유형을 사용자 지정으로 설정해주고

이렇게 IP를 추가해주면 /32로 설정이 가능해진다.

여기서 /32는 딱 하나의 IP를 설정하겠다는 의미가 된다.

 

일단 위치 무관으로 설정해주고 그 아래에 보안 그룹 규칙 추가를 눌러서 보안 그룹 규칙을 추가해주자

그러면 아래에 보안 규칙이 한 세트 추가되게 된다.

여기서 유형을 TCP말고 HTTP로 설정해주자.

이건 우리가 이 EC2에는 서버를 둘건데 이 서버에는 HTTP 요청이 들어올 것이기에 들어 올 수 있도록 열어두라는 설정을 추가하는 것이다.

보통이 백엔드로 요청을 보내는 경우는 불특정 다수일 것이기 때문에 소스 유형은 위치 무관으로 설정해주고 넘어가면 된다.

 

이제 스토리지 구성을 해보도록 하자.

위 처럼 EC2의 스토리지를 구성할 수 있는데 이 저장공간을 EBS(Elastic Block Storage)라고 부른다.

이 EBS는 하드디스크 처럼 EC2 인스턴스가 정지되거나 종료 되어도 사라지지 않고 유지 되기에 OS, 데이터베이스, 애플리케이션 파일등의 영구적으로 보존할 필요가 있는 데이터를 저장하는데 사용된다.

 

프리티어는 30GB까지 무료로 제공해주기 때문에 30GB로 설정해주고 gp3로 설정해주자(최근거라고 함)

이러면 세팅이 완료 되었다

 

우측 하단에 보면 인스턴스 시작 버튼이 존재한다.

이 인스턴스 시작 버튼을 눌러주면 

 

이렇게 인스턴스가 시작되는 것을 확인할 수 있다.

 

이 내용을 보기 위해서 EC2 대시보드로 가보면 

리소스에서 인스턴스(실행 중)을 눌러보

이렇게 생성되었고 실행중인 상태의 EC2 인스턴스를 확인할 수 있다.

이러면 EC2가 정상적으로 잘 만들어진 상태이구나 라고 생각하면 된다.

 

EC2 접속

위에서 만들었던 인스턴스 리스트에서 인스턴스 ID를 클릭하면

아래와 같이 인스턴스에 대한 상세 정보들이 확인 되는 것을 알 수 있다.

 

여기서 퍼블릭 IPv4 주소를 통해서 외부로 접근이 가능하고, 인스턴스 상태를 확인해서 접속이 가능한 상태인지 지금 EC2 인스턴스가 정상인지 확인이 가능하다

 

다른 것들은 일단 넘어가도 되고 우측 상단의 인스턴스 상태를 클릭해보면

인스턴스를 중지(종료)할지 재부팅할지 삭제할지를 설정할 수 있다

주의할건 인스턴스 종료(삭제)는 인스턴스를 종료하는게 아니라 그냥 삭제한다는 거니까 잘 이해하고 눌르기로 하자.

 

이제 아래 탭 중 

보안을 눌러보면

우리가 적용했던 규칙들을 볼 수 있다.

 

이제 다른거 말고 모니터링 탭을 눌러보면

지금 내가 만든 EC2의 상태를 볼 수 있는 탭이다.

 

이제 이게 EC2에 대한 전반적인 설정이다.

이제 직접 EC2에 접속을 해야 하는데 우측 상단의 연결 버튼을 한번 눌러보면

 

설정을 따로 바꿀 필요 없이 그냥 연결을 눌러서 

연결 해주도록 하자

그러면 새로운 브라우저가 켜지면서

이렇게 리눅스 화면이 보이게 된다.

이게 EC2에 직접 접근한 상태이다.

 

EC2를 생성하면 위에서 봤던것 처럼 IP를 할당받는 것을 알 수 있다.

근데 이 IP는 임시적인 IP로 EC2를 중지해보면 바로 변경되는 것을 볼 수 있다.

서버의 IP가 지속적으로 변경 가능성이 있다는건 큰 문제일 수 밖에 없다.

이를 위해서 고정적인 IP를 제공하는데 이걸 탄력적 IP라고 부른다.

탄력적 IP의 설정 방법은 좌측 메뉴 바에서 네트워크 및 보안 > 탄력적 IP를 누르면 설정 가능한 화면으로 이동한다.

그러면 나오는 화면 우측 상단의 탄력적 IP 주소 할당을 누르면 

아래와 같은 화면인데 따로 설정하지말고 그냥 바로 할당을 눌러주자.

그러면 IP를 하나 할당 받고 

Name 부분을 눌러서 

구분할 수 있도록 이름을 설정해주고 우측 상단의 작업 항목을 눌러서 탄력적 IP 주소 연결을 눌러보면

화면이 전환되면서

이렇게 우리가 만든 인스턴스를 선택하고 연결 버튼을 눌러주면 인스턴스의 IP가 우리가 만든 탄력적 IP 주소로 변경되고

인스턴스를 중지했다가 

다시 켜도

IP가 바뀌지 않는 것을 볼 수 있다.

 

여기까지가 기본적인 EC2의 세팅이라고 생각하면 된다.

 

 

반응형

'CI\CD > CI\CD 종합' 카테고리의 다른 글

CI/CD  (0) 2025.10.03
CI/CD - EC2에 서버 배포  (0) 2025.10.03