Type something to search...
AWS EC2 입문: 나만의 첫 클라우드 서버 구축하기

AWS EC2 입문: 나만의 첫 클라우드 서버 구축하기

나만의 서버가 필요해!

프로그래밍을 공부하고 첫 웹 애플리케이션을 만들었을 때의 기쁨은 이루 말할 수 없습니다. 하지만 내 컴퓨터의 로컬 호스트(localhost:3000)에서만 작동한다면 반쪽짜리 완성에 불과하겠죠. 전 세계 누구나 접속할 수 있도록 하려면 항상 켜져 있고 인터넷에 연결된 컴퓨터, 즉 **서버(Server)**가 필요합니다.

과거에는 서버용 컴퓨터를 직접 구매하고 네트워크 선을 연결하는 복잡한 과정이 필요했지만, 이제는 클라우드 컴퓨팅 덕분에 클릭 몇 번이면 5분 만에 강력한 가상 서버를 대여할 수 있습니다. 그중에서도 전 세계 1위 클라우드 서비스인 Amazon Web Services(AWS)의 가장 핵심적이고 기본적인 서비스, **EC2(Elastic Compute Cloud)**에 대해 알아보고 직접 인스턴스를 생성하는 과정을 살펴보겠습니다.

EC2(Elastic Compute Cloud)란 무엇인가?

EC2는 AWS에서 제공하는 크기를 탄력적으로 변경할 수 있는 가상 서버 호스팅 서비스입니다. 쉽게 말해 **"아마존의 거대한 데이터 센터에 있는 고성능 컴퓨터의 자원(CPU, RAM, 디스크)을 내가 원하는 만큼 쪼개서 빌려 쓰는 것"**입니다.

EC2의 주요 특징

  • 탄력성(Elastic): 트래픽이 몰릴 때는 서버의 성능을 높이거나 개수를 늘리고(Scale-up/out), 트래픽이 줄어들면 다시 축소(Scale-down/in)하여 비용을 최적화할 수 있습니다.
  • 다양한 운영체제: Linux(Ubuntu, Amazon Linux 등)는 물론 Windows Server까지 원하는 운영체제(AMI)를 선택하여 설치할 수 있습니다.
  • 초 단위 과금: 서버를 켜놓은 시간만큼만 비용을 지불하는 종량제(Pay-as-you-go) 방식을 채택하고 있어 초기 인프라 구축 비용이 전혀 들지 않습니다.
  • 프리티어(Free Tier): 신규 가입자는 1년 동안 t2.micro 사양의 인스턴스를 매달 750시간(사실상 한 달 내내) 무료로 사용할 수 있습니다. 학습용으로 완벽하죠!

EC2 인스턴스 생성 프로세스 요약

AWS 콘솔 화면이 자주 변경되어 복잡해 보일 수 있지만, 핵심적인 설정 단계는 항상 다음과 같습니다.

1. 리전(Region) 선택

AWS 데이터 센터가 위치한 물리적인 장소를 선택합니다. 한국 사용자가 주 타겟이라면 네트워크 지연(Latency)을 최소화하기 위해 반드시 우측 상단에서 **'아시아 태평양 (서울) - ap-northeast-2'**을 선택해야 합니다.

2. AMI(Amazon Machine Image) 선택

스마트폰을 살 때 안드로이드와 iOS를 고르듯, 서버의 운영체제를 고르는 단계입니다. 초보자에게는 커뮤니티 지원이 가장 방대하고 사용하기 편한 Ubuntu Server 최신 LTS 버전을 추천합니다. 반드시 '프리 티어 사용 가능' 마크가 있는지 확인하세요.

3. 인스턴스 유형(Instance Type) 선택

서버의 하드웨어 스펙(CPU 코어 수, 메모리 용량)을 결정합니다. 프리티어가 적용되는 **t2.micro**를 선택합니다. (t3.micro가 프리티어인 리전도 있으니 마크를 꼭 확인하세요.)

4. 키 페어(Key Pair) 생성 및 다운로드

이 단계가 보안상 가장 중요합니다! EC2 서버에 원격으로 접속(SSH)하기 위한 마스터키(비밀번호 대신 사용)를 생성합니다. RSA 방식을 선택하고 .pem 형식으로 다운로드합니다. 주의: 이 키 파일은 단 한 번만 다운로드할 수 있으므로, 분실하거나 외부에 유출되지 않도록 안전한 곳에 보관해야 합니다. GitHub에 실수로 올리지 않도록 극도로 주의하세요.

5. 네트워크 및 보안 그룹(Security Group) 설정

보안 그룹은 서버를 감싸고 있는 가상의 방화벽입니다. 어떤 포트(Port)로 들어오는 트래픽을 허용할지 결정합니다.

  • SSH (포트 22): 내가 원격으로 접속하여 관리하기 위해 반드시 열려 있어야 합니다. 가급적 소스 유형을 '내 IP'로 설정하여 나만 접속할 수 있게 막아두는 것이 안전합니다.
  • HTTP (포트 80) / HTTPS (포트 443): 웹 서버를 구동하여 일반 사용자들이 접속하게 하려면 이 포트들을 '위치 무관(Anywhere)'으로 열어두어야 합니다.

6. 스토리지(EBS) 구성

서버의 하드디스크(SSD) 용량을 설정합니다. 프리티어는 최대 30GB까지 무료로 사용할 수 있으므로, 기본값(8GB) 대신 30GB로 늘려서 생성하는 것이 좋습니다.

터미널로 EC2 인스턴스 접속하기 (Mac/Linux 기준)

인스턴스 생성이 완료되고 '실행 중' 상태가 되면, 할당받은 '퍼블릭 IPv4 주소'를 메모해 둡니다. 이제 터미널을 열고 다운로드해둔 키 페어(.pem)를 사용하여 접속해 봅시다.

# 1. 키 페어 파일의 권한을 나만 읽을 수 있도록 변경합니다. (매우 중요!)
chmod 400 my-key-pair.pem

# 2. SSH 명령어로 서버에 접속합니다. (Ubuntu AMI의 기본 사용자 이름은 ubuntu입니다.)
ssh -i /경로/my-key-pair.pem ubuntu@퍼블릭_IP_주소

처음 접속할 때 지문을 계속할 것인지 묻는 프롬프트가 나오면 yes를 입력합니다. 터미널의 프롬프트가 ubuntu@ip-172-xx-xx-xx:~$ 형태로 변경되었다면, 축하합니다! 드디어 나만의 클라우드 서버에 접속 성공한 것입니다.

마무리

이제 이 텅 빈 우분투 서버 위에 Node.js를 설치하고 Git으로 코드를 가져와 서버를 띄울 수 있습니다. EC2는 가장 기초적인 서비스이지만, 클라우드 인프라를 이해하는 첫 단추입니다. 사용하지 않을 때는 인스턴스를 꼭 '중지'하거나 '종료(삭제)'하여 요금 폭탄을 방지하는 습관도 잊지 마세요!

Related Post

GitHub Actions로 시작하는 완벽한 CI/CD 파이프라인 자동화

GitHub Actions로 시작하는 완벽한 CI/CD 파이프라인 자동화

수동 배포의 악몽에서 벗어나기 "자, 이제 코딩 끝! 서버에 접속해서 git pull 받고, 의존성 다시 설치하고, 빌드하고, 기존 프로세스 죽이고, 새 프로세스 띄우자." 프로젝트 초기에는 이러한 수동 배포 과정이 크게 번거롭지 않을 수 있습니다. 하지만 서비스가 커지고 팀원이 늘어나면서 하루에도 수십 번씩 코드가 통합되고 배포되어야 한다면

백엔드 개발자를 위한 필수 리눅스(Linux) 터미널 명령어 총정리

백엔드 개발자를 위한 필수 리눅스(Linux) 터미널 명령어 총정리

마우스를 버리고 키보드와 친해지기 윈도우(Windows)나 맥(macOS)의 화려한 GUI(그래픽 유저 인터페이스) 환경에 익숙한 상태에서, 처음 AWS EC2 같은 원격 서버에 접속하면 까만 화면에 하얀 글씨만 깜빡이는 터미널 환경(CLI)에 당황하기 십상입니다. 전 세계 웹 서버의 압도적인 다수는 리눅스(Linux) 운영체제로 구동됩니다. 서

클라우드 네이티브 아키텍처 핵심 가이드: MSA부터 쿠버네티스까지

클라우드 네이티브 아키텍처 핵심 가이드: MSA부터 쿠버네티스까지

서론: 왜 모두가 '클라우드 네이티브'를 외칠까? 과거의 IT 환경에서는 서버 장비를 직접 구매하고(On-Premise), 그 위에 거대한 하나의 애플리케이션(Monolithic)을 통째로 올려서 운영했습니다. 하지만 넷플릭스, 아마존, 토스나 배달의민족과 같이 하루에도 수십 번씩 새로운 기능을 배포하고, 트래픽이 폭주해도 끄떡없이 서비스를 유지해

웹어셈블리(WebAssembly)의 혁신: 브라우저를 넘어 클라우드 네이티브로

웹어셈블리(WebAssembly)의 혁신: 브라우저를 넘어 클라우드 네이티브로

서론: 브라우저 성능의 한계를 돌파한 WebAssembly 초기 웹은 단순히 문서를 공유하기 위한 목적으로 설계되었고, 자바스크립트(JavaScript)는 이 문서에 가벼운 동적 효과를 추가하는 용도였습니다. 하지만 웹 애플리케이션이 점차 복잡해지고 거대해지면서 자바스크립트 단일 언어만으로는 성능의 한계에 부딪히기 시작했습니다. 이를 해결하기 위해

제로 트러스트 아키텍처(ZTA): 클라우드 시대의 보안 패러다임 전환

제로 트러스트 아키텍처(ZTA): 클라우드 시대의 보안 패러다임 전환

서론: 무너진 성벽, 진화하는 사이버 위협 과거 기업의 보안 전략은 마치 단단한 성벽을 쌓는 것과 같았습니다. 회사 내부 네트워크(인트라넷)는 안전하고, 외부는 위험하다는 이분법적 사고방식을 바탕으로 방화벽(Firewall)과 VPN을 통해 경계망을 보호하는 데 집중했습니다. 이를 *경계 기반 보안(Perimeter-based Security)

플랫폼 엔지니어링(Platform Engineering): DevOps의 다음 진화 단계

플랫폼 엔지니어링(Platform Engineering): DevOps의 다음 진화 단계

서론: "You build it, you run it"의 역설 아마존의 CTO 베르너 보겔스의 명언 "You build it, you run it"으로 대변되는 DevOps 문화는 개발팀이 서비스의 설계부터 배포, 운영까지 책임짐으로써 출시 속도(Agility)를 높이는 데 크게 기여했습니다. 하지만 클라우드 네이티브 생태계가 극도로 복잡해진 20

엣지 컴퓨팅(Edge Computing)의 부상: 클라우드의 한계를 극복하는 초저지연 아키텍처

엣지 컴퓨팅(Edge Computing)의 부상: 클라우드의 한계를 극복하는 초저지연 아키텍처

서론: 중앙 집중식 클라우드의 한계 도달 지난 10여 년간 IT 인프라의 절대적인 진리는 "모든 데이터를 중앙 클라우드로 모아라"였습니다. AWS, Azure, GCP 등 거대한 데이터 센터를 보유한 클라우드 서비스는 막대한 컴퓨팅 파워와 무한한 저장 공간을 제공하며 산업을 혁신했습니다. 하지만 자율주행 자동차, 수만 개의 센서가 달린 스마트 팩

쿠버네티스(Kubernetes) 완벽 이해: 도커를 넘어선 컨테이너 오케스트레이션

쿠버네티스(Kubernetes) 완벽 이해: 도커를 넘어선 컨테이너 오케스트레이션

쿠버네티스(Kubernetes)란 무엇인가? 도커(Docker)가 단일 컨테이너의 생성과 관리를 혁신했다면, 쿠버네티스(Kubernetes, 줄여서 k8s)는 수십, 수백 개의 컨테이너를 대규모로 배포, 확장, 관리하는 과정을 자동화해주는 '컨테이너 오케스트레이션(Container Orchestration)' 도구입니다. 구글(Google)에서 자

구글 드라이브(Google Drive) 활용 팁

구글 드라이브(Google Drive) 활용 팁

업무 효율을 높여주는 구글 드라이브의 유용한 활용 팁을 소개합니다. 구글 드라이브 활용법오프라인 작업: 인터넷이 연결되지 않은 상태에서도 문서, 스프레드시트, 프레젠테이션을 편집할 수 있도록 오프라인 모드를 설정할 수 있습니다. 단축키 활용: Shift + T(새 문서), Shift + S(새 스프레드시트) 등의