네이버 클라우드에서 PostgreSQL 서버 설정 feat. VPC와 IP 주소

정혜인·2024년 11월 15일

클라우드

목록 보기
3/15

🤔 네이버 클라우드에서 PostgreSQL 서버 설정: VPC와 IP 주소의 이해

이번 프로젝트를 통해 네이버 클라우드 플랫폼(NCP)을 처음 사용해보았는데, PostgreSQL 서버를 구축하려고 하던 중 네트워크 관련 설정에서 어려움을 겪었습니다.

특히 저는 네트워크 관련한 VPC와 IP 주소 범위 설정에서 막혀서 이를 제대로 이해하고 설정하기 위해 추가 학습이 필요하다고 생각하여 이번 포스팅에서는 제가 겪었던 어려움과 이를 해결하기 위해 학습한 내용을 작성해보려 합니다.

🤔 네이버 클라우드에서 PostgreSQL 서버를 만들려면?

프로젝트를 진행하면서 데이터베이스로 PostgreSQL을 사용하기로 결정했고, 네이버 클라우드 플랫폼을 통해 서버를 구축하려 했습니다. (크레딧이 있었기 때문에,,ㅎ 최대한 네이버 클라우드 플랫폼을 이용하고 싶었습니다)

다만 저는 백엔드를 잘 모르기 때문에 서버를 생성하는 과정에서부터 어려움을 겪었습니다. 특히 VPC와 IP 주소 범위를 설정하는 부분에서 부터… 모르겠더군요….

VPC와 서브넷에 대한 개념이 부족해서 어떤 IP 범위를 설정해야 할지 몰랐고, (우리 팀원들이 각자 다른 지역에서 개발하고 있어서 개발 환경의 IP 주소와 클라우드의 IP 주소를 어떻게 설정해야 할지, 애초에 어떤 차이가 있는 건지 등 모든 게 의문이었습니다.) 먼저 이를 해결하기 위해 네트워크와 관련된 기본적인 개념들을 공부하게 되었습니다.

😖 왜 IP 주소를 설정해야 할까?

IP 주소를 설정하는 이유는 클라우드 내의 리소스들 (예를 들어 PostgreSQL 데이터베이스)에 접근할 수 있도록 하기 위해서입니다. 외부에서 클라우드로 접속하려면 해당 리소스들이 사용할 IP 주소가 필요합니다.

여기서 중요한 점은 개발 환경의 IP 주소와 클라우드 내의 IP 주소가 다르다는 점입니다.

개발 환경의 IP 주소는 클라우드 외부에서 접속할 때 사용하는 공인 IP 주소입니다.

클라우드 내의 IP 주소는 VPC나 서브넷 설정 시 사용하는 사설 IP 주소입니다.

이 두 가지가 다른 점을 이해하는 것이 중요했습니다.

네이버 클라우드에서 VPC를 설정할 때는 사설 IP 주소 범위를 지정하는 것인데, 여기서 설정하는 IP는 클라우드 내의 리소스들만 사용하는 주소입니다.

🤔 VPC와 IP 설정에서 헷갈린 부분

제가 가장 헷갈린 부분은 바로 VPC와 IP 범위를 설정할 때, 개발 환경의 IP 주소와 클라우드 내에서 사용할 IP 범위가 어떤 차이가 있는지 확실히 몰랐던 것입니다.

예를 들어, VPC 설정 시 IP 주소 범위를 10.0.0.0/16으로 지정하면 이 범위 내에서만 사설 IP 주소가 할당됩니다.

그런데 저는 여기에 저희 팀의 개발 환경 IP 주소를 넣어야 한다고 생각했던 거죠. 😅

예를 들어 제 컴퓨터의 로컬 IP 주소가 175.112.13.254 라면,

개발 환경의 IP 주소인 175.112.13.254은 설정하지 않고,

클라우드 리소스를 위한 사설 IP 범위만 설정하면 되는 것입니다.

그러니까, 개발 환경의 IP가 아닌 클라우드 내의 사설 IP 대역(예: 10.0.0.0/16, 192.168.0.0/24)을 선택해야 합니다.

개발자의 IP 주소를 설정하는 것이 아니라, 클라우드 네트워크 내에서만 사용할 주소 범위를 설정해야 한다는 사실을 알지 못하고 계속해서 고민하고 있었던 거죠 …

여기에서 IP 주소를 설정할 때는 개발 환경의 IP 주소와는 전혀 관계가 없고, 클라우드 내에서 리소스들이 사용할 사설 IP 주소 범위만 지정하면 됩니다.

📖 VPC와 IP 주소 범위 설정

다만, 아직까지 완전하게 이해되지는 않았기에 VPC와 IP, 나아가 서브넷까지 조금 더 알아보았습니다.

🤔 1. VPC란?

VPC(Virtual Private Cloud)는 클라우드 내에서 독립적인 네트워크 환경을 제공하는 서비스입니다.

클라우드 내의 가상 네트워크이고, 이 네트워크는 외부와는 분리된 독립적인 네트워크 환경을 제공합니다.

예를 들어 네이버 클라우드 플랫폼에서는 VPC를 사용해 외부와 분리된 가상 네트워크 환경을 구성할 수 있습니다.

  • VPC 내에서는 서브넷을 사용하여, 클라우드 리소스를 다양한 IP 범위로 나누어 관리할 수 있습니다.
  • 서브넷은 실제 클라우드 리소스들이 통신할 수 있는 네트워크 범위를 지정합니다.

🤔 2. IP 주소 대역 설정

VPC를 설정할 때, IP 주소 범위를 지정해야 합니다. 이 IP 범위는 사설 IP 주소 대역으로 설정해야 합니다. 일반적으로 사용되는 범위는 다음과 같습니다:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

이 범위는 VPC 내에서만 사용되며, 외부와의 연결은 다른 방식으로 관리됩니다.

그래서, 개발자의 컴퓨터 IP와는 관계없이 클라우드 내에서 리소스를 운영할 수 있는 사설 IP 주소를 설정하는 것입니다.

🤔 3. 서브넷 설정

VPC를 생성한 후, 실제로 리소스를 배치할 서브넷을 설정합니다. 서브넷은 VPC 내에서 리소스를 관리할 수 있는 세부적인 네트워크 대역을 정의합니다.

예를 들어, 10.0.0.0/24와 같은 범위를 설정하여, VPC 내에서 각 리소스들이 사설 IP를 가지게 할 수 있습니다.

IP와 서브넷, 서브넷 마스크에 대한 개념들은 다른 블로그 글을 참고해서 학습했습니다. 컴퓨터 네트워크 수업 시간에 다 배웠던 거라 링크만 추가해두겠습니다.

https://sjquant.tistory.com/59

🤔 4. 외부 접속을 위한 IP 설정

외부에서 클라우드 내 리소스에 접속하려면 공인 IP 주소를 사용해야 합니다. 개발자의 로컬 환경에서 접근하려면, 보안 그룹에서 접속을 허용할 IP 주소를 지정해야 합니다.

예를 들어, 개발자의 IP 주소가 175.112.13.254이라면, 보안 그룹에서 해당 IP에 대한 접근을 허용해줘야만 외부에서 접속할 수 있게 됩니다.

⚙ 네이버 클라우드에서 PostgreSQL 서버 생성하기

VPC와 서브넷을 설정한 후, 실제로 PostgreSQL 서버를 생성하는 작업에 들어갔습니다.

사실 VPC와 서브넷만 생성하면 네이버 클라우드 플랫폼 사이트에서 간편하게 서버를 생성할 수 있었습니다. (aws ec2보다… 더 간단한데 더 어렵달까…….)

  1. VPC 생성: 10.0.0.0/16 범위로 VPC를 설정
  2. 서브넷 생성: 서브넷을 10.0.0.0/24로 나누어 리소스를 배치
  3. 보안 그룹 설정: 외부에서 접속하려는 IP 주소를 보안 그룹에 등록하여 해당 IP만 PostgreSQL 서버에 접근 가능하게 설정 (개발하는 로컬 IP 주소를 넣으면 됨)

이번 프로젝트를 통해 백엔드, 특히 네트워크적인 지식을 쌓아가고 싶다고 생각했는데, 처음부터 이렇게 문제(?)를 마주할지 몰랐습니다… 어쨌든 이번 학습을 통해 IP, VPC 등에 대한 지식을 조금이나마 쌓을 수 있게 된 것 같습니다. 그리고,,, 이렇게 세팅해 둔 서버가 많은 문제를 일으키지 않기를……..

참고

https://velog.io/@devmizz/DevOps-네이버-클라우드-DB-사용하기



0개의 댓글