클라우드 서비스의 대명사인 AWS(Amazon Web Services)는 신규 가입자에게 12개월간 프리티어(Free Tier) 혜택을 제공합니다. 하지만 '무료'라는 말만 믿고 설정을 소홀히 했다가는 예상치 못한 과금 고지서를 받을 수 있습니다.

오늘은 내 소중한 지갑을 지키면서 AWS EC2 인스턴스를 스마트하게 운영하는 5가지 핵심 전략을 정리해 보겠습니다.


1. 프리티어 한도 정확히 이해하기

가장 먼저 내가 쓸 수 있는 자원의 양을 알아야 합니다. EC2 프리티어의 핵심 조건은 다음과 같습니다.

  • 인스턴스 사용 시간: 매달 750시간 무료 (t2.micro 또는 t3.micro 기준).
  • 저장 공간(EBS): 총 30GB까지 무료.
  • 데이터 전송(Outbound): 인터넷으로 나가는 데이터 매달 100GB까지 무료.

2. 요금 폭탄 방지의 핵심: '결제 대시보드'와 '예산 알림'

과금을 방지하는 가장 강력한 방법은 미리 **알람(Alarm)**을 설정하는 것입니다.

2.1 Billing Alert 설정

  1. AWS 콘솔에서 **[Billing & Cost Management]**로 이동합니다.
  2. **[Billing preferences]**에서 'Receive Free Tier Usage Alerts'와 'Receive Billing Alerts'를 체크합니다.

2.2 AWS Budgets 활용

특정 금액(예: $1) 이상 요금이 발생할 기미가 보이면 내 이메일로 즉시 알림이 오도록 설정하세요.

  • 설정 방법: [Budgets] -> [Create budget] -> [Cost budget] 선택 -> 한도 금액 설정 후 알림 수신 이메일 등록.

3. 리소스 관리의 기술: 쓰지 않는 자원 정리

의외로 많은 과금이 '인스턴스' 자체가 아닌 부수적인 자원에서 발생합니다.

  • Elastic IP (탄력적 IP): 인스턴스에 연결되지 않은 채 할당만 되어 있는 고정 IP는 시간당 요금이 부과됩니다. 인스턴스를 삭제했다면 반드시 탄력적 IP도 '릴리스(Release)' 하세요.
  • EBS 스냅샷: 백업을 위해 만든 스냅샷도 용량에 따라 비용이 발생합니다. 오래된 스냅샷은 주기적으로 정리하세요.
  • 미사용 볼륨: 인스턴스를 삭제할 때 '종료 시 삭제' 옵션을 체크하지 않으면, 인스턴스는 사라져도 저장 장치(EBS)는 남아 계속 과금됩니다.

4. 인스턴스 유형 선택 시 주의사항

프리티어 대상은 보통 t2.micro (일부 지역은 t3.micro)입니다. 인스턴스를 생성할 때 반드시 아래와 같이 녹색으로 표시된 'Free tier eligible' 문구를 확인하세요. 실수로 다른 사양을 선택하면 생성 직후부터 요금이 발생합니다.


5. 보안 그룹(Security Group) 최적화로 트래픽 보호

악의적인 사용자가 내 서버에 무차별적인 요청을 보내 트래픽(Outbound Data Transfer)을 과도하게 발생시키면 이 또한 요금으로 이어집니다.

  • 불필요한 포트 폐쇄: 앞서 배운 UFW 설정이나 AWS 보안 그룹 설정을 통해 꼭 필요한 포트만 개방하세요.
  • IP 제한: 관리자 페이지나 특정 서비스는 화이트리스트 IP만 허용하여 불필요한 트래픽 낭비를 막으세요.

6. 결론: 클라우드 관리는 모니터링에서 시작됩니다

AWS 프리티어는 공부와 테스트를 위한 아주 좋은 환경이지만, 관리에 소홀하면 독이 될 수 있습니다. 매주 한 번은 Billing Dashboard에 접속하여 사용량을 체크하는 습관을 들이세요.

서버를 운영하다 보면 매일 특정 시간에 데이터베이스를 백업하거나, 매주 월요일마다 임시 파일을 정리해야 하는 상황이 생깁니다. 이런 반복적인 작업을 사람이 일일이 수동으로 하는 것은 비효율적일 뿐만 아니라 실수할 위험도 큽니다.

리눅스 시스템에는 이러한 작업을 예약하고 자동으로 실행해 주는 **크론(Cron)**이라는 강력한 도구가 있습니다. 오늘은 크론의 설정 파일인 **크론탭(Crontab)**의 문법부터 실전 활용 사례까지 상세히 알아보겠습니다.


1. 크론탭(Crontab)이란 무엇인가?

**크론(Cron)**은 리눅스용 시간 기반 잡 스케줄러입니다. 그리고 **크론탭(Crontab)**은 크론 작업(Cron Job)을 설정하는 테이블(Table) 형태의 파일을 말합니다.

사용자가 크론탭에 특정 시간과 실행할 명령어를 등록해 두면, 시스템은 백그라운드에서 대기하다가 정해진 시간에 맞춰 해당 명령을 자동으로 수행합니다.


2. 크론탭 기본 명령어

터미널에서 크론탭을 관리하기 위한 기본 명령어 3가지는 다음과 같습니다.

  • crontab -e: 크론탭 설정을 편집합니다. (가장 많이 사용)
  • crontab -l: 현재 예약된 크론 작업 목록을 출력합니다.
  • crontab -r: 예약된 모든 크론 작업을 삭제합니다. (주의해서 사용)

3. 크론탭 주기 설정 문법 (별 5개의 의미)

크론탭 설정은 한 줄에 5개의 시간 단위와 실행할 명령어를 공백으로 구분하여 작성합니다.

Plaintext
 
* * * * * [실행할 명령어]
┬  ┬  ┬  ┬  ┬
│  │  │  │  └─ 요일 (0-6, 0:일요일)
│  │  │  └─ 월 (1-12)
│  │  └─ 일 (1-31)
│  └─ 시 (0-23)
└─ 분 (0-59)

3.1 실전 설정 예시

  • 매분 실행: * * * * * /path/to/script.sh
  • 매일 새벽 3시에 실행: 0 3 * * * /path/to/backup.sh
  • 매주 월요일 오전 9시에 실행: 0 9 * * 1 /path/to/report.sh
  • 10분마다 실행: */10 * * * * /path/to/check.sh
  • 평일(월~금) 오후 6시에 실행: 0 18 * * 1-5 /path/to/work.sh

4. 크론탭 작성 시 주의사항 (트러블슈팅)

초보자들이 크론탭을 설정하고 가장 당황하는 순간은 "명령어가 제대로 실행되지 않을 때"입니다. 이를 방지하기 위한 팁입니다.

4.1 절대 경로 사용

크론은 일반적인 터미널 환경과 환경 변수(PATH)가 다릅니다. 따라서 python이나 node 같은 명령어를 쓸 때도 반드시 절대 경로를 사용해야 합니다.

  • 잘못된 예: python3 script.py
  • 올바른 예: /usr/bin/python3 /home/user/script.py

4.2 실행 로그 남기기

크론은 백그라운드에서 돌아가기 때문에 성공 여부를 알기 어렵습니다. 리다이렉션을 사용해 로그를 남기는 습관을 들이세요.

Bash
 
0 3 * * * /home/user/backup.sh >> /home/user/logs/cron.log 2>&1

4.3 권한 확인

실행하려는 스크립트 파일(.sh 등)에 실행 권한(chmod +x)이 있는지 확인해야 합니다.


5. 실전 활용 사례: DB 자동 백업 및 로그 정리

서버 관리자가 가장 흔히 사용하는 자동화 조합입니다.

Plaintext
 
# 매일 밤 12시에 DB 백업 스크립트 실행
0 0 * * * /home/user/scripts/db_backup.sh

# 매주 일요일 새벽 4시에 7일 지난 임시 파일 삭제
0 4 * * 0 find /tmp -mtime +7 -delete

6. 결론: 자동화로 서버 관리의 자유를 찾으세요

크론탭은 한 번 제대로 설정해 두면 서버가 돌아가는 동안 묵묵히 제 역할을 수행하는 든든한 조수입니다. 반복 업무를 자동화함으로써 여러분은 더 중요한 개발 업무에 집중할 수 있는 시간을 벌게 됩니다.

+ Recent posts