개요
현재 사이드 프로젝트로 만들고 있는 중인 API가 Azure에서 SQL Server 서버를 생성하여 웹서버와 연동하고 있습니다. 물론 5월까지 매달 돈이 빠져나갔고, 언젠가(?)부터 무료로 DB를 생성할 수 있게 지원되는 것 같아서 바로 바꿨습니다.
바꾸기 이전까지는 거의 99% SQL Server의 유지 비용이고, 처음 프로젝트를 만들 시에는 Azure에서 무료 DB 인스턴스를 제공하지 않았었습니다. 초기 1개월 동안 제한된 크레딧을 제공하는 게 다였죠. 나중에 찾아보니 MS문서에 2024.03.06에 작성된 Try Azure SQL Database for free (preview) 이라는 제목의 문서가 있었습니다.
요약하자면 AWS의 Free Tier 서비스처럼 Azure도 무료로 사용 가능한 서비스를 제공하는 내용이었습니다.
달마다 100,000 vCore 초의 컴퓨팅을 제공하고 32GB용량의 스토리지를 제공합니다. 여기서 해당 달에 제공하는 무료 컴퓨팅을 전부 소진할 경우, 다음 달까지 DB접근이 제한되거나 추가 사용량에 대한 과금을 부과하게 설정할 수도 있습니다.
이번 포스팅에서는 Azure에서 SQL Server를 무료로 생성하는 방법을 포스팅 해보겠습니다.
구독 및 리소스 그룹 생성하기
이 글을 보시는 분들은 Azure 환경에 친화적일 수도, 아닐 수도 있습니다.
Azure 환경이 처음이라는 가정 하에 구독/리소스 그룹에 대해 설명하겠습니다.
구독 및 리소스 그룹 생성은 Azure를 사용하기 위한 기본 절차입니다.
해당 부분에 대해 알고 계시다면 다음 과정으로 넘어가시면 됩니다.
Azure에서는 구독과 리소스그룹 단위를 만들어서 관리할 수 있습니다.
아래는 구독과 리소스 그룹을 설명하는 예시입니다.
Azure 구독 관련 예시
가전제품 쇼핑몰 서비스와 관련된 A, B, C 프로젝트 서버와 또 다른 별도의 투자 서비스를 제공하는 D, E, F, G 서버가 존재한다고 가정합시다. 관리자는 가전제품 쇼핑몰 서비스의 요금과 투자 서비스의 요금을 별도로 청구하고 관리하고 싶어 합니다. 이 경우, [A, B, C] 서버를 하나의 구독 단위로, [D, E, F, G] 서버를 또 다른 하나의 구독 단위로 관리하면, 두 서비스의 클라우드 요금을 독립적으로 분석하고 청구할 수 있습니다. 이렇게 하면 각 구독에 대한 비용을 명확하게 구분하여 관리할 수 있습니다.
Azure 리소스그룹 관련 예시
위의 예시에 이어서 관리자는 웹 애플리케이션과 DB를 따로 관리하고 싶어졌습니다.
가전제품 쇼핑몰 서비스에서는 [A, B] 서버를 웹 애플리케이션 리소스 그룹으로 묶고, [C] 서버를 데이터베이스 리소스 그룹으로 관리할 수 있습니다.
투자 서비스에서는 [D, E] 서버를 애플리케이션 리소스 그룹으로 묶고, 데이터베이스 인프라를 별도로 분석하고 관리하기 위해 [F, G] 서버를 데이터베이스 리소스 그룹으로 묶을 수 있습니다.
이와 같이 리소스 그룹을 활용하여 각 서비스 내에서 리소스를 논리적으로 그룹화하여 관리하고 분석할 수 있습니다.
위의 예시를 참고하여 개인 프로젝트에 적합한 구독 단위와 리소스 그룹 단위를 생성할 수 있습니다.
대부분의 Azure 인스턴스는 위와 같이 구독과 리소스 그룹을 설정해야 합니다.
따라서, DB를 만들기 전에 해당 작업이 우선시됩니다.
SQL Server 생성하기
SQL Database를 생성하기 전에, SQL Server를 생성해야 합니다.
SQL Server는 데이터베이스 서버의 개념이고 SQL Database는 데이터베이스 서버 내 존재하는 개별 데이터베이스 입니다.
위 이미지는 Azure에서 생성한 SQL Server에 접속한 모습입니다.
빨간 색은 SQL Server, 초록색은 SQL Database입니다.
블로그 주인장은 이미 SQL Server를 구성해둔 상태라 자세하게 보여드릴 수는 없지만, 몇 가지 중요한 사항을 적어보겠습니다.
서버 도메인
위 이미지와 같이 {서버명}.database.windows.net 형식의 서버 URL을 제공합니다.
이는 앞으로 SSMS나 백엔드 서버에서 통신하기 위한 DB주소로 활용됩니다.
서버 위치
서버 위치는 Korea Central과 Korea South가 존재합니다.
두 서버 위치의 차이는 Central이 서울지역, South가 부산 지역에 물리 서버가 위치하고 있습니다.
그 외 네트워크 및 여러 설정을 마치면 SQL Server를 생성할 수 있습니다.
SQL Database 생성하기
https://portal.azure.com/#create/Microsoft.SQLDatabase
Azure 포탈에 로그인 후, 위 링크를 접속하면 데이터베이스 생성 페이지에 접속하실 수 있습니다.
기본 설정
무료 서비스 제안 수락하기
위 이미지에서 오른쪽 비용요약 창을 확인해보면 예상 비용이 약 5.65달러에 추가 컴퓨팅 비용이 있는 것으로 볼 수 있습니다. 무료 요금제를 사용하기 위해 연보라색 배경으로 되어있는 UI영역에 [Apply offer (Preview)]를 클릭하겠습니다.
[Apply offer (Preview)]를 클릭하게 되면 위와 같이 예상 비용이 0.00 USD로 바뀌게 됩니다.
그 외 프로젝트 세부 정보
구독 및 리소스 그룹
구독과 리소스 그룹은 맨 처음 만들어준 구독과 리소스 그룹을 선택합니다.
초기에 설정한 구독과 리소스 그룹은 서버 인스턴스를 생성한 후에도 다른 구독 그룹과 리소스 그룹으로 옮길 수 있습니다.
데이터베이스 이름
데이터베이스 이름은 위 이미지에서 초록색 부분(개별 데이터베이스)의 이름을 설정합니다.
서버
여기서 서버는 데이터베이스 서버를 의미합니다. 위 과정 중, SQL Server 생성 후 나온 서버를 선택합니다.
네트워킹
개인의 요구사항에 맞는 네트워크 설정을 구성합니다.
보안을 위해 특정 IP주소만 접근 가능하도록 설정하는 것을 추천합니다.
가정에서는 IP가 유동으로 자주 바뀌지만, 바뀔 때마다 SSMS에서 엑세스할 때 현재 IP를 방화벽 규칙에 추가할 것인지 선택하는 UI가 나옵니다. 그때마다 새로운 규칙을 추가해주고 기존 규칙을 삭제하면 됩니다.
예시로 SSMS에서 해당 SQL Server에 접속할 때, 가정용 네트워크의 IP가 바뀌었다면 자동으로 브라우저와 연동하여 바로 추가할 수 있게 처리해줍니다.
검토 + 만들기
모든 설정을 완료하고 검토 + 만들기 버튼을 클릭하면 데이터베이스가 생성됩니다.
평균적으로 배포까지 1~3분 정도 걸리는 것 같습니다.
기다리다 보면 배포가 완료됨으로 바뀌게 됩니다.
리소스로 이동 클릭 시, 해당 리소스 대시보드로 이동하게 됩니다.
주의사항
Azure에서 Database를 만들지 않고, SSMS에서 Database를 생성할 시, 아래 스팩으로 만들어지는 것 같습니다.
저는 위와 같은 실수를 저질러서 약 3일 만에 3만5천원 정도? 과금이 된 경험이 있습니다.
그런 경우 Azure 내에서 해당 리소스 관련해서 문의드리면 환불이 가능합니다.
문의를 드린 다음, MS 측에서 환불 관련 정보를 고지할 의무?가 있어서 이메일이나 유선으로 해당 사항에 대해 고지받고 환불 절차를 밟아야 합니다.
저는 이메일 확인을 잘 안 하다가 직접 유선으로 전화까지 해주셨습니다..
그때 처리해주신 담당자님께 이 기회를 통해 죄송하다는 말씀을 전해드리고 싶네요..
혹시 이번 포스팅 관련하여 궁금한 사항이 있으시다면 댓글 부탁드리겠습니다.
참고자료
Try for free (preview) - Azure SQL Database | Microsoft Learn