AWS DevOps 강의 7장

minyeob·2023년 4월 22일
0

aws

목록 보기
13/18
post-thumbnail
post-custom-banner

1. AWS DevOps

시작 전 준비사항

  1. 엘라스틱 빈스톡 환경 종료

    1. 삭제하다 만난 에러..(보안그룹 의존성 때문?)
    2. https://jojoldu.tistory.com/479 참고 Beanstalk에서 사용하고 있는 Security Group을 Beanstalk 환경에서 수정 하지 않고, 직접 Security Group 서비스에서 수정
      한적이 있다면 발생하게 된다고 한다.
    3. cloudFormation → 스택 삭제 → 엘라스틱 빈스톡 삭제
    4. 오류 해결!
  2. 엘라스틱빈스톡 애플리케이션 종료

  3. RDS 종료

  4. EC2 혹시나 켜져있는 것이 있다면 종료

  5. 탄력적IP 있다면 삭제

  6. 종료

  7. Elastic Block Store 삭제

  8. 보안그룹 default 만 남기고 삭제

  9. 리전 서울로 맞추기


V5 전체 구성 알아보기

동작

순서

  1. project 생성
  2. 로컬에서 GitHub 로 배포
  3. GitHub에서 변경감지하여 CI 서버로 CD(자동 배포)
  4. CI 서버 에서 테스트,빌드 후에 실행 파일을 생성하여 AWS 로 CD(자동 배포)
    1. CI 서버는 AWS 환경(OS) 과 동일해야 한다
    2. CI 서버에서 AWS로 기존에는 로그인해서 직접 접근했지만 CI 서버는 못하니 Access Key를 가지고 있어야 한다 이것이 → IAM 개념
  5. AWS에서 실행

CI/CD 란?

CI : 지속적 통합

CD : 지속적 배포

Local 에서 GitHub에 코드를 올리고 바로 AWS에 배포하는 것은 위험하다. 그렇기 때문에 테스트 및 검증 빌드를 해주는 서버(CI)를 하나 두고 그 다음에 AWS 에 배포를 해야한다.

CI 기법에는 여러가지가 있다.

  • 폴링 : request 요청을 10초에 한번, 5초에 한번 이렇게 지속적으로 보내서 GitHub에 코드가 push 되면 그것을 다운받아 테스트를 진행한다. 예시 : travis
  • Web hook : 깃허브에서 Webhook 을 설정하고 코드를 push 하면 서버로 hook을 날려주고 서버는 코드를 다운받아 테스트,검증 및 빌드를 진행한다 예 : Jenkins

추가적으로 Githubaction을 사용하면 서드파티(Jenkins, travis) 를 사용할 필요 없이 Github만으로 CI/CD를 진행할 수 있다.

CD

서버에서 빌드를 마치면 생성된 Jar 파일을 aws 에 자동으로 배포해준다.


IAM (Identity Access Manager)

사용자 - 직원

정책 - 권한의 모임

그룹 - 직원의 모임 (정책을 부열받음)

역할 - 서비스에 부여 하는 권한 (사용자 x)


RDS 생성

  1. 보안 그룹 생성

시큐리티 그룹 : sg-aws-v5

VPC : vpc-07522b959b6f9b266

인바운드 규칙

  • 22(SSH), 80(HTTP), 3306(DB) 포트 추가
  • 참고) 3306포트는 내 IP만 일단 만든 후 시큐리티 그룹을 만든 후 시큐리티 그룹 추가해줘야 함
  1. 데이터베이스 생성

HeidiSQL 연결

CREATE DATABASE metadb;

USE metadb;

CREATE TABLE Book(
	id BIGINT AUTO_INCREMENT PRIMARY KEY,
	title VARCHAR(255),
	content VARCHAR(255),
	author VARCHAR(255)
);

SHOW VARIABLES LIKE 'c%';

ALTER DATABASE metadb CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_general_ci';

SELECT * FROM Book;

DROP TABLE Book;

SELECT @time_zone, NOW();

RDS time_zone 세팅

zone 검색 → time_zone 체크 후 파라미터 편집 → Asia/Seoul 선택

RDS 추가구성 수정후에 즉시적용 해주기

RDS 재부팅 해주기(time_zone 적용 안되서)

RDS 추가구성 수정후에 즉시적용 해주기


엘라스틱 빈스톡 생성

추가옵션 구성 클릭→ 사용자 지정 구성 → 소프트웨어

hostname = RDS 엔드포인트 값

사용자 지정 구성 → 용량

Auto Scaling

EC2가 여러대가 있으면 클라이언트는 어떤 EC2에 접근해야 할지 모르므로 앞에 로드밸런서를

배치해준다.클라이언트는 로드밸런서로만 접근이 가능하며 만약 로드밸런서에서 요청이 많아져 최소로 설정해준 EC2 서버 2대가 바빠지게 되면 로드밸런서가 자동으로 4대 까지 EC2 를 늘려서 요청을 처리해주고 다시 요청이 적어지면 최소 인스턴스인 2대로 돌아와서 요청을 처리한다.

로드 밸런서

외부에서 클라이언트가 80포트로 요청하면 리스너가 작동해서 로드밸런서에서 라우팅을 하게 된다. 그리고 라우팅을 보낼때 / 로 요청을 하게 되는데 예를들면 naver.com:80/ 같은 곳에 요청을 해서 서버가 정상적으로 돌고 있는지 확인하게 된다.

well known port

  • 22(SSH),
  • 80 포트(HTTP 통신) ,
  • 443 (HTTPS)

배포 방식 변경 불가능으로 설정

키페어 설정


롤링이란?

롤링은 배포 전략 중 무중단 배포에 대한 것이다.

(무중단 배포는 배포 진행시 서비스를 중단시키지 않고 배포를 적용 하는 것이다)

  1. 한번에 모두

기존에 연결되어있던 인스턴스를 모두 중단시키고 배포하는 것.

  1. 추가 배치 (무중단 배치)

새로운 인스턴스를 생성하고 그곳에 배포를 한뒤에 로드 밸런서가 기존 인스턴스와의 연결을 끊고 새로 배포된 인스턴스와 연결한다

단점 : 롤백을 하기 어렵다

  1. 블루/그린 배포 (변경 불가능 배포)

기존 인스턴스를 블루라고 가정하면 새로 배포를 진행할때 그린 인스턴스가 만들어지고 그린 배포가 정상 완료 되면 로드밸런서가 한순간에 그린 인스턴스로 연결시킨다.

장점: 그린 인스턴스에서 에러가 뜨면 연결하지 않으면 되기때문에 롤백도 간편해진다

단점: 자원 소모가 심하다

profile
백엔드 개발자를 꿈꾸며 공부한 내용을 기록하고 있습니다.
post-custom-banner

0개의 댓글