💁♂️ 들어가기 전
이번엔 AWS에서 제공해주는 RDS를 사용해볼거에요. RDS는 관계형 데이터베이스(RDB)를 관리하는 서비스에요. DB 관련해서는 모든 할 수 있죠. CI/CD 파이프라인 구축이 끝나더라도 어차피 웹 서비스에서는 RDB를 사용하게 되어있어요. 이왕 이렇게 된거 AWS에서 제공해주는 RDS도 같이 배워보면 좋을 것 같아서 포스팅해봅니다. 어차피 실제 운영할 때도 모두 사용하긴해요. 다만 Docker를 사용한다면 RDS가 필요없을 수도 있어요. 도커 컴포즈 이용해서 해결하면되니까. 하지만 Docker를 사용하지 않고 Elastic Beanstalk를 사용해서 CI/CD를 구축했다? 그럼 반드시 필요합니다.
📋 DB 만들기 전
AWS에서 DB를 만들기 위해서는 사전 설정이 필요해요.
RDS를 만들기 위해서는 VPC에 'DNS 호스트 이름 활성화'를 체크해줘야해요. 그런 의미에서 VPC에 설정 편집으로 돌아가주세요.
다른건 건들지 마시고 'DNS 호스트 이름 활성화'만 체크해줍니다. 이거 없으면 RDS 만들지 못해요!!
🍒 DB 생성 방법
1) 서브넷 그룹 생성
DB를 생성하기 전에 반드시 서브넷 그룹이 필요해요. 우리가 저번 시간에 VPC에서 만들었던 서브넷 있죠? 그 서브넷들을 그룹화 시킨다고 이해하면 돼요.
이제 본격적으로 시작을 해볼게요. VPC에는 우리가 만들었던 VPC를 넣어줄게요. 이 의미는 뭐냐. DB가 만들어질 VPC를 의미해요.
이거는 dev 그니까 개발용 DB를 만들려고 하기 때문에 서브넷은 무조건 퍼블릭으로 선택해주세요. 개발용인데 굳이 프라이빗으로 보안을 강화할 필요까지는 없다고 생각해요. 다만 운영용에서는 프라이빗으로 보안을 신경써야 합니다. 그러고 '생성' 버튼 누르면 바로 생성이됩니다.
자, 이번에는 빠르게 운영용 서브넷을 만들어 볼게요.
운영용 서브넷도 개발용 서브넷과 별 다른 점은 없어요.
다만 서브넷이 퍼블릭이냐 프라이빗이냐가 좀 다른데 운영용은 반드시 무조건!! 프라이빗 서브넷으로 선택해주세요. 운영용은 보안을 강화할 필요성이 있기 때문에 개발용과는 좀 다릅니다.
그럼 일단 DB 생성을 위한 서브넷 그룹은 생성이 됐어요. 이제 진짜 DB를 만들면 됩니다.
2) RDB 생성
2-1. 개발용 DB 생성
DB 유형은 자신의 프로젝트에 맞게 선택하시면 됩니다.
템플릿은 반드시 프리티어로 설정해주세요. 비용을 좀 많이내도 된다고 하면 뭐 상관없어요. 대신 프리티어도 돈 나갑니다...
마스터 사용자 이름과 암호를 설정해주세요. 암호는 대충 적지마시고 뭐 root, admin 이런식으로 적으면 해커한테 털릴 수도 있어요.
DB 인스턴스는 다른거 다 필요 없고 micro로 선택해주세요. 다른거 돈 나갑니다.
추가 스토리지 구성에서 '스토리지 자동 조정 활성화'는 기본값은 체크되었으니까 해제해주세요. 해제 안해주시면 돈 나가요.
이 부분이 제일 중요한 부분입니다! VPC는 직접 만든 VPC로 선택해주시고 DB 서브넷 그룹은 지금 dev용이니까 퍼블릭 서브넷만 모여있는 dev 서브넷을 선택해주세요. 제가 이 부분 때문에 먼저 서브넷 그룹을 만들어준거에요. 퍼블릭 액세스는 '예'로 선택해주세요. 퍼블릭으로 접근은 해야하니까.
보안 그룹은 만들어둔 보안 그룹으로 선택하시면 됩니다.
추가 구성으로 가서 자동 백업을 해제해주세요. 활성화 해주시면 돈 나갑니다.
2-2 운영용 DB 생성
별 다를건 없고 연결 부분만 보면 됩니다. 그 부분만 달라요.
DB 서브넷 그룹은 운영용 서브넷으로 선택해주시고 퍼블릭 액세스는 '아니요'를 선택해주세요. 외부에서 접근하면 안되니까.
그리고 서브넷 그룹은 아까 만들었던 프라이빗으로 선언된 서브넷만 모아둔 그룹을 선택해주세요.
생성을 누르면 5분안에 생성이 됩니다. 조금 기다리시면 됩니다!
💊 생성된 DB 접속해보기
우선 개발용 DB부터 접속해도록 하겠습니다. 엔드포인트를 복사해주시고 Intellij IDEA로 가서 DB 접속해볼게요.
연결 테스트 해보면 성공된걸 알 수 있죠? DB를 퍼블릭 인스턴스에 넣어서 그런거에요!ㅎㅎ
이번엔 운영용 DB에 접속 시도해볼게요.
위 사진은 프라이빗 DB 엔드포인트를 붙여넣기한 사진입니다. 예, 뭐 보시는거와 같이 접속이 안됩니다. 이건 정상입니다. 왜냐하면 프라이빗 서브넷 그룹에 DB를 넣었기도 했고, DB 만들 때 퍼블릭 액세스를 꺼줬기 때문입니다!
이를 해결하기 위해서는 Bastion Host 또는 SSM으로 해결할 수도 있어요.
🍎 Bastion Host 만들기
배스천 호스트는 실제 보안 용어입니다. 이에 대해서는 따로 공부 해보시길 추천합니다.
Bastion Host를 만들기 위해선 EC2를 만들어야 합니다. EC2로 가서 인스턴스 생성을 클릭해줍니다.
OS는 저랑 익숙한 우분투(Ubuntu)를 선택해줄게요. 다른 거 쓰시면 다른 OS 유형을 선택하세요.
인스턴스 유형은 돈 많이 나가기 싫으면 micro로 선택해주시고 키 페어도 넣어주세요. 없으면 만드시면 됩니다. VPC는 우리가 만들었던 VPC로 선택해주시고 서브넷은 퍼블릭 서브넷 중 하나를 선택해 넣어주세요.
퍼블릭 IP 자동 할당은 활성화해주세요. 우리는 EC2에 탄력적 IP를 사용하지 않을 것이기 때문에 꼭 활성화해주세요.
그러고 생성하면 위와 같이 뜰겁니다. 그럼 일단 Bastion Host 서버라는 것은 다 만들었어요.
퍼블릭 IP 주소를 복사하고 Intellij IDEA로 가서 DB 연결 테스트를 해봅시다.
SSH/SSL이라는 항목이 있는데 클릭해주시면 위와 같이 나옵니다.
Host는 아까 복사한 퍼블릭 IP 주소를 붙여넣고, Username은 Ubuntu로 해주고 EC2를 위한 키 페어를 선택해줍니다. 하다보면 자연스럽게 알게될거에요.
그러고 연결 테스트 눌러서 확인해보면 정상적으로 DB에 연결이 된것을 볼 수가 있어요. SSH를 이용한 방식이 바로 Bastion Host이에요! (굳굳)
모르겠는 부분이나 헷갈리는 부분 있으면 댓글로 편하게 남겨주세요. 친절히 답변드릴께요!! 😊
'🐳 DevOps' 카테고리의 다른 글
[인프라] Elastic Beanstalk에 도메인 + Https 적용하기 (0) | 2025.04.29 |
---|---|
[CI/CD] CI/CD 파이프라인 구축 (0) | 2025.04.27 |
[인프라] EB(Elastic Beanstalk) 개념 및 생성 실습 (실습 위주) (2) | 2025.04.26 |
[인프라] AWS IAM(Identity and Access Management)이란? (0) | 2025.04.25 |
[인프라] AWS VPC 생성 실습 (0) | 2025.04.23 |