Section 3 - 66일차

노태경·2021년 7월 7일
0

SEB-Section 3

목록 보기
22/31

1. Toy - 39일차

  • 균등한 분배
    우선 제한된 인원 내에서의 경우의 수를 구해서 최소값을 찾아보려함

2. 배포 / AWS

  • 클라우드 컴퓨팅
    기존 서버증설을 위해 더 많은 컴퓨터를 이용하는 경우
    주기적인 관리가 필요하며, 공간의 한계가 있음
    이러한 문제의 해결을 위해 데이터 센터가 등장하고, 유휴 자원을 대여하는 서비스가 등장
    클라우드 컴퓨팅은 이러한 데이터 센터와 비슷하지만, 가상 컴퓨터를 대여한다는 점
    필요할 때마다 컴퓨팅 능력을 유연하게 조절
    사용한 만큼만 요금을 지불
    컴퓨터의 스냅샷을 통해 다른 컴퓨터로 즉시 이주(migration)가능
    단점으로는 클라우드 서비스 제공자에 종속되어 서비스에 영향을 미친다

  • SaaS, PaaS, IaaS
    Saas(Software as a Service) 클라우드 제공자가 당장 사용가능한 소프트웨어를 제공하는 경우
    PaaS(Platform as a Service) 데이터베이스, 개발 플랫폼까지 제공하는 경우
    IaaS(Infrastructrue as a Service) 가상 컴퓨터까지 제공하는 경우 << AWS

  • Deploy 배포
    기본적인 배포의 4가지 단계
    Development - Intergration - Staging - Production
    Development 개발 단계
    각자 코드를 작성하고 테스트하는 과정
    더미 데이터를 이용해 테스트
    Intergration
    각자 컴퓨터에서 작성한 코드를 합치는 과정
    코드간 충돌이 있는지 확인하는 과정이 필요
    Staging
    실제 출시단계와 가장 유사한 환경에서 테스트
    실제 데이터를 복사해 문제를 확인
    또 서비스와 관련된 부서, 인원에게 확인 과정을 거치게 됨
    Production
    사용자가 접속할 수 있는 환경에서 코드를 구동하고 서비스를 제공
    실제 서비스 단계이므로, 문제가 생기면 안됨!

  • Development, Production 환경은 사람마다 제각기 다를 수 있다
    환경 설정을 코드와 분리하는 것이 중요
    절대경로 대신 상대경로
    환경에 따라 포트를 분기할 수 있도록 환경변수 설정
    Docker와 같은 개발 환경 자체를 통일시키는 솔루션

  • AWS - EC2 (Elastic Compute Cloud)
    가상 컴퓨터 한 대를 빌리는 것
    사용한 만큼 비용 지불 => 탄력적(Elastic) 비용, 성능, 용량
    구성에 필요한 시간이 짧다
    필요한 용도에 따라 운영체제, 성능 선택 가능(AMI)
    가상컴퓨터 한 대 = 인스턴스
    AMI(Amazon Machine Image)
    소프트웨어 구성이 기재된 템플릿
    사용용도에 맞게 운영체제, 런타임 등 setting을 선택할 수 있음
    필요에 따라 직접 구성도 가능

  • AWS - RDS(Relational Database Service)
    AWS가 제공하는 관계형 데이터베이스
    MySQL과 같은 엔진을 설치해서 사용하는 것이 아닌 RDS를 사용하는 이유?
    직접 엔진을 설치해 사용하면 사용자가 직접 관리해야할 부분이 많다, 버전관리, 설치, 백업 등.. 또 저장된 데이터가 유실되거나 정상적으로 사용하지 못할 확률이 커지며, 규모 확장이 어렵다
    RDS를 사용하며 위와 같은 부분을 자동으로 관리해준다. 초기 설정 이외에 사용자가 관여할 일이 적다
    또 다양한 데이터베이스 엔진 선택지를 제공

  • AWS - S3(Simple Storage Service)
    AWS가 제공하는 클라우드 스토리지
    뛰어난 접근성
    높은 확장성
    용량 확장에 제한이 없음, 사용한 만큼 비용 지불
    강력한 내구성 >> 데이터가 유실될 확률이 매우 적다
    높은 가용성
    목적에 따른 다양한 스토리지 클래스 제공
    ex) Standard 클래스, Glacier 클래스
    Standard 클래스는 범용 목적, 빠른 접근 속도, 높은 보관 비용 >> 오래 보관하기엔 부적절
    Glacier 클래스 보관 비용 저렴 >> 오래 보관, 느린 액세스 속도
    정적 웹 호스팅이 가능
    정적 웹 호스팅이란?
    정적 파일 >> 서버의 개입없이 생성된 파일
    S3는 버킷을 제공해 정적 웹 호스팅 제공
    버킷에 정적 파일을 업로드하고, 정적 웹 호스팅 용도로 구성하면 정적 웹 호스팅이 가능하다
    버킷이란?
    파일을 저장하는 최상위 디렉토리
    버킷은 리전에서 유일한 이름을 가져야 함
    버킷 정책을 통해 접근 권한 설정가능
    버킷에 담기는 파일은 키-값 페어 형식 >> 객체라 부름
    객체는 파일(객체)과 메타데이터로 구성
    파일의 값에 저장될 수 있는 데이터 최대크기는 5TB
    파일의 키는 객체를 고유하게 만들어주는 식별자
    메타데이터는 생성일, 크기, 유형 등 정보가 담긴 데이터
    모든 객체는 고유한 URL 주소를 가짐
    http://[버킷의 이름].S3.amazonaws.com/[객체의 키]의 형태

  • 각 지역마다 가용 영역의 개수가 있다
    가용 영역은 각 지역의 데이터 센터의 개수이며, 각 데이터 센터는 문제가 생기면 가용 영역 내의 백업 데이터를 사용하므로, 높은 가용성과 내구성을 보장하는 것

  • 배포 전략
    클라이언트 배포 >> S3 사용, 클라이언트 앱을 정적 파일로 빌드하여 제공
    AWS CDN 서비스인 CloudFront를 사용하면 더 빠른 서비스 제공이 가능
    CloudFront는 각 지역의 데이터센터에 데이터를 분산시켜 저장, 가까운 지역에서 데이터를 제공
    서버 배포 >> EC2 사용, RDS 사용
    Route 53 서비스는 도메인을 통한 서비스 제공을 가능하게 함

  • Security Group
    인스턴스로 들어오고 나가는 트래픽에 대한 가상 방화벽
    들어오는 것(인바운드), 나가는것(아웃바운드)에 대한 규칙 설정

  • PM2
    & 키워드로 백그라운드 실행
    fg 와 PID 로 실행중인 프로그램을 포어그라운드로 부르거나 종료
    위 명령어 대신
    pm2 start 파일로 PM2를 활용 가능
    stop
    restart
    ls
    log

3. Sprint

ssh로 EC2에 접속해서 서버 환경을 구축한 뒤 서버를 실행
터미널을 꺼도 서버가 실행이 되기 위해서는 백그라운드 실행이 되어야 함 >> PM2

review

  1. 기획
  2. 설계 (스키마, 프로토타입)
  3. 배포 << 배포를 먼저하면 편함
profile
개발자 공부 일기😉

0개의 댓글