본문 바로가기
Cloud/AWS

AWS (10/27)

by 황밤 2023. 10. 27.
728x90
반응형

React Project Git Hub 과 S3 를 이용한 무중단 배포

  • Front End Application 별로 별도의 버킷을 갖는 것이 좋고 File Server 의 역할을 수행할 버킷도 별도로 갖는 것이 좋습니다.
  • React 프로젝트 (Front End 프로젝트는 동일 - React 나 Vue 와 같은 프레임워크로 만든 경우는 build 명령을 수행을 해야 하고 bootstrap이나 직접 HTML을 작성한 경우는 build 할 필요가 없음)

 

1. React 프로젝트 생성

2023.10.25 - [Cloud/AWS] - Storage Service

 

Storage Service

1. AWS 백업 1.1) 백업의 형태 온프레미스 환경의 데이터를 AWS 백업 AWS에 구축한 시스템을 백업 1.2) 백업의 개요 사내 시스템은 온프레미스 환경에 위치하고 기업의 사이트는 AWS 환경에 위치 용량

dxdata.tistory.com


 

2. Front End Application을 배포하기 위한 S3 버킷 생성

 

2.1) 버킷 생성

 

2.2) 외부에서 접근이 가능하도록 설정

  • 퍼블릭 엑세스 차단을 해제(버킷을 생성할 때 가능)
  • 권한을 부여 - 이 설정을 하지 않으면 외부에서 업로드나 다운로드가 안됨, 만들고 난 후 [권한] - [버킷 정책] 을 수정
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicListGet",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:List*",
                "s3:Get*",
                "s3:Put*",
                "s3:Delete*"
            ],
            "Resource": [
                "arn:aws:s3:::itbambucket",
                "arn:aws:s3:::itbambucket/*"
            ]
        }
    ]
}

정적 웹 호스팅에서 외부에 ajax 요청을 할 때는 그 쪽 버킷에 CORS 설정이 되어 있어야 합니다.

 

 

2.3) HTTP 서비스가 가능하도록 설정 - HTTP End Point 가 부여

 

 


3. Git Hub 작업

 

3.1) git hub action 작업

  • repository 에서 직접 action을 생성해서 작성
  • 프로젝트에서 .github/workflows 디렉토리에 yaml 파일을 생성

 

  • S3에 배포하기 위해서 필요한 정보
IAM 의 access key : A*************    와 access secret key : CpX3Bl****************

S3 의 region : ap-northeast-2
bucket 의 name : itbam~~~

 

3.2) 코드를 원격 레포지토리에 push

git init
git add .
git commit -m "~~~"
git remote add orgin https://github.com/svng-zu/web_making.git
git push origin main

 

 

3.3) yaml 파일 생성

name : CI/CD AWS S3

on :
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 코드 체크아웃
        uses: actions/checout@v3

      - name: AWS IAM 사용자 설정
        uses: aws-actions/configure-aws-credentials@v2
        with:
          aws-access-key-id: AK
          aws-secret-access-key: CpX
          aws-region: ap-northeast-2
      - name: 리액트 빌드
        run: |
          npm install
          npm run build
      - name: S3 에 업로드
        run: aws s3 sync build/ s3://itbambucket -- acl public-read
        env:
          AWS_ACCESS_KEY_ID: AK
          AWS_SECRET_ACCESS_KEY: Cp

 

3.4) push 수행

git add .

git commit -m "메세지"

git push origin main

 

 

3.5) 버킷 확인

 

3.6) 버킷의 End Point 로 브라우저에서 접속

 

3.7) 소스 코드를 수정하고 push 한 후 변경 내용이 자동으로 적용되는지 확인

 

3.8) 작업을 완료한 후 Cloud Front 를 이용한 CDN 설정이나 다른 도메인으로 연결하고 https 적용 등이 개발자가 더 해 볼 수 있는 옵션입니다.

 


Cloud Watch

 

1. 개요

  • 리소스와 애플리케이션을 실시간으로 모니터링 하는 서비스

1.1) 로그

  • 애플리케이션의 리소스의 로그를 그룹 단위로 기록
  • CSV 로 다운로드 할 수 있고 S3에 저장도 가능

1.2) 지표

  • 그래프 형태로 출력

1.3) 대시보드

  • 여러 지표를 하나의 화면에 출력

1.4) 종류

  • 기본 모니터링 : 5분마다 체크
  • 상세 모니터링 : 1분마다 체크

1.5) 사용 사례

  • 서버 과부하 문제 해결
  • 비용 절감 효과 - 사용자에게 알림을 주도록 해서 직접 scailing을 수행

 

2. EC2 에서 실제 작업을 수행했을 때 모니터링

 

2.1) SSH로 EC2 인스턴스 접속

 

2.2) 컴퓨터에 용량이 큰 파일을 다운로드

  • https://www.jetbrains.com/datagrip/download/ 에서 다운로드

2.3) EC2 서버에 파일을 전송

  • mac : sudo scp -i ppk 경로 전송할 실제 파일 경로 유저@접속할서버경로:저장될파일경로
  • Windows : pscp -i ppk 경로 전송할 실제 파일 경로 유저@접속할서버경로:저장될파일경로

 


 

3. EC2 인스턴스에서 CPU 사용량이 70%가 넘으면 이메일로 알림 주기

 

3.1) 토픽 주제 선정 - 구독 서비스 생성

  • SNS 관리 콘솔로 접속

 

  • 주제를 눌러서 새 주제 생성을 클릭한 후 작성
  • 주제를 만들고 나면 주제 안에서 구독을 생성
    • End point 로 설정된 메일에서 구독을 확인

 

 

3.2) Cloud Watch 에서 경보 설정

  • 경보 아래의 모든 경보를 선택하고 경보 생성을 클릭
  • 지표에서 원하는 지표를 선택
  • 조건을 선택
  • 알림 설정에서 앞에서 만든 주제를 선택

3.3) EC2 인스턴스에 스트레스 가하기

  • sudo apt-get update
  • sudo apt install stress

코어수 확인 : grep -c processor /proc/cpuinfo

 

스트레스 부여 : stress -c 2


Lambda

 

1. Serverless

1.1) 개요

  • 특정 작업을 수행하기 위해서 서버 프로그래밍을 별도로 할 필요가 없다라는 의미입니다.
  • BaaS(Backend as a Service)와 FaaS (Function as a Service) 로 구분
  • BaaS: Google 의 Firebase 와 Kinvey - 특정 기능을 수행해주는 서버가 구현되어 있어서 거의 코딩 하지 않고 서비스 사용이 가능
  • FaaS: AWS의 Lambda, Azure Functions, Google Cloud Functions - 이벤트는 결정되어 있으나, 실제 코딩은 직접 수행해야 함.

 

1.2) 기존 시스템 설계

  • 자체적 시스템 설계 - On Premise
  • IaaS - EC2
  • PaaS - AWS 의 Elastic Beanstalk, Azure 의 App Services

 

1.3) 최근에 등장한 설계 방법

  • BaaS 
    • 자주 사용하는 서버의 기능들을 API 형태로 사용할 수 있도록 합니다.
    • 장점 :
      • 개발 시간의 단축
      • 서버 확장 작업의 불필요 - Auto Scailing
    • 단점 :
      • 클라이언트 위주의 코드
      • 가격 (비쌈)
      • 복잡한 쿼리가 불가능
  • FaaS
    • 개발자가 서버를 관리할 필요없이 이벤트에 대응하여 어플리케이션을 실행하도록 지원하는 추상화 기능을 제공
    • 이벤트 기반 실행 모델을 통해서 On-Demand 로 미터링하는 것이 일반적임.
    • 서버로서의 플랫폼처럼 서버 프로세스를 백그라운드에서 계속 실행할 필요가 없음
    • 현대적인 PaaS 솔루션은 개발자가 어플리케이션을 배포하는데 사용할 수 있는 일반적인 워크플로우의 일부로 서버리스 기능을 제공하기 때문에 PaaS 와 FaaS 의 경계가 모호해짐. 
    • 실제 애플리케이션은 기능, 마이크로 서비스, 크론 잡, 지속 실행 서비스 등이 모두 혼합된 형태
    • 장점 :
      • 개발자 생산성 향상
      • 개발 시간 단축
      • 서버 관리의 부담이 없음
      • 손쉬운 확장 및 플랫폼에서 관리하는 수평적 스케일링
      • 실제 사용한 만큼만 리소스 비용을 지불
      • 최근에는 거의 모든 언어를 지원

 

1.4) 사용사례

  • 데이터 전처리를 수행해서 다른 곳에 저장
    • 데이터를 수집할 때 일반적인 데이터와 그렇지 않은 데이터를 같이 수집하는 경우 람다를 이용해서 데이터의 전처리를 수행해서 저장
    • 수집하는 동안은 전처리하는 로직이 실행되어 있을 필요가 없음
    • 수집과 전처리 모델을 생성하는 부분을 하나의 어플리케이션으로 만드는 것은 자원의 낭비
    • 수집 어플리케이션 : 수집이 끝나면 전처리 어플리케이션에게 메세지를 보내거나 실행
    • 전처리 어플리케이션 : 
    • 모델 생성
    • 모델 서비스

 

 

 

 

 

 

 

 

 

반응형
LIST

'Cloud > AWS' 카테고리의 다른 글

Storage Service  (0) 2023.10.25