클라우드 컴퓨팅과 서버 운영 및 배포

클라우드 컴퓨팅

  • 탄력성
  • 확장성
  • 고가용성
  • 비용 효율성

클라우드 컴퓨팅 정의 및 개념

  1. NIST가 정의한 클라우드 컴퓨팅
  2. On-demand self-service: 사용자가 필요할 떄마다 언제든지 컴퓨팅 자원을 제공받을 수 있다.
  3. Broad network access: 네트워크를 통해 다양한 장치에서 클라우드 서비스에 접근할 수 있다.
  4. Resource pooling: 여러 사용자 간에 컴퓨팅 자원을 동적으로 할당하여 효율적으로 사용할 수 있다.
  5. Rapid elasticity: 필요한 자원을 신속하게 확장하거나 축소할 수 있다.
  6. Measured service: 사용한 자원에 대해 측정하고, 이에 따라 요금을 부과한다.
  • 클라우드 컴퓨팅을 정의하는 5가지 주요 원칙
    1. PooledComputingResources:
      • 여러 사용자가 컴퓨팅 자원을 공유하며, 필요에 따라 자원이 동적으로 할당된다.
      • 한 데이터 센터에서 여러 가상머신이 운영된다.
      • 자원의 풀링을 통해 클라우드 서비스 제공자는 높은 자원 활용률을 달성하고 비용을 절감하며, 사용자의 다양한 요구를 충족시킬 수 있다.
    2. Virtualization of compute resources:
      • 물리적인 자원을 가상화하여 여러 가상 컴퓨터로 분할한다.
      • 한 서버에서 여러 개의 가상 서버가 동작하며 각각 다른 서비스를 제공한다.
    3. Elasticity as resources demands grow and shrink:
      • 자원의 수요에 따라 컴퓨팅 자원을 신속하게 확장하거나 축소할 수 있다.
      • 트래픽이 급증할 떄 서버를 자동으로 추가하고 트래픽이 줄어들면 서버를 줄인다.
    4. Automation of new resources deployment:
      • 새로운 컴퓨팅 자원을 자동으로 배포하고 관리한다.
      • 새로운 애플리케이션 배포 시 자동으로 서버를 설정하고 네트워크를 구성한다.
      • 자동화 도구는 인프라 관리의 복잡성을 줄이고, 배포 시간과 오류를 최소화하여 운영 효율을 높인다.
    5. Metered billing that charges only for what you use
      • 사용한 자원에 대해 정확하게 측정하고, 이에 따라 요금을 부과한다.
      • 사용한 컴퓨팅 시간, 데이터 저장소, 네트워크 대역폭 등에 따라 요금을 부과한다.
      • 사용자는 실제로 사용한 만큼만 비용을 지불하고, 불필요한 비용을 절감할 수 있다.
  1. 클라우드 컴퓨팅의 발전과 배경
    • 발전 배경
      • 1990: 초기 데이터센터 등장, 자체적으로 서버를 구축
      • 2000 초반: 가상화 기술이 발전하면서 하나의 물리적 서버에서 여러 가상 서버를 운영할 수 있게 됨
      • 2000 중반: AWS, GCP, AZURE 등의 클라우드 서비스 제공자들이 등장
      • 2010: 클라우드 컴퓨팅이 주요 IT 인프라로 자리잡으면서 다양하 서비스와 기술이 개발됨
      • 2020: 기업들은 단일 클라우드 제공자에 의존하지 않고, 여러 클라우드 제공자를 사용하는 멀티 클라우드 전략을 채택
    • 현재 널리 적용되는 이유
      1. 유연성
        • 필요할 때마다 자원을 확장하거나 축소할 수 있어 비즈니스 요구에 빠르게 대응 가능함
        • 다양한 옵션으로 자원을 유연하게 관리
      2. 비용절감
        • 초기 자본 투자 없이 사용한 만큼만 요금을 지불
      3. 글로벌 접근성
        • 전 세계 어디서나 클라우드 서비스에 접근 가능함
        • 글로벌 데이터 센터 네트워크를 통해 낮은 지여 시간과 높은 가용성을 제공함
      4. 보안 및 규정 준수
        • 클라우드 서비스 제공자는 고도하된 보안 및 규정 준수 서비스를 제공함
        • 데이터 암호화, 접근 제어, 규정 준수 보고서 제공 등 다양한 보안 기능 제공을 통해서 데이터 보호

클라우드 환경에서 서버 운영 및 배포의 주요 단계

  1. 계획 및 요구사항 수집: 프로젝트 목표 정의, 필요한 리소스와 서비스, 보안 요구사항 파악
  2. 아키텍쳐 설계: 클라우드 서비스 및 리소스를 활용해서 시스템 아키텍쳐 설계
  3. 인프라 구축: 설계된 아키텍쳐를 바탕으로 클라우드 리소스를 프로비저닝함
    • 클라우드 리소스 생성
    • 네트워크 구성
    • 스토리지 설정
  4. 애플리케이션 배포: 서버에 애플리케이션을 설치하고, 필요한 설정을 수행
    • 애플리케이션 코드 배포
    • 애플리케이션 설정 및 환경 변수 구성
    • 의존성 설치 및 설정
  5. 보안 설정: 클라우드 인프라와 애플리케이션의 보안을 강화함
    • IAM 정책 설정 및 역할 부여
    • 네트워크 보안 그룹 및 ACL 구성
    • 데이터 암호화 설정
    • 보안 모니터링 및 로그 설정
  6. 모니터링 및 로깅: 서버 및 애플리케이션의 상태를 모니터링하고 로그를 수집하여 문제를 감지함
    • 모니터링 도구 설정(cloudWatch, grafana)
    • 알림 및 경고 설정(cloudWatch Alarms, SNS)
    • 로그 수집 및 분석(cloudWatch Logs, ELK)
  7. 성능 최적화: 시스템 성능을 분석하고, 필요한 최적화를 수행
    • 애플리케이션 성능 프로파이링 및 분석
    • 리소스 스케일링
    • 데이터베이스 최적화
  8. 백업 및 복구: 데이터를 주기적으로 백업하고, 복구 계획을 수립
    • 백업 정책 설정
    • 백업 데이터 검증 및 복구 테스트
    • 재해 복구 계획 수립 및 테스트
  9. 업데이트 및 유지보수: 시스템 및 애플리케이션을 정기적으로 업데이트하고, 유지보수 작업 수행
    • 시스템 및 애플리케이션 업데이트
    • 보안 패치 적용
    • 유지보수 작업 및 문제 해결
  10. 비용관리: 클라우드 리소스 사용량 모니터하고, 비용을 최적화함
    • 비용 추적 및 분석
    • 비용 절감 전략 수립

클라우드 컴퓨팅과 연관된 주요 개념

  1. 컨테이너(Container)
    • 컨테이너 애플리케이션과 그 종속성을 하나의 패키지로 묶어 어디서나 일관되게 실행할 수 있도록 하는 가상화 기술
    • 클라우드와의 연관성:
      1. 이식성: 컨테이너는 특정 클라우드 제공자에 종속되지 않고 다양한 클라우드 환경에서 동일하게 동작함
      2. 확장성: 컨테이너는 경량화되어 있어 빠르게 배포하고 확장할 수 있다. 클라우드 환경에서는 k8s와 같은 오케스트레이션 도구를 사용
      3. 효율성: 컨테이너는 가상 머신보다 자원을 효율적으로 사용
  2. 온프레미스(On-premise)
    • 자체적으로 소유하고 운영하는 데이터 센터에서 애플리케이션을 실행하는 환경
    • 클라우드와의 연관성:
      1. 비교: 온프레미스는 초기 자본 투자와 유지 관리 비용이 높으나, 클라우드는 사용한 만큼만 비용을 지불
      2. 하이브리드 클라우드: 온프레미스랑 클라우드를 결합하여 하이브리드 클라우드를 구축
      3. 데이터 주권 및 규제 준수: 온프레미스 환경은 데이터 주권 및 규제 준수 요건을 충족하는데 유리하다.
  3. 스케일링(Scaling)
    • 스케일링은 시스템의 처리 능력을 증가시키거나 감소하는 과정
    • 클라우드와 연관성
      1. 수평: 서버, 인스턴스를 추가하여 처리 능력을 확장하는 방식
      2. 수직: 기존 서버나 인스턴스의 자원을 업그레이드하는 방식
      3. 자동: 자동 스케일링을 클라우드 서비스 제공자가 제공하며, 트래픽 변화에 따라 자원을 자동으로 조정
  4. 가상화(Virtualization)
    • 물리적인 하드웨어 자원을 소프트웨어적으로 분리하여 여러 개의 가상 환경을 생성하는 기술
  5. 가상머신(VirtualMachine)
    • 가상화 기술을 통해서 생성된 독립적인 운영 환경이다.
  6. 가상화와 가상 머신
    • 가상화 기술: 가상 머신을 생성하고 관리하는데 생성(VMWare, Hyper-V, KVM)
    • 장점
      • 자원 활용도
      • 유연성
      • 격리성
    • 가상머신과 클라우드의 연관성
      • 클라우드의 핵심 기술: 가상화는 클라우드의 핵심이다. 클라우드 제공자는 가상화 기술로 물리적 서버를 논리적으로 나눠서 제공
      • 유연한 자원 관리: 클라우드 환경에서는 가상 머신을 필요에 따라 쉽게 생성, 삭제, 이동할 수 있다. 이는 기업이 변화하는 비즈니스 요구에 빠르게 대응할 수 있도록 도와준다.
      • 비용 효율성: 가상화는 자원을 효율적을으로 사용하므로 비용을 절감할 수 있다.
      • 고가용성: 클라우드 환경에서는 가상 머신을 여러 데이터 센터에 분산해서 고가용성을 제공한다. 예를 들어 여러 가용 영역(AZ)에 걸쳐 인스턴스를 배치하여 하나의 AZ에 문제가 발생했을 경우 서비스를 유지할 수 있다.
      • 복원력: 클라우드 환경에서는 데이터 백업 및 복구가 용이하다. 가상머신의 스냅샷을 통해서 데이터를 백업하고 필요 시 복원할 수 있다.

참고

  • IaaS: 인프라 제공, 유연성 높음, 설정과 관리가 필요
  • PaaS: 개발 환경 제공, 개발 편의성 높음, 플랫폼 제한 가능성
  • SaaS: 소프트웨어 제공, 사용자 편의성 높음, 커스터마이징 제한적

1. IaaS

  • IaaS는 가상화된 컴퓨팅 자원을 제공하는 서비스 모델
  • 사용자는 인프라 자원을 인터넷을 통해서 제공받는다.

2. PaaS

  • 애플리케이션 개발 및 실행 환경을 제공하는 모델
  • 개발자는 인프라 관리 없이 애플리케이션 개발, 테스트, 배포에 집중할 숭 ㅣㅆ다.
    • Aws ElasticBeanstalk

3. SaaS

  • 인터넷을 통해 소프트웨어 애플리케이션을 제공하는 모델
  • 설치 없이 브라우저를 통해 애플리케이션을 사용할 수 있다.
  • publicCloud: 여러 사용자가 공유, 비용 효율적
  • privateCloud: 특정 조직 전용, 보안 및 규정 준수 용이
  • hybridCloud: 공개 + 사설 겹합, 유연성 및 통합성이 높다.
  • multicloud: 여러 클라우드 사용, 리스크 분산 및 최적화 가능

1. Public

  • 공개 클라우드는 여러 사용자가 공유하는 물리적 서버에서 가상화된 자원을 제공하는 클라우드 모델임
  • 서비스 제공자가 인프라를 소유하고, 사용자는 인터넷을 통해 자원을 이용

    2. Private

  • 사설 클라우드는 특정 조직을 위해 전용으로 제공되는 클라우드를 결합한 모델이다.
  • 워크로드를 유연하게 이동시키고, 데이터와 애플리케이션을 통합할 수 있다.

    3. Hybrid

  • 공개 클라우드와 사설 클라우드를 결합한 모델
  • 워크로드를 유연하게 이동시키고, 데이터와 애플리케이션을 통합할 수 있다.

    4. 멀티 클라우드

  • 여러 클라우드 서비스 제공자의 인프라와 서비스를 함께 사용하는 모델
  • 단일 제공자에 종속되지 않으면서 각 클라우드의 강점을 활용할 수 있다.

클라우드 컴퓨팅의 이점 및 고려사항

이점

  1. 반응성 증가: 필요에 따라 자원을 신속하게 할당, 해제 가능
  2. 비용 절감: 초기 인프라 구축 비용을 줄이고 사용한 만큼만 비용을 지불
  3. 유연성: 다양한 OS, 언어, 도구를 지원
  4. 확장성: 필요에 따라 컴퓨팅 자원을 확장하거나 축소할 수 있다.
  5. 가용성, 안정성: 높은 가용성, 안정성을 제공하여, 시스템이 항상 접근 가능하고 중단 없이 운영될 수 있다.

고려 사항

  1. 보안: 애플리케이션의 보안을 위해서 다양한 보안 조치와 정책을 사용해야 한다.
  2. 데이터 관리: 클라우드 환경에서 데이터 저장, 백업, 복구 등을 효과적으로 관리
  3. 규제준수: 각종 법적 규제와 산업 표준을 준수하기 위해 필요한 조치를 취해야 한다.

위험과 과제

  1. 신뢰 경계 중복으로 인한 취약성 증가: 클라우드 환경에서는 여러 사용자가 동일한 인프라를 공유하므로, 신뢰 경게가 중복될 수 있다.
  2. 공유된 보안 책임으로 인한 취약성 증가: 클라우드 제공자와 사용자가 보안을 공동으로 책임지므로, 책임 분담이 명확하지 않을 수 있다.
  3. 사이버 위협에 대한 노출 증가: 인터넷을 통해 접근 가능하므로, 사이버 공격에 노출될 수 있다.
  4. 운영 관리 통제의 감소: 클라우드 제공자가 인프라를 관리하므로, 사용자가 직접적인 운영 관리를 수행하기 어려움 (클라우드 제공자의 SLA(서비스 수준 협약)을 명확히 한다.)
  5. 클라우드 제공자 간의 제한된 이동성: 클라우드 제공자 간의 상호 운용성이 부족하여, 한 제공자에서 다른 제공자로 이동이 어려움
  6. 다중 지역 규제 및 법적 문제: 클라우드 서비스를 여러 지역에서 사용할 경우, 각 지역의 법적 규제와 준수 요구 사하잉 달라진다.
  7. 비용 초과: 사용량이 예측을 초과할 경우, 높은 발생이 발생할 수도 있다.

Serverless

특징

  1. 서버 관리를 신경 쓸 필요가 없음
  2. 자동 스케일링
  3. 사용한 만큼만 비용 지불
  4. 주요 서비스
    • AWS Lambda
    • Azure Functions
    • GCP Functions

장점

  1. 서버 관리 불필요
  2. 자동 확장성
  3. 비용 효율성
  4. 빠른 개발 및 배포

단점

  1. ColdStart
  2. 상태 저장이 어려움
  3. 제한된 제어: 서버, 네트워크에 대한 세부 설정, 제어가 어렵기에 맞춤형 시스템에는 적합하지 않음