클라우드와 AWS 기초 정리

김소연·어제

1. 클라우드

클라우드는 쉽게 말해 인터넷으로 컴퓨터 자원을 빌려 쓰는 방식이다.

예전에는 서비스를 운영하려면 회사가 직접 서버 컴퓨터를 사고, 서버실을 만들고, 전기와 네트워크를 관리해야 했다. 이것을 온프레미스(On-premise) 방식이라고 한다.

하지만 클라우드를 사용하면 직접 서버를 구매하지 않아도 된다. AWS 같은 클라우드 회사가 서버, 저장공간, 데이터베이스, 네트워크 같은 자원을 미리 준비해두고, 사용자는 필요한 만큼 빌려서 사용한다.

AWS 공식 문서에서도 클라우드 컴퓨팅을 인터넷을 통해 컴퓨팅 파워, 데이터베이스, 스토리지, 애플리케이션 같은 IT 자원을 필요한 만큼 제공받고 사용한 만큼 비용을 지불하는 방식이라고 설명한다.

서버가 필요하면 서버를 빌리고, 저장공간이 필요하면 저장공간을 빌리고, 데이터베이스가 필요하면 데이터베이스를 빌릴 수 있다.

  • 클라우드를 사용하는 이유

    클라우드를 사용하는 이유는 다음과 같다.

    이유설명
    초기 비용 절감서버를 직접 구매하지 않아도 된다
    빠른 시작몇 번의 클릭으로 서버를 만들 수 있다
    확장성사용자가 많아지면 서버를 늘릴 수 있다
    사용량 기반 비용필요한 만큼 사용하고 사용한 만큼 비용을 낸다
    관리 부담 감소물리적인 서버 관리 부담이 줄어든다

2. AWS 기본 서비스

  • AWS는 Amazon Web Services의 줄임말이다. 아마존에서 제공하는 클라우드 서비스 플랫폼이다.

    AWS는 컴퓨팅, 스토리지, 데이터베이스, 네트워크, 보안, 개발 도구 등 다양한 클라우드 서비스를 제공한다. AWS 공식 백서에 따르면 AWS는 200개 이상의 서비스를 제공한다.

    처음 AWS를 공부할 때는 모든 서비스를 한 번에 외우려고 하기보다, 자주 사용하는 기본 서비스부터 이해하는 것이 좋다.


  • EC2

    EC2는 Elastic Compute Cloud의 줄임말이다.

    AWS에서 빌리는 가상 컴퓨터로 내 컴퓨터에서 애플리케이션을 실행하듯이, EC2라는 AWS 서버에 애플리케이션을 올려 실행할 수 있다.

    AWS 공식 문서에서는 EC2를 AWS 클라우드에서 제공하는 온디맨드 방식의 확장 가능한 컴퓨팅 용량이라고 설명한다. EC2 인스턴스는 AWS 클라우드 안의 가상 서버이다.

    예시

    Spring Boot 프로젝트를 만들었다면 로컬에서는 내 컴퓨터에서 실행한다.

    java -jar app.jar

    배포할 때는 EC2에 접속해서 같은 방식으로 실행할 수 있다.

    java -jar app.jar

    즉, EC2는 내 프로젝트를 인터넷에 올려 실행할 수 있는 서버 역할을 한다.


  • S3

    S3는 Simple Storage Service의 줄임말이다.

    파일을 저장하는 인터넷 창고다. 이미지, 동영상, 문서, 백업 파일 등을 저장할 수 있다.

    AWS 공식 문서에서는 Amazon S3를 확장성, 데이터 가용성, 보안, 성능을 제공하는 객체 스토리지 서비스라고 설명한다.

    예시

    회원 프로필 이미지를 저장해야 한다고 가정해보자.
    
    내 서버 안에 이미지를 저장할 수도 있지만, 서버가 바뀌거나 삭제되면 이미지 관리가 어려워질 수 있다. 
    이때 S3에 이미지를 저장하면 파일 저장소를 따로 안정적으로 관리할 수 있다.

  • RDS

    RDS는 Relational Database Service의 줄임말이다.

    AWS에서 관리해주는 데이터베이스 서비스다. MySQL, PostgreSQL 같은 관계형 데이터베이스를 AWS에서 쉽게 만들고 운영할 수 있게 도와준다.

    AWS 공식 문서에서는 Amazon RDS를 AWS 클라우드에서 관계형 데이터베이스를 설정, 운영, 확장하기 쉽게 해주는 웹 서비스라고 설명한다.

    예시

    Spring Boot 프로젝트에서 회원 정보를 저장하려면 데이터베이스가 필요하다.
    
    로컬 개발 환경에서는 내 컴퓨터의 MySQL을 사용할 수 있다. 
    하지만 실제 배포 환경에서는 RDS를 사용해서 데이터베이스를 운영할 수 있다.

  • Lambda

    Lambda는 서버를 직접 관리하지 않고 코드를 실행할 수 있는 서비스다.

    AWS 공식 문서에서는 Lambda를 서버를 관리하지 않고 코드를 실행할 수 있는 컴퓨팅 서비스라고 설명한다. 코드는 자동으로 확장되고, 사용한 만큼 비용을 지불한다.

    EC2는 내가 서버를 빌려서 직접 관리하는 느낌이 강하다.
    Lambda는 서버를 직접 켜고 관리하지 않아도, 특정 상황이 발생했을 때 코드만 실행되게 만들 수 있다.
    예를 들어 이미지가 S3에 업로드되면 자동으로 이미지 크기를 줄이는 코드를 실행할 수 있다.


3. IAM

IAM은 Identity and Access Management의 줄임말로
AWS에서 누가, 어떤 서비스를, 어디까지 사용할 수 있는지 정하는 권한 관리 서비스다.

AWS 공식 문서에서는 IAM을 AWS 리소스에 대한 접근을 안전하게 제어하도록 도와주는 웹 서비스라고 설명한다. IAM을 통해 사용자, 보안 자격 증명, 권한을 관리할 수 있다.

  • 쉽게 비유하면
    AWS 계정은 큰 회사 건물이고, IAM은 출입증 관리 시스템이라고 볼 수 있다.
    모든 사람이 모든 방에 들어갈 수 있으면 위험하다. 그래서 사람마다 출입증을 다르게 준다.

    사람권한 예시
    관리자모든 서비스 관리 가능
    개발자EC2, S3 일부 사용 가능
    읽기 전용 사용자설정 조회만 가능
    애플리케이션필요한 AWS 서비스에만 접근 가능
  • IAM에서 자주 나오는 개념

    개념설명
    IAM UserAWS를 사용하는 개별 사용자
    IAM Group여러 사용자를 묶은 그룹
    IAM Role특정 서비스나 사용자에게 임시로 부여하는 역할
    Policy어떤 행동을 허용하거나 거부할지 적은 권한 규칙
  • 중요한 원칙

    IAM에서 가장 중요한 원칙은 최소 권한 원칙이다.
    최소 권한 원칙은 사용자나 서비스에게 꼭 필요한 권한만 주는 것이다.
    예를 들어 어떤 애플리케이션이 S3 파일 읽기만 필요하다면, S3 삭제 권한까지 주면 안 된다. 권한을 많이 줄수록 실수나 보안 사고 위험이 커지기 때문이다.


4. 보안 그룹과 VPC

  • VPC

    VPC는 Virtual Private Cloud의 줄임말로 AWS 안에 만드는 나만의 가상 네트워크 공간이다.

    AWS 공식 문서에서는 VPC를 기존 데이터센터에서 운영하는 네트워크와 매우 유사한 가상 네트워크라고 설명한다. VPC를 만든 후에는 서브넷을 추가하고, 그 안에 AWS 리소스를 배치할 수 있다.

    쉽게 비유하면
    AWS 전체가 큰 도시라면, VPC는 그 안에 내가 만든 우리 집 또는 우리 회사 건물과 같다.
    그 안에 서버도 두고, 데이터베이스도 두고, 외부에서 들어올 수 있는 문도 정할 수 있다.

    VPC 안의 주요 개념

    개념설명
    VPC나만의 가상 네트워크
    SubnetVPC 안을 더 작게 나눈 네트워크 구역
    Public Subnet인터넷에서 접근 가능한 구역
    Private Subnet외부에서 직접 접근하지 못하게 숨겨둔 구역
    Internet GatewayVPC가 인터넷과 연결되는 문
    Route Table네트워크 트래픽이 어디로 갈지 정하는 규칙표

  • 보안 그룹

    보안 그룹은 EC2 같은 AWS 리소스 앞에 있는 가상 방화벽이다.

    AWS 공식 문서에서는 보안 그룹을 EC2 인스턴스 같은 VPC 리소스의 인바운드와 아웃바운드 트래픽을 제어하는 가상 방화벽이라고 설명한다.

    쉽게 비유하면
    EC2 서버가 집이라면, 보안 그룹은 현관문 잠금장치다.
    누가 어떤 문으로 들어올 수 있는지 정한다.
    예를 들어 웹 서버라면 보통 다음과 같은 포트를 열 수 있다.

    포트의미사용 예시
    22SSH 접속개발자가 서버에 접속할 때
    80HTTP일반 웹사이트 접속
    443HTTPS보안 웹사이트 접속
    8080애플리케이션 서버Spring Boot 기본 실행 포트로 자주 사용

    보안 그룹 예시

    Spring Boot 애플리케이션을 EC2에서 실행한다고 가정하면, 다음과 같이 설정할 수 있다.

    유형포트소스
    SSH22내 IP
    HTTP80Anywhere
    HTTPS443Anywhere
    Custom TCP8080테스트 시 내 IP 또는 필요 범위

    여기서 중요한 점은 SSH 22번 포트를 모든 사람에게 열어두면 위험하다는 것이다. 서버 접속용 포트는 가능하면 내 IP에서만 접근 가능하게 설정하는 것이 좋다.


5. EC2

EC2는 AWS에서 가장 기본적으로 많이 사용하는 서비스 중 하나다.

EC2를 사용하면 AWS 클라우드 안에 가상 서버를 만들고, 그 서버 위에서 애플리케이션을 실행할 수 있다. AWS 공식 문서에 따르면 EC2를 사용하면 필요한 만큼 가상 서버를 시작할 수 있고, 보안과 네트워크, 스토리지를 설정할 수 있으며, 트래픽 증가에 맞춰 용량을 확장할 수 있다.

  • EC2를 사용하는 흐름

    Spring Boot 프로젝트를 EC2에 배포한다고 하면 전체 흐름은 다음과 같다.

    1. EC2 인스턴스 생성
    2. 키 페어 생성 또는 선택
    3. 보안 그룹 설정
    4. EC2에 SSH 접속
    5. Java 설치
    6. jar 파일 업로드
    7. 애플리케이션 실행
    8. 퍼블릭 IP로 접속 확인
  • EC2 관련 주요 개념

    개념설명
    인스턴스AWS에서 생성한 가상 서버
    AMI서버를 만들 때 사용하는 기본 이미지
    인스턴스 타입서버의 CPU, 메모리 성능 종류
    키 페어SSH 접속할 때 사용하는 열쇠 파일
    퍼블릭 IP인터넷에서 EC2에 접속할 수 있는 주소
    보안 그룹EC2 접근을 제어하는 방화벽
    EBSEC2에 붙이는 저장 장치
  • EC2를 쉽게 이해하기

    EC2는 내 컴퓨터 한 대를 AWS에서 빌리는 것이라고 보면 된다.

    내 컴퓨터에서는 localhost로 접속하지만, EC2에 배포하면 다른 사람들도 인터넷을 통해 접속할 수 있다.

    로컬 실행
    내 컴퓨터 → localhost:8080
    
    EC2 배포
    사용자 브라우저 → EC2 퍼블릭 IP:8080

핵심정리

클라우드: 인터넷으로 서버, 저장공간, 데이터베이스 같은 IT 자원을 빌려 쓰는 방식

AWS: 아마존이 제공하는 대표적인 클라우드 서비스 플랫폼

EC2: AWS에서 빌리는 가상 서버

S3: 파일을 저장하는 인터넷 창고

RDS: AWS에서 관리해주는 관계형 데이터베이스 서비스

IAM: 사용자와 권한을 관리하는 서비스

VPC: AWS 안에 만드는 나만의 가상 네트워크

보안 그룹: EC2 같은 리소스의 접근을 제어하는 가상 방화벽

클라우드는 서버를 직접 구매하고 관리하지 않고, 인터넷을 통해 필요한 IT 자원을 빌려 쓰는 방식이다.

AWS는 이러한 클라우드 서비스를 제공하는 대표적인 플랫폼이다. 처음 AWS를 공부할 때는 EC2, S3, RDS, IAM, VPC, 보안 그룹의 역할을 먼저 이해하는 것이 중요하다.

특히 EC2는 서버, S3는 파일 저장소, RDS는 데이터베이스, IAM은 권한 관리, VPC는 네트워크 공간, 보안 그룹은 방화벽이라고 생각하면 전체 구조가 훨씬 쉽게 이해된다.


0개의 댓글