AWS EC2로 AI 콜봇 만들기
- sanghoroh
- 4월 2일
- 4분 분량
AWS EC2 무료 서버(t2.micro)를 사용해서 WebSocket 서버를 띄우고, Twilio Media Stream을 연동해 음성 데이터를 실시간으로 처리하는 AI 콜봇 구축 과정을 A부터 Z까지 소개할게요.

AWS EC2 t2.micro 인스턴스 무료로 시작하기
✅ t2.micro란?
vCPU 1개, 메모리 1GB
월 750시간 무료 (1년간)
간단한 서버 운영에 적합
🛠️ EC2 인스턴스 생성 절차
AWS 콘솔 로그인 → EC2로 이동
인스턴스 시작 클릭 → Amazon Linux 2 or Ubuntu 선택
인스턴스 유형에서 t2.micro 선택
키 페어 생성 → SSH 접속용 .pem 파일 다운로드
보안 그룹 설정 (포트 22, 80, 443, 3000 (WebSocket) 열기)
팁: 인스턴스를 생성한 후 퍼블릭 IP를 확보해야 외부에서 접속이 가능해요.

2. Node.js + WebSocket 서버 구축
📦 필수 패키지 설치
sudo apt update sudo apt install nodejs npm
📁 WebSocket 서버 코드 예시 (server.js)
const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 3000 }); wss.on('connection', function connection(ws) { console.log('Client connected'); ws.on('message', function incoming(message) { console.log('Received:', message); // AI 처리 로직 삽입 (예: STT, GPT API 등) }); ws.send('Welcome to AI Callbot Server!'); });
서버 실행:
node server.js
팁: EC2는 서버 재부팅 시 프로세스가 종료되므로, PM2로 Node.js 프로세스를 관리하는 게 좋아요.
3. Twilio Media Stream과 실시간 연동
Twilio는 전화 통화 중 오디오 데이터를 WebSocket으로 스트리밍할 수 있도록 Media Stream 기능을 제공해요.
📞 TwiML App 설정
Twilio Console > Programmable Voice > TwiML App 생성
Voice Request URL 설정:
<Response> <Start> <Stream url="wss://[EC2 퍼블릭 IP]:3000"/> </Start> <Say>AI 콜봇에 연결 중입니다.</Say> </Response>
🎯 실시간 음성 처리 흐름
Twilio → WebSocket → Node.js 서버 → AI 처리(API 연동) → 응답 전달
예: STT(Text-to-Speech) → GPT 처리 → TTS(Text-to-Speech) → Twilio에 응답
✅ 1. AWS 로그인 후 EC2로 이동
상단 검색창에 “EC2” 검색
“EC2” 클릭 → 대시보드 진입
✅ 2. 인스턴스 만들기
왼쪽 메뉴에서 [인스턴스] > [인스턴스 시작]
주요 설정:
항목 | 선택값 |
AMI (OS) | Ubuntu 22.04 (프리티어 가능) |
인스턴스 유형 | t2.micro 또는 t3.micro (둘 다 프리티어) |
키 페어 | 새로 생성 (twilio-callbot-key) & .pem 파일 저장 |
네트워크 | 기본값 사용 |
보안 그룹 | 새로 생성 (다음 단계에서 설명) |
✅ 3. 보안 그룹 설정 (방화벽 열기)
새 보안 그룹 생성 → 아래 포트 허용:
포트 | 용도 |
22 | SSH 접속 (내 IP만 허용 추천) |
80 | HTTP (웹 브라우저 연결) |
443 | HTTPS |
8080 | WebSocket 서버 포트 (Twilio가 연결함) |
예시 설정: Anywhere (0.0.0.0/0) 허용해도 개발 중에는 괜찮습니다.
✅ 4. 인스턴스 시작
‘인스턴스 시작’ 클릭
완료 후 인스턴스 목록 → 퍼블릭 IPv4 주소 복사
👉 예: 3.37.112.54
✅ 5. 터미널 열기
macOS: 터미널
Windows: Git Bash or PowerShell (또는 PuTTY)
✅ 6. 접속 명령어
chmod 400 twilio-callbot-key.pem ssh -i twilio-callbot-key.pem ubuntu@<EC2-PUBLIC-IP>
예시:
ssh -i twilio-callbot-key.pem ubuntu@3.37.112.54
💡 “yes” 한 번만 입력하면 SSH 접속 완료!
이제 AWS 위에 서버 세팅할 준비가 끝났습니다.
⏭️ 다음 단계: Node.js 설치 & WebSocket 서버 올리기

WebSocket, 왜 요즘 이렇게 많이 쓸까?
우리가 웹사이트를 이용할 때 보통은 브라우저가 서버에 요청(request)을 보내고, 서버는 그에 대한 응답(response)을 주는 구조죠. 이걸 HTTP 통신이라고 해요. 하지만 이 구조는 일방적이에요. 서버가 먼저 클라이언트에게 말을 걸 수 없거든요.
그런데 실시간 채팅, 게임, AI 콜봇처럼 서버와 클라이언트가 계속 실시간으로 대화해야 하는 서비스라면? 여기서 등장하는 게 바로 WebSocket입니다!
WebSocket의 정의
WebSocket은 클라이언트(브라우저 등)와 서버 사이에 지속적인 연결을 유지하며 양방향 통신이 가능한 프로토콜입니다.
한 번 연결되면 지속적으로 연결 유지
클라이언트와 서버 서로 실시간 메시지 주고받기 가능
HTTP보다 데이터 전송량이 적고 빠름
WebSocket vs HTTP 차이
항목 | HTTP | WebSocket |
연결 방식 | 요청-응답 후 연결 종료 | 최초 연결 이후 지속 연결 유지 |
데이터 전송 방향 | 클라이언트 → 서버 (일방향) | 양방향 실시간 통신 |
속도 | 느림 (매번 연결 필요) | 빠름 (연결 유지되므로 바로 전송) |
사용 예시 | 게시판, 블로그 | 채팅, 게임, AI 콜봇, 실시간 알림 |
예시: WebSocket 사용 흐름
1. 클라이언트 연결 요청
const socket = new WebSocket("ws://example.com/ws");
2. 서버 연결 수락
const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 3000 }); wss.on('connection', (ws) => { console.log('Client connected'); ws.send('Hello from server!'); });
3. 양방향 메시지 주고받기
// 클라이언트에서 메시지 보내기 socket.send("Hi, Server!"); // 서버에서 메시지 받기 ws.on('message', (msg) => { console.log("Received from client:", msg); });
WebSocket을 사용하는 대표 서비스
카카오톡, WhatsApp 등 메신저
온라인 게임 (리그 오브 레전드, 배틀그라운드)
AI 콜봇 (Twilio Media Stream처럼 음성 데이터를 실시간 처리)
주식/코인 시세 실시간 스트리밍

Google Cloud, IBM Cloud와 비교해보자
항목 | AWS EC2 t2.micro | Google Cloud f1-micro | IBM Cloud Lite |
무료 기간 | 12개월 (750시간/월) | 12개월 (F1-micro, 744시간/월) | 제한 없음 (Lite 플랜, 소규모 사용만 가능) |
사양 | 1vCPU, 1GB RAM | 0.2 vCPU, 0.6GB RAM | 256MB RAM, 1 vCPU |
퍼포먼스 | ⭐⭐⭐⭐☆ | ⭐⭐☆☆☆ | ⭐⭐☆☆☆ |
지원 OS | Ubuntu, Amazon Linux 등 다양 | Debian, Ubuntu 등 | Ubuntu 기반 컨테이너 |
설정 난이도 | 보통 (UI 친절, 튜토리얼 풍부) | 약간 복잡 (권한, 네트워크 설정 주의) | 매우 쉬움 (GUI 위주, CLI 없이도 가능) |
WebSocket 적합도 | 매우 적합 (포트 설정 자유로움) | 적합하나 방화벽 설정 유의 | 제약 있음 (고정 포트 사용, 제한적 설정 가능) |
✅ 어떤 플랫폼이 나에게 맞을까?
유형 | 추천 플랫폼 |
초보자 + 실무 연습 | AWS EC2 (튜토리얼/정보 풍부) |
가볍게 체험용 | IBM Cloud Lite |
GCP 생태계 활용 중 | Google Cloud f1-micro |

FAQ
Q1. AWS 무료 계정 만들면 바로 EC2 쓸 수 있나요?
A. 네! 가입 후 바로 EC2 생성이 가능하고, t2.micro 인스턴스는 12개월간 자동 무료로 적용돼요.
Q2. EC2는 사용 안 해도 요금이 나오나요?
A. 인스턴스를 실행 중일 때만 시간 차감돼요. 중지(stop)하면 과금되지 않지만, 볼륨(EBS)은 과금될 수 있으니 주의하세요.
Q3. WebSocket 서버는 어떤 포트를 열어야 하나요?
A. 일반적으로 3000, 8080, 443 등을 많이 써요. EC2 보안 그룹에서 해당 포트를 꼭 인바운드 허용해야 외부 접속이 됩니다.
FAQ
Q1. WebSocket이 왜 HTTP보다 빠른가요?
A. HTTP는 매 요청마다 연결을 다시 만들기 때문에 오버헤드가 커요. 반면 WebSocket은 한 번 연결되면 계속 유지되기 때문에 데이터 전송 시 빠르고 효율적이에요.
Q2. WebSocket은 안전한가요?
A. 기본 WebSocket(ws://)은 암호화되지 않지만, 보안 WebSocket(wss://)을 사용하면 HTTPS처럼 SSL/TLS로 암호화돼서 안전하게 통신할 수 있어요.
Q3. 모든 브라우저에서 지원되나요?
A. 네! 크롬, 사파리, 엣지, 파이어폭스 등 대부분의 최신 브라우저에서 WebSocket을 기본 지원합니다.
FAQ
Q1. t2.micro로 AI 콜봇 충분히 돌아가나요?
A. 실시간 전화 1~2통 정도는 충분합니다. GPT API나 Whisper 같은 STT는 외부 API를 사용하므로 서버 부하가 크지 않아요.
Q2. WebSocket은 왜 쓰나요?
A. Twilio Media Stream이 음성 데이터를 실시간으로 전달하기 위해 WebSocket을 사용합니다. 즉시 처리와 응답이 가능한 구조이기 때문에 콜봇에 최적입니다.
Q3. 서버가 자꾸 죽어요, 왜 그럴까요?
A. Node.js를 그냥 node server.js로 실행하면 SSH 끊김과 함께 서버도 종료됩니다. pm2나 forever 같은 프로세스 매니저를 쓰세요.
Comments