목차

     

     

    ELB 란?

    ELB( Elastic Load Balancer ) 란? 

    한 줄 요약 : 트래픽(부하)을 적절하게 분배해준는 장치이다.

     

    트래픽(부하)을 적절하게 분배해주는 장치를 로드맬런서(Load Balancer)라고 부른다.

    서버를 2대 이상 가용할 때 ELB를 필수적으로 도입하게 된다.

     

    하지만 지금은 ELB의 로드밸런서 기능을 사용하지 않고, ELB의 부가 기능인 SSL/TLS (HTTPS) 를 적용시켜보려 한다.

     

     

    SSL / TLS란?

    SSL/TLS 를 쉽게 표현하자면 HTTP를 HTTPS 로 바꿔주는 인증서이다.

    위에서 말했다시피 ELBSSL/TLS 기능을 제공한다고 했다. SSL/TLS 인증서를 활용해 HTTP가 아닌 HTTPS로 통신할 수 있게 만들어준다.

     

     

    HTTPS 란?

    HTTPS 를 적용시켜야 하는 이유는 무엇일까?

     

    1. 보안적인 이유

     데이터를 서버와 주고 받을 때 암호화를 시켜서 통신한다. 암호화를 하지 않으면 누군가 중간에서 데이터를 가로채서 해킹할 가능성이 존재한다. 

     

    2. 인증

     HTTPS 는 인증서를 통해 통신 상대(서버)의 신원을 보장한다. 즉, 사용자가 접속한 사이트가 "진짜"인지 "피싱 사이트"인지 구분할 수 있다.

     

    3. 검색 엔진 우대

    구글을 포함한 검색엔은 HTTPS 사이트를 우선적으로 노출한다.

     

    4. 브라우저 경고 방지

    최근(특히 Chrome, Edge 등)은 HTTPS가 아닌 사이트를 “안전하지 않음”으로 표시한다.
    로그인 창이나 입력 폼이 있는 페이지에서 브라우저 경고창이 뜬다면 특히 신뢰를 잃을 수 있다.

     

     


     

    ELB를 활용한 아키텍처 구성

     

    ELB 도입 전 아키텍처

    ELB 도입 전 아키텍처

     

    ELB 를 사용하기 전의 아키텍처는 사용자들이 EC2 의 IP 주소 또는 도메인 주소에 직접 요청을 보내는 구조이다.

     

     

    ELB 도입 후 아키텍처 : 서버 1대

     

    ELB 도입 후 아키텍처 : 서버 2대

    다수의 사용자가 한번에 몰리게되어 요청이 늘어나면 인스턴스를 추가하고 요청이 줄면 인스턴스를 다시 줄이는 기능이 있는데 이를 오토 스케일이라고 한다. ELB(Elastic Load Balancer)는 오토스케일링으로 늘어난 인스턴스에 요청을 트래픽(부하)을 분산하는 서비스이다.

     

     


     

    ELB 세팅

    기본 구성

    1. 리전 선택

    AWS EC2 -> 로드밸런서 서비스로 들어가서 리전(Region) 을 선택한다.

     

    2. 로드 밸런서 유형 선택하기

    로드 밸렁서 생성

     

    로드 밸런서 유형 선택 : Application Load Balancer 선택

     

    3. 기본 구성

    • 인터넷 경계와 내부라는 옵션이 있다. 내부 옵션은 Private IP 를 활용할 때 사용한다.
      당장 Private IP는 사용하지 않을 예정이기 때문에 인터넷 경계 옵션을 선택하면 된다.
    • IPv4 와 듀얼 스택 이라는 옵션이 있다. IPv6 를 사용하는 EC2 인스턴스가 없다면 IPv4 를 선택하면 된다.

     

    4. 네트워크 매핑

    로드 밸런서가 어떤 가용 영역으로만 트래픽을 보낼 건지 제한하는 기능이다. 가용 영역에 대한 개념은 제쳐두고 모든 영역에 트래픽을 보내게 설정하겠다.

     

     

     

    보안그룹

    1. AWS EC2 보안그룹 에서 보안 그룹 생성

    보안 그룹 이름 지정

     

    인바운드 규칙

    • ELB의 특성상 인바운드 규칙에 80(HTTP), 443(HTTPS) 포트로 모든 IP 에 대해 요청을 받도록 설정한다.

     

    아웃바운드 규칙

     

     

    2. ELB 만드는 창으로 돌아와서 보안 그룹 등록

     

     


     

    리스너 및 라우팅 / 헬스 체크

    1. 대상 그룹 (Target Group) 설정하기

    리스너 및 라우팅 설정은 ELB로 들어온 요청을 어떤 EC2 인스턴스에 전달할 건지를 설정하는 부분이다.

    ELB로 들어온 요청을 어딘가로 전달해야 하는데, 여기서 어딘가는 대상 그룹(Target Group)이라고 표현한다.

    즉, ELB로 들어온 요청을 어디로 보낼 지 대상 그룹을 만들어야 한다.

     

     

    2. 대상 유형 선택하기

    EC2 에서 만든 특정 인스턴스로 트래픽을 전달할 것이기 때문에 인스턴스 옵션을 선택

     

    3. 프로토콜, IP 주소 유형, 프로토콜 버전 설정

    ELB가 사용자로부터 트래픽을 받아 대상 그룹에게 어떤 방식으로 전달할 지 설정하는 부분이다.

    HTTP1, 80번 포트, IPv4 주소로 통신하도록 설정

     

    4. 상태 검사 설정하기

    ELB의 부가 기능으로 상태검사 ( = Health Check, 헬스 체크 ) 기능이 있다. 이 기능은 굉장히 중요한 기능이므로 짚고 넘어갈 필요가 있다.

     

    ELB는 들어온 요청을 대상 그룹에 있는 여러 EC2 인스턴스로 전달하는 역할을 가진다. 그런데 만약 특정 EC2 인스턴스 내에 있는 서버가 예상치 못한 에러로 고장이 났다고 가정해보자. 그러면 ELB 입장에서는 고장난 서버한테 요청(트래픽)을 전달하는 것은 비효율을 유발한다.

     

    이런 상황을 방지하기 위해 ELB는 주기적으로(기본 30초 간격) 대상 그룹에 속해있는 각각의 EC2 인스턴스에 요청을 보내본다. 그 요청에 대한 200번대(HTTP Status Code) 응답이 온다면 서버가 정상적으로 동작하고 있다고 판단하고 만약 요청을 보냈는데 200번대의 응답이 오지 않는다면 서버가 고장났다고 판단하여 ELB가 해당 EC2인스턴스로는 요청(트래픽)을 보내지 않는다.

     

    이러한 작동 과정을 통해 조금 더 효율적인 요청(트래픽)의 분배가 가능해진다.

     

    위에서는 대상 그룹의 각각의 EC2 인스턴스에 GET /health (HTTP 프로토콜 활용)으로 요청을 보내게끔 설정한 것이다.

    정상적인 헬스 체크 기능을 위해 EC2 인스턴스에서 작동하고 있는 백엔드 서버에 Health Check용 API를 만들어야 한다.

     

     

    5. 대상 등록하기

     

     

     

    6. ELB 만드는 창으로 돌아와 대상 그룹(Target Group) 등록하기

    ELB 에 HTTP 를 활용해 80번 포트로 들어온 요청(트래픽)을 설정한 대상 그룹으로 전달하겠다는 의미

     

     

    7. 로드 밸런서 생성하기

     

     


     

    로드밸런서 주소를 통해 서버 접속

    HealthCheckController 만들어놓기

    Health Check 할 수 있는 컨트롤러를 간단히 만들어 놓았다.

    @RestController
    @Slf4j
    public class HealthCheckController {
    
        @GetMapping("/health")
        public ResponseEntity<String> healthCheck() {
            log.info("health check...");
            return ResponseEntity.ok("Success Health Check");
        }
    }

     

    application.properties 에서 서버 포트를 80으로 해놓아야 한다.

    server.port=80

     

     

    로드밸런서 주소를 통해 서버 접속

     

    로드밸런서 주소를 통해 서버에 접속하여 헬스 체크가 정상동작함을 확인하였다.

     

     


     

    Route53 에서 도메인 연결하기

    1. 호스팅 영역 생성

    Route 53 → 호스팅 영역에서 호스팅 영역을 생성한다.

     

     

    2. 레코드 생성

    라우팅 대상을 로드밸런서로 지정한다.

     

     

     

    3. 브라우저에서 도메인으로 접속하기

    브라우저에서 도메인으로 접속하여 연결된것을 확인

     

     


     

    HTTPS 적용을 위한 인증서 발급 받기

    HTTPS 를 적용하기 위해서는 인증서를 발급받아야 한다.

     

     

    1. AWS Certificate Manager 에서 인증서 요청 클릭

     

     

    2. 인증서 요청하기

    내가 등록한 도메인 이름 지정

     

    다른 설정은 이대로 두고 요청

     

     

    3. 인증서 검사하기

    1. 내가 소유한 도메인이 맞는지 검증해야 한다.

     

     

     

    2. DNS 관리 페이지에서 CNAME 레코드 설정하기

     

    레코드를 생성하면 CNAME 이름과 CNAME 값이라는 것이 발급된다.

    이것들을 도메인 관리페이지에서 CNAME 으로 등록해줘야 한다.

     

     

    나는 도메인.한국 이라는 사이트에서 무료로 등록한 도메인을 아래와 같이 등록 하였다.

    주의할 점은 CNAME 값에서 마지막 . 을 빼고 등록해줘야 한다. 
    그렇지 않으면 잘못된 CNAME 형식이라며 등록되지 않는다.

     

     

     

    3. 검증 완료

    3~10분 정도 기다렸다가 AWS Certifacte Manager 창을 새로고침하면 아래와 같이 검증이 완료된다.

     

     


     

    ELB 에 HTTPS 설정하기

    1. ELB의 리스너 및 규칙 수정하기

     

     

     

     

     

    2. DNS 설정에서 CNAME 레코드 ELB DNS 로 지정

    위에서 인증서 발급을 위해 CNAME 을 바꿔놨었는데 인증서가 발급되었으니 이제 도메인이 ELB 로 연결되도록 CNAME 을 지정해야 한다.

     

     

     

    3. HTTPS 가 잘 적용되었는지 확인하기

    https 로 연결되는것 확인!

     

     

     

    4. HTPP 로 접속할 경우 HTTPS 로 전환되도록 설정하기

    아직까지는 http 를 붙여서 접속할 경우 HTTPS가 적용되지 않고 접속된다. 

    http를 붙여서 접속해도 자동으로 HTTPS로 전환되도록 만들어보자.

     

     

    1. 기존 HTTP:80 리스너를 삭제하기

     

     

    2. 리스너 추가하기

     

     

     

    5. HTTP 로 접속해도 HTTPS 로 전환되는지 확인하기

    http 로 접속해도 https 로 전환되는것을 확인!

     

     

    목차

       

       

       

      DNS( Domain Name System ) 란?

       도메인(Domain) 이 없던 시절에는 특정 컴퓨터와 통신하기 위해서 IP 주소(ex. 12.134.122.11 ) 를 사용했다. 이 IP특정 컴퓨터를 가리키는 주소의 역할을 한다.

       

      하지만 IP 주소는 많은 숫자들로 이루어져 있어서 일일이 외울수가 없다. 이를 해결하기 위해 문자를 IP 주소로 변환해주는 하나의 시스템(서버)을 만들게 되었다. 이게 바로 DNS( Domain Name System ) 이다. DNS가 생기고나서부터 사람들은 특정 컴퓨터와 통신하기 위해 복잡한 IP 주소를 일일이 외울 필요가 없게 되었다.

       

      프론트 웹 페이지든 백엔드 서버든 일반적으로 IP를 기반으로 통신하지 않고 도메인을 기반으로 통신한다. 그 이유는 여러가지있지만 그 이유 중 하나는 HTTPS 적용 때문이다. IP 주소에는 HTTPS 적용 할 수 없다. 도메인 주소가 HTTPS 적용을 할 수 있다. 이 때문에 특정 서비스를 운영할 때 도메인은 필수적으로 사용하게 된다.

       

       

       

       

       

      무료 도메인 등록 ( 내도메인.한국 )

       AWS 에는 도메인을 구매할 수 있는 Route 53 이라는 서비스가 존재한다. 도메인 구매 뿐만 아니라 HTTPS 적용도 할 수있다. 
      그러나 Route 53 에서 도메인을 구매하면 비용이 비싸기때문에 내도메인.한국 이라는 곳을 이용할 생각이다.

      아래 검색창에서 원하는 도메인 주소를 입력 후 검색 후 도메인 검색 결과가 존재한다면 등록하기 버튼만 누르면 정말 간단하게 무료로 도메인을 등록할 수 있다.

       

       

      아래와 같이 도메인 주소를 등록하였다.

       

       

       

       

      도메인을 EC2 에 연결하기

      도메인에 IP 연결하기

      연결할 도메인을 선택해 수정버튼을 누르면 아래와 같은 페이지가 나온다.
      연결할 IP 를 IP연결(A) 쪽에 등록하면 생성한 EC2와 연결이 된다. 이때 IP 는 EC2와 연결한 탄력적 IP 이다.

       

       

      연결 확인

      bk-market.kro.kr 이라는 도메인으로 브라우저에 접속했을 때 EC2에서 실행한 스프링 부트로 연결된것을 알 수 있다.

       

       

       

       

      목차

         

         

        배포( Deployment ) 란?

        배포( Deployment ) 란?

         배포란 개발 환경에서 만든 애플리케이션을 운영 환경에 올려서 실제로 서비스 할 수 있게 하는 것을 의미한다. 쉽게 말해 다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 것을 의미한다. 즉, 우리가 만든 웹 페이지나 서버를 다른 사람들이 사용하려면 인터넷 상에 배포가 돼있어야 한다.

         

         자신의 컴퓨터에서 개발을 할 때는 localhost 라는 주소로 테스트도 하고 개발을 한다. 하지만 이 localhost 는 다른 컴퓨터에서는 접근이 불가능한 주소이다. 배포를 하게 되면 IP(ex. 124.16.2.1) 나 도메인(ex. www.google.com) 과 같이 고유의 주소를 부여받게 되고, 다른 컴퓨터에서 그 주소로 접속할 수 있게 된다. 이것이 바로 배포( Deployment )다.

         

         


         

        EC2 란?

        EC2 ( Elastic Compute Cloud ) 란?

         EC2 란 한 마디로 AWS 에서 제공하는 원격 컴퓨터 임대 서비스이다.

        즉, AWS는 돈을 받고 컴퓨터와 다양한 서비스를 제공하고 사용자는 별도의 설치작업 없이 간편하게 원격으로 사용할 수 있는 컴퓨터를 빌릴 수 있고 그외 다양한 서비스를 제공받을 수 있다.

         

         

        EC2 (Elastic Compute Cloud ) 를 왜 배워야 할까?

         서버를 배포하기 위해서는 컴퓨터가 필요하다. 내가 가진 컴퓨터에서 서버를 배포해 다른 사용자들이 인터넷을 통해 접근할 수 있게 만들 수도 있다. 하지만 내 컴퓨터로 서버를 배포하면 24시간 동안 컴퓨터를 켜놓아야 한다. 그리고 인터넷을 통해 내 컴퓨터에 접근할 수 있게 만들다보니 보안적으로도 위험할 수 있다.

         

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

         

         


         

        리전(Region) 선택하기

        AWS EC2 서비스로 들어가서 리전( Region ) 선택하기

         

        AWS EC2 를 시작하기 위해서는 우선적으로 리전( Region ) 을 먼저 선택해야 한다.

         

         

        리전 ( Region ) 이란?

        리전( Region ) 이란 인프라를 지리적으로 나누어 배포한 각각의 데이터 센터를 의미한다. 

        우리는 EC2가 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스 라는 것을 알고 있다. 여기서 EC2를 통해 빌려서 쓸 수 있는 컴퓨터들이 전 세계적으로 다양하게 분포해있다. 이렇게 컴퓨터들이 자리하고있는 위치를 보고 AWS에서는 리전( Region )이라고 한다.

         

         

        리전( Region )은 어떤 기준으로 선택해야 하나?

        사람들이 애플리케이션을 사용할 때는 네트워크를 통해 통신하게 된다. 이 때, 사용자의 위치와 애플리케이션 을 실행시키고 있는 컴퓨터와 위치가 멀면 멀수록 속도는 느려진다. 따라서 애플리케이션의 주된 사용자들의 위치와 지리적으로 가까운 리전( Region ) 을 선택하는 것이 유리하다.

         

         


         

        EC2 세팅하기 - 기본 설정

        1) 이름 및 태그

        EC2의 이름을 설정하는 곳이다. 이름을 지을 때는 이 컴퓨터가 어떤 역할을 하는 지 알아볼 수 있게 작성한다.

         

         

        2) 애플리케이션 및 OS 이미지 ( Amazon Machine Image )

         

        OS 를 선택하는 단계이다. OS(운영체제)란 Mac, Windows, Linux 같은 것들을 말한다. Windows 나 Mac OS 는 생각보다 용량도 많이 차지하고 성능도 많이 잡아먹는다. 그래서 서버를 배포할 컴퓨터의 OS 는 훨씬 가벼운 Ubuntu 를 많이 사용한다.

         

         

        3) 인스턴스 유형

        우선 인스턴스란, AWS EC2에서 빌리는 컴퓨터 1대를 의미한다.

         

        그럼 인스턴스 유형은 무슨 뜻일까? 컴퓨터 사양을 의미한다. 컴퓨터 사양이 좋으면 좋을수록 많은 수의 요청을 처리할 수 있고, 무거운 서버나 프로그램을 돌릴 수 있다.

         

        프리 티어에 해당하는 t3.micro 를 사용할 것이다.

         

         

        4) 키 페어( 로그인 )

        키 페어( Key Pair )는 무슨 뜻일까? EC2 컴퓨터에 접근할 때 사용하는 비밀번호라고 생각하면 된다. 말 그대로 열쇠( Key ) 의 역할을 한다.

        • 키 페어 이름은 어떤 EC2에 접근하기 위한 키 페어였는 지 알아볼 수 있게 지정하면 좋다.
        •  RSA  와  .pem  을 선택한 후에 키 페어를 생성하면 된다.  ED25519  가 뭔지,  .ppk  가 뭔지는 나중에 알아보자.
        • 키 페어를 생성하면 파일이 하나 다운받아지는데, 그 파일을 잃어버리지 않도록 잘 보관하자.

         

         

        EC2 세팅하기 - 보안그룹 설정

        네트워크 설정

         

         

        보안 그룹( Secvurity Group ) 이란?

        보안 그룹( Security Group ) 이란 AWS 클라우드에서의 네트워크 보안을 의미한다.

        EC2 인스턴스이라고 생각한다면, 보안 그룹집 바깥 쪽에 쳐져있는 울타리와 대문이라고 비유할 수 있다.

        집에 접근할 때 울타리의 대문에서 접근해도 되는 요청인지 보완 요원이 검사를 하는 것과 비슷하다.

         

        인터넷에서 일부 사용자가 EC2 인스턴스에 접근(액세스) 하려고 한다고 가정해보자. 위 그림과 같이 EC2 인스턴스 주위에 방화벽 역할을 할 보안 그룹( Security Group ) 을 만들고 보안 그룹에 규칙을 지정한다. 이 보안 규칙에는 인바운드 트래픽( 외부에서 EC2인스턴스로 보내는 트래픽 ) 에서 어떤 트래픽만 허용할 것인지 설정할 수 있고, 아웃바운드 트래픽( EC2 인스턴스에서 외부로 나가는 트래픽 ) 에서 어떤 트래픽만 허용할 것인지 설정할 수 있다.

         

        보안 그룹을 설정할 때는 허용할 IP 범위포트(port) 를 설정할 수 있다.

         

        그러면 EC2 인스턴스를 생성할 때 어떻게 보안 그룹( Security Group ) 을 설정해야 하는지 알아보자.

         

         

        보안 그룹 설정

        외부에서 EC2로 접근할 포트는 22번 포트80번 포트이고 이 2가지 포트에 대해 인바운드 보안 규칙을 추가했다. 왜냐하면 22번 포트는 우리가 EC2에 원격 접속할 때 사용하는 포트이고, 80번 포트는 백엔드 서버를 띄울 예정이기 때문이다. 그리고 어떤 IP 에서든 전부 접근할 수 있게 만들기 위해 소스 유형은 위치 무관으로 설정했다.

         

         

         


         

        EC2 세팅하기 - 스토리지 구성

        스토리지 구성

         

         우리가 쓰고 있는 노트북이나 데스크탑 컴퓨터는 하드디스크를 가지고 있다. 하드디스크는 컴퓨터에 파일을 저장하는 공간이다. EC2 도 하나의 컴퓨이다보니 여러 파일들을 저장할 저장 공간이 필요하다. 이 저장 공간을 보고 EBS( Elastic Block Storage ) 라고 부른다. EBS와 같은 저장 공간을 조금 더 포괄적인 용어로 스토리지(Storage), 볼륨(Volume) 이라고 부른다.

         

         스토리지의 종류를 보면 gp3 이외에도 여러가지 종류의 스토리지가 있다. 하지만 가성비가 좋은 gp3 를 선택하자.
        용량을 30GiB를로 설정하는 이유는 프리 티어에서 30GiB까지 무료로 제공해주기 때문이다. 이 스토리지의 크기는 추후에 늘릴 수도 있으므로 처음 설정할 때 너무 큰 고민을 할 필요는 없다.

         

         


         

        EC2 접속하기

        생성된 인스턴스 정보 해석하기

        1) 세부 정보

         

        세부 정보에서 눈여겨 봐야할 부분은 2가지 이다. 퍼블릭 IPv4 주소인스턴스 상태이다.

        • 퍼블릭 IPv4 주소는 EC2 인스턴스가 생성되면서 부여받은 IP 주소이다. EC2 인스턴스에 접근하려면 이 IP주소로 접근하면 된다.
        • 인스턴스 상태는 말그대로 EC2 인스턴스가 실행 중이라는 뜻은 컴퓨터가 켜져있다는 의미이다.

        EC2 인스턴스를 중지, 재부팅, 종료(삭제) 할 수도 있다.우리가 쓰는 컴퓨터와 비슷하다. 재부팅은 말그대로 컴퓨터를 재시작시키는 것을 의미하고 중지는 컴퓨터를 잠시 꺼놓는 것을 의미한다. 종료는 컴퓨터를 아예 삭제시킨다는 것을 의미한다. EC2 인스턴스를 한번 종료하면 도중에 취소할 수 없으니 조심해야 한다.

         

         

        2) 보안 (보안 그룹)

        인스턴스 생성 시 설정한 보안 그룹에 대한 정보가 표시된다.

         

         

         

        3) 네트워크

        퍼블릭 IPv4 주소는 생성한 EC2 인스턴스의 IP 주소를 뜻한다.

         

         

        4) 스토리지

        인스턴스 생성 시 설정한 스토리지에 대한 정보가 나온다.

         

         

        5) 모니터링

        EC2 인스턴스가 정상적으로 작동하고 있는지, EC2 인스턴스의 성능을 향상시켜주어야 하는것은 아닌지 아래 지표를 통해 파악할 수 있다.

        EC2 인스턴스 모니터링 예

         

         

        EC2에 접속하기

         이전에 생성한 키, 페어로 접속할 수도 있지만 좀 더 간편한 방식인 브라우저로 접속하겠다.
        인스턴스 탭에서 실행중인 인스턴스를 클릭하고 연결 버튼만 클릭하면 EC2로 간단하게 접속할 수 있다.

         

         

         

        EC2 접속하여 Ubuntu Linux 첫 화면

         

         

         


         

        탄력적 IP 연결하기

        탄력적 IP 란?

         EC2 인스턴스를 생성하면 IP를 할당받는다. 하지만 이렇게 할당받은 IP는 임시적인 IP이다.  EC2 인스턴스를 잠깐 중지시켰다가 다시 실행시켜보면 IP가 바뀌어있다. 그래서 중지시켰다가 다시 실행시켜도 바뀌지 않는 고정 IP 를 할당받아야 한다.

        그것이 바로 탄력적 IP 이다.

         

         

        탄력적 IP 설정 방법

        왼쪽 네트워크 및 보안 탭에서 탄력적 IP 를 클릭하고 탄력적 IP 주소 할당을 클릭한다.

         

         

        할당 버튼을 누른다.

         

         

        할당받은 IP 의 이름을 지어주고 작업 탭에서 탄력적 IP 주소 연결을 클릭한다.

         

        생성해 놓은 인스턴스를 클릭하여 설정하고 연결버튼 클릭

         


         

        Spring Boot 서버를 EC2에 배포하기

        1) Ubuntu 환경에서 JDK 설치하는 법

        Spring Boot 3.xx 버전을 사용할 예정이고, JDK 는 17버전을 사용할 예정이다. 그에 맞게 환경을 설치해보자.

        # apt 패키지 업데이트 후 jdk 17 버전 설치
        $ sudo apt update && sudo apt install openjdk-17-jdk -y

         

         

        2) 설치 확인

        $ java -version

         

         

         

        3) Github 으로부터 Spring Boot 프로젝트 clone 하기

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

         

         

        4)  application.yml  파일 직접 만들기

         application.yml  와 같은 민감한 정보가 포함된 파일은 Git 으로 버전 관리를 하지 않는것이 일반적이다. 따라서  application.yml  파일은 별도로 EC2 인스턴스에 올려주어야 한다. 하지만  application.yml  파일을 EC2 인스턴스에 올리는 작업보다는,  application.yml  파일을 직접 만드는 게 훨씬 간단하다.

         

        src/main/resources/application.yml

        sever:
           port:  80

         

         

        5) 서버 실행시키기

        $ ./gradlew clean build # 기존 빌드된 파일을 삭제하고 새롭게 JAR로 빌드
        $ cd ~/ec2-spring-boot-sample/build/libs
        $ sudo java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar

         

         

         

         

         

        6) 브라우저로 확인하기

        할당 받은 탄력적 IP 로 접속할 수 있다. 그리고 HTTP 요청의 기본포트는 80이기 때문에 뒤에 :80 이 생략되어있다고 할 수 있다.

         

         


         

        EC2 리소스 해제하기

        1) EC2 인스턴스 종료하기

         

         

        2) 탄력적 IP 릴리스하기

         

        + Recent posts