■ Cloud Computing

 ▶ 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스

1. AWS 실습 기준

Name AWS 분류 기준 유닛 기준 모델 및 클래스
EC2 컴퓨팅 AWS t2.micro
S3 스토리지,서버리스 AWS S3 Standard
RDS 데이터베이스 서비스 AWS MySQL, db.t2.micro
CodeBuild 개발자 도구 배포 자동화  
CodeDeploy 개발자 도구 배포 자동화  
CodePipeline 개발자 도구 배포 자동화  
IAM 보안 자격 증명 및 규정 준수 AWS  
System Manager 보안 자격 증명 및 규정 준수 배포 자동화  

 

2. 서버 방식

 1) 기존 서버방식(온프레미스 방식)

  •  주기적인 관리가 필요한다
    - 서버실에는 종종 고장이 나거나 인터넷과 연결이 되지 않는 컴퓨터가 생기기도 한다
    - 문제를 해결하기 위한 인력 및 비용이 투입되야 한다
    - 관리해야 하는 컴퓨터 및 다른 전자기기의 수가 많아지는 만큼 투입되어야 하는 인력 및 비용이 증가한다
  • 공간의 한계가 있다
    - 서버실이라는 공간에 컴퓨터를 배치하고 컴퓨터를 추가하는 방식으로 수용 능력을 향상한다
    - 공간이 부족하여 컴퓨터를 더는 배치할 수 없는 문제가 발생한다
    - 서버의 컴퓨팅 능력을 늘리려는 방법은 컴퓨터의 성능을 높이고 부피를 줄여 더 많은 컴퓨터를 같은 공간에 배치하는 방법으로 해결한다

 2) 클라우드 방식

  • 물리적인 컴퓨터가 아닌, 가상 컴퓨터를 대여하는 방식이다
  • 가상화(Virtualization) 기술의 발전으로부터 비롯되었다
  • 장점
    - 필요할 때마다 컴퓨팅 능력을 유연하게 조절할 수 있다
    - 고정적인 비용이 들어가는 온프레미스와는 달리 사용한 만큼의 요금만 지불한다
    - 컴퓨터의 스냅샷("이미지"라고 한다) 을 이용해 다른 컴퓨터로 즉시 이주(migration)가 가능하다
  • 단점
    - 운영 환경 자체가 클라우드 제공자에게 종속된다
    - 클라우드 서비스에 문제가 생기면 내가 배포하고 관리하는 환경에도 영향을 준다
    - 백엔드 구성 자체가 특정 회사의 기술로만 구성해야 한다
    - AWS와 같은 대표적인 클라우드 기술을 학습해야 한다

3. 클라우드 서비스 종류

 1) SaaS

  • Software as a Service
  • 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우 대부분 SaaS에 해당한다

 2) PaaS

  • Platform as a Service
  • 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우 대부분 PaaS에 해당한다

 3) IaaS

  • Infrastructure as a Service
  • 클라우드 제공자가 가상 컴퓨터까지 제공하는 경우 대부분 IaaS에 해당한다
  Network Hardwear OS Flatform Database Application
SaaS O O O O O O
PaaS O O O O X X
IaaS O O X X X X

 

4. 배포(Deploy)

 1) 배포

  • 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정이다
  • 기본적으로 4단계를 거쳐 개발한 서비스를 배포한다
  • 개발 환경과 배포 환경의 차이에 따라 환경 설정을 코드와 분리하여야 한다
Development Intergation Staging Production
로컬 환경에서 개발 및 테스트


변경사항 문제되지 않음


샘플 데이터를 이용하여 개발
각자 개발한 부분을 통합


코드간 충돌 여부 확인


코드간 문제발생 여부 확인
복제 데이터를 이용하여 테스트 실행

서비스제공 환경과 유사환경에서 테스트 실행

관계자와의 상호 검증
실제 데이터를 이용하여 실행


개발환경과 구분된 환경 제공


실제 서비스 제공 단계

 

  2) 환경변수(environment variable,  envvar, env)

  • 작성한 코드가 다른 환경에서 정상 작동할 수 있도록 설정을 환경 변수에 저장한다
  • 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있다
  • 오류가 발생해도 코드 저장소에 올라갈 가능성이 낮다
  • 작성 코드는 절대 경로가 아닌 상대 경로를 사용한다
  • `.properties` 등을 이용해 환경 변수를 설정한다
  • 개발 환경을 통일할 수 있도록 docker와 같은 가상화 도구를 사용하여 환경 자체를 메타데이터로 담는다

 

3) 배포 플랫폼

 
 
 
 

 

 

+ Recent posts