스프링 부트 시작(개발부터 빌드까지) - 8

PM/iOS Developer KimKU·2022년 9월 6일
0
post-thumbnail

8. AWS에 DB 환경 만들기 - AWS RDS

웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션 코드를 작성하는 것만큼 중요한 것이 DB를 다루는 일이다. 규모 있는 회사에서는 DB를 전문적으로 다루는 DBA라는 직군 담당자들이 있다. 해당 전문분야의 담당자가 있기에 상대적으로 개발자가 데이터베이스를 전문적으로 다룰 일이 적다.

다만 그건 대용량/대량의 데이터를 다루기 때문에 전문성이 필요한 것이지, 백엔드 개발자가 DB를 몰라도 된다를 의미하지는 않는다. 스타트업이나 개발 인원수가 적은 서비스에선 개발자가 DB를 다뤄야만 한다.
d

어느 정도의 DB 구축, 쿼리 튜닝에 대해서 기본적인 지식이 필요하다. 이번엔 DB를 구축하고 앞에서 만든 EC2 서버와 연동을 해보겠다. 다만, 직접 DB를 설치하지 않는다.

AWS에서는 앞에서 언급한 작업을 모두 지원하는 관리형 서비스인 RDS를 제공한다. RDS는 AWS에서 지원하는 클라우드 기반 관계형 DB이다. 하드웨어 프로비저닝, DB 설청, 패치 및 백업과 같이 잦은 운영 작업을 작업을 자동화하여 개발자가 개발에 집중할 수 잇게 지원하는 서비스이다. 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능한 장점도 있다.

이러한 RDS를 이용하여 본인만의 DB 환경을 구축해 보겠다.

8.1 RDS 인스턴스 생성

먼저 RDS 인스턴스를 생성하겠다. 다음과 같이 검색창에 rds를 입력해서 선택하고, RDS 대시보드에서 [데이터베이스 생성] 버튼을 클릭한다.

ㅇ

RDS 생성 과정이 진행된다. DB 엔진 선택 화면에서 MariaDB를 선택하도록 하겠다. 왜 MariaDB를 골라야 하는지 궁금증이 생길 수 있다. RDS에는 오라클, MSSQL, PostgreSQL 등이 있으며 당연히 본인이 가장 잘 사용하는 데이터베이스를 고르면 되지만, 꼭 다른 데이터베이스를 선택해야 할 이유가 있는 것이 아니라면 MySQL, MariaDB, PostgreSQL 중에 고르길 추천한다.

MariaDB에 대해 생소할 사람들이 있을 것 같아 잠깐 소개하고 넘어가겠다. 국내외를 가리지 않고 오픈소스 데이터베이스 중 가장 인기있는 제품을 고르라고 하면 MySQL을 꼽는다. 단순 쿼리 처리 기능이 어떤 제품보다 압도적이며 이미 오래 사용되어 왔기 때문에 성능과 신뢰성 등에서 꾸준히 개선되어 온 것도 장점이다.

ㄴㄴ
발전하던 MySQL이 201년에 썬마이크로시스템즈와 오라클리 합병되면서 많은 MySQL 개발자들은 썬마이크로시스템즈를 떠나며 본인만의 프로젝트를 진행하게 된다. 이 중 MySQL의 창시자인 몬티 와이드니어가 만든 프로젝트가 MariaDB이다.

MySQL을 기반으로 만들어졌기 때문에 쿼리를 비롯한 전반적인 사용법은 MySQL과 유사하니 사용 방법에 대해서는 크게 걱정하지 않아도 된다. 비슷한 사용법 외에도 MariaDB는 MySQL 대비 다음의 장점이 있다.

  • 동일 하드웨어 사양으로 MySQL보다 향상된 성능
  • 좀 더 활성화된 커뮤니티
  • 다양한 기능
  • 다양한 스토리지 엔진

MySQL을 써왔다면 이번 기회에 MariaDB를 선택해서 진행해 보길 추천한다.

그럼 MariaDB를 선택해서 다음으로 이동한다.
ㅇ
다음으로 넘어가면 사용 사례 항목이 나온다. 프리티어로 이용하려면 프리티어를 선택하애 하니 [프리티어] 를 선택한다.

화면을 아래로 내리면 DB 인스턴스와 마스터 사용자 정보를 등록할 수 있다.

본인만의 DB 인스턴스 이름과 사용자 정보를 등록한다. 여기서 사용된 사용자 정보로 실제 DB 접근하게 되니 어딘가 메모해 놓아도 좋다.

네트워크에선 퍼블릭 엑세스를 [예]로 변경한다. 이후 보안 그룹에서 지정된 IP만 접근하도록 막을 예정이다.

DB 옵션에서는 이름을 제외한 나머지를 그림과 동일하게 하면 된다. 파라미터 그룹의 변경을 이후에 진행할 예정이니 일단 기본값으로 둔다.
ㄴ

모든 설정이 끝나서 완료 버큰을 클릭하면 생성 과정이 진행된다. 데이터베이스가 다 생성되었다면 이제 본격적으로 설정을 해보겠다.

8.2 RDS 운영환경에 맞는 파라미터 설정하기

RDS를 처음 생성하면 몇 가지 설정을 필수로 해야한다. 우선 다음 3개의 설정을 차례로 진행해 보겠다.

  • 타임존
  • Character Set
  • Max Connection

왼쪽 카테고리에서 [파라미터 그룹] 탭을 클릭해서 이동한다.

세부 정보 위쪽에 DB 엔진을 선택하는 항목이 있다. 여기서 방금 생성한 Maria DB와 같은 버전을 맞춰야 한다. 앞과 같은 버전인 10.6을 선택해야 한다.

생성이 완료되면 파라미터 그룹 목록 창에 새로 생성된 그룹을 볼 수 있다. 해당 파라미터 그룹을 선택한다.
ㅇ

클릭해서 이동한 상세 페이지의 오른쪽 위를 보면 [파라미터 편집] 버튼이 있다. 해당 버튼을 클릭해 편집 모드로 전환한다.

편집 모드로 되었다면 이제 하나씩 설정값들을 변경해 보겠다. 먼저 time_zone을 검색해 [Asia/Seoul]을 선택한다.

d

다음으로 Character Set을 변경한다. Character Set은 항목이 많다.

아래 8개 학목 중 character 항목들은 모두 utf8mb4로, collaction 항목들은 utf8mb4_general_ci로 변경한다. uft8과 uft8mb4의 차이는 이모지 저장 가능 여부이다.

  • character_set_client
  • character_set_conttection
  • character_set_database
  • character_set_filesystem
  • character_set_result
  • character_set_server
  • collation_connection
  • collation_server

utf8은 이모지를 저장할 수 없지만, utf8mb4는 이모지를 저장할 수 있으르모 보편적으로 utf8mb4를 많이 사용한다.

마지막으로 Max Connection을 수정한다. RDS의 Max Connection은 인스턴스 사야엥 따라 자동으로 정해진다. 현재 프리티어 사양으로는 약 60개의 커넥션만 가능해서 좀 더 넉넉한 값으로 지정한다.

d

이후 RDS 사양을 높이게 된다면 기본값으로 다시 돌려놓으면 된다. 설정이 다 되었다면 오른쪽 위의 [변경 사항 저장] 버튼을 클릭해 최종 저장한다.

이렇게 생성된 파라미터 그룹을 데이터베이스에 연결하겠다.

옵션 항목에서 DB 파라미터 그룹은 default로 되어있다. DB 파라미터 그룹을 방금 생성한 신규 파라미터 그룹으로 변경한다.
ㅇ
저장을 누르면 다음과 같이 수정 사항이 요약된 것을 볼 수 있다. 여기서 반영 시점을 [즉시 적용]으로 한다.
ㄴ

예약된 다음 유지 시간으로 하면 지금 하지 않고, 새벽 시간대에 진행하게 된다. 이 수정사항이 반영되는 동안 데이터베이스가 작동하지 않을 수 있으므로 예약 시간을 걸어두라는 의미지만, 지금은 서비스가 오픈되지 않았기 때문에 즉시 적용한다. 그럼 '변경 중' 상태가 나온다.

8.3 내 PC에서 RDS에 접속

로컬 PC에서 RDS로 접근하기 위해서 RDS의 보안 그룹에 본인 PC의 IP를 추가하겠다. RDS의 세부정보 페이제에서 [보안 그룹] 항목을 클릭한다.

RDS의 보안 그룹 정보를 그대로 두고, 브라우저를 새로 열어 본다. 그래서 브라우저 다른 창에서는 보안 그룹 목록 중 EC2에 사용된 보안 그룹의 그룹 ID를 복사한다.

복사된 보안 그룹 ID와 본인의 IP를 RDS 보안 그룹의 인바운드로 추가한다.

인바운드 규칙 유형에서는 MYSQL/Aurora를 선택하면 자동으로 3306 포트가 선택된다.

  • 보안 그룹 첫 번째 줄: 현재 내 PC의 IP를 등록한다.
  • 보안 그룹 두 번째 줄: EC2의 보안 그룹을 추가한다.

RDS와 개인 PC, EC2 간의 연동 설정은 모두 되었다. 로컬에서 한번 테스트해 보겠다.

8.4 Database 플러그인 설치

로컬에서 원격 DB로 붙을 때 GUI 클라이언트를 많이 사용한다. MySQL의 대표적인 클라이언트로 Workbench, SQLyog(유료), Sequel Pro(맥 전용), DataGrip(유료) 등이 있다.

각각의 도구마다 큰 차이가 없으니 본인이 가장 좋아하는 틀을 사용하면 된다. 우리는 인텔리제이 Database 플러그인을 설치해서 진행하겠다.

RDS 정보 페이지에서 엔드 포인트를 확인한다. 이 엔트 포인트가 접근 가능한 URL 이므로 메모장 같은 곳에 복사해 둔다.

다시 인텔리제이로 이동해서 다음과 같이 database 플러그인을 검색한다. 검색 결과 중 Database Navigator을 설치한다.

a
설치가 다 되었으면 인텔리제이를 재시작을 한 뒤 Action 검색으로 Database Browser

그럼 프러젝트 왼쪽 사이드바에 DB Browser가 노출된다. DB Browser 탭 바로 하단에는 기존에 노출되던 프로젝트 항목들이다. 다시 자바 코드를 볼 때는 해당 탭을 클릭하면 된다.

다음 그림과 같이 차례로 버튼을 클릭해서 MySQL 접속 정보를 열어 본다. MariaDB는 MySQL 기반이므로 MySQL을 사용하면 된다.
ㄴ
본인이 생성한 RDS의 정보를 차례로 등록한다.

마스터 계정명과 비밀번호를 등록한 뒤, 화면 아래 [Test Connection]을 클릭해 연결 테스트를 해본다.

s

Connection Successful 메시지를 보았다면 [Apply->OK] 버튼을 차례로 눌러 최종 저장한다.

그럼 다음과 같이 인텔리제이에 RDS의 스키마가 노출된다. 위쪽에 있는 [Open SQL Console] 버튼을 클릭하고 [New SQL Console..] 항목을 선택해서 SQL을 실행할 콘솔창을 열어보겠다.

8.5 EC2에서 RDS에서 접근 확인

전에 진행한 대로 EC2에 ssh 접속을 진행한다.

접속되었다면 MySQL 접근 테스트를 위해 MySQL CLI를 설치하겠다.

sudo yum install mysql

설치가 다 되었으면 로컬에 접속하듯이 계정, 비밀번호, 호스트 주소를 사용해 RDS에 접속한다.

mysql -u 계정 - p -h Host주소

패스워드를 입력하라는 메시지가 나오면 패스워드까지 입력한다. 다음과 같이 EC2에서 RDS로 접속되는 것을 확인할 수 있다.
s

profile
With passion and honesty

0개의 댓글