이번 강의에서는
SpringBoard 웹 애플리케이션에서 사용할 수 있는
데이터베이스를 구축해 봅시다
데이터베이스를 구축하면
유저 정보를 데이터베이스 내부에
생성하고 저장할 수 있어
생산 단계 웹 애플리케이션에 한 단계 가까워지게 됩니다
데이터베이스를 구축할 때
선택지는 여러 개입니다
첫 번째는 우리의 시스템에
MySQL 서버를 설치하여
웹 애플리케이션에서 활용하는 겁니다
하지만 이 방법은 단점이 두 가지 있습니다
하나는 메모리와 시스템 처리 시간을
아주 많이 잡아먹어
노트북의 작동이 느려진다는 겁니다
다른 하나는 만약 노트북이나
운영 체제를 잃거나 데이터가 손상된다면
데이터베이스 내부에 있던
데이터와 실행했던 스크립트가
모두 사라져 버린다는 것입니다
그래서 이 접근은 추천드리지 않습니다
그 위험을 감수하고
로컬 시스템에 MySQL을 사용하겠다 하시면
말리지는 않겠습니다
우리에게 있는 두 번째 선택지는
데이터베이스를 클라우드에 두는 것입니다
클라우드에 작은 데이터베이스를 두면
다양한 장점이 있습니다
관리만 정기적으로 한다면
그 데이터베이스는
완전히 잃을 가능성이 0입니다
동시에 로컬 시스템의
저장 공간이나 처리 능력을 잡아먹지 않습니다
하지만 클라우드에 데이터베이스를 두고자 한다면 당연히도
비용이 들 것입니다
그러므로 생각해 보고 선택하십시오
다만 AWS와 같은 클라우드 제공자에
처음 가입하신다면
1년 정도 무료 체험을 제공할 겁니다
그 무료 체험을 이용해
연습에 사용할
데이터베이스를 클라우드에 구축해 볼 수 있습니다
그러므로 만약 AWS 계정이 없으시다면
이메일과 신용카드를 가지고
새로 가입하는 것을 추천드립니다
그러면 최대 1년의 무료 체험을 받을 수 있습니다
체험 기간 동안에는 계정에
돈을 내지 않고 데이터베이스를 둘 수 있습니다
이 강좌에서 저는 AWS 클라우드에
데이터베이스를 구축하여 사용할 겁니다
어느 쪽을 사용할 건지는 여러분에게 달렸습니다
또한 나중에 클라우드에
MySQL 서버를 무료로 얻을 수 있는 방법도 보여드릴 겁니다
AWS에 데이터베이스를 구축한 다음 보여드리겠습니다
우선 AWS 내부에 데이터베이스를 구축하기 위해서는
aws.amazon.com으로 가야 합니다
기존 계정이 없으시다면
가입하셔서
개인정보와 신용카드를 입력하시는 걸 추천합니다
신규 유저라면
1년 무료 체험을 받을 수 있습니다
그리고 무료 체험 기간 동안에는
모든 데이터베이스
서버, EC2 인스턴스, S3 버킷에 접근하여
충분히 연습할 수 있습니다
저는 이미 계정이 있기 때문에
Sign in to the Console을 클릭하겠습니다
로그인을 하고 나서
여러분의 콘솔은 이렇게 생기지는 않았을 겁니다
Services를 클릭해서
RDS를 찾으면 됩니다
RDS는 관계형 데이터베이스 서비스(Relational Database Service)를 뜻합니다
혹시 못 찾으시겠다면
검색 창에 RDS를 입력해서
나오는 RDS를 클릭하셔도 됩니다
그리고 RDS 관련 페이지가 로드되었으면
Create database 선택지를 클릭합니다
이 Create database 페이지 내부에서는
Easy create를 클릭하겠습니다
Configuration에서는 데이터베이스를
MySQL로 설정하고 DB Instance size는
지금 생산이나 개발을 위해
데이터베이스를 만들지는 않을 것이므로
Free tier를 선택하겠습니다
이 무료 티어를 선택하면
받는 데이터베이스는 아주 작아
저장할 수 있는 데이터의 양도 적고
처리 속도도 느릴 겁니다
하지만 연습을 할 때나
Spring Security 강좌에서는 이 정도로 충분합니다
그러므로 지금은 Free trial을 선택하도록 해 주십시오
이렇게 하지 않으면 비용이 엄청나게 많이 들며
이 무료 데이터베이스를 사용하더라도
신규 사용자가 아니고
1년 이상 서비스를 사용했다면 역시 비용이 들기 때문입니다
그러므로 꼭 Free tier를 선택하도록 해 주십시오
DB instance identifier는
springsecurity를 입력하겠습니다
이 식별자는 아무거나 입력해도 됩니다
그 다음으로 해야 하는 일은
MySQL 서버의 자격 증명을 입력하는 겁니다
Master username은 일단 admin으로 두고
비밀번호는
mysqlspringsecurity로 하겠습니다
비밀번호 확인도 입력해 줍니다
이 정보들을 정의하였으면
이제 Create database를 클릭해 줍니다
데이터베이스 생성은
3, 4분 정도 걸릴 수 있습니다
저는 데이터베이스가 하나 더 있는데
spring이라고 되어 있으며 다른 강의에 사용하는 DB입니다
지금은 작동이 정지되어 있습니다
제가 방금 생성한 데이터베이스인
springsecurity는 아직 생성 중입니다
몇 분 더 기다려야겠습니다
기다리는 동안
클라우드에서 무료로 MySQL 서버를 구축할 수 있는
다른 방법을 소개드리겠습니다
제가 언급했던 다른 선택지는
이 freemysqlhosting.net라는 사이트입니다
이 사이트에 대한 중요한 정보는
이 강좌의 GitHub 페이지에 언급해 두었습니다
이 페이지에서 아래로 스크롤하면
Important Links가 있습니다
이게 Free MySQL DB 사이트의 링크입니다
여기서는 요금이나 카드 정보를 요구하지 않습니다
그냥 계정을 생성한 다음
작은 MySQL 데이터베이스를 선택할 수 있습니다
데이터베이스를 생성하였다면
자격 증명은 그 데이터베이스 호스트명을 사용하여
자동으로 생성되어
여러분의 이메일로 전송될 겁니다
그러므로 이 사이트의 생성 과정을 따르기만 하면 됩니다
하지만 이 사이트에 대하여
주의하셔야 할 점 두 가지가 있습니다
첫 번째는 이 사이트가
무료로 얼마나 오랫동안 유지될 수 있을지
알 수 없다는 점입니다
그래서 이를 공식적으로
공유하거나 추천할 수는 없습니다
어느 날 사라져서 사용할 수 없게 될지도 모르기 때문입니다
하지만 AWS는 절대 없어지지 않을 겁니다
AWS는 50년이나 100년이 지나도
계속 유지될 겁니다
그래서 이 점은 반드시 말씀드리고 넘어가야겠습니다
그리고 이 웹사이트에 관해
두 번째로 언급드려야 할 점은
사이트에서는 일주일마다 이메일을 보내서
무료 MySQL 서버를 실제로 사용하고 있는지 물을 겁니다
그래서 매주 여기서 여러분에게 보낸 이메일에
있는 링크를 클릭해서
서버를 아직도 사용하고 있다고 확인을 해 주어야 합니다
그래야만 매주 여러분의 MySQL 서버가
사용 가능해집니다
어떤 이유로든
이 확인을 하지 않으면
여러분의 MySQL 서버는 영구적으로 삭제될 겁니다
이 사이트의 관리자들이
이런 조건을 만든 이유는
누군가 계정과 MySQL 서버를
생성해 놓고는 사용하지 않고 둔다면
서버 공간이 엄청나게 낭비되기 때문일 겁니다
그래서 실제로 이용하고 있는 사용자들에게만
무료 MySQL 호스팅을 제공하는 겁니다
그래서 이 사이트를 이용하신다면
매주 서버를 사용한다는 것을 확인해 주셔야 합니다
그것 외에 이 사이트에 문제점은 없습니다
이를 숙지하셨다면 이용하셔도 문제 없습니다
저는 이 강좌에서 AWS를 사용하겠습니다
저는 AWS를 좋아하고
작은 데이터베이스의 요금은 문제 없이 낼 수 있기 때문입니다
제 데이터베이스는 아직도 생성 중입니다
몇 분 더 기다리겠습니다
5분 더 기다렸더니 데이터베이스가 완성되었습니다
Status 항목도 초록색으로 Available로 떴습니다
이걸로 데이터베이스를 코딩에 활용할 수 있게
된 걸까요? 아닙니다
왜냐하면 제가 사용 중인 AWS는
세상에서 가장 많이 사용되는 클라우드 제공자이기 때문입니다
기본적으로 AWS 내부에서 생성하는
모든 리소스는
공개된 트래픽에 노출되지 않습니다
그러므로 추가적인 설정을 더 해야 합니다
그러기 위해 여기 있는
원을 클릭하여 선택한 다음
Modify 버튼을 클릭합니다
이 Modify DB instance 페이지 내부에서
아래로 스크롤하면
Additional configuration이라는 탭이 있습니다
이걸 클릭하겠습니다
여기를 보시면
기본값은 Not publicly accessible입니다
이를 Publicly accessible로 변경합니다
이렇게 설정함으로써 제 데이터베이스는
바깥의 공개 트래픽에서 접근이 가능하게 됩니다
이걸로 준비는 다 됐습니다
변경 사항을 저장하겠습니다
Continue를 클릭하고
Apply immediately를 선택합니다
이렇게 하지 않으면
다음 정기 점검 때 변경 사항이 적용되는데
이 서버는 실사용하지 않을 것이므로
꼭 점검 때 적용하지 않아도 괜찮기 때문입니다
Modify DB instance를 클릭하겠습니다
이걸로 제 springsecurity 데이터베이스는
공개 접근으로 변경되었습니다
마지막으로 설정해야 할 사항이 있습니다
springsecurity 베이스를 클릭하고
아래로 스크롤하면
다양한 정보가 나와 있습니다
호스트명은 무엇이고
포트와 아이디, 비밀번호는 무엇인지 같은 정보입니다
데이터베이스를 생성할 때
입력했던 것과 같을 겁니다
여기서 마지막으로 해야 할 설정으로
이 데이터베이스와 연관된
VPC security groups를 열어야 합니다
이게 바로 이 데이터베이스에 연결된 보안 그룹입니다
그룹을 클릭하겠습니다
AWS 내부의 Security Groups 설정은
데이터베이스 서버를 거치는 아웃바운드와
인바운드 트래픽을 관리할 수 있도록 해 줍니다
기본값으로 데이터베이스로부터
외부로 모든 트래픽이 나갈 수 있게 되어 있습니다
여기를 보면
IPv4의 모든 트래픽은 외부로 나갈 수 있습니다
어떤 프로토콜, 포트 범위든 간에
destination이 0.0.0.0으로 되어 있으면
모든 IP 주소에 대해 아웃바운드가 허용되어 있습니다
우리가 관심을 가져야 할 쪽은 인바운드입니다
우리의 코드가 이 서버와 소통하여야 하기 때문입니다
이 데이터베이스 서버를 향해
웹 애플리케이션에서 들어오는 정보는 인바운드가 됩니다
그러므로 이 Inbound rules를 클릭해 주십시오
여기에 Spring 강좌에 사용하는
다른 데이터베이스를 위해
설정했던 규칙이 이미 있습니다
이 데이터베이스에도
같은 인바운드 규칙을 적용할 겁니다
하지만 여러분의 경우에는
데이터베이스를 처음으로 생성하신 것이라면
설정된 인바운드 규칙이 없을 겁니다
Edit inbound rules를 클릭하셔야 합니다
그러면 인바운드 규칙을 정의할 수 있는
페이지가 표시됩니다
이미 규칙이 없다면 Add rule을 클릭합니다
저의 경우에는 MySQL 서버와 Aurora 서버에 대해
이미 규칙을 추가해 두었습니다
프로토콜은 TCP이며 포트와 소스는 이렇게 설정했습니다
IP는 전부 0으로만 되어 있습니다
이러면 모든 유형의 트래픽을 허용한 것입니다
이 두 개를 삭제하고
새로 설정하는 방법을 보여드리겠습니다
Source 드롭다운에서
IPv6를 선택합니다
우리의 웹에는 두 가지 IP가 있습니다
하나는 IPv4, 다른 하나는 IPv6입니다
처음 규칙에서는 IPv6을 선택하였습니다
그러면 이런 포맷이 표시됩니다
두 번째 규칙에서는 Anywhere-IPv4
즉 IPv4 포맷이면 어디든 허용한다는 뜻입니다
이 선택지를 고르면 여기 보이듯이
0.0.0.0/0으로 IP 주소가 표시되는데
모든 종류의 IP가 허용된다는 뜻입니다
이 두 설정을 완료했다면
데이터베이스에 대해
모든 종류의 인바운드 트래픽이 허용됩니다
설정을 저장합니다
제 경우에는 원래 설정도 이와 같았기 때문에
변경사항이 없다고 표시되고 있습니다
하지만 여러분은 이 인바운드 규칙 설정을
꼭 하시고 저장하시기 바랍니다
이걸로 우리는 성공적으로 데이터베이스를
AWS 클라우드 내부에 생성하였으며 DB가 작동 중입니다
하지만 서버를 이용하지 않을 때에는
반드시 정지시키도록 해 주십시오
왜냐하면 계속 작동 중으로 둔다면
요금도 증가하기 때문입니다
그러므로 데이터베이스를 사용하지 않을 때에는
이렇게 Stop temporarily를 선택하면 됩니다
그리고 이렇게 일시정지를 할 때마다
데이터베이스는 일주일 동안 정지됩니다
일주일이 지나면 데이터베이스가 자동으로
재시동되는데 이는 AWS가 일주일마다
데이터베이스를 자동으로 백업하기 때문입니다
그러므로 정기적으로 데이터베이스를
모니터링하고 일시정지하도록 유의해 주십시오
만약 무료 체험 중이 아닌데
그렇게 하지 않으셨다면
아주 충격적인 AWS 비용을 청구받으실 겁니다
그리고 제 추천은 Spring Security를 배우시는 동안에만
데이터베이스를 사용하는 것입니다
Spring Security에 대해 충분히 배우셨다면
이 데이터베이스는 Delete를 눌러서
영구 삭제해 주십시오
그리고 아까 다루었던 다른 선택지들도 남아 있습니다
Free MySQL Hosting 사이트도 있으며
여러분의 시스템 내부에
로컬 MySQL 데이터베이스를 구축할 수도 있습니다
어느 방법을 사용할 지는 여러분의 선택에 달려 있습니다
다만 이 강좌에서 저는
AWS 데이터베이스를 사용하겠습니다
이번 강의 가 잘 이해 되셨길 바랍니다
감사드리며 다음 강의에서 뵙겠습니다
수고하셨습니다