Oracle Cloud에서 앱 서버 + DB 서버 연동 구축

Oracle Cloud에서 앱 서버와 DB 서버의 연동 구축은 안정적인 서비스 운영의 핵심입니다. 특히 기업 내부 시스템이나 클라우드 네이티브 애플리케이션을 설계할 때, Oracle Cloud Infrastructure(OCI)를 활용하면 고성능, 보안, 확장성을 모두 확보할 수 있습니다. 이번 포스팅에서는 Oracle Cloud에서 앱 서버와 DB 서버 연동 구축 방법을 단계별로 정리하고, 네트워크 설계부터 실습 팁까지 자세히 소개하겠습니다.


Oracle Cloud 앱 서버와 DB 서버 구성 개요

Oracle Cloud에서는 앱 서버(Application Server)와 데이터베이스 서버(Database Server)를 각각 별도의 컴퓨트 인스턴스 또는 DB 시스템으로 분리해 구축할 수 있습니다. 일반적으로 앱 서버는 웹 요청을 처리하고, DB 서버는 데이터를 관리하는 구조로 나뉩니다.

이 연동 구조는 다음과 같은 장점을 가집니다:

  • 보안 강화: DB 서버를 Private Subnet에 배치하여 외부 접근 차단
  • 성능 최적화: 내부 네트워크(VCN)를 통한 고속 통신
  • 확장성: 앱 서버와 DB 서버를 독립적으로 확장 가능

구축 시 필요한 구성요소는 다음과 같습니다:

  • Virtual Cloud Network(VCN)
  • 서브넷(앱 서버용 Public Subnet, DB 서버용 Private Subnet)
  • Internet Gateway 및 NAT Gateway
  • 보안 리스트 및 NSG(Network Security Group)
  • Oracle Linux 기반 컴퓨트 인스턴스
  • Oracle Autonomous Database 또는 VM DB 시스템

VCN 및 서브넷 구성하기

Oracle Cloud에서 앱 서버와 DB 서버를 연동하려면 먼저 **VCN(Virtual Cloud Network)**을 생성해야 합니다. 이 VCN은 모든 인스턴스 간 통신의 기반이 됩니다. VCN 내부에는 서브넷을 나눠서 앱 서버와 DB 서버를 분리 운영하는 것이 권장됩니다.

  • Public Subnet: 앱 서버 배치, 인터넷 접근 가능
  • Private Subnet: DB 서버 배치, 외부 접근 제한

서브넷 구성 시 CIDR 블록을 다음과 같이 나눌 수 있습니다:

  • VCN: 10.0.0.0/16
    • Public Subnet: 10.0.1.0/24
    • Private Subnet: 10.0.2.0/24

서브넷 생성 후, 인터넷 게이트웨이를 Public Subnet에 연결하고, NAT 게이트웨이를 Private Subnet에서 아웃바운드 인터넷 접속용으로 설정합니다. 이렇게 하면 DB 서버는 외부 접근은 차단하면서도 업데이트 등 아웃바운드 트래픽은 가능하게 됩니다.


앱 서버 인스턴스 생성 및 구성

앱 서버는 Oracle Cloud의 Compute Instance를 통해 생성합니다. 대부분 Oracle Linux 8 또는 Ubuntu를 선택하며, HTTP 요청을 처리할 수 있도록 웹 서버(Apache, NGINX)와 백엔드 프레임워크(Node.js, Spring 등)를 설치합니다.

기본 설정 팁:

  • 공개 키 방식 SSH 접속 설정
  • Public IP 할당 여부 확인
  • 보안 리스트에 포트 80(HTTP), 443(HTTPS), 22(SSH) 오픈
  • 필요시 Load Balancer 연동

연동을 위해 반드시 Private Subnet의 DB 서버로의 접근 포트(기본 1521 또는 3306 등)를 열어야 합니다. 이를 위해 **Network Security Group(NSG)**를 설정하여, 앱 서버 IP 대역만 접근 가능하도록 제한하는 것이 중요합니다.


DB 서버 구축 및 연동 설정

Oracle Cloud에서는 다음 두 가지 방식으로 DB 서버를 구축할 수 있습니다:

  1. Oracle Autonomous Database (ADB): 자동화된 관리 기능, 보안 패치, 고가용성 제공
  2. Bare Metal / VM DB System: 직접 관리하는 전통적인 방식

보통 내부 애플리케이션에서는 VM DB System을 선택하고, DB 서버를 Private Subnet에 설치하여 외부 접근을 차단합니다.

DB 인스턴스 생성 시 다음을 고려해야 합니다:

  • Database Edition 선택 (Standard, Enterprise 등)
  • DB Version (예: Oracle 19c)
  • Backup & Patching 주기 설정
  • TDE 및 보안 설정 확인

연동을 위해 앱 서버에서 **DB 접속 정보(TNS, 사용자 계정, 포트 등)**를 설정하고, sqlplus, JDBC, 또는 Python 등의 DB 클라이언트를 통해 접속합니다.


보안 및 접근 제어 설정

Oracle Cloud에서의 보안 구성은 인프라 구성만큼 중요합니다. 특히 앱 서버와 DB 서버 사이의 통신을 안전하게 유지하려면 다음 설정을 철저히 해야 합니다.

주요 보안 조치:

  • 보안 리스트(Security Lists): 서브넷 단위 접근 제어, 기본 포트만 허용
  • NSG(Network Security Group): 인스턴스 단위 세분화된 접근 설정
  • Identity and Access Management (IAM): 사용자, 그룹, 정책을 통한 리소스 접근 통제
  • Audit 및 Monitoring 설정: 로그 추적 및 비정상 트래픽 탐지

특히 DB 서버는 Port 1521(Oracle DB 기본 포트)만 앱 서버의 Private IP에서 접근 가능하도록 NSG에서 명확히 지정해야 합니다.


Q&A

Q. Oracle Cloud에서 앱 서버와 DB 서버를 연동하는 가장 보안적인 방법은?

앱 서버와 DB 서버를 연동할 때 가장 보안적인 방법은 Private Subnet과 NSG를 활용한 내부 통신입니다. DB 서버를 Public Subnet에 두지 않고, 앱 서버 역시 NSG를 통해 접근 가능한 포트만 제한적으로 열어야 합니다. 특히 NSG 설정에서 앱 서버의 Private IP 또는 서브넷 범위만 허용하도록 설정하면 외부 위협으로부터 DB를 안전하게 보호할 수 있습니다. 또한 Oracle Cloud의 Vault 서비스를 통해 DB 패스워드와 접속 정보를 안전하게 저장하고 관리하는 것도 추천합니다. 마지막으로, Oracle Cloud Infrastructure Monitoring과 Logging 서비스를 연동해 실시간 모니터링 및 이상 징후를 탐지하는 것도 강력한 보안 수단이 됩니다.


Q. Oracle Cloud에서 앱 서버가 DB 서버에 연결되지 않을 때 확인해야 할 사항은?

앱 서버가 DB 서버에 연결되지 않을 경우, 다음 사항들을 점검해야 합니다:

  1. NSG 설정: 앱 서버에서 DB 서버로의 연결이 허용되어 있는지 확인합니다. NSG의 인바운드 규칙에서 DB 포트(1521, 3306 등)가 허용되어 있어야 합니다.
  2. 서브넷과 VCN 라우팅: 앱 서버와 DB 서버가 동일한 VCN 내에 있으며 라우팅 테이블이 서로 연결되어 있는지 확인합니다.
  3. 방화벽 설정: 인스턴스 내부의 firewalld, iptables 또는 OS 보안 그룹에서 DB 포트가 차단되어 있는지 확인합니다.
  4. DB Listener 상태: DB 서버 내에서 Listener가 정상 동작 중인지 확인합니다. lsnrctl status 명령으로 확인할 수 있습니다.
  5. DB 접속 정보 확인: TNS 설정, 포트, SID, 사용자 계정 등이 정확히 입력되었는지 점검해야 합니다.

이처럼 네트워크 보안 계층과 애플리케이션 설정 양쪽을 모두 확인해야 문제를 해결할 수 있습니다.


Q. 앱 서버와 DB 서버를 다른 리전에 구축해도 되나요?

기술적으로는 가능하지만 권장하지 않습니다. Oracle Cloud에서는 리전 간 트래픽이 퍼블릭 인터넷을 경유하므로, 레이턴시 증가 및 보안 위협이 따릅니다. 만약 불가피하게 다른 리전에 서버를 배치해야 한다면, OCI FastConnect 또는 VPN Connect를 통해 전용망으로 연결해야 합니다. 또한, DB의 응답속도가 중요한 애플리케이션이라면 반드시 동일 리전에 서버를 배치하여 최소한의 레이턴시와 안정성을 확보하는 것이 좋습니다.