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

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

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

플랜 선택 > 가입완료


개발자들은 "이제 기능 구현도 끝났고 테스트도 끝났으니 배포하자!"라는 말을 자주 한다.
배포(Deployment)란 다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 걸 의미한다.
어렵게 말하자면 소프트웨어 개발 과정에서 완성된 애플리케이션을 실제 사용자들이 사용할 수 있도록 운영 환경에 올리는 일련의 과정을 의미한다. 이 개념은 소프트웨어가 개발 환경이나 테스트 환경에서 실제 운영 환경(프로덕션 환경)으로 옮겨지며, 사용자가 접근 가능하고 실시간으로 서비스를 제공할 수 있도록 만드는 중요한 단계다.

자신의 컴퓨터에서 개발을 할 때는 localhost라는 주소로 테스트도 하고 개발을 한다. 하지만 이 localhost는 다른 컴퓨터에서는 접근이 불가능한 주소이다. 배포를 하게 되면 IP(ex. 124.16.2.1)나 도메인(ex. www.naver.com)과 같이 고유의 주소를 부여받게 되고, 다른 컴퓨터에서 그 주소로 접속할 수 있게 된다. 이게 바로 배포(Deployment)다.
따라서 어떤 서비스를 완성했다면, 그 다음 단계로 해야 하는 게 배포(Deployment)이다. 코딩을 배울 때도 기본적인 프론트엔드 서버를 만들 수 있는 역량이 갖춰졌다면, 그 다음에 배워야 하는 게 배포(Deployment)이다.
패키징과 빌드
소스 코드를 빌드하고 실행 가능한 형태(패키지, 바이너리, 도커 이미지 등)로 변환하는 과정. 이 단계에서는 코드의 컴파일, 종속성 관리, 그리고 필요한 리소스가 함께 번들링되는 작업이 이루어진다.
설정 및 구성
배포 대상 환경(예: 운영 서버, 클라우드 인프라)에 맞춰 애플리케이션의 설정값(환경 변수, 외부 API 키, 데이터베이스 연결 정보 등)을 조정. 이를 통해 동일한 애플리케이션이 다양한 환경에서도 올바르게 동작할 수 있게 한다.
전파(Distribution)
빌드된 소프트웨어를 대상 서버나 클라우드 환경에 전달하는 과정. 이는 파일 전송, 컨테이너 오케스트레이션 도구(예: Kubernetes)를 통한 배포, 혹은 클라우드 플랫폼의 배포 기능을 활용할 수 있다.
설치와 구성
실제 운영 환경에 소프트웨어를 설치하고 각종 설정을 적용하여 서비스가 정상적으로 동작할 수 있게 만드는 단계.
모니터링과 검증
배포 후 애플리케이션이 의도한 대로 동작하는지 확인하기 위해 모니터링 및 로그 분석 등의 방법을 사용. 문제가 발생하면 롤백(이전 버전으로 복귀)하거나 패치 배포 등의 대응을 수행.
수동 배포 vs. 자동화 배포
초기 소프트웨어 배포는 사람이 직접 일련의 단계를 실행하는 경우가 많았으나, 현대에는 CI/CD(Continuous Integration/Continuous Deployment) 파이프라인을 통해 자동화되어 배포 오류를 최소화하고 배포 속도를 높이고 있다.
블루/그린 배포
두 개의 독립된 운영 환경(블루와 그린)을 준비해 두 환경 간 전환함으로써, 문제가 발생할 경우 신속하게 이전 버전으로 롤백할 수 있는 배포 전략이다.
롤링 업데이트
전체 시스템을 한 번에 교체하지 않고, 단계적으로 새로운 버전을 도입하여 사용자에게 미치는 영향을 최소화하는 방법.
캔터리(캔들) 배포
소수의 사용자에게 먼저 새로운 버전을 제공해 문제를 미리 감지한 후 전체 사용자 대상으로 배포하는 방식.
신뢰성
안정적으로 배포된 소프트웨어는 사용자에게 신뢰를 줄 수 있다. 따라서 잘 정의된 배포 절차와 모니터링 시스템은 운영 중 발생할 수 있는 문제에 신속히 대응할 수 있도록 돕는다.
빠른 피드백
배포 과정을 자동화하면 새로운 기능이나 업데이트를 빠르게 사용자에게 제공할 수 있으며, 사용자로부터의 피드백을 신속하게 반영할 수 있다.
효율성
자동화된 배포 파이프라인은 개발 주기를 단축하고, 수동 작업에서 발생할 수 있는 오류를 줄여준다.
AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다.
원격으로 컴퓨터를 빌려서 사용할 수 있게 해주는 서비스 클라우드 서비스 → 실제로는 더 다양한 기능을 보유
스마트폰과 비슷 → 스마트폰은 전화 및 문자를 할 수 있는 기계이지만 실제로는 다양한 기능을 같이 보유
우린 사진이나 동영상과 같은 파일들을 구글 드라이브나 iCloud에 저장한다. S3는 이런 종류의 서비스라고 생각하면 된다.
백엔드에서 S3는 파일 업로드용으로 많이 사용한다. 백엔드 서버를 구현하다보면 이미지 업로드 기능을 구현할 때가 많다. 이 이미지 파일은 S3에 저장한다. 우리가 휴대폰의 사진을 구글 드라이브나 iCloud와 같은 곳에 사진을 옮기는 것처럼 S3에 파일을 저장한다. 왜냐하면 파일 저장 및 다운로드에 최적화되어 있는 서비스이기 때문이다.

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

버킷 이름 생성

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



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

새 문 추가

서비스 선택 > S3 > getobject


리소스 추가



변경 사항 저장
"Principal": "*", 비어있으면 안된다!!!!




파일만 드래그해서 업로드


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

편집 > 활성화

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

배포
