CI/CD에 필요한 AWS 지식

황상익·2025년 1월 15일
0

AWS

목록 보기
1/6

👨‍💻 배포

다른 사용자들이 인터넷을 통애 사용 할 수 있도록 하는 것을 의미
웹 페이지나, 서버를 다른 사람들이 사용하려면, 인터넷상에 배포가 되어 있어야 함

  • localhost는 다른 컴퓨터에서는 접근 불가능 => 배포를 진행하게 되면 고유의 주소를 부여 받게 되고, 그 주소로 접속 가능

👨‍💻 What's EC2 ?

EC2 (Elastic Compute Clound)

컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스

EC2를 왜 배움??

서버를 배포하기 위해서는 컴퓨터 필요, 컴퓨터에서 서버를 배포해 다른 사용자들이 인터넷을 통해 접근,
내 컴퓨터로 서버를 배포하면 24H 동안 돌려야 함, 인터넷을 통해 내 컴퓨터에 접근할 수 있게 만들다 보니 보안적 위험

AWS EC2라는 컴퓨터를 빌려서 사용하는 것이다. 이 외에도 AWS EC2는 여러 부가기능들(로깅, 오토스케일링, 로드밸런싱 등)을 많이 가지고 있음.

🚀 실습

Region 선택

  1. EC2를 시작 하기 위해 지역을 선택
    *) REGION이란?
    인프라를 지리적으로 나눠 배포한 각각의 데이터 센터
    EC2가 컴퓨터를 빌려서 원격으로 접속해서 사용하는 서비스, 세계적으로 다양하게 분포해 있음. 이런 위치한 위치를 보고, AWS에서는 Region이라고 함

*) REGION의 선택 기준
애플리케이션을 실행시키는 컴퓨터와 위치가 멀수록 속도 느려짐. 애플리케이션의 주된 사용자들의 위치와 지리적으로 가까운 리전을 선택하는 것이 유리

EC2 Setting

  1. 이름 Tag 설정

    이 컴퓨터가 어떤 역할을 하는지 알아볼 수 있게 작성

  2. Application and OS Images (Amazon Machine Image)

    OS를 선택하는 단계. 왜 Ubuntu를 선택 하는가? 라면? Windows나 Mac OS의 경우 생각보다 용량도 많이 차지, 성능도 많이 먹음. 따라서 서버를 배포할 컴퓨터의 OS는 훨씬 가벼운 Ubuntu 사용

  3. 인스턴스 유형
    우선 Free Tier에서 사용할 수 있는 t2.micro 사용
    *) 인스턴스란?
    AWS EC2에서 빌리는 컴퓨터 한대를 의미, 인스턴스 유형은 컴퓨터의 사양.

그렇다면 Free Tier라고 안좋다??는 아니다.
성능적으로 문제가 생간다면 너무 걱정 안해도 될 정도 이다.

  1. 키 페어(로그인)

    EC2 컴퓨터에 접근할 때 필요한 비밀번호, 말 그대로 열쇠
    RSA와 .pem을 선택한 후에 키 페어를 생성하면 된다.
    ED25519가 뭔지, .ppk가 뭔지는 몰라도 된다. 중요하지 않다. (아직 까지는??)

  2. 네트워크 설정

    VPC라는 개념은 AWS를 입문하는 입장에서는 크게 중요하지 않으니 넘어가고, 나중에 AWS에 어느 정도 익숙해졌을 때 VPC를 학습하도록 하자. VPC를 몰라도 서버를 배포하는 데 아무 문제가 없다고 한다.

*) 참고

  • 22번 (SSH, Secure Shell Protocol) : 원격 접속을 위한 포트 번호
    • EC2 인스턴스에 연결할 때 22번 포트를 사용한다.
  • 80번 (HTTP) : HTTP로 통신을 할 때 사용
  • 443번 (HTTPS) : HTTPS로 통신을 할 때 사용
  1. 보안그룹
    보안 그룹이란 AWS 클라우드에서의 네트워크 보안

    EC2 인스턴스를 집이라고 한다면, 보안 그룹은 집 바깥쪽에 있는 울타리와 대문, 집에 접근시 울타리의 대문에서 접근해도 되는 요청인지 아닌지 보안 검사하는 것

인터넷에서 일부 사용자가 EC2 인스턴스에 접근 한다고 가정, 보안 규칙에 인바운드 트래픽과 아웃 바운드 트래픽이 있다.
1. 인바운드 트래픽 (외부에서 EC2 인스턴스를 보내는 트래픽)

  • 어떤 트래픽만 허용 할지
  1. 아웃바운드 트래픽 (EC2 인스턴스에서 외부로 나가는 트래픽)
  • 어떤 트래픽만 서용할 지


외부에서 EC2로 접근할 포트는 22번 포트와 80번 포트라고 생각해서 이 2가지에 대해 인바운드 보안 그룹 규칙을 추가. 22번 포트는 우리가 EC2에 원격 접속할 때 사용하는 포트이고, 80번 포트에는 백엔드 서버를 띄울 예정. 참고로 0.0.0.0/0의 경우 모든 IP 주소에서 인스턴스에 액세스 허용

  1. 스토리지 구성

    하나의 하드 디스크라고 생각하면 될것이다. 이 저장공간을 보고 EBS(Elastic Block Storage)
    EBS 같은 저장 공간을 조금더 포괄적 의미로 나타낸다면, Storgae / Volume이라고 나타냄

가성비가 좋은 gp3를 선택. 용량을 30GiB를 설정한 이유는 프리 티어에서 30GiB까지 무료로 제공

  1. 탄력적 IP
    인스턴스 생성하면 임시 IP를 할당 받는다. EC2를 종료했다가 다시 시작하면 해당 IP가 변경됨.
    그 이유는 IP의 주소 할당을 줄이기 위함. 그래서 중지하더라도 IP가 변경되지 않는 탄력적 IP를 받아야 함.

SpringBoot로 배포

사용하고자 하는 git 주소 clone

$ git clone https://github.com/JSCODE-EDU/ec2-spring-boot-sample.git
$ cd ec2-spring-boot-sample

yml의 경우 민감정보가 들어가기 때문에 git version에서 관리하지 않음.
따라서 application.yml 파일은 별도로 EC2 인스턴스에 올려줘야 함

서버 실행

$ ./gradlew clean build # 기존 빌드된 파일을 삭제하고 새롭게 JAR로 빌드
$ cd ~/ec2-spring-boot-sample/build/libs
$ sudo java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar
profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글