카테고리 없음

AWS EC2로 개발하는 팁 알려드려요!

sportsday98 2024. 7. 11. 08:31

AWS EC2(Elastic Compute Cloud)는 웹 애플리케이션과 서비스 호스팅에 이상적인 플랫폼입니다. 이 글에서는 EC2 인스턴스를 설정하고 운영하는 과정에서 유용한 팁과 함께, 자주 묻는 질문들에 대한 해결책을 제시하겠습니다.

1. 도메인 설정: Route53과 .click 도메인

AWS Route53은 도메인 네임 시스템(DNS) 웹 서비스로, 도메인을 손쉽게 구입하고 관리할 수 있습니다. 특히 EC2와의 통합이 원활하여, 도메인 설정이 편리합니다. Route53에서 도메인을 구입하고 EC2 인스턴스에 연결하면, 도메인 이름으로 직접 접근할 수 있어 IP 주소를 외울 필요가 없습니다.

예를 들어, .click 도메인은 단돈 3달러에 구매할 수 있어 매우 경제적입니다. 반드시 .com 도메인을 고집할 필요 없이 .click 도메인을 활용해 보세요. 이렇게 하면 비용을 절감하면서도 멋진 도메인 이름을 가질 수 있습니다.

2. PM2와 Caddy로 자동 배포

EC2 인스턴스에서 웹 애플리케이션을 운영할 때, PM2와 Caddy를 사용하면 배포 및 관리를 매우 쉽게 할 수 있습니다. PM2는 Node.js 애플리케이션의 프로세스 관리 도구로, 애플리케이션을 백그라운드에서 실행하고 재시작 등의 작업을 자동화합니다. Caddy는 간단한 설정으로 HTTPS를 제공하는 웹 서버입니다.

이 둘을 결합하여 .sh 스크립트를 작성하면, 배포 과정이 한층 더 간편해집니다. 예를 들어, 다음과 같은 스크립트를 작성해 보세요:

while getopts k:h:s: flag
do
case "${flag}" in
k) key=${OPTARG};;
h) hostname=${OPTARG};;
s) service=${OPTARG};;
esac
done

if [[ -z "$key" || -z "$hostname" || -z "$service" ]]; then
printf "\nMissing required parameter.\n"
printf " syntax: deployService.sh -k <pem key file> -h <hostname> -s <service>\n\n"
exit 1
fi

printf "\n----> Deploying React bundle $service to $hostname with $key\n"

# Step 1
printf "\n----> Build the distribution package\n"
rm -rf build
mkdir build
npm install # make sure vite is installed so that we can bundle
npm run build # build the React front end
cp -rf dist build/public # move the React front end to the target distribution
cp service/*.js build # move the back end service to the target distribution
cp service/*.json build

# Step 2
printf "\n----> Clearing out previous distribution on the target\n"
ssh -i "$key" ubuntu@$hostname << ENDSSH
rm -rf services/${service}
mkdir -p services/${service}
ENDSSH

# Step 3
printf "\n----> Copy the distribution package to the target\n"
scp -r -i "$key" build/* ubuntu@$hostname:services/$service

# Step 4
printf "\n----> Deploy the service on the target\n"
ssh -i "$key" ubuntu@$hostname << ENDSSH
bash -i
cd services/${service}
npm install
pm2 restart index
ENDSSH

# Step 5
printf "\n----> Removing local copy of the distribution package\n"
rm -rf build

이게 제가 배포시에 썼던 스크립트 입니다! 이 스크립트를 실행하면, PM2가 애플리케이션을 시작하고 Caddy가 새로운 설정을 적용합니다. 이렇게 하면 배포가 간단해지고, 서버 관리가 훨씬 쉬워집니다.

 

3. AWS EC2 개요와 활용법

AWS EC2(Elastic Compute Cloud)는 Amazon Web Services에서 제공하는 가상 서버입니다. 사용자는 필요에 따라 인스턴스를 생성, 구성, 관리할 수 있으며, 이는 웹 애플리케이션, 데이터베이스, 개발 환경 등 다양한 용도로 활용됩니다. EC2는 사용한 만큼만 비용을 지불하는 유연한 가격 정책을 제공하며, 필요에 따라 인스턴스를 스케일 업 또는 스케일 다운할 수 있습니다.

EC2의 주요 장점 중 하나는 다양한 인스턴스 유형을 제공하여, 사용자가 자신의 애플리케이션 요구 사항에 맞는 최적의 인스턴스를 선택할 수 있다는 점입니다. 예를 들어, 범용 인스턴스(T2, T3)는 비용 효율적이고 다목적으로 사용할 수 있으며, 컴퓨팅 최적화 인스턴스(C5, M5)는 고성능 컴퓨팅 작업에 적합합니다.

AWS EC2는 전 세계 수많은 기업과 개발자들이 사용하는 인기 있는 서비스입니다. Netflix, Airbnb, Samsung, GE 등 다양한 산업 분야의 기업들이 EC2를 활용하여 애플리케이션을 호스팅하고 운영하고 있습니다. 이는 EC2의 높은 안정성과 유연성, 그리고 글로벌 네트워크 인프라 덕분에 가능합니다.

또한, EC2는 다양한 운영 체제와 소프트웨어를 지원하며, 사용자는 필요에 따라 인스턴스를 맞춤 구성할 수 있습니다. 이러한 유연성은 개발자들에게 큰 장점이 되며, 다양한 프로젝트와 요구 사항에 맞춰 EC2를 활용할 수 있게 합니다.

AWS EC2는 사용자의 요구에 맞게 확장 가능한 클라우드 컴퓨팅 서비스를 제공하며, 이는 현대 애플리케이션 개발 및 배포에 필수적인 도구로 자리잡고 있습니다. 이를 통해 개발자들은 빠르고 효율적으로 애플리케이션을 배포하고 관리할 수 있으며, 비즈니스의 성장에 따라 인프라를 유연하게 확장할 수 있습니다.

4. EC2 인스턴스 설정 팁

  • 인스턴스 유형 선택: 애플리케이션의 요구 사항에 맞는 인스턴스 유형을 선택하세요. T2, T3와 같은 범용 인스턴스는 비용 효율적이며, 웹 서버에 적합합니다. CPU와 메모리 요구사항이 높은 경우, M5, C5와 같은 인스턴스를 고려해 보세요.
  • 보안 그룹 설정: 보안 그룹을 통해 인스턴스에 접근할 수 있는 IP 주소와 포트를 제한하세요. 기본적으로 SSH(22번 포트)와 HTTP(80번 포트), HTTPS(443번 포트)만 열어두는 것이 좋습니다.
  • 자동 스냅샷: 중요한 데이터가 있는 경우, 정기적으로 EBS 볼륨의 스냅샷을 생성하세요. 이를 통해 데이터 손실 시 빠르게 복구할 수 있습니다.

5. 자주 묻는 질문과 해결책

  • Q: EC2 인스턴스에 어떻게 SSH로 접속하나요? A: AWS 관리 콘솔에서 인스턴스를 선택하고 "연결" 버튼을 클릭하면, SSH 접속 명령어가 나옵니다. 이 명령어를 복사하여 터미널에 입력하면 접속할 수 있습니다.

EC2는 강력하고 유연한 클라우드 컴퓨팅 플랫폼입니다. 위의 팁들과 도구들을 활용하면, 더욱 효율적이고 효과적으로 애플리케이션을 운영할 수 있습니다. Happy Coding!