Q. AWS RDS를 활용하는 주요 이점과 EC2에 직접 데이터베이스를 설치하여 운영하는 것과 비교했을 때의 차별점에 대해 설명해주세요. 그리고 RDS를 사용하는 것이 적합하지 않을 수 있는 상황도 함께 언급해주세요.
✅ AWS RDS란?
- AWS에서 제공하는 관계형 데이터베이스를 손쉽게 관리할 수 있도록 지원하는 서비스이다.
- MySQL, PostgreSQL, Oracle, SQL Server 등 다양한 데이터베이스 엔진을 지원하며, 설정, 운영, 확장 등 복잡한 작업을 자동화하여 사용자 편의성을 높여준다.
👍 RDS 활용시의 이점
- 운영 부담 감소 :
서버 설치, 패치, 정기 백업 등 복잡한 관리 작업을 AWS가 자동으로 처리한다.
- 간편한 백업과 복구 :
몇 번의 클릭만으로 자동 백업을 설정할 수 있으며, 특정 시점으로 복구도 가능하다.
- 뛰어난 고가용성 및 안정성 :
Multi-AZ(다중 가용 영역) 구성을 통해 장애 발생 시 예비 인스턴스로 자동 전환되어 서비스 중단을 최소화 할 수 있다.
- 유연한 성능 확장 :
트래픽 증가나 데이터량 증가에 따라 스토리지 용량을 늘리거나, 읽기 전용 복제본을 추가하는 등 손쉽게 확장할 수 있다.
- 강화된 보안 설정 :
VPC(Virtual Private Cloud) 내에 DB를 배치하거나, IAM(Identity and Access Management)을 활용해 접근 권한을 제어하는 등 보안 설정을 쉽게 강화할 수 있다.
🆚 EC2에 직접 DB를 설치하는 경우과의 차이점
| 항목 | RDS 사용 | EC2에 DB 직접 설치 |
|---|
| 설치 및 설정 | AWS에서 자동으로 처리 | 사용자가 직접 설치 및 설정 필요 |
| 유지보수 | 자동 백업, 복구, 패치 지원 | 모두 수동으로 처리 |
| 장애 대응 | 자동 페일오버 지원 (Multi-AZ) | 수동 복구 또는 별도 이중화 구성 필요 |
| 보안 설정 | IAM, VPC등으로 손쉽게 설정 | 직접 구성해야 함 (복잡한 설정) |
| 시스템 제어 범위 | 제한적 (커널 파라미터 등은 변경 불가) | 전체 시스템 제어 가능 |
| 비용 | 라이센스 및 관리 비용 포함 | 사용한 EC2, 스토리지 자원에 대한 비용만 발생 |
⚠️ RDS가 적합하지 않은 상황
-
세밀한 시스템 설정이 필요한 경우 :
RDS는 일부 시스템 설정(ex. 커널 파라미터, OS 세팅 등)이 제한되므로, 설정을 최적화해야 하는 특수한 경우에는 적합하지 않을 수 있다.
-
소규모 프로젝트나 간단한 테스트 환경 :
RDS는 최소 스펙이 정해져 있어, 소규모 프로젝트나 테스트 환경에는 과한 선택일 수 있다. 이럴 때는 EC2에 직접 설치하거나 로컬 환경을 활용하는 것이 더 효율적이다.
Q. GitHub Actions 워크플로우에서 사용할 수 있는 다양한 트리거(Trigger) 유형을 설명하고, 각 트리거 유형이 적합한 CI/CD 시나리오에 대해 설명하세요.
✅ GitHub Actions란?
- GitHub 저장소 내에서 코드 빌드, 테스트, 배포 등의 작업을 자동화 할 수 있는 CI/CD 플랫폼이다.
- 각 작업은
workflow라는 단위로 정의하며, 이는 특정 이벤트(Trigger)가 발생했을 때 실행된다.
📌 다양한 Trigger 유형과 활용 시나리오
push : 특정 브랜치에 새로운 커밋이 푸시될 때 실행
- 활용 시나리오 :
main 브랜치에 코드가 푸시될 때마다 자동으로 단위 테스트 실행
on:
push:
branches: [ main ]
pull_request : Pull Request(PR)가 생성되거나 커밋으로 업데이트 될 때 실행
- 활용 시나리오 : PR 병합 전에 통합 테스트나 코드 스타일 검사를 자동으로 수행하여 코드 안정성을 검증
on:
pull_request:
branches: [ main ]
schedule : 정해진 시간마다 주기적으로 실행 (cron 표현식 사용)
- 활용 시나리오 : 매일 자정에 데이터를 백업하거나, 로그를 정리
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch : GitHub 웹 UI에서 사용자가 수동으로 실행
- 활용 시나리오 : 운영자가 직접 배포 버튼을 눌러 실행할 경우
on:
workflow_dispatch:
release : GitHub Release가 생성, 수정, 삭제될 때 실행
- 활용 시나리오 : 릴리스 생성 시 배포 파이프라인 자동 실행 또는 릴리스 노트 생성
on:
release:
types: [created]
📄 참고 문서
믿고보는 지현님 정리~~ 잘읽었습니다! 따봉~