TIL 21.07.07 ~ 07.08

Jaemin Jung·2021년 7월 7일
0

Today I Learned

목록 보기
53/62
post-thumbnail

오늘한일

Achievement Goals

  • Cloud와 Deployment의 의미를 각 각 알고, 내 코드를 남에게 배포할 수 있다.
    • 클라우드 컴퓨팅이 무엇인지 설명할 수 있다.
    • Deployment의 의미를 이해할 수 있다.
    • 코드를 남에게 배포할 수 있다.
  • 사용하는 서비스들의 특징과 사용해야 하는 이유를 이해할 수 있다.
    • RDS와 EC2에 설치된 데이터베이스의 차이를 이해할 수 있다.
    • S3의 높은 가용성과 안정성을 이해할 수 있다.

Cloud Computing

흔히 말하는 전산실 등에 컴퓨터를 배치하여 서버를 구축한것을 알고있을것이다.
서버도 결국 컴퓨터이며, 서버가 요청에 대한 수용 능력이 한계에 도달한경우 장애를 일으킨다.
'서버가 터졌다.'라는 말을 쓸때 이런 상황을 말한다.
이러한 상황을 수평적 수직적 확장을 통해 대비한다.
수평적 확장 : 같은 능력의 컴퓨터를 여러대 확보 (관리, 공간적 한계가 있음)
수직적 확장 : 컴퓨터 한대의 성능을 높임 (기술, 물리적 한계가 있음)

두가지 확장의 단점을 보완하기 위해 일부 거대 기업은 데이터 센터라는 거대한 건무을 세우기 시작했고,
데이터 센터의 유휴 자원을 대여하는 서비스가 등장하였는데, 클라우드 컴퓨팅이 시작된 순간이다.

클라우드 컴퓨팅은 인터넷이라고 하는것을 클라우드(구름)이라 비유적으로 표현하고,
물리적인 컴퓨터가 아닌, 네트워크 환경을 빌려 가상의 컴퓨터를 대여한다는 점이 다르다.

  • 장점
  1. 필요할 때마다 컴퓨팅 능력을 유연하게 조절 가능
  2. 고정적인 비용이 들어가는 온프레미스와는 달리 사용한 만큼의 요금만 지불
  3. 컴퓨터의 스냅샷(이미지)을 이용해 다른 컴퓨터로 즉시 이주(migration)가 가능
  • 단점
    운영 환경 자체가 클라우드 제공자에게 종속되어 버리므로,
    클라우드 서비스에 문제가 생기면 내가 배포하고 관리하는 환경에도 영향을 미침

Deploy

우리는 로컬 환경에서 작성한 코드들로 서비스를 만들어 낸다.
서비스는 실제로 다른 사람들이 사용할 수 있어야 서비스라고 말할 수 있다.
우리의 로컬 환경 안에서만 사용 가능하다면 그것은 본질적인 의미를 잃는것이다.
Deploy(배포)는 우리가 개발한 서비스를 사용자들이 용가능하게 하는 일련의 과정을 말한다.

  • 배포 4단계
  1. Development : 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정
    (실제 데이터가 아닌 더미데이터(Sample data)를 사용한다)

  2. Intergration : 각자의 컴퓨터에서 작성한 코드를 합치는 과정
    (오류가 일어나지 않는지, 충돌이 있는지 확인)

  3. Staging : 실제 출시단계인 Production단계와 가장 유사한 환경에서 테스트 진행
    (여러 부서의 확인과정을 거침)

  4. Production : 서비스 실제 출시단계
    (문제가 생기면 큰일남)

작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면, 설정을 환경 변수에 저장해야 한다.

AWS

EC2

EC2는 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스이다.
쉽게말해 아마존에서 가상의 컴퓨터를 한 대 빌리는 것과 같다.
EC2는 Elastic Compute Cloud를 줄인말이며,
사용한 만큼 비용을 지불하기 때문에 탄력적인 이라는 의미의 Elastic이라는 단어가 붙어있다.
EC2는 비용적인 부분 뿐만이 아니라 필요에 따라 성능, 용량을 자유롭게 조절 가능하다.
EC2를 통해서 할 수 있는 기본적인 일은 웹서버를 설치하고 사용자가 요청하는 서비스를 제공하는것

  • 용어
    인스턴스: 1대의 컴퓨터를 의미(aws에서 컴퓨터를 빌리는 것을 인스턴스를 빌려 온다고 함)
    AMI: 소프트웨어 구성이 기재된 템플릿(운영체제, 특정 런타임 등이 설치된 패키지)

EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM
혹은 런타임이 구성된 컴퓨터를 빌리는 것이다.

RDS

RDS는 Relational Database Service의 약자로
AWS에서 제공하는 관계형 데이터베이스 서비스 이다.
EC2에서 관계형 데이터베이스 mySQL이나 오라클을 설치하면은 될텐데,
굳이 RDS가 존재하는 이유를 코드스테이츠에서는 렌터카 회사에서 대여한 차량과
개인 소유 차량의 차이점으로 비유하여 설명한다.
개인 소유 차량은 운전하는것 이외에도 주기적으로 차량을 정비, 세차등의 관리를 해줘야하지만,
대여한 차량은 운전만 하면 되기에 사용이 더 편리하다.
개인 소유 차량은 실제 mySQL등을 말하고, 대여한 차량은 RDS로 말하고있다.
RDS를 이용하면 데이터베이스 유지보수와 관련된 일들을 RDS에서 전적으로 자동 관리하고,
사용자가 해야할 일은 초기 설정을 제외하고 데이터베이스에 저장된 데이터를 관리하는 일 밖에 없기에 큰 편의성을 느낄 수 있다.
또한, 데이터베이스 엔진을 취사선택하여 이용 가능하다는 장점이 있다.

S3

S3는 aws에서 제공하는 클라우드 스토리지 서비스 이다.
쉽게 생각해서 인터넷 공간에 데이터를 저장하는 서비스 라고 생각하면 이야기 하기 편하다.
클라우드 스토리지를 이용한다면 기기 제약 없이 웹 환경에서 어디서든 파일을 불러오고 저장 가능하다.

  • 장점
  1. 스토리지의 용량을 무한히 확장할 수 있다.
    그래서 데이터를 무한히 저장 가능하다.
    그리고 사용한 만큼만 비용을 지불하면 되기 때문에 비용적인 측면에서 효율적이다.

  2. 스토리지의 내구성이 높아서 저장된 파일을 유실할 확률이 적다.
    S3는 99.999999999%의 내구성을 보장한다고 한다.

  3. 가용성이 높아서 스토리지에 저장된 파일들을 정상적으로 사용할 수 있는 시간이 길어진다.
    1년 동안 S3에 파일을 저장했을 시, 8.76 시간 동안만 스토리지를 이용하는 데 있어서
    장애가 발생한다고 한다.

  4. 스토리지 클래스가 다양해서 목적에 맞게 사용이 가능하다.
    대표적으로 많이 선택하는 스토리지 클래스는 Standard와 Glacier이다.
    Standard는 범용적인 목적으로 데이터에 빠른 속도로 접근 할 수 있다.
    대신 오래 보관하는 목적으로는 비효율적이다.
    Glacier는 데이터 접근 속도는 느리지만, 보관하는 비용이 매우 저렴해서
    장기 보관 목적에 사용된다.

참고 사이트

http://chat-webfront-app.s3-website.ap-northeast-2.amazonaws.com/
https://urclass.codestates.com/1c612c2a-1d03-4afe-8771-ae027cca6956?playlist=559

profile
내가 보려고 쓰는 블로그

0개의 댓글