티스토리 뷰
AWS RDS를 활용하는 주요 이점과 EC2에 직접 데이터베이스를 설치하여 운영하는 것과 비교했을 때의 차별점에 대해 설명해주세요. 그리고 RDS를 사용하는 것이 적합하지 않을 수 있는 상황도 함께 언급해주세요.
AWS RDS(Relational Database Service)
aws에서 이미 완성된 상태로 사용만 하면 되는 상태로 대여함
약간의 비유 : 풀옵션 오피스텔(모든게 배치되어 있지만, 커스텀하기 힘듦)
EC2(Elastic Compute Cloud)
os만 설치되어 있는 상태로 대여함
약간의 비유 : 빈 상가(내가 공사를 해야하지만, 자유도가 높음)
RDS를 사용했을 때의 주요 이점
1. 관리 자동화
- OS, DB 엔진, 보안 패치 설치 등 번거로운 작업들을 간단하게 해결 가능
2. 자동 백업 및 복구
- 특정 시점으로 데이터를 되돌리는 기능이 기본적으로 제공됨
3. 고가용성 및 비용 최적화
- db 서버가 갑자기 멈춰도, aws가 즉시 예비 서버로 교체해줌
- 필요한 만큼만 리소스를 사용하고, 사용량에 따른 자동 스케일링 기능 제공
4. 쉬운 확장성
- 데이터가 많아지면 간단하게 사양을 높힐수 있음
aws RDS와 ec2 직접설치의 비교
| 구분 | AWS RDS(완전 관리형) | EC2 직접설치(자가 설치형) |
| 개념 | DB전용 완제품을 대여 | 빈 컴퓨터를 빌려 직접 설치 |
| 관리책임 | AWS가 책임짐 | 사용자가 책임짐(직접 관리) |
| 제어권 | OS접근 불가, 제한적 | OS,커널 설정 가능, 자유로움 |
| 백업/복구 | 자동화(시점 복원) | 수동(직접 백업 스크립트 작성) |
| 설치 속도 | 매우빠름 | 느림(OS설정부터 직접 수행) |
| 확장성 | 간단하게 사양변경 및 복제 가능 | 복잡합 |
| 비용 | 상대적 높음 | 상대적 낮음(순수 서버 대여비) |
RDS가 적합하지 않은 상황
1. OS 레벨의 접근이 필요한 경우
2. RDS가 지원하지 않는 DB엔진/버전을 사용하는 경우
- RDS는 PostgreSQL MySQL MariaDB Aurora Oracle MSSQL IBM Db2를 지원함
3. 비용 절감이 중요한 경우
GitHub Actions 워크플로우에서 사용할 수 있는 다양한 트리거(Trigger) 유형을 설명하고, 각 트리거 유형이 적합한 CI/CD 시나리오에 대해 설명하세요.
Github Actions
Github에서 제공하는 자동화 서비스
개발자가 코드를 수정하고 서버에 올리는 과정에서 발생하는 반복적인 일들(테스트, 빌드, 배포)을 사람이 직접 하지 않고 GitHub의 컴퓨터가 대신 하도록 시키는 도구
워크플로우
GitHub Actions에 어떤 순서로 일을 할지 상세하게 적어준 설계도
- 프로젝트의 .github/workflows/ 폴더 안에 .yml 파일로 저장
- 자바 설치 -> 테스트 실행 -> 배포 같은 단계별 작업들이 담겨 있음
트리거
작성된 워크플로우를 언제 시작할지 결정하는 이벤트를 의미
조건을 만족하면 워크플로우를 수행
요약
GitHub Actions : 자동화 서비스를 제공하는 '공장'
Workflow : 공장에서 돌아가는 '공정 설계도' (.yml 파일)
Trigger : 공정을 가동하는 '시작 스위치'
트리거의 유형
이벤트형 트리거 (Event-based)
push, pull_request
수동형 트리거 (Manual)
workflow_dispatch
시간형 트리거 (Scheduled)
schedule
연동형 트리거 (Webhook/External)
workflow_run
각 트리거 유형이 적합한 CI/CD 시나리오
| 구분 | 트리거 키워드 ( on: ) | 실행 시점 | 적합한 CI/CD 시나리오 |
| 이벤트 기반 | push | 코드를 저장소에 올릴 때 즉시 | 지속적 통합(CI): 코드 변경 시마다 빌드 및 단위 테스트 자동 수행 |
| 이벤트 기반 | pull_request | PR을 생성, 업데이트하거나 합치려 할 때 | 협업 검증: 메인 브랜치에 합치기 전 코드 리뷰 및 안정성 최종 점검 |
| 수동 실행 | workflow_dispatch | 사용자가 GitHub UI에서 버튼을 직접 클릭할 때 | 선택적 배포(CD): 특정 시점에 수동으로 운영 서버 배포, 긴급 패치, 관리 도구 실행 |
| 시간 예약 | schedule | 정해진 시간(Cron 표현식)이 되었을 때 | 정기 유지보수: 매일 새벽 DB 백업, 주간 보안 취약점 스캔, 리포트 생성 |
| 워크플로우 연동 | workflow_run | 다른 특정 워크플로우가 완료되었을 때 | 파이프라인 체인: 빌드 워크플로우 성공 후 배포 워크플로우를 이어서 실행 |
| 외부 연동 | repository_dispatch | GitHub 외부 서비스에서 API 신호를 보낼 때 | 외부 이벤트 반응: CMS 콘텐츠 업데이트 시 정적 사이트 재생성 트리거 |
