47일차 AWS

정상희·2025년 5월 29일

코딩공부

목록 보기
56/60

현재 오즈코딩스쿨 강의를 통해 프론트엔드를 학습하고 있습니다.
본 포스트는 해당 강의에 대한 내용 정리를 목적으로 합니다.

AWS에 대한 이해

1. AWS 회원 가입 및 계정 생성: 프리 티어(Free Tier)

AWS 홈페이지

AWS 계정 생성 클릭

이메일, 사용자이름(닉네임영어) 입력 > 이메일 인증 확인

루트 사용자 암호 생성 > 카드 등록

플랜 선택 > 가입완료



2. 배포(Deployment)란?

개발자들은 "이제 기능 구현도 끝났고 테스트도 끝났으니 배포하자!"라는 말을 자주 한다.

배포(Deployment)란 다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 걸 의미한다.

어렵게 말하자면 소프트웨어 개발 과정에서 완성된 애플리케이션을 실제 사용자들이 사용할 수 있도록 운영 환경에 올리는 일련의 과정을 의미한다. 이 개념은 소프트웨어가 개발 환경이나 테스트 환경에서 실제 운영 환경(프로덕션 환경)으로 옮겨지며, 사용자가 접근 가능하고 실시간으로 서비스를 제공할 수 있도록 만드는 중요한 단계다.

자신의 컴퓨터에서 개발을 할 때는 localhost라는 주소로 테스트도 하고 개발을 한다. 하지만 이 localhost는 다른 컴퓨터에서는 접근이 불가능한 주소이다. 배포를 하게 되면 IP(ex. 124.16.2.1)나 도메인(ex. www.naver.com)과 같이 고유의 주소를 부여받게 되고, 다른 컴퓨터에서 그 주소로 접속할 수 있게 된다. 이게 바로 배포(Deployment)다.

따라서 어떤 서비스를 완성했다면, 그 다음 단계로 해야 하는 게 배포(Deployment)이다. 코딩을 배울 때도 기본적인 프론트엔드 서버를 만들 수 있는 역량이 갖춰졌다면, 그 다음에 배워야 하는 게 배포(Deployment)이다.

1) 배포의 주요 구성 요소

  • 패키징과 빌드
    소스 코드를 빌드하고 실행 가능한 형태(패키지, 바이너리, 도커 이미지 등)로 변환하는 과정. 이 단계에서는 코드의 컴파일, 종속성 관리, 그리고 필요한 리소스가 함께 번들링되는 작업이 이루어진다.

  • 설정 및 구성
    배포 대상 환경(예: 운영 서버, 클라우드 인프라)에 맞춰 애플리케이션의 설정값(환경 변수, 외부 API 키, 데이터베이스 연결 정보 등)을 조정. 이를 통해 동일한 애플리케이션이 다양한 환경에서도 올바르게 동작할 수 있게 한다.

  • 전파(Distribution)
    빌드된 소프트웨어를 대상 서버나 클라우드 환경에 전달하는 과정. 이는 파일 전송, 컨테이너 오케스트레이션 도구(예: Kubernetes)를 통한 배포, 혹은 클라우드 플랫폼의 배포 기능을 활용할 수 있다.

  • 설치와 구성
    실제 운영 환경에 소프트웨어를 설치하고 각종 설정을 적용하여 서비스가 정상적으로 동작할 수 있게 만드는 단계.

  • 모니터링과 검증
    배포 후 애플리케이션이 의도한 대로 동작하는지 확인하기 위해 모니터링 및 로그 분석 등의 방법을 사용. 문제가 발생하면 롤백(이전 버전으로 복귀)하거나 패치 배포 등의 대응을 수행.


2) 배포의 다양한 유형

  • 수동 배포 vs. 자동화 배포
    초기 소프트웨어 배포는 사람이 직접 일련의 단계를 실행하는 경우가 많았으나, 현대에는 CI/CD(Continuous Integration/Continuous Deployment) 파이프라인을 통해 자동화되어 배포 오류를 최소화하고 배포 속도를 높이고 있다.

  • 블루/그린 배포
    두 개의 독립된 운영 환경(블루와 그린)을 준비해 두 환경 간 전환함으로써, 문제가 발생할 경우 신속하게 이전 버전으로 롤백할 수 있는 배포 전략이다.

  • 롤링 업데이트
    전체 시스템을 한 번에 교체하지 않고, 단계적으로 새로운 버전을 도입하여 사용자에게 미치는 영향을 최소화하는 방법.

  • 캔터리(캔들) 배포
    소수의 사용자에게 먼저 새로운 버전을 제공해 문제를 미리 감지한 후 전체 사용자 대상으로 배포하는 방식.


3) 배포의 중요성

  • 신뢰성
    안정적으로 배포된 소프트웨어는 사용자에게 신뢰를 줄 수 있다. 따라서 잘 정의된 배포 절차와 모니터링 시스템은 운영 중 발생할 수 있는 문제에 신속히 대응할 수 있도록 돕는다.

  • 빠른 피드백
    배포 과정을 자동화하면 새로운 기능이나 업데이트를 빠르게 사용자에게 제공할 수 있으며, 사용자로부터의 피드백을 신속하게 반영할 수 있다.

  • 효율성
    자동화된 배포 파이프라인은 개발 주기를 단축하고, 수동 작업에서 발생할 수 있는 오류를 줄여준다.



3. AWS란?

AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다.

원격으로 컴퓨터를 빌려서 사용할 수 있게 해주는 서비스 클라우드 서비스 → 실제로는 더 다양한 기능을 보유

스마트폰과 비슷 → 스마트폰은 전화 및 문자를 할 수 있는 기계이지만 실제로는 다양한 기능을 같이 보유



4. S3란?

1) S3란? 파일 저장 및 다운로드 서비스이다.

우린 사진이나 동영상과 같은 파일들을 구글 드라이브나 iCloud에 저장한다. S3는 이런 종류의 서비스라고 생각하면 된다.

백엔드에서 S3는 파일 업로드용으로 많이 사용한다. 백엔드 서버를 구현하다보면 이미지 업로드 기능을 구현할 때가 많다. 이 이미지 파일은 S3에 저장한다. 우리가 휴대폰의 사진을 구글 드라이브나 iCloud와 같은 곳에 사진을 옮기는 것처럼 S3에 파일을 저장한다. 왜냐하면 파일 저장 및 다운로드에 최적화되어 있는 서비스이기 때문이다.


2) S3를 왜 사용하는걸까?

  • S3는 파일 저장 및 다운로드 이외에도 웹 호스팅 기능도 가지고 있다.
  • 우리는 어떤 웹 서비스에 접속할 때 그 웹 페이지 속으로 들어가는 것처럼 느껴진다. 즉, 웹 페이지를 운영하고 있는 컴퓨터로 접속하는 것처럼 느껴진다. 하지만 실제로는 그렇지 않다. 웹 페이지를 운영하고 있는 서버(컴퓨터)로부터 HTML, CSS, JS, 이미지 파일 등을 다운받아와서 브라우저에 끼워넣어서 실행시키는 방식이다. 파일을 다운 받아와야 하기 때문에 S3를 활용해서 사용한다

현업에서 S3를 많이 사용할까? Yes


3) S3 구성요소에 대한 개념과 역할

a. 버킷 : 버킷은 파일을 담는 클라우드 폴더이며, S3의 저장 단위이다.(하나의 저장소)

  • S3에서 파일을 저장하는 기본 단위이자 공간이다.
  • 하나의 버킷은 폴더처럼 작동하며, 그 안에 수많은 파일(객체)을 담을 수 있다.
  • 버킷 이름은 전 세계에서 유일해야 한다.
  • 각 버킷에는 권한, 버전 관리, 수명주기 정책 등을 설정할 수 있다.

b. 객체 : 객체는 S3에 저장된 하나의 파일이며, 키(이름)를 통해 접근한다.

  • S3 버킷에 업로드 된 파일
  • S3에 저장되는 실제 데이터(파일) 단위이다.
  • 하나의 객체는 다음 3가지로 구성된다.
    • 데이터(파일) — 예: 이미지, 문서, 영상 등
    • 키(Key) — 객체의 고유한 이름 (버킷 내 경로처럼 작동)
    • 메타데이터 — 파일의 속성 정보 (파일 형식, 권한 등)

4) 실습

a. S3 버킷 셋팅하기

버킷 이름 생성

이 버킷의 퍼블릭 액세스 차단 설정 > 버킷 만들기 클릭

권한 > 버킷 정책 작성(정책 : 권한을 정의하는 JSON 문서) > 편집

새 문 추가

서비스 선택 > S3 > getobject

리소스 추가

변경 사항 저장

"Principal": "*", 비어있으면 안된다!!!!

b. S3에 업로드하기: 웹 호스팅 설정하기

파일만 드래그해서 업로드

속성 > 정적 웹 사이트 호스팅

편집 > 활성화

인덱스 문서 > index.html 입력 > 변경사항 저장

배포

profile
UI/UX디자이너의 코딩 공부

0개의 댓글