클라우드 컴퓨팅과 서버 운영 및 배포
클라우드 컴퓨팅
- 탄력성
- 확장성
- 고가용성
- 비용 효율성
클라우드 컴퓨팅 정의 및 개념
- NIST가 정의한 클라우드 컴퓨팅
- On-demand self-service: 사용자가 필요할 떄마다 언제든지 컴퓨팅 자원을 제공받을 수 있다.
- Broad network access: 네트워크를 통해 다양한 장치에서 클라우드 서비스에 접근할 수 있다.
- Resource pooling: 여러 사용자 간에 컴퓨팅 자원을 동적으로 할당하여 효율적으로 사용할 수 있다.
- Rapid elasticity: 필요한 자원을 신속하게 확장하거나 축소할 수 있다.
- Measured service: 사용한 자원에 대해 측정하고, 이에 따라 요금을 부과한다.
- 클라우드 컴퓨팅을 정의하는 5가지 주요 원칙
- PooledComputingResources:
- 여러 사용자가 컴퓨팅 자원을 공유하며, 필요에 따라 자원이 동적으로 할당된다.
- 한 데이터 센터에서 여러 가상머신이 운영된다.
- 자원의 풀링을 통해 클라우드 서비스 제공자는 높은 자원 활용률을 달성하고 비용을 절감하며, 사용자의 다양한 요구를 충족시킬 수 있다.
- Virtualization of compute resources:
- 물리적인 자원을 가상화하여 여러 가상 컴퓨터로 분할한다.
- 한 서버에서 여러 개의 가상 서버가 동작하며 각각 다른 서비스를 제공한다.
- Elasticity as resources demands grow and shrink:
- 자원의 수요에 따라 컴퓨팅 자원을 신속하게 확장하거나 축소할 수 있다.
- 트래픽이 급증할 떄 서버를 자동으로 추가하고 트래픽이 줄어들면 서버를 줄인다.
- Automation of new resources deployment:
- 새로운 컴퓨팅 자원을 자동으로 배포하고 관리한다.
- 새로운 애플리케이션 배포 시 자동으로 서버를 설정하고 네트워크를 구성한다.
- 자동화 도구는 인프라 관리의 복잡성을 줄이고, 배포 시간과 오류를 최소화하여 운영 효율을 높인다.
- Metered billing that charges only for what you use
- 사용한 자원에 대해 정확하게 측정하고, 이에 따라 요금을 부과한다.
- 사용한 컴퓨팅 시간, 데이터 저장소, 네트워크 대역폭 등에 따라 요금을 부과한다.
- 사용자는 실제로 사용한 만큼만 비용을 지불하고, 불필요한 비용을 절감할 수 있다.
- PooledComputingResources:
- 클라우드 컴퓨팅의 발전과 배경
- 발전 배경
- 1990: 초기 데이터센터 등장, 자체적으로 서버를 구축
- 2000 초반: 가상화 기술이 발전하면서 하나의 물리적 서버에서 여러 가상 서버를 운영할 수 있게 됨
- 2000 중반: AWS, GCP, AZURE 등의 클라우드 서비스 제공자들이 등장
- 2010: 클라우드 컴퓨팅이 주요 IT 인프라로 자리잡으면서 다양하 서비스와 기술이 개발됨
- 2020: 기업들은 단일 클라우드 제공자에 의존하지 않고, 여러 클라우드 제공자를 사용하는 멀티 클라우드 전략을 채택
- 현재 널리 적용되는 이유
- 유연성
- 필요할 때마다 자원을 확장하거나 축소할 수 있어 비즈니스 요구에 빠르게 대응 가능함
- 다양한 옵션으로 자원을 유연하게 관리
- 비용절감
- 초기 자본 투자 없이 사용한 만큼만 요금을 지불
- 글로벌 접근성
- 전 세계 어디서나 클라우드 서비스에 접근 가능함
- 글로벌 데이터 센터 네트워크를 통해 낮은 지여 시간과 높은 가용성을 제공함
- 보안 및 규정 준수
- 클라우드 서비스 제공자는 고도하된 보안 및 규정 준수 서비스를 제공함
- 데이터 암호화, 접근 제어, 규정 준수 보고서 제공 등 다양한 보안 기능 제공을 통해서 데이터 보호
- 유연성
- 발전 배경
클라우드 환경에서 서버 운영 및 배포의 주요 단계
- 계획 및 요구사항 수집: 프로젝트 목표 정의, 필요한 리소스와 서비스, 보안 요구사항 파악
- 아키텍쳐 설계: 클라우드 서비스 및 리소스를 활용해서 시스템 아키텍쳐 설계
- 인프라 구축: 설계된 아키텍쳐를 바탕으로 클라우드 리소스를 프로비저닝함
- 클라우드 리소스 생성
- 네트워크 구성
- 스토리지 설정
- 애플리케이션 배포: 서버에 애플리케이션을 설치하고, 필요한 설정을 수행
- 애플리케이션 코드 배포
- 애플리케이션 설정 및 환경 변수 구성
- 의존성 설치 및 설정
- 보안 설정: 클라우드 인프라와 애플리케이션의 보안을 강화함
- IAM 정책 설정 및 역할 부여
- 네트워크 보안 그룹 및 ACL 구성
- 데이터 암호화 설정
- 보안 모니터링 및 로그 설정
- 모니터링 및 로깅: 서버 및 애플리케이션의 상태를 모니터링하고 로그를 수집하여 문제를 감지함
- 모니터링 도구 설정(cloudWatch, grafana)
- 알림 및 경고 설정(cloudWatch Alarms, SNS)
- 로그 수집 및 분석(cloudWatch Logs, ELK)
- 성능 최적화: 시스템 성능을 분석하고, 필요한 최적화를 수행
- 애플리케이션 성능 프로파이링 및 분석
- 리소스 스케일링
- 데이터베이스 최적화
- 백업 및 복구: 데이터를 주기적으로 백업하고, 복구 계획을 수립
- 백업 정책 설정
- 백업 데이터 검증 및 복구 테스트
- 재해 복구 계획 수립 및 테스트
- 업데이트 및 유지보수: 시스템 및 애플리케이션을 정기적으로 업데이트하고, 유지보수 작업 수행
- 시스템 및 애플리케이션 업데이트
- 보안 패치 적용
- 유지보수 작업 및 문제 해결
- 비용관리: 클라우드 리소스 사용량 모니터하고, 비용을 최적화함
- 비용 추적 및 분석
- 비용 절감 전략 수립
클라우드 컴퓨팅과 연관된 주요 개념
- 컨테이너(Container)
- 컨테이너 애플리케이션과 그 종속성을 하나의 패키지로 묶어 어디서나 일관되게 실행할 수 있도록 하는 가상화 기술
- 클라우드와의 연관성:
- 이식성: 컨테이너는 특정 클라우드 제공자에 종속되지 않고 다양한 클라우드 환경에서 동일하게 동작함
- 확장성: 컨테이너는 경량화되어 있어 빠르게 배포하고 확장할 수 있다. 클라우드 환경에서는 k8s와 같은 오케스트레이션 도구를 사용
- 효율성: 컨테이너는 가상 머신보다 자원을 효율적으로 사용
- 온프레미스(On-premise)
- 자체적으로 소유하고 운영하는 데이터 센터에서 애플리케이션을 실행하는 환경
- 클라우드와의 연관성:
- 비교: 온프레미스는 초기 자본 투자와 유지 관리 비용이 높으나, 클라우드는 사용한 만큼만 비용을 지불
- 하이브리드 클라우드: 온프레미스랑 클라우드를 결합하여 하이브리드 클라우드를 구축
- 데이터 주권 및 규제 준수: 온프레미스 환경은 데이터 주권 및 규제 준수 요건을 충족하는데 유리하다.
- 스케일링(Scaling)
- 스케일링은 시스템의 처리 능력을 증가시키거나 감소하는 과정
- 클라우드와 연관성
- 수평: 서버, 인스턴스를 추가하여 처리 능력을 확장하는 방식
- 수직: 기존 서버나 인스턴스의 자원을 업그레이드하는 방식
- 자동: 자동 스케일링을 클라우드 서비스 제공자가 제공하며, 트래픽 변화에 따라 자원을 자동으로 조정
- 가상화(Virtualization)
- 물리적인 하드웨어 자원을 소프트웨어적으로 분리하여 여러 개의 가상 환경을 생성하는 기술
- 가상머신(VirtualMachine)
- 가상화 기술을 통해서 생성된 독립적인 운영 환경이다.
- 가상화와 가상 머신
- 가상화 기술: 가상 머신을 생성하고 관리하는데 생성(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. 멀티 클라우드
- 여러 클라우드 서비스 제공자의 인프라와 서비스를 함께 사용하는 모델
- 단일 제공자에 종속되지 않으면서 각 클라우드의 강점을 활용할 수 있다.
클라우드 컴퓨팅의 이점 및 고려사항
이점
- 반응성 증가: 필요에 따라 자원을 신속하게 할당, 해제 가능
- 비용 절감: 초기 인프라 구축 비용을 줄이고 사용한 만큼만 비용을 지불
- 유연성: 다양한 OS, 언어, 도구를 지원
- 확장성: 필요에 따라 컴퓨팅 자원을 확장하거나 축소할 수 있다.
- 가용성, 안정성: 높은 가용성, 안정성을 제공하여, 시스템이 항상 접근 가능하고 중단 없이 운영될 수 있다.
고려 사항
- 보안: 애플리케이션의 보안을 위해서 다양한 보안 조치와 정책을 사용해야 한다.
- 데이터 관리: 클라우드 환경에서 데이터 저장, 백업, 복구 등을 효과적으로 관리
- 규제준수: 각종 법적 규제와 산업 표준을 준수하기 위해 필요한 조치를 취해야 한다.
위험과 과제
- 신뢰 경계 중복으로 인한 취약성 증가: 클라우드 환경에서는 여러 사용자가 동일한 인프라를 공유하므로, 신뢰 경게가 중복될 수 있다.
- 공유된 보안 책임으로 인한 취약성 증가: 클라우드 제공자와 사용자가 보안을 공동으로 책임지므로, 책임 분담이 명확하지 않을 수 있다.
- 사이버 위협에 대한 노출 증가: 인터넷을 통해 접근 가능하므로, 사이버 공격에 노출될 수 있다.
- 운영 관리 통제의 감소: 클라우드 제공자가 인프라를 관리하므로, 사용자가 직접적인 운영 관리를 수행하기 어려움 (클라우드 제공자의 SLA(서비스 수준 협약)을 명확히 한다.)
- 클라우드 제공자 간의 제한된 이동성: 클라우드 제공자 간의 상호 운용성이 부족하여, 한 제공자에서 다른 제공자로 이동이 어려움
- 다중 지역 규제 및 법적 문제: 클라우드 서비스를 여러 지역에서 사용할 경우, 각 지역의 법적 규제와 준수 요구 사하잉 달라진다.
- 비용 초과: 사용량이 예측을 초과할 경우, 높은 발생이 발생할 수도 있다.
Serverless
특징
- 서버 관리를 신경 쓸 필요가 없음
- 자동 스케일링
- 사용한 만큼만 비용 지불
- 주요 서비스
- AWS Lambda
- Azure Functions
- GCP Functions
장점
- 서버 관리 불필요
- 자동 확장성
- 비용 효율성
- 빠른 개발 및 배포
단점
- ColdStart
- 상태 저장이 어려움
- 제한된 제어: 서버, 네트워크에 대한 세부 설정, 제어가 어렵기에 맞춤형 시스템에는 적합하지 않음