이번 포스팅에서는 AWS EC2를 사용해 간단한 스프링 부트 API를 배포하고, 브라우저에서 결과를 확인하는 과정을 단계별로 안내합니다.


1. EC2 인스턴스 생성

1. AWS 접속

2. EC2 검색

  • AWS 검색창에서 "EC2"를 입력하여 EC2 대시보드로 이동합니다.

 

3. 인스턴스 시작

  • 인스턴스 시작 버튼을 클릭하고 아래와 같이 설정합니다
    • 이름: 원하는 이름 설정 (예: my-ec2-instance).
    • OS 선택: Ubuntu (최신 LTS 버전 선택).
    • 인스턴스 유형: 프리티어를 위해 t2.micro 선택.
    • 키 페어: 이번 프로젝트는 바로 삭제할 예정이므로 키 페어 없이 계속 진행 선택.
    • 네트워크 설정: 보안 그룹 생성을 선택하고 HTTP(80), HTTPS(443), SSH(22) 포트를 열어줍니다.
  • 설정 완료 후 인스턴스 시작 버튼을 클릭합니다.

 


2. 간단한 스프링 부트 프로젝트 생성

1. 스프링 부트 프로젝트 생성

  • Spring Initializr에서 새로운 프로젝트를 생성합니다.
    • Dependencies: Spring Web.
    • Build Tool: Maven 또는 Gradle.
  • 생성된 프로젝트에서 간단한 API를 작성합니다
@RestController
public class MainController {
    @GetMapping("/test")
    public String test() {
        return "EC2 quick test";
    }
}

 

2. GitHub에 프로젝트 업로드

  • 생성된 프로젝트를 로컬에서 GitHub에 업로드합니다.

3. EC2 인스턴스 연결

1. EC2 인스턴스 연결

  • AWS 관리 콘솔에서 생성된 인스턴스를 선택하고, 연결 버튼을 클릭합니다.

2. 필수 소프트웨어 설치

sudo apt update
sudo apt install openjdk-17-jdk git -y
  • EC2 인스턴스에 접속한 뒤, Java와 Git을 설치합니다

3. GitHub에서 프로젝트 클론

  • HTTPS 방식을 사용하는 경우, Personal Access Token을 생성하여 클론합니다:
  • git clone <https://github.com/>/.git


4. 보안 그룹 설정: 포트 8080 열기

  1. 보안 그룹 설정 확인
    • AWS EC2 대시보드에서 인스턴스를 선택하고 보안 그룹으로 이동합니다.
    • 인바운드 규칙 편집을 클릭하고 아래와 같은 규칙을 추가합니다:
      • Custom TCP Rule: 포트 8080.
      • Source: 0.0.0.0/0 (모든 IP 허용).
       


5. 스프링 부트 애플리케이션 실행

  1. 프로젝트 빌드 및 실행
    • 클론한 프로젝트 디렉토리로 이동한 뒤, Gradle을 사용해 애플리케이션을 실행합니다:
    • cd <your-repository> ./gradlew bootRun
  2. 애플리케이션 테스트
    • 브라우저에서 아래 URL로 접속하여 API 응답을 확인합니다:
    • http://<EC2_PUBLIC_IP>:8080/test


6. 결과

이제 간단한 스프링 부트 API가 EC2에서 성공적으로 실행되었습니다.

여기까지 따라오셨다면 EC2 서버와 스프링 부트를 연동하는 기본적인 과정을 이해하셨을 겁니다.

🎉 완성된 URL

  • 테스트 URL: http://<EC2_PUBLIC_IP>:8080/test

7. 학습하면 좋을 내용

 

  • 탄력적 IP (Elastic IP)
    • EC2 인스턴스의 공인 IP 주소를 고정하여 인스턴스 재시작 후에도 동일한 IP를 유지하는 방법.
  • EC2 인스턴스 완전 삭제
    • 사용하지 않는 EC2 인스턴스를 안전하게 종료하고, 스토리지와 연결된 리소스를 삭제하는 방법.
  • GitHub SSH 연동 방법
    • SSH 키를 사용해 GitHub에 인증하고, 더 간단하고 안전하게 프로젝트를 관리하는 방법.
  • Docker를 사용한 배포
    • Docker를 활용해 애플리케이션을 컨테이너화하고, EC2에서 손쉽게 배포하는 방법.

 

 

추가 참고사항

  • HTTPS 설정: HTTPS를 적용하려면 Spring Boot에서 SSL 인증서를 설정해야 합니다.
  • 보안: 실제 서비스에서는 보안 그룹의 0.0.0.0/0 설정을 사용하지 말고, 허용할 IP를 제한하는 것을 권장합니다.

'AWS > 학습정리' 카테고리의 다른 글

gabia 도메인 구매방법  (0) 2024.12.04
Route53  (1) 2024.12.03
ACM  (0) 2024.12.02
ELB  (0) 2024.12.02

가비아는 한국에서 대표적인 도메인 및 호스팅 서비스를 제공하는 회사입니다.

 

도메인은 개인 블로그나 회사 웹사이트를 운영할 때 반드시 필요한 요소인데요, 오늘은 가비아에서 도메인을 구매하는 방법을 단계별로 알아보겠습니다.


또한, 가비아 외에도 다른 도메인 구매 서비스에는 어떤 것들이 있는지 소개하고, 마지막으로 구매한 도메인을 AWS의 Route53에 등록하여 실제로 사용하는 방법까지 함께 알아볼 예정입니다.

가비아 도메인 구매 방법

가비아 접속 및 회원 가입

  • 가비아 사이트(gabia.com)에 접속 후 회원 가입.

 

도메인 검색

  • 원하는 도메인 이름 입력 → 사용 가능한 도메인 확인.

도메인 선택 및 결제

  • 적합한 도메인 확장자(TLD) 선택(.com, .net 등)
  • .shop이나 .store로 끝나는 도메인은 비교적 저렴하게 구매할 수 있습니다. 예를 들어 가비아에서는 이러한 도메인을 단 550원에 구매할 수 있어 초기 도메인 연결 비용을 절감할 수 있다는 장점이 있습니다.

 

 

 

가비아 외 인기 도메인 구매 서비스 소개

가비아와 함께 많이 사용되는 도메인 구매 사이트 몇 곳을 소개하며 비교합니다

  • Namecheap
    • 국제적으로 많이 사용되는 서비스.
    • 간단한 UI와 저렴한 가격으로 초보자에게 적합.
  • GoDaddy
    • 글로벌 1위 도메인 등록 서비스.
    • 마케팅과 브랜드 구축에 유용한 부가서비스 제공.
  • AWS Route53
    • 도메인 구매와 DNS 관리가 한 곳에서 가능.
    • AWS의 클라우드 서비스와 쉽게 연동 가능.
  • Google Domains
    • 간편한 UI와 다양한 TLD(도메인 확장자) 지원.
    • Google Workspace와의 호환성 좋음.

가비아 도메인 AWS Route53 등록 방법

 

 

'AWS > 학습정리' 카테고리의 다른 글

AWS EC2 서버 연동 및 간단한 스프링 부트 API 배포  (0) 2024.12.04
Route53  (1) 2024.12.03
ACM  (0) 2024.12.02
ELB  (0) 2024.12.02
 

AWS Route 53

1. AWS Route 53이란?

AWS Route 53은 Amazon Web Services(AWS)에서 제공하는 확장 가능한 클라우드 도메인 네임 시스템(DNS) 웹 서비스입니다. Route 53은 높은 가용성과 확장성을 제공하며, 사용자가 손쉽게 도메인을 관리하고 트래픽을 라우팅할 수 있도록 설계되었습니다.


2. Route 53의 주요 기능

  1. 도메인 등록
    • Route 53을 통해 도메인 이름을 구매, 등록, 관리할 수 있습니다.
    • 기존 도메인을 Route 53으로 이전할 수도 있습니다.
  2. DNS 관리
    • Route 53은 트래픽을 도메인 이름에서 AWS 리소스(EC2, S3, CloudFront 등)로 라우팅하거나 외부 리소스로 라우팅할 수 있습니다.
    • A, AAAA, CNAME, MX 등 다양한 DNS 레코드 유형을 지원합니다.
  3. 트래픽 라우팅 정책
    • 다양한 라우팅 정책을 제공하여 트래픽 흐름을 유연하게 제어할 수 있습니다.
      • 단순 라우팅(Simple Routing): 단일 리소스로 트래픽 라우팅.
      • 지연 시간 기반 라우팅(Latency Routing): 가장 짧은 지연 시간을 제공하는 리소스로 트래픽 라우팅.
      • 가중치 기반 라우팅(Weighted Routing): 리소스별로 비율을 설정하여 트래픽 분배.
      • 장애 조치 기반 라우팅(Failover Routing): 리소스 장애 시 대체 리소스로 트래픽 라우팅.
      • 지리적 라우팅(Geolocation Routing): 사용자 위치에 따라 트래픽 라우팅.
      • 지리 근접성 라우팅(Geoproximity Routing): 리소스와 사용자 간의 거리 기준으로 트래픽 라우팅.
  4. 헬스 체크 및 모니터링
    • 도메인의 가용성을 모니터링하고 헬스 체크를 통해 장애 감지 시 자동으로 트래픽을 다른 리소스로 라우팅.
  5. 통합 관리
    • AWS 리소스(S3, EC2, CloudFront 등)와 쉽게 통합되어 손쉬운 DNS 구성 가능.
  6. 호스팅 영역
    • Route 53에서 도메인의 호스팅 영역을 생성하여 DNS 레코드를 관리.

3. Route 53의 주요 사용 사례

  1. AWS 리소스 연결
    • 도메인 이름을 EC2, S3, CloudFront 등 AWS 리소스와 연결.
  2. 글로벌 트래픽 라우팅
    • 다양한 라우팅 정책(지연 시간 기반, 지리적 라우팅 등)을 사용해 글로벌 트래픽을 최적화.
  3. 도메인 등록 및 관리
    • Route 53에서 도메인 이름을 구매하거나 기존 도메인을 이전하여 관리.
  4. 장애 조치(Failover)
    • 주요 리소스의 장애 시 자동으로 백업 리소스로 트래픽을 전환.
  5. 보안 및 안정성 강화
    • DNSSEC(DNS Security Extensions)을 지원하여 DNS 스푸핑 방지.
    • 헬스 체크를 통해 리소스의 가용성을 유지.
  6. 멀티 클라우드 및 하이브리드 환경
    • AWS 외부의 리소스나 하이브리드 클라우드 환경에서도 트래픽 라우팅 가능.

4. Route 53의 장점

  1. 높은 가용성
    • 글로벌 인프라를 활용한 100% SLA(서비스 가용성 보장) 제공.
  2. 확장성
    • 트래픽 증가에 따라 동적으로 확장 가능.
  3. 유연한 라우팅 정책
    • 다양한 요구 사항에 맞춘 트래픽 라우팅 정책 지원.
  4. 통합 관리
    • AWS 리소스와 손쉽게 연계 가능.
  5. 보안 강화
    • DNSSEC 및 헬스 체크를 통한 안정적인 서비스 운영.

5. AWS Route 53의 한계

  1. 비교적 높은 비용
    • 일부 사용자에게는 타사 DNS 서비스에 비해 비용이 더 높게 느껴질 수 있음.
  2. 학습 필요
    • 다양한 라우팅 정책과 구성 옵션이 있어 초기 학습 곡선이 존재.

6. 주요 사용 사례와 적합성

사용 사례적합한 상황
도메인 관리 도메인 이름 등록 및 DNS 레코드 관리가 필요한 경우.
트래픽 분배 및 최적화 글로벌 사용자에게 빠른 응답 시간을 제공하고 싶은 경우.
장애 조치(Failover) 리소스 장애 발생 시 백업 리소스로 자동 전환이 필요한 경우.
AWS와의 통합 AWS 리소스(S3, EC2 등)와의 긴밀한 통합이 필요한 경우.

7. Route 53 관련 참고 링크

 

'AWS > 학습정리' 카테고리의 다른 글

AWS EC2 서버 연동 및 간단한 스프링 부트 API 배포  (0) 2024.12.04
gabia 도메인 구매방법  (0) 2024.12.04
ACM  (0) 2024.12.02
ELB  (0) 2024.12.02

SSL/TLS 인증서는 웹 애플리케이션 데이터를 안전하게 보호하기 위해 HTTPS를 적용하는 데 필수적입니다. AWS 환경에서 HTTPS를 설정할 때 자주 비교되는 두 가지 옵션이 있습니다. AWS Certificate Manager (ACM)와 Let's Encrypt. 이번 글에서는 두 방법의 특징, 장단점, 차이점, 그리고 적합한 사용 사례를 비교해 보겠습니다.


1. AWS Certificate Manager (ACM)

AWS Certificate Manager (ACM)은 AWS에서 제공하는 SSL/TLS 인증서 발급 및 관리 서비스로 AWS 리소스에서 HTTPS를 적용하는 데 최적화된 도구입니다.

특징

  • AWS 리소스 전용: ACM 인증서는 AWS 리소스(CloudFront, ELB, API Gateway)에서만 사용할 수 있습니다.
  • 자동 갱신: 인증서를 수동으로 갱신할 필요 없이 자동 갱신됩니다.
  • 도메인 검증: DNS 또는 이메일을 통해 소유권을 검증합니다.
  • 무료 제공: AWS 리소스와 연동 시 추가 비용 없이 사용할 수 있습니다.

장점

  1. AWS 서비스와 강력한 통합:
    • CloudFront, ELB, API Gateway 등과 몇 번의 클릭만으로 HTTPS를 설정할 수 있습니다.
  2. 자동 갱신:
    • 인증서 만료 걱정 없이 자동으로 갱신됩니다.
  3. 비용 효율성:
    • AWS 리소스 내에서 사용 시 무료입니다.

단점

  1. 제한된 사용 환경:
    • ACM 인증서는 AWS 리소스 외부에서는 사용할 수 없습니다.
  2. DNS 설정 복잡성:
    • 도메인 소유권 확인 과정에서 DNS CNAME 설정 작업이 필요할 수 있습니다.

적합한 사용 사례

  • AWS 리소스를 기반으로 운영되는 애플리케이션에서 HTTPS 설정.
  • 자동 갱신과 관리의 편리함이 중요한 경우.

2. Let's Encrypt

Let's Encrypt는 비영리 기관에서 제공하는 무료 SSL/TLS 인증서 발급 서비스로, AWS뿐 아니라 모든 서버 환경에서 HTTPS 적용이 가능합니다.

특징

  • 범용 사용 가능: AWS 외에도 EC2, Nginx, Apache 등 다양한 환경에서 사용할 수 있습니다.
  • 자동 발급 및 갱신 지원: Certbot 같은 도구를 사용하면 인증서를 자동으로 발급 및 갱신할 수 있습니다.
  • 무료 제공: 누구나 무료로 SSL 인증서를 사용할 수 있습니다.

장점

  1. 범용성:
    • AWS 외 서버나 클라우드 환경에서도 사용 가능합니다.
  2. 무료:
    • 전 세계 누구나 인증서를 무료로 발급받을 수 있습니다.
  3. 오픈 소스 도구 활용:
    • Certbot과 같은 오픈 소스 도구를 사용해 설정을 자동화할 수 있습니다.

단점

  1. 수동 설정 필요:
    • 초기 설정에서 Certbot 설치 및 자동화 스크립트 작성이 필요합니다.
  2. 짧은 유효 기간:
    • 인증서 유효 기간이 90일로 짧아 정기적인 갱신이 요구됩니다.

적합한 사용 사례

  • EC2에서 Nginx, Apache 같은 웹 서버와 HTTPS 설정.
  • AWS 외부 또는 온프레미스 환경에서 HTTPS가 필요한 경우.
  • 비용을 최소화하면서 유연한 HTTPS 설정을 원하는 경우.

3. 주요 차이점 비교

항목ACMLet's Encrypt

비용 무료 무료
사용 환경 AWS 리소스 전용 범용 (AWS, Nginx, Apache 등 모든 서버)
도메인 검증 방식 DNS 검증, 이메일 검증 HTTP 검증, DNS 검증
자동 갱신 완전 자동 Certbot 등으로 자동화 가능
유효 기간 무제한 (AWS에서 자동 갱신) 90일
설정 난이도 쉬움 (AWS와 통합) 중간 (Certbot 설치 및 구성 필요)

4. 선택 가이드: 언제 무엇을 사용할까?

ACM을 선택해야 할 때

  • AWS 서비스를 중심으로 애플리케이션을 운영 중일 때.
  • ELB, CloudFront, API Gateway와 HTTPS를 간편하게 연결하고 싶을 때.
  • 인증서 갱신과 관리를 자동화하고 싶을 때.
  • EC2에서 직접 HTTPS를 설정할 필요가 없을 때.

Let's Encrypt를 선택해야 할 때

  • EC2에서 직접 Nginx, Apache와 HTTPS를 설정해야 할 때.
  • AWS 외부의 서버나 클라우드 서비스에서 인증서를 사용할 때.
  • 초기 설정에 약간의 수작업이 가능하며 비용을 최소화하고 싶을 때.

5. 출처


이 글을 통해 ACM과 Let's Encrypt의 장단점을 비교하고 여러분의 상황에 맞는 HTTPS 인증 솔루션을 선택하는 데 도움이 되길 바랍니다.

'AWS > 학습정리' 카테고리의 다른 글

AWS EC2 서버 연동 및 간단한 스프링 부트 API 배포  (0) 2024.12.04
gabia 도메인 구매방법  (0) 2024.12.04
Route53  (1) 2024.12.03
ELB  (0) 2024.12.02

Elastic Load Balancer (ELB)

Elastic Load Balancer(ELB)는 AWS의 트래픽 분산 서비스로 애플리케이션의 가용성과 확장성을 높이는 데 사용됩니다. 여러 서버 간 트래픽을 분산하여 병목 현상을 방지하고 효율적으로 부하를 처리합니다.


ELB의 주요 특징

  1. 트래픽 분산
    • 다수의 EC2 인스턴스, 컨테이너, Lambda 함수 등으로 트래픽을 고르게 분배하여 애플리케이션 성능을 최적화합니다.
  2. HTTPS 지원
  3. 다양한 로드 밸런서 유형
    • Application Load Balancer(ALB): HTTP/HTTPS 트래픽 처리, URL 기반 라우팅 지원.
    • Network Load Balancer(NLB): 초고속 트래픽 처리를 위한 고성능 로드 밸런서.
    • Gateway Load Balancer(GLB): 네트워크 어플라이언스를 통합하여 대규모 트래픽 관리.
  4. 고가용성과 자동 확장
    • 다수의 리소스에 대해 자동으로 트래픽을 분산하며 리소스 추가 시 자동 확장을 지원합니다.

 


ELB의 주요 사용 사례

  1. 다수의 EC2 인스턴스 트래픽 관리
    • 대규모 트래픽을 처리하기 위해 여러 EC2 인스턴스에 고르게 트래픽을 분산.
  2. 동적 콘텐츠 처리
    • API 호출, 사용자 요청, 데이터베이스 연결 등 실시간 트래픽 관리.
  3. 고가용성 애플리케이션
    • 트래픽 증가나 서버 장애 시에도 서비스 중단 없이 애플리케이션을 운영.
  4. 백엔드 보호
    • 로드 밸런싱을 통해 서버를 직접 노출하지 않고 간접적으로 트래픽 처리.

CloudFront: 개념과 사용 사례

CloudFront는 AWS의 콘텐츠 배포 네트워크(CDN) 서비스로 사용자와 가까운 엣지 로케이션에서 콘텐츠를 제공함으로써 전송 속도를 향상하고 지연 시간을 최소화합니다.


CloudFront의 주요 특징

  1. 콘텐츠 캐싱
    • 정적 파일(HTML, CSS, 이미지, 동영상 등)을 엣지 로케이션에 저장하여 빠르게 전달.
  2. HTTPS 지원
    • HTTPS를 기본 지원하며, ACM과 쉽게 통합하여 보안 연결 제공.
  3. 글로벌 네트워크 활용
    • AWS 글로벌 네트워크의 엣지 로케이션을 통해 지연 시간을 감소.
  4. 보안 기능
    • AWS WAF(Web Application Firewall)와 통합하여 보안 필터링.
    • DDoS 방어(AWS Shield)를 통해 애플리케이션 보호.

CloudFront의 주요 사용 사례

  1. 정적 콘텐츠 배포
    • 웹사이트의 이미지, 동영상, CSS, JavaScript 파일을 빠르게 제공.
  2. 글로벌 서비스 구축
    • 전 세계 사용자들에게 동일한 속도로 콘텐츠를 제공.
  3. API Gateway와 통합
    • REST API, 서버리스 애플리케이션과의 연동을 통해 성능과 보안 강화.
  4. 동영상 스트리밍
    • 동영상 또는 대용량 콘텐츠를 캐싱하여 스트리밍 성능을 최적화.

CloudFront와 ELB: 주요 차이점

항목CloudFrontElastic Load Balancer (ELB)

주요 역할 콘텐츠 배포 및 캐싱 트래픽 분산 및 고가용성
HTTPS 지원 엣지 로케이션에서 HTTPS 제공 HTTPS 리스너를 통한 보안 연결 관리
사용 가능 환경 글로벌 엣지 네트워크에서 콘텐츠 제공 특정 리전 내에서 트래픽 관리
주요 사용 사례 정적 콘텐츠 배포 EC2 기반의 동적 트래픽 분산

언제 CloudFront와 ELB를 사용할까?

CloudFront가 적합한 경우

  • 정적 콘텐츠(이미지, CSS, JS) 배포가 필요한 경우.
  • 글로벌 사용자를 대상으로 하는 서비스.
  • API Gateway와의 통합이 필요하거나 보안을 강화하려는 경우.

ELB가 적합한 경우

  • EC2 인스턴스를 사용하는 동적 애플리케이션.
  • 고성능, 고가용성 애플리케이션에서 트래픽 분산이 필요한 경우.
  • 데이터베이스와의 통신이 많은 API 호출 처리.

CloudFront와 ELB를 함께 사용할 때

  • CloudFront는 전 세계적으로 정적 콘텐츠를 캐싱하여 배포.
  • ELB는 백엔드 EC2 인스턴스 간 트래픽을 분산, 동적 요청 처리.

이 두 서비스를 결합하면 글로벌 사용자 대상의 빠른 정적 콘텐츠 제공과 안정적인 동적 애플리케이션 관리를 동시에 수행할 수 있습니다.


결론

CloudFrontELB는 서로 다른 목적에 최적화된 AWS 서비스입니다.

  • 정적 콘텐츠 제공과 글로벌 사용자 지원이 필요하다면 CloudFront
  • 동적 트래픽 처리와 로드 밸런싱이 필요하다면 ELB를 사용하는 것이 적합합니다.

필요에 따라 두 서비스를 함께 사용해 최적의 성능과 안정성을 확보할 수 있습니다.

 

출처

'AWS > 학습정리' 카테고리의 다른 글

AWS EC2 서버 연동 및 간단한 스프링 부트 API 배포  (0) 2024.12.04
gabia 도메인 구매방법  (0) 2024.12.04
Route53  (1) 2024.12.03
ACM  (0) 2024.12.02

+ Recent posts