실제 서비스를 운영하려면
고객데이터 상품데이터 주문데이터 이런걸 다 저장해둬야하지 않겠습니까
엑셀이나 메모장에 저장해둬도 되긴 하는데 보통은 데이터베이스를 사용합니다.
그래야 대량의 데이터를 보관해둘 수도 있고 빠르게 원하는 데이터만 입출력할 수 있으니까요.
관계형 데이터베이스
데이터베이스는 여러 종류가 있습니다.
key : value 형태로 단순하게 저장하는 것도 있고
key : value를 여러개 묶어서 document 형태로 저장하는 데이터베이스도 있고
그래프나 벡터형식을 저장할 수 있는 데이터베이스도 있습니다.
근데 우리는 관계형 데이터베이스를 써볼겁니다.
역사와 전통이 있고 일반적으로 많이 쓰니까요.
(1) 관계형 데이터베이스는 표 형식으로 데이터를 저장해둡니다.
맨 윗줄에 어떤 데이터를 저장할지 미리 기록한 다음에 하나의 행마다 데이터를 기록합니다.
엑셀이랑 똑같음
(2) 데이터 입출력할 때 보통 SQL 이라는 언어를 써야 입출력이 가능합니다.
하지만 우리는 ORM이라고 부르는 라이브러리를 쓸건데 그거 쓰면 자바 문법으로 데이터 입출력이 가능해서 SQL부터 익힐 필요는 없습니다.
(3) 여러 DBMS 중에 하나 골라서 설치하면 데이터베이스 이용이 가능합니다.
한국에선 MySQL, Oracle, PostgreSQL 이런걸 자주 사용합니다.
서로 저장할 수 있는 데이터의 형식, 약간의 SQL 문법이 다를 수 있는데
근데 크게 다르진 않기 때문에 아무거나 써도 별로 상관없습니다.
우린 MySQL을 써보도록 합시다.
데이터베이스 호스팅받기
여러분 하드디스크에 직접 MySQL 설치해서 쓰거나
AWS 같은 클라우드 서비스가서 MySQL 호스팅을 받거나
둘 중 하나 고르면 됩니다.
근데 실제 서비스 운영할거면 당연히 클라우드 서비스에서 호스팅 받는게 안정적이고 좋을 것이니 그러도록 합시다.
AWS / Google Cloud / 마이크로소프트 Azure 이런것들이 있습니다.
대부분 카드등록하면 1년 무료 사용권을 주는데
AWS는 편하게 AWS RDS에서 데이터베이스호스팅 받으려면 요즘 IPv4 이용 명목으로 월 3달러 추가요금이 발생해서
우리는 Azure 써볼것이니 여기 들어가서 가입 후 카드등록까지 해옵시다.
(참고) Azure는 30일 경과 후엔 직접 종량제 요금제로 업그레이드버튼 눌러야 남은 11개월동안 무료로 이용이 가능합니다.
Supabase
Supabase 들어가면 카드등록 없이 PostgreSQL 무료 호스팅을 받을 수 있습니다.
500MB까지 저장이 가능한데 DB입출력이 7일동안 없으면 일시정지되는게 귀찮습니다.
어짜피 ORM 라이브러리 쓸 것이라 PostgreSQL 써도 큰 상관 없습니다.
DB만들고나서 설정 들어가서
DB접속용URL, DB접속용아이디, DB접속용비번만 잘 가져와두면 됩니다.
1. Azure 검색해서 들어가서 가입하고 카드등록까지 마칩니다.
portal.azure.com인데 마이크로소프트 계정으로 로그인해야합니다.
2. portal.azure.com 상단 검색창에서 'MySQL 유동서버' 검색 후 진입
그럼 만들기 버튼이 어딘가 있을텐데 눌러서 만들어봅시다.
3. 알아서 잘 채워줍니다.
- 구독/리소스 그룹은 비용관리용 폴더같은 것인데 대충 새로 만들어줍시다.
- 서버이름은 유니크하게 잘 작명하고 한국에서 서비스할거면 Korea 선택합시다.
4. 컴퓨팅/스토리지 선택하는 곳이 있을텐데
- 컴퓨터는 무료라고 써있는거 잘 선택하시고
- IOPS는 '미리 프로비전된 IOPS' + 최소사양을 선택해야 아마 추가요금이 없습니다.
360 저건 입출력을 1초에 360회로 제한한다는 뜻이라 나중에 유저 많아지면 '자동확장 IOPS' 이런거 쓰거나 조절해봅시다.
5. DB 접속용 아이디/비번도 만들어줍시다.
털리면 코딩인생 끝나는 것임
6. 다음 탭 눌러보면 접속가능한 IP주소도 설정할 수 있습니다.
- 안전하게 하려면 Azure 서버컴퓨터만 접속가능하게 '프라이빗 액세스' 이런걸 고르면 되겠지만
우리는 내 컴퓨터에서 접속해야하니까 '공용 액세스'를 고릅시다.
- 근데 다행히 특정 IP주소만 접속가능하게 보안장치를 하나 만들 수 있는데 여러분 IP주소 기입하면 됩니다.
어짜피 연습용이라 스타벅스에서 코딩할거면 모든 IP주소를 위 사진처럼 추가합니다.
그럼 나머지는 건드릴거 없을거고 데이터베이스 생성하면 됩니다. 대충 5~10분 걸림
7. 생성되었으면 마지막으로 설정할게 하나 있음
데이터베이스 생성되었으면 들어가보면 '서버 매개 변수' 설정할 수 있는 부분이 어딘가 있을텐데
들어가서 require_secure_transport를 OFF로 설정합시다.
어짜피 연습용인데 SSL 인증같은걸 잠깐 끄는 식입니다.
Database 생성 끝
AWS는요
AWS를 좋아한다면 AWS RDS 이런거 써도 되는데
올해부터 RDS 사용시 퍼블릭 액세스를 "예"로 설정하면 IPv4 사용요금 명목으로 월 3달러 정도 청구되는 것으로 바뀌어서
요금을 피하고 싶다면 AWS EC2 들어가서 인스턴스 하나 만들어서 같은 VPC그룹에 집어넣고 SSH 키파일도 가져온 다음에
SSH 터널링으로 내 컴퓨터 -> EC2 -> RDS DB 이런 식으로 접속하거나
아니면 EC2 인스턴스에 직접 MySQL 설치해서 써야합니다.
하지만 EC2에 설치하면 백업이나 모니터링 같은 것도 직접 해야하기 때문에 귀찮습니다.
DB 접속은
DB 접속해서 데이터를 미리보고 싶으면
DBeaver같은 프로그램 설치하는게 가장 쉽고 빠르고 좋습니다.
DBeaver 검색해서 설치하면 아마 상단에 데이터베이스 연결 버튼이 어딘가에 있을텐데 눌러봅시다.
Host 란에는 호스팅받은 데이터베이스 주소나 URL같은걸 Azure에서 가져와서 집어넣고
Username, Password 란에는 DB 접속용 아이디/비번 만든거 집어넣읍시다.
그리고 연결눌러보면 여러분 데이터베이스에 접속해서 데이터를 구경할 수 있습니다.
하지만 이런 프로그램으로 접속해서 뭐함 다음시간엔 서버 코드에서 접속하는 방법을 알아봅시다.