Cloud Computing

김동현·2022년 12월 30일
0
post-thumbnail

서버란?

서버의 사전적인 의미는 무언가를 제공해주는 사람이나 물건을 의미합니다.
IT 업계에서 말하는 서버는 "무언가를 제공해주는 컴퓨터"라고 합니다.

서버는 물리적인 실체가 존재하는 컴퓨터입니다. 서버 컴퓨터는 CPU, GPU, RAM, Memory 등으로 구성되어 있습니다.

브라우저는 서버에 존재하는 특정 리소스를 인터넷을 통해 요청하고 서버는 요청한 리소스를 클라이언트에게 응답으로 전달해줍니다.

서버 컴퓨터는 네트워크를 통해 접근하면 특정 리소스를 응답해주도록 운용해야 하며 외부에서 접근이 가능하도록 설정해야 합니다.

서버를 운영하는 방법

1. 온 프레미스(On-Premise)

전통적인 서버 운영 방식이며 서버를 운영하는측에서 서버에 필요한 물리적인 공간, 컴퓨터, 시설 등을 직접 구축해서 활용하는 방식입니다.

온프레미스 방식의 경우 서버 컴퓨터를 물리적인 부분까지 온전한 통제를 할 수 있다는 장점을 갖고 있습니다.

2. 클라우드 컴퓨팅(Cloud Computing)

클라우드 컴퓨팅은 물리적인 서버 컴퓨터를 인터넷을 이용하여 사용하는 것을 의미합니다. 즉, 물리적인 서버 컴퓨터를 직접 관리하지 않아도 되며 원하는 서버 컴퓨터의 사양을 원하는 시간만큼 대여하여 사용할 수 있습니다.

서버 컴퓨터를 인터넷을 이용하여 제공하는 클라우드 서비스 프로바이더가 물리적인 서버 컴퓨터를 관리하고 있으며 전세계에 걸쳐 물리적인 서버 컴퓨터를 운영할 수 있는 인프라를 구축해두고 있습니다.

클라우드 컴퓨팅의 구분

클라우드 컴퓨팅은 제공하는 서비스의 수준에 따라 3개의 계층으로 구분할 수 있습니다.

1. IaaS(Infrastructure as a Service)

IaaS는 클라우드 컴퓨팅의 가장 기본적인 형태이며, 단지 서버 컴퓨터 그 자체만을 대여해주는 것을 의미합니다.

IaaS는 대여받은 서버 컴퓨터의 대부분의 리소스에 접근해서 서비스를 구성하고 관리할 수 있으므로 가장 많은 제어권을 갖고 있지만 가장 많은 부분을 일일이 구성하고 관리해주어야 한다는 단점을 갖고 있습니다.

ex) AWS EC2

2. PaaS(Platform as a Service)

PaaS는 IaaS에서 더 나아가 소프트웨어를 개발하고 운영하기 위해 필요한 구성요소들을 플랫폼화해서 제공해주는 서비스입니다.

PaaS를 사용하면 소프트웨어의 운영에 대한 관리를 PaaS에 위임할 수 있지만 플랫폼의 형태로 제공된다는 점으로 인해 플랫폼에 종속적이 될 수 있다는 점이 있습니다.

ex) AWS Elastic BeanStalk, Heroku, Github Pages, Vercel

3. SaaS(Software as a Service)

SaaS는 클라우드 서비스를 고객이 사용할 수 있는 소프트웨어로 제공되는 형태를 의미합니다.

SaaS의 경우 모든 서비스가 클라우드에서 이루어지며 이를 활용할 수 있는 소프트웨어가 제공되기 때문에 이를 통해 편리하게 여러 기능들을 제공받고 활용할 수 있습니다.

ex) DropBox, iCloud, Google Drive

AWS(Amazon Web Service)

AWS는 클라우드 컴퓨팅 서비스를 제공하는 프로바이더 중 하나이며, 가장 많이 사용되고 있는 클라우드 컴퓨팅 서비습입니다.

AWS는 단순 컴퓨팅 자원을 제공해주는 것 뿐만 아니라 이를 편리하게 관리할 수 있는 서비스, 서버리스 서비스 등 수많은 서비스를 확장성, 안정성, 높은 보안 수준과 함께 제공해줍니다.

AWS S3

AWS의 S3 서비스는 Simple Storage Service의 약자입니다. 특정 파일을 저장하고 인터넷상으로 접근할 수 있게 해주는 서비스입니다.

서비스에 필요한 이미지나 파일등을 저장해두는 용도로 사용하지만 정적인 파일들을 안정적으로 제공할 수 있다는 점을 이용해서 정적 웹사이트 호스팅에도 사용할 수 있습니다.

버킷 정책

S3로 호스팅하는 경우 아래와 같은 버킷 정책을 JSON 포맷 문자열 형식으로 작성해주어야 합니다.

{
    "Version": "2012-10-17",  // -> 정책 문법 버전
    "Statement": [
        {
            "Sid": "PublicReadGetObject",  // -> 정책의 고유한 ID(어떤 값이든 가능하며, 작성된 정책 중 고유하도록 작성)
            "Effect": "Allow",  // -> 허용(허용 or 거절)
            "Principal": "*",  // -> 모두에게(정책 적용 범위)
            "Action": "s3:GetObject",  // -> S3 객체 접근(정책 동작)
            "Resource": "arn:aws:s3:::<bucket-name>/*"  // -> 버킷 리소스(정책 적용될 버킷)
        }
    ]
}

aws config --profile <profile name>

aws s3 sync build/ s3://<bucket-name> --delete --profile <profile name>

profile
Frontend Dev

0개의 댓글