본문 바로가기

TIL ( CODESTATES)

Cloud Computing의 이해 & Deployment

Achievement Goals

  • Cloud와 Deployment의 의미를 각 각 알고, 내 코드를 남에게 배포할 수 있다.
    • 클라우드 컴퓨팅이 무엇인지 설명할 수 있다.
    • Deployment의 의미를 이해할 수 있다.
    • 코드를 남에게 배포할 수 있다.
  • 사용하는 서비스들의 특징과 사용해야 하는 이유를 이해할 수 있다.
    • RDS와 EC2에 설치된 데이터베이스의 차이를 이해할 수 있다.
    • S3의 높은 가용성과 안정성을 이해할 수 있다.
    • CloudFront의 콘텐츠 로딩시간 단축의 효과들을 이해할 수 있다. (advanced)
    • Route53을 이용해 요청을 쉽고 안전하게 원하는곳으로 보낼수 있음을 이해할 수 있다. (advanced)
  • 커스텀 도메인을 이용해 요청을 원하는 곳으로 라우팅할 수 있다. (advanced)
    • DNS가 무엇인지 이해할 수 있다. (advanced)
    • 커스텀 도메인을 이용해 인증서를 발급받고 SSL을 적용할 수 있다. (advanced)

 

 


Cloud Computing 등장의 배경

기존 서버의 방식에서는 전산실 등에 컴퓨터를 배치하고 인터넷을 연결하여 서비스를 제공했다.

더 많은 요청을 수용하기 위해서는 더 많은 컴퓨터를 제공하여 여러대가 요청을 나누거나 컴퓨터 한 대의 성능을 높여야 했다.

하지만 이런 방식은 다음과 같은 단점이 있었다.

  • 주기적인 관리가 필요하다.
    • 컴퓨터 대수가 많아질수록 인력 및 비용이 많이 든다.
  • 공간의 한계가 있다.
    •  컴퓨터를 더이상 배치할 공간이 없게 된다.

 

이런 문제를 보완하고자 데이터센터의 유휴자원 대여 서비스가 등장했다.

: 서버의 자원과 공간, 네트워크 환경을 빌려 사용하는(On-Premise) 클라우드 컴퓨팅의 시작이었다.

 

 

*On-Premise

더보기

기업의 서버를 클라우드 같은 원격 환경에서 운영하는 방식이 아닌, 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 의미한다.

On-Premise는 클라우드 컴퓨팅 기술이 나오기 전까지 기업 인프라 구축의 일반적인 방식이었다. On-Premise 시스템 의 장점은 기업의 비지니스 정보를 보안성 높게 관리할 수 있다는 것이고, 단점은 시스템을 구축 하는 데 있어서 많은 시간이 걸린다는 것과 많은 비용이 들어 간다는 것이다.

그래서 기업에서 보안성 높은 데이터는 On-Premise 환경에서, 완성 낮은 데이터는 클라우드 환경을 사용하는 하이브리드 IT 인프라 등장했다. On-Premise의 반대 의미인 클라우드 방식의 서비스를 Off-Premise 라고 한다.

 

현대의 클라우드 컴퓨팅은 데이터센터와 비슷한 역할을 하지만, 물리적인 컴퓨터가 아닌 가상 컴퓨터를 대여한다는 점이 다르다.

이는 가상화 기술의 발전으로부터 비롯되었다. (Virtualization)

 

클라우드 서비스 의 장점

  • 필요할 때마다 컴퓨팅 능력을 유연하게 조절할 수 있다.
  • 사용한 만큼의 요금만 지불 하면 된다.
  • 컴퓨터의 스냅샷을 이용에 다른 컴퓨터로 즉시 입주가 가능하다. (migration)

클라우드 서비스 의 단점

  • 운영 환경 자체가 클라우드 제공자에게 종속되어 있으므로, 클라우드 서비스에 문제가 생기면 내가 배포하고 관리하는 환경에도 영향을 미친다.
  • 운영 환경의 특정 클라우드 사업자에게 종속 된다는 것은 백앤드 구성 자체가 특정 회사의 기술로만 구성 해야 하는 경우가 발생할 수 있다는 말이다.

 

 

클라우드 서비스의 형태 3

: SassS, IaaS, Paas

 

SaaS (Software as a Service)

: 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공 하는 경우에 해당한다.

 

Paas (Platform as a Service)

: 대부분 클라우드 제공자가 데이터베이스 개발 플래폼까지 제공 하는 경우에 해당한다.

 

Iaas (Infrastructure as a Service)

: 클라우드 제공자가 가상 컴퓨터까지 제공 하는 경우 해당한다.

 

 

 

 

 

 

 

 

 

 

 


Deployment

 

배포란 개발한 서비스를 사용자가 이용 가능하게 하는 과정이다. 기본적으로 4단계를 거쳐서 개발한 서비스를 배포 하게 된다.

 

Development 환경과 Production 환경은 서로 다를 수 있다. 특히 여러 명이 함께 작업하는 프로젝트라면 node 버전이나 인증 정보 등이 다를 수 있으므로 유의해야 한다.

배포에서는 환경의 차이를 이해하고 환경 설정을 코드와 분리하는 것이 중요하다.

 

작성한 코드가 다른 환경에서 정상 작동하도록 하려면

  • 절대경로 대신 상대경로를 사용한다.
  • 환경에 따라 포트를 분기 할 수 있도록 환경변수를 설정해준다.
    • : 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있다.
  • Docker와 같은 가상화 도구를 사용해서 개발 환경 자체를 메타데이터로 담아 통일시킬 수도 있다.