[공통] [Infrastructure] Cloud Computing Services_11.22

송철진·2022년 11월 21일
0

참조하면 좋은 사이트:
https://www.44bits.io/ko/keyword/amazon-web-service

0. 학습목표

  1. 운영 서버란 무엇이고 운영 서버의 아키텍쳐로는 어떤 것이 있는지 설명할 수 있습니다.
  2. 온프레미스와 클라우드 컴퓨팅이 무엇인지 설명할 수 있습니다.
  3. 왜 클라우드 컴퓨팅 서비스를 사용하는지 설명할 수 있습니다.
  4. AWS란 무엇인지, 어떠한 특징이 있고 글로벌 인프라가 어떻게 구축되어 있는지 설명할 수 있습니다.
  5. AWS의 주요 서비스와 개념에 대해 설명할 수 있습니다.

요약

  • 운영 서버: 개발이나 테스트 목적이 아닌 실제 사용자들을 대상으로 서비스하는 서버.
  • 운영 서버의 아키텍쳐의 분류
    • 단일 서버
    • 애플리케이션 / 데이터베이스 서버 분리
    • 서버 단위 로드 밸런서
    • 서버 내 앱 단위의 로드 밸런서
  • 운영 서버 구축 방법
    • On-premise: 자체 데이터 센터를 운영하는 방법
    • Cloud Computing: 클라우드 컴퓨팅 기술을 이용하여 클라우드 환경에 만드는 방법
  • 온프레미스 : IT 서비스를 기업이 자체적으로 보유한 물리적인 서버에 직접 설치해 운영하는 방식
  • 클라우드 컴퓨팅 : IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 방식

1. 운영 서버와 아키텍쳐

1-1. 운영 서버란?

개발이나 테스트 목적이 아닌 실제 사용자들을 대상으로 서비스하는 서버.

로컬 서버운영 서버
목적개발 및 테스트사용자 서비스 제공
특징요청이 적음많은 요청 트래픽 대응
빠른 응답 속도
높은 가용성 보장

1-2. 운영 서버 아키텍쳐

1-2-1. 단일 서버

장점

  • 단순하고 가장 기본적인 서버
  • 환경을 구축하기 쉽고
  • 테스트 서버, 간단한 애플리케이션 서비스 시 많이 사용한다.
  • 데이터베이스와 애플리케이션이 같은 서버에서 실행 👉 별도의 네트워크 설정이 필요 없음

단점

  • 전체 서비스의 장애 발생 가능성이 높다.
    같은 자원을 공유하므로 애플리케이션, DB 중 하나라도 장애가 발생 시, 전체가 다운 될 수 있다.
  • 서버 자원을 효율적으로 사용하기가 어렵다.
    서비스의 속성에 따라 필요하거나 최적의 OS(운영체제) 설정과 리소스의 종류(CPU, 메모리 ..)가 다를 수 있기 때문입니다.
  • 보안성이 떨어진다.
    데이터베이스는 보안상 IP 주소나 포트 등 접속 지점을 최소화해야 한다. 여러 불특정 IP주소나 포트에 대해 요청을 받아야 하기에, 애플리케이션과 데이터베이스가 한 서버에 구축되면 DB 보안에 취약하다.
  • Scale-out이 어렵다.
    (Scale-out: 서버의 수를 여러개로 늘려 자원을 확장하는 방식)
    단일 서버의 구조처럼 애플리케이션과 데이터베이스가 하나의 서버로 구성되면 똑같은 데이터를 여러 서버에 복제해야 하므로 관리가 매우 힘들어집니다.

1-2-2. 애플리케이션과 데이터베이스 서버를 분리

애플리케이션과 데이터베이스를 각각의 서버로 구성하는 방법.

단일 서버의 단점 일부 해소

두개의 서버를 관리하므로 구성 다소 복잡,
애플리케이션 서버와 DB 서버 간 지연 시간, 네트워크 보안을 고려해야 함
클라이언트는 여전히 하나의 애플리케이션 서버를 바라보므로 Scale-out은 여전히 어려움.

1-2-3. 서버 단위의 로드 밸런서

로드 밸런서란?
Scale-out 방식을 통해 서버를 여러 대로 늘려 애플리케이션 서버에 들어오는 수많은 요청을 여러대의 서버에 적절히 나눠주는 네트워크 장치 혹은 프로세스
클라이언트는 로드 밸런서 서버와 통신하며, 그 뒤에 여러대의 애플리케이션 서버를 둔다.

장점

  • 서버 다운 최소화
    로드 밸런서를 두면서 Scale-out을 통한 확장이 가능해지고
    특정 서버에 장애 발생시, 로드 밸런서가 정상 서버에 요청을 넘기면 되기 때문.

단점

  • 로드 밸런서 장애 발생 시, 전체 서비스에 영향.

1-2-4. 서버 내 앱 단위의 로드 밸런서

기존에 하나의 로드 밸런서가 여러개의 서버로 요청을 분산해주었던 방식에서, 서버 내에 앱 단위의 로드 밸런서가 추가 된 방식.
기존의 애플리케이션 서버 안에서 똑같은 애플리케이션을 여러 프로세스로 만들어 실행 해놓고 외부에서 들어온 요청을 프로세스 중 하나로 보내주는 방식.

장점

  • 하나의 서버에서 여러 프로세스를 실행해 여러 개의 요청을 동시에 처리 할 수 있다.
  • 서버의 자원을 최대한으로, 효율적으로 사용.

이러한 복잡하고 체계적인 운영 서버를 구축하는 방법
1. 자체 데이터 센터를 운영
2. 클라우드 컴퓨팅 기술을 이용하여 클라우드 환경에 만드는 방법

2. 온프레미스(On-premise)

2-1. 온프레미스란?

IT 서비스를 기업이 자체적으로 보유한 물리적인 서버에 직접 설치해 운영하는 방식
클라우드 컴퓨팅 기술이 나오기 전, 기업들이 사용하던 일반적인 인프라 구축 방식

2-2. 온프레미스의 특징

  • 인프라를 물리적으로 직접 구축하여 운영

  • 기업이 직접 구성에 맞게 하드웨어를 구입

  • 프로젝트에 필요한 자원을 최대 사양 기준으로 예측하여 인프라 기술자가 물리적인 구성을 설계하는데 예측과 실제 프로젝트 간 차이로 인해 불필요한 비용 발생 가능

  • 구축 후 지속적인 모니터링, 구성 변경 등 유지, 보수 필요.

  • 보안에 민감한 조직(군대, 보안 회사): 자체적인 강력한 보안 시스템 개발 또는 외부망과의 단절을 위해 온프레미스 방식 구축.

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

3-1. Compute란?

클라우드 컴퓨팅 인프라 계층의 핵심 요소: 스토리지, 네트워킹, 컴퓨팅

Linux, Ubuntu, Debian, Window, MacOS와 같은 운영 체제를 실행하는 데 필요한 CPU, Memory, Storage와 일부 가상화된 네트워크 기능으로 구성된 물리적인 서버(컴퓨터).
CPU, RAM, Storage, Network 기능으로 구성된 물리적인 서버

  • CPU(Central Processing Unit): 컴퓨터의 두뇌. 프로그램의 명령 수행.
  • RAM(Random Access Memory): 초고속 임시 저장 장치. CPU와 저장장치 사이에서 처리 속도를 향상시켜주기 위해서 데이터를 임시로 저장.
  • Storage: 운영체제 파일, 모든 소스코드 및 데이터가 저장되는 저장소.
  • Network: 인터넷을 통해 다른 서버와의 연결할 수 있도록 만들어주는 네트워크 인터페이스 카드(NIC)

3-2. 클라우드 컴퓨팅이란?

서로 다른 위치에 존재하는 컴퓨팅 자원을 제공하는 서비스.

사용자의 compute(물리적 서버) 요구가 들어올 때마다
시스템 엔지니어가 물리적인 서버를 설치 후, 대여해준다면?
시간 오래 걸림, 비효율적!

업체 - 서로 다른 물리적 위치에 존재하는 컴퓨팅 자원을 가상화 기술로 통합해 인터넷에서 클라우드 컴퓨팅 서비스를 제공.(전세계에 흩어진 서버 팜)
사용자 - IT 리소스를 인터넷을 통해 온디맨드로 제공받고 사용한 만큼만 비용을 지불.

3-3. 클라우드 컴퓨팅의 특징

온프레미스클라우드 컴퓨팅
직접 서버 장비 구매요청하는 즉시 컴퓨팅 자원을 제공
원하는 시간동안 원하는 만큼의 컴퓨팅 자원을 언제 어디서나 이용
불필요한 절차 없이 쉽게 프로젝트 구성
프로젝트 초기 구성 시 비용 절감
인터넷 통해 온디맨드로 IT 리소스 제공
사용한 만큼의 비용만 지불
손쉽게 서비스 규모에 따라 리소스 확장 및 축소

3-4. 클라우드 컴퓨팅의 주요 기능 3가지

관리 주체와 수준에 따라 3가지로 구분

3-4-1. 서비스형 인프라스트럭처(IaaS)

IaaS(Infrasturcture as a Service, 아이아스)는 가장 기본적인 형태.
비즈니스 운영에 필요한 스토리지, 네트워킹 및 컴퓨팅 자원 제공.
다른 모델들과 비교하여 사용자의 관리 영역이 가장 넓다.
사용자가 직접 OS, Middleware, Runtime 등을 직접 구성 및 관리

장점: 사용자가 직접 많은 부분을 구성하고 관리할 수 있다
단점: 인프라 운영에 대한 지식, 경험이 준비되지 않은 경우 활용 어려움.

예) AWS Elastic Compute Cloud (EC2), Microsoft Azure Virtual Machines, Google Compute Engine..

3-4-2. 서비스형 플랫폼(PaaS)

PaaS(Platform as a Service, 파스) 애플리케이션 및 서비스를 구축할 수 있는 플랫폼 제공
OS, Middleware, Runtime 등 개발 환경을 미리 구축해 서비스 형태로 제공하기 때문에 관리적인 측면에서 IaaS보다 자유도가 낮다.
사전에 구축된 환경에서 개발하기 때문에 의존성 있음.

장점

  • 개발, 비즈니스에만 집중
    서비스를 제외한 외적인 부분을 신경쓸 필요가 없기 때문
  • 유지 및 보수 비용을 절약
    인프라 운영 인력이 필요 없음

예) AWS Elastic Beanstalk, Heroku, Redhat OpenShift

3-4-3. 서비스형 소프트웨어(SaaS)

SaaS(Software as a Service, 사스)는 클라우드 컴퓨팅 서비스의 주요 기능 3가지 중 가장 완성된 형태의 서비스.

  • 업체가 대부분의 기능을 구축 후 제공하므로 사용자의 직접 관리 영역이 가장 좁다.
  • 기본적인 클라우드 인프라와 소프트웨어를 함께 제공
  • 소프트웨어 업데이트, 버그 픽스 등의 서비스를 업체가 직접 제공.
  • 사용자는 별도의 라이센스를 구매할 필요 없음
    이미 구축된 소프트웨어를 무료 혹은 비용 지불을 통해 이용.

단점

  • 사용자가 필요하지 않은 기능에 대해서도 비용 지불할 수 있음
    : 제공 업체가 이미 만들어 놓은 소프트웨어를 그대로 활용하기 때문

예) Google Drive, iCloud, Slack, Zoom, Dropbox


4. 메모

온프레미스클라우드 컴퓨팅
천재지변에 대응 못함천재지변에 대응
ex) 카카오 화재
ex) 미국 홍수, 허리케인

S3는 N드라이브 같은 개념

캐싱: 임시로 저장한 데이터

거의 모든 회사가 EC2를 사용한다
왜? 예를 들어 B2C, B2B 솔루션을 개발하는 회사라면 24시간 프로그램이 운영되어야 한다. name value, brand value를 따졌을 때 그 회사의 노하우가 담겨 있어 신뢰성, 안정성을 보장하는 AWS를 선택하게 된다.

멘토's tip

  • 채용공고를 자주 볼 것!
    내가 가고싶은 회사는 어떤 역량을 요구하는지.
    어떤 서비스, 문화, 특징을 가진 회사에 가고 싶은지.
    해보고 싶은 서비스는 무엇인지:
    ex) 트래픽(이용자수) 많은 서비스 - MAU를 기준으로 찾아보자
  • 개발자라면 DNS를 꼭 알고 넘어가자
  • Product 관점에서 이해하고 개발을 고민하라
    그리고 나는 Product 관점에서 개발하는 습관이 있습니다라고 말하는 개발자가 되자

MAU, DAU, MCU, ACU
MAU(Monthly Activity User) : 월별 활동 이용자
https://brunch.co.kr/@supims/165

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글