20230829_AWS_1

장종민·2023년 8월 29일

mentor

목록 보기
11/24

AWS_1일차


AWS의 대표적인 서비스들은?

  • Amazon Route 53

    • 도메인 연결
    • 도메인 이름 관리 및 DNS 서비스를 제공하여 사용자의 웹 사이트 또는 애플리케이션을 인터넷에 연결
  • Amazon S3 (Simple Storage Service)

    • 파일 시스템. 주로 static파일 저장됨.
    • 객체 스토리지 서비스로, 정적 파일, 이미지, 비디오 등의 데이터를 안전하게 저장하고 검색하기 위해 사용
  • Amazon CloudFront

    • CDN.캐시 저장
    • 콘텐츠 전송 네트워크(CDN) 서비스로, 정적 및 동적 콘텐츠를 전 세계의 사용자에게 빠르게 제공하는 데 사용
  • Amazon RDS (Relational Database Service)

    • DB
    • 관계형 데이터베이스 (MySQL, PostgreSQL, Oracle 등)를 손쉽게 프로비저닝, 운영 및 확장하기 위해 사용
  • AWS Lambda

    • 코드 저장 및 실행
    • 서버리스 컴퓨팅 서비스로, 코드를 실행하고 이벤트에 대한 응답을 생성하는 데 사용됩니다. 이벤트 기반 아키텍처 구축에 유용합니다.
  • AWS IAM (Identity and Access Management)

    • 인증/보안
    • AWS 리소스에 대한 접근 권한 및 관리자 권한을 제어하고 관리하는 데 사용됨. 보안 및 권한 관리에 필수
  • Amazon CloudWatch

    • 로그 저장/모니터링
    • AWS 리소스 및 애플리케이션의 성능 및 상태를 모니터링하고 로그 및 메트릭을 수집하여 리소스 사용량 및 효율성을 분석하는 데 사용
  • Amazon EC2 (Elastic Compute Cloud)

    • 가상 서버(=인스턴스)를 프로비저닝(=사전에 설정 혹은 할당)하여 웹 애플리케이션, 데이터베이스, 분석 작업 등 다양한 작업을 실행하고 관리하는 데 사용.
    • 가상서버 내에서 애플리케이션을 실행하게 되는데, 이 애플리케이션이란 = 컨테이너임.
  • 작년 기준 서비스/제품이 200개 이상


많이 쓰는 용어

컨테이너

  • 환경을 그룹핑 해서 빠르게 복제/이식이 가능하게 하는 패키징 기술!
  • 장점
    • 운영체제가 공유됨 => 빠르게 시작할 수 있음.
    • 응용 프로그램 의존성 포장 => 컨테이너는 필요한 라이브러리와 의존성을 '컨테이너 이미지'에 포장하여, 어디서든 동일한 환경으로 실행할 수 있음

인스턴스

  • 가상 컴퓨터를 의미합니다. AWS에서는 가상 머신을 생성하고 관리하는 데 사용되며, 다양한 유형과 용도로 활용됩니다.

스케일링

  • 말 그대로(스케일 = 크기) 작업 처리에 대해서 적합한 컴퓨팅이 가능하도록 성능이나 서버 갯수를 조정하는 프로세스!
  • 서버의 성능을 증가시키는 것 = 업스케일링/수직스케일링
    • 메모리, CPU 업. 속도나 리소스 할당량 조정됨.
    • 주로 작은규모에서 사용(관리 간단. 전체 성능에 미치는 영향이 큼. 새로운 물리적 기기 추가보다 비용이 효율적)
  • 더 많은 서버/인스턴스 추가 = 아웃스케일링/수평스케일링
    • 시스템의 확장성을 높일 수 있음.
    • 주로 대규모 시스템이나 환경에서 사용됨(한 인스턴스에서 장애가 발생해도 다른 것으로 대체 가능, 부하가 분산됨, 모듈화에 좋음)

서버리스

  • 서버 관리 없이 애플리케이션을 구축하는 개념으로, 서버 배포와 관리를 AWS에 맡기고 개발자는 코드 작성에 집중할 수 있습니다.

배포

  • 개발한 소프트웨어를 사용자나 시스템이 실제로 사용할 수 있도록 만드는 단계

가상서버 프로비저닝이란?

  • 가상화 기술을 사용하여 하나의 물리적 서버에서 여러 개의 가상 서버를 생성, 관리하고 배포하는 과정

  • 가상 서버는 마치 컴퓨터 안에 또 다른 컴퓨터를 만들어 사용하는 것과 비슷함.

  • 예시

  • 우리가 하나의 큰 컴퓨터를 가지고 있다고 가정해보자

  • 이 컴퓨터 하나에서 여러 작업을 동시에 처리하려면 문제가 발생할 수 있음.
    예를 들어, 한 작업이 컴퓨터의 모든 자원을 독점하면 다른 작업들은 느려지거나 멈출 수 있다.

  • 하지만 가상화 기술을 사용하면 이 문제를 해결 가능.

  • 가상화란?? 컴퓨터 안에서 가상의 환경을 만들어 각각을 독립적으로 사용하는 것
    이런 가상 환경을 "가상 머신" 또는 "가상 서버"라고 부름

  • 예를 들어, 한 대의 컴퓨터에서 여러 개의 가상 서버를 만들어 볼 수 있음

  • 한 대의 컴퓨터를 가지고 있다면, 이 컴퓨터 안에 여러 개의 가상 서버를 만들어서 하나는 웹 서버로, 하나는 데이터베이스 서버로, 하나는 파일 공유 서버로 사용할 수 있음 이렇게 하면 각 서버가 독립적으로 작동하면서도 하나의 물리적 컴퓨터를 효율적으로 활용할 수 있게 됨

  • 이 가상 서버들은 마치 각각의 독립적인 컴퓨터처럼 동작하며, 서로 간섭 x. 따라서 한 가상 서버에서 어떤 작업을 하더라도 다른 가상 서버에는 영향을 미치지 않음

  • 이렇게 가상화 기술을 사용하면 하나의 물리적 컴퓨터를 여러 개의 가상 서버로 나누어 사용할 수 있음

  • 각 가상 서버는 필요한 만큼의 리소스(메모리, CPU, 저장소 등)를 할당받아 독립적으로 작동힘. => 리소스를 효율적으로 사용하고, 서버 관리 및 배포가 더 간편해짐

가상서버 프로비저닝과 관련된 AWS 서비스는?

  • Amazon EC2 (Elastic Compute Cloud)
    • 가상 서버를 프로비저닝하고 관리할 수 있는 서비스
    • 사용자는 다양한 운영 체제에서 실행되는 가상 머신(=인스턴스)을 생성하고 필요에 따라 크기와 용량을 조절할 수 있음
  • Amazon Lightsail
    • 초보자부터 전문가까지 사용하기 쉬운 가상 서버 프로비저닝 서비스
    • 웹 애플리케이션, 웹 사이트, 데이터베이스 등을 간단하게 시작하고 관리할 수 있음
  • AWS Lambda
    • 서버리스 컴퓨팅 서비스
    • = 코드 실행을 위해 서버를 관리할 필요 없이 코드를 등록해두면 이벤트에 응답하거나 스케줄된 작업을 수행할 수 있음.

3가지 서비스의 차이점은?

아마존 웹 서비스(AWS)에서 제공하는 Amazon EC2, Amazon Lightsail 및 AWS Lambda는 가상 서버 프로비저닝과 관련된 서비스입니다. 각 서비스의 특징과 차이점을 살펴보겠습니다:

  1. Amazon EC2 (Elastic Compute Cloud):

    • 특징
      • 고급 사용자 및 엔터프라이즈에게 유연성과 컨트롤을 제공함
      • 다양한 인스턴스 유형과 운영 체제를 선택할 수 있음
      • 고성능 및 확장성을 제공하여 큰 규모의 워크로드도 처리할 수 있음
      • 다양한 네트워크 및 보안 옵션을 제공
    • 다른 서비스와의 차이점
      • EC2는 높은 컨트롤과 구성 가능성을 원하는 고급 사용자와 비즈니스에 적합
      • 리소스 사용량에 따라 가격이 변동하며, 예측 가능한 비용 계획이 필요함
  2. Amazon Lightsail:

  3. AWS Lambda:

    • 특징
      • 서버리스 컴퓨팅을 위한 서비스로, 코드 실행을 위해 서버를 관리할 필요 없이 이벤트에 응답함
      • 코드 실행만을 위한 초소형 컴퓨팅 단위인 "람다 함수"를 작성하고 실행!
      • 이벤트가 발생할 때마다 코드가 실행되므로, "필요한 경우"에만 컴퓨팅 리소스를 사용함.
    • 다른 서비스와의 차이점
      • AWS Lambda는 서버 없이 코드 실행만을 위한 경우에 적합함
      • 애플리케이션 실행 환경을 구성하거나 관리할 필요가 없음.
      • 과금은 코드 실행에 사용한 컴퓨팅 리소스에 따라 달라짐.

이 세 가지 서비스는 사용자의 요구사항과 기술 수준에 따라 다르게 사용될 수 있습니다. EC2는 컨트롤과 유연성을 중시하는 고급 사용자에게, Lightsail은 초보 사용자와 간단한 프로젝트에, Lambda는 서버리스 컴퓨팅을 활용하고자 하는 경우에 각각 적합합니다.


RDS는 모든 종류의 데이터베이스를 사용할 수 있을까?

  • RDS "모든" 종류의 데이터베이스를 지원하는 것X

  • NoSQL = 비관계형 데이터베이스 는 다른 서비스에서 지원

  • NoSQL이란 데이터 조회나 조작시에 SQL언어를 사용하지 않고 전용언어나 API사용하는 데이터베이스를 말함

  • 현재 RDS는 다음과 같은 몇 가지 주요 관계형 데이터베이스 엔진을 지원하고 있음

    1. MySQL
    2. PostgreSQL
    3. MariaDB
    4. Oracle Database
    5. Microsoft SQL Server

    모든 종류의 데이터베이스를 지원하지 않는 이유는 각 데이터베이스 엔진마다 고유한 아키텍처와 특성을 가지기 때문

    예를 들어, 비관계형 데이터베이스인 MongoDB나 Cassandra는 NoSQL 데이터베이스로서 특정한 데이터 모델과 스토리지 엔진을 사용함

    따라서 AWS는 RDS 외에도 Amazon DocumentDB, Amazon DynamoDB, Amazon Keyspaces (for Apache Cassandra)와 같은 다른 서비스를 통해 NoSQL 데이터베이스를 제공하고 있음.

    이렇게 다양한 데이터베이스 엔진과 서비스를 통해 AWS는 다양한 데이터베이스 요구 사항을 충족시킬 수 있도록 하고 있음


대규모 사용자가 이용하는 웹 프로그램의 아키텍처를 설계할 때는 어떤 요소를 고려해야할까?

  • 사용자 수의 유동성
  • 대용량 데이터 관리
  • 보안
  • 성능(속도)

그럼 어떤 AWS서비스를 사용할 수 있을까?

  • 트래픽 관리 및 로드 밸런싱:
    • Amazon Route 53 (도메인 관리 및 DNS 서비스), Elastic Load Balancing (트래픽 분산)
    • 로드 밸런싱? : 서버에 들어오는 트래픽을 여러 대의 서버로 분산시켜 처리하는 기술
  • 확장성:
    • Amazon EC2 (가상 서버), Auto Scaling (자동 확장), Amazon RDS (관계형 데이터베이스)
  • 데이터 관리:
    • Amazon RDS (관계형 데이터베이스) 혹은 Amazon DynamoDB (NoSQL 데이터베이스), Amazon S3 (스토리지)
  • 보안 및 인증:
    • AWS Identity and Access Management (IAM), Amazon Cognito (사용자 인증 및 권한 부여)
  • 캐싱 및 성능 최적화:
    • Amazon CloudFront (콘텐츠 전송 네트워크)
  • 서버리스 아키텍처:
    • AWS Lambda (서버리스 컴퓨팅), Amazon API Gateway (API 관리)
  • 모니터링 및 로깅:
    • Amazon CloudWatch (모니터링 및 로깅), AWS X-Ray (분산된 애플리케이션 분석)
  • 보안 및 네트워킹:
    • Amazon VPC (가상 사설 클라우드 네트워크), AWS WAF (웹 애플리케이션 방화벽), AWS Shield (DDoS 보호)
  • 클라우드 리소스 관리:
    • AWS 서비스: AWS CloudFormation (인프라 코드 관리), AWS Elastic Beanstalk (애플리케이션 배포 및 관리)
  • 돈이 많이 필요하다는 이야기다...

AWS서비스를 이용해서 디스코드에 매일 12시마다 "점심시간입니다! 맛있는 점심 드시고 오세요!" 라는 알림이 뜨게하는 봇을 실행하게 하고 싶다면 어떻게 설계해야할까?

어떤 서비스를 이용할 수 있을까?

lambda, CloudWatch Events
를 사용하여 간단한 스케줄링 및 알림 시스템을 구축할 수 있음

함수를 생성해서 로그를 감시하면서 실행시킬 수 있도록 하면 됨

  1. Lambda 함수 생성:
    AWS Lambda를 사용하여 알림을 보내는 기능을 가진 함수를 작성함.
    함수는 디스코드 API나 훅 등을 사용하여 메시지를 전송하도록 구현.
  2. CloudWatch Events 규칙 설정:
    Amazon CloudWatch Events를 사용하여 매일 12시마다 Lambda 함수를 실행하도록 설정함.
    CloudWatch Events 콘솔에서 규칙을 생성하고 스케줄 표현식을 사용하여 매일 12시를 지정함.
  3. Lambda 함수와 CloudWatch Events 연결
    생성한 Lambda 함수와 CloudWatch Events 규칙을 연결하여 트리거링될 때마다 해당 함수가 실행되도록 설정.
  4. 테스트 / 실행
    생성한 봇을 다른 채널에 테스트하고 문제가 없다면 Lambda 함수와 CloudWatch Events 규칙을 배포하여 실제로 매일 12시마다 알림을 보낼 수 있도록 실행시킴

https://oliviakim.tistory.com/55


업데이트 방식에는 어떤게 있을까??

중단배포

  • 간편함....
  • 비용 감소....
  • 긴급하고 중대한 리스크요소 있을떄는 꼭 필요할 수 있음

무중단 배포

  • 롤링 배포
    • 인스턴스 복제하거나 하지 않고 한 서버씩 업데이트
    • 버전간 호환성 문제 있을 수 있음
    • Elastic Beanstalk with Rolling Updates
  • 블루그린배포
    • 같은 환경의 신버전을 미리 준비
    • 무중단 배포기법
    • 로드밸런서에 두 서버를 모두 연결해서 두개 그룹 모두 트래픽 처리할 수 있게 하고, 구 서버를 블루, 신 서버를 그린으로 설정해서 들어오는 트래픽을 그린으로 일제히 전환시킴. 그린버전이 배포 성공이 되면 블루 버전 서버는 제거(혹은 혹시나 모르니 유지)
    • 시스템 자원이 두배들고 돈도 들고
    • 스무스한 업데이트는 가능
    • AWS CodeDeploy with Blue/Green Deployment
  • 카나리 배포
    • 점진적으로 사용자가 많아지게끔 신버전 배포.
    • 약간 핸드폰 업데이트 같은 느낌
    • 문제가 없고 사용자가 완전히 넘어오면 신버전에 트래픽 늘리고 단계적으로 신버전을 최적화함
    • AWS Lambda with Alias and Traffic Shifting

업데이트가 필요합니다< 라는 알람이 떠서 업데이트 하지 않으면 사용이 불가한 어플리케이션의 경우는 중단배포 무중단배포?

  • 강제 업데이트 => 강제 업데이트는 사용자가 최신 버전으로 업데이트하지 않으면 서비스 사용을 중단하거나 제한하는 방식
  • 보안 패치와 같은 중요한 업데이트를 강제로 적용할 때 주로 사용
  • 사용자들이 업데이트를 완료하기 전까지는 현재 버전의 어플리케이션을 사용하지 못하게 하는 방식

profile
비전공 오르미부트캠프 2기

0개의 댓글