[배포] Amazon Web Service

이승현·2022년 11월 13일

웹 개발

목록 보기
19/20

Cloud Computing

서버의 성능을 높이는 데는 기본적으로 두 가지 방법이 있다.

  • 서버 컴퓨터 개수를 늘려서 분산처리(수평확장)
  • 서버 컴퓨터 성능 향상(수직확장)

이런 기존 방식에는 문제점이 있다.

서버실을 만들면 주기적으로 관리가 필요하고 점차 관리해야 할 컴퓨터가 늘수록 투입될 인력 및 비용이 증가했다. 그리고 서버실을 만든다 해도 결국 공간이 부족해지면 더 이상 컴퓨터를 배치할 수 없는 상황에 맞닥뜨리게 된다.

이런 이유로 일부 거대 기업들은 데이터 센터라는 거대한 건물을 세우게 됐다. 그리고 데이터 센터의 유후 자원을 대여하는 서비스가 등장하기 시작했다.

서버의 자원과 공간 및 네트워크 환경 제공을 빌려서 사용하는 클라우드 컴퓨팅이 바로 이런 것이다.

Cloud

데이터 센터는 서버의 자원과 공간 및 네트워크 환경을 제공해준다.(’온프레미스’ 방식) 현대의 클라우드 컴퓨팅은 이런 데이터 센터와 비슷한 역할을 하지만 물리적인 컴퓨터가 아닌 가상 컴퓨터를 대여한다는 점이 다르다. 가상화(Virtualization)기술이 발전함으로써 일어난 현상이다.

이렇게 가상컴퓨터를 대여하는 방식은 다음과 같은 장점이 있다.

Cloud 장점

  • 필요할 때 마다 컴퓨팅 능력을 유연하게 조절 가능
  • 고정적인 비용이 들어가는 온프레미스와 달리 사용한 만큼의 요금만 지불할 수 있음
  • 컴퓨터의 스냅샷(’이미지’라 부른다.)을 이용해 다른 컴퓨터로 즉시 이주(migration)가 가능하다.

단점도 있다.

Cloud 단점

  • 운영 환경이 클라우드 제공자에게 종속됨 → 클라우드 서비스에 문제가 생기면 내가 배포하는 환경에도 영향이 미침
  • 특정 클라우드 사업자에게 종속되기 때문에 백엔드 구성이 그것에 맞춰져야한다.

Cloud 서비스 형태

  • SaaS(Software as a Service)
  • PaaS(Platform as a Service)
  • IaaS(Interface as a Service)

AWS같은 경우는 IaaS에 가깝다.

배포 과정

Deployment환경과 Production환경은 다를 수 있다. 혼자 개발부터 배포까지 하는 상황이면 큰 문제가 없지만 협업을 하는 상황에서는 node 버전, 인증정보나 데이터베이스에 접근하는 엔드포인트 등이 상이할 수 있다. 따라서 환경의 차이를 이해하고 환경 설정을 코드와 분리하는 것이 중요하다.

환경과 코드를 분리하려면?

  • 절대경로 대신 상대경로 이용하기
  • 환경에 따라 포트를 분기할 수 있도록 환경변수 설정
  • Docker 와 같은 개발환경 자체를 통일시키는 솔루션을 사용

Amazon EC2(Elastic Compute Cloud)

AWS에서 제공하는 클라우드 컴퓨팅 서비스이다.

  • AWS에서 원격으로 제어 가능한 가상 컴퓨터 한대를 빌리는 것
  • 사용할 만큼만 빌려올 수 있기 때문에 Elastic이라는 단어를 사용했다.

EC2의 장점

  • PC구성의 짧은 시간 - 실제 컴퓨터를 구매하는데는 배송까지 해서 오랜시간이 걸리지만 EC2는 클릭 몇번 만으로 가상 컴퓨터를 할당받아 사용할 수 있다.
  • 다양한 운영체제 지원(CPU, RAM, 용량 등도 유동적으로 설정 가능)

AWS에서 빌리는 컴퓨터는 Instance라 한다.

AMI(Amazone Machine Image)

  • 소프트웨어 구성이 기재된 템플릿이다. - 사용 용도에 맞게 운영체제, 런타임 등이 구성된 setting을 선택할 수 있다.
  • Instance는 선택한 AMI를 토대로 구성된다.
  • 미리 세팅되어 있는 AMI를 고르지 않아도 직접 AMI를 구성할 수도 있다.

EC2 Instance 생성

AMI를 토대로 운영체제, CPU, RAM, 런타임 등이 구성된 가상 컴퓨터를 빌리는 것

RDS(Rational Database Service)

  • AWS에서 제공하는 관계형 데이터베이스 서비스

그냥 mysql같은 데이터베이스 엔진 깔아서 쓰면 되는데 왜 이게 필요할까?

이렇게 유지보수가 편한 장점이 있다. 또한 RDS역시 다양한 데이터베이스 엔진 선택지를 제공하기 때문에 쓰던것과 달라서 고생할 상황도 자주 없을 것이다.

클라우드 스토리지

인터넷 공간에 데이터를 저장하는 저장소

S3

AWS에서 사용하는 클라우드 스토리지 서비스

S3 클라우드 스토리지의 장점

  • 확장성 - 스토리지 용량을 확장하기 쉽다.(비용만 지불하면 됨)
  • 강력한 내구성(99.999999999%확률로 데이터가 유실되지 않음)
  • 연간 99.99%의 가용성
  • 다양한 스토리지 클래스 제공
    • Standard : 범용적인 목적으로 사용, 데이터 접근 속도 빠름, 보관 비용 높음
    • Glacier : 장기간 보관 목적으로 사용, 액세스 속도는 느리지만 데이터를 보관하는 비용이 저렴함

정적 웹사이트 호스팅

  • 정적 파일 : 서버의 개입 없이 클라이언트에 제공될 수 있는 파일
  • 웹 호스팅 : 서버의 한 공간을 빌려주어 웹 사이트의 배포, 운영이 가능하게 만들어주는 서비스
  • S3에서는 버킷을 통해 정적 웹사이트 호스팅이 가능

배포 전략

개발한 client, server ,database를 어떻게 배포할 수 있을까?

S3을 이용해서 사용자에게 client application을 제공할 수 있다.

클라이언트는 정적파일로 빌드하여 제공하여야 하고 따라서 S3을 이용한다.

일반적으로 빌드의 의미는 소스코드를 실행가능한 번들로 변환하는 컴파일 과정을 의미하지만 웹 앱을 배포할 때의 빌드는

  • 불필요한 데이터를 없애고, 통합/압축하여 배포화기 최적화된 상태를 만드는 것
  • 데이터의 용량이 줄어들고 웹사이트 로딩 속도가 빨라진다.

이런 의미를 가진다.

asset자체가 정적인 경우는 있는 그대로 배포하면 되는데 React의 경우는 npm run build와 같은 명령을 사용해서 정적 파일 형태의 결과물을 만들어 낸 후 배포하면 된다.

CloudFront는 각지의 데이터 센터에 데이터를 분산시켜 저장해 놓고 가까운 지역에서 데이터를 주는 방식으로 사용자에게 더 빠르게 데이터를 제공해 줄 수 있다.

Server 배포

AWS EC2서비스를 이용한다.

Database 배포

AWS에서는 (관계형)Database 특화 서비스인 RDS서비스를 제공하고 있고 이를 이용하여 배포할 수 있다.

DNS설정

배포하면 기본적으로 www.todolist.ap-northeast-2.compute.amazonaws.com 이런 주소를 가지게 되는데 이를 직관적이고 짧은 주소로 바꾸기 위해서

AWS에서 제공하는 Route 53 서비스를 이용할 수 있다.

HTTPS 배포

profile
매일 꾸준히

0개의 댓글