본문 바로가기
Unreal Engine 5

오라클 프리티어 기반 Perforce 설정하기 1 - 오라클 클라우드 생성하기

by 니키티스 2026. 3. 29.

1. 개요

이번에 사이드 프로젝트를 시작하기에 앞서, 버전 컨트롤 시스템을 설정하는 방법을 공부해보려 한다.

그 중에서도 보통이라면 사용했을 Git 대신, 언리얼 엔진에서 널리 사용되는 Perforce를 기반해서 작업해보려 한다. 문제는 이 과정에서 서버니 뭐니 작업해야 할 것들이 꽤나 많아서, 가이드를 보며 세팅해 보기로 했다.

https://dev.epicgames.com/community/learning/tutorials/1lV4/unreal-engine-perforce-setup-on-oracle-cloud-free-tier?utm_source=chatgpt.com#connecting&furthersteps

 

Perforce Setup on Oracle Cloud [FREE TIER] | Community tutorial

This guide explains how to install and configure a Perforce/Helix P4 server and host it for free on Oracle Cloud.

dev.epicgames.com

해당 글은 철저히 공부용으로 쓴 만큼 주관적인 생각이 많으며, 잘못된 지식이 있을 수 있으므로 이 부분은 지적해주시면 감사하겠다.

또한, 해당 글은 기본적으로 버전 관리 시스템에 대한 지식을 갖고 있고 언리얼 엔진을 다룰 줄 안다는 것을 전제로 하고 있어, 그렇지 않은 경우 이해가 어려울 수 있다.

 

Perforce + Oracle Cloud Free Tier를 선택한 이유

사실 천생이 유니티 개발자인 만큼 보통이라면 Git을 이용해 작업하려고 했으나, 특히나 언리얼 엔진의 경우 대용량 파일 + 바이너리 파일이 다수 존재하기 때문에 Git의 효과가 많이 떨어진다고 알려져 있다.

Git은 한 사람이 동시에 한 파일을 작업하다가 충돌이 나는 경우가 많은데, 바이너리 파일은 보통 독자적인 규격이기 때문에 충돌이 일어났을 때 에디터에서 깔끔하게 보여주는 경우가 별로 없기도 하고, 코드처럼 깔끔하게 병합하기도 어렵기 때문이다.

이런 바이너리 파일을 다루는 효과적인 방법은 바로 Lock 개념이다. 어떤 파일을 작업할 때 아예 다른 사람이 작업할 수 없도록 잠그어 버리는 것이다. 이를 잘 지원해주는 게 SVN이나 Perforce와 같은 중앙집중식 버전 관리 시스템(Centralized Version Control System)이다. 이때 퍼포스는 언리얼 엔진에서 공식 지원해주다 보니 UI 면에서 사용이 편리하고, 또 필요한 데이터만 받는 방식이다 보니 다운로드가 다른 버전 관리 시스템(VCS)에 비해 상당히 빠르다.

물론 퍼포스에는 단점이 있는데 소규모 팀에서만 무료라는 것이다. 5인 초과 / 5개를 초과하는 스페이스를 활용할 시 사람마다 요금이 부과된다. 그 때문에 Git LFS(LFS에선 Lock 지원)SVN이냐 퍼포스냐 둘 중 어느 것을 택할지 갑론을박이 많다...

어쨌거나 오늘은 퍼포스를 사용해볼 것인데, 퍼포스는 특히 무료 버전(Free)이라면 VCS를 돌릴 서버를 직접 세팅해야 한다.

이때 나 같이 사이드 프로젝트를 하는 사람이나 인디게임 개발을 진행하는 사람이라면 서버 값을 걱정해야 하는데, 그게 문제가 되는 경우에는 로컬 서버 돌리기, 안 쓰는 컴퓨터나 NAS를 서버로 돌리기, 무료 클라우드 서비스를 고려할 수 있다. 앞의 두 개는 사실 직접 서버를 세팅하면 되니 따로 설명할 것이 없다.

반면 클라우드 서버를 사용하기로 마음 먹었다면, '1인 혹은 초소규모 팀'에서 활용할 만한 무료 클라우드 솔루션으로 보통 'AWS EC2 Free Tier''Oracle Cloud Free Tier' 등의 무료 솔루션을 고려하게 된다.

상황에 따라 어떤 것이 좋을지는 달라질 수 있겠지만, 이번 글에서는 '오라클 프리티어'를 선택하여 진행할 것이다.

그 이유는 바로 '상시 무료'이기 때문이다.

AWS EC2 프리티어 서비스는 계정 생성 후 12개월동안만 유효하기 때문에 깜빡하고 있는 동안 1년이 모두 지나 결제되어 버리는 경우가 꽤 잦다. 그래서 생각보다 한계가 있다.

반면, Oracle Cloud Free Tier는 성능이 뛰어나지 않지만 기간 제한 없이 평생 무료로 클라우드 서비스를 제공한다. 그런 점에서 소규모 팀인데 퍼포스를 찍먹하고 싶다? Oracle Cloud Free Tier도 나쁘지 않은 선택이다.

상시 무료 클라우드 서비스
무제한 이용 가능한 서비스입니다.
- Oracle APEX 및 Oracle SQL Developer와 같은 강력한 도구가 포함된 Oracle Autonomous Database 2개
- AMD 컴퓨팅 VM 2개
- ARM 기반 Ampere A1 컴퓨팅 인스턴스 최대 4개 지원(매월 3,000 OCPU 시간과 18,000 기가바이트-시간 제공)
- 블록 스토리지, 오브젝트 스토리지, 아카이브 스토리지, 로드 밸런서 및 데이터 송신, Monitoring 및 Notifications
(출처: Oracle Cloud Free Tier, https://www.oracle.com/kr/cloud/free/)

위는 바로 클라우드 성능인데, 요약하자면

  • 2 AMD VMs / 각각 1GB 메모리 제공
  • A1 코어에서는 24GB 메모리까지 쓸 수 있고, 최대 4대까지 월별로 적절한 제한 하에 사용 가능
  • 2블럭 200GB 스토리지
  • 기타 다양한 지원 존재

1인으로도 쓰다가 답답한 성능 때문에 규모 있는 팀에서 굴리기엔 한계가 많은 것도 사실이다. 그래도 언리얼 엔진 사이드 프로젝트 하나 굴리는 정도로는 충분한 성능이니 이번에는 이걸로 공부해보도록 하자.

 

2. 오라클 인스턴스 만들기

2.1 계정 생성 및 설정

우선 다음 링크(영문판: https://www.oracle.com/cloud/free/, 한글: https://www.oracle.com/kr/cloud/free/) 혹은 '오라클 클라우드'를 검색해서 들어가자.

영문판으로 진행할건데 우선 클라우드 계정 가입부터 진행하자.

이때 Oracle 클라우드 계정은 기존 Oracle 계정을 가입했더라도 따로 가입해야 한다(나의 경우는 그랬음).

클라우드 계정은 별도로 가입해야 한다.
Customer Type은 Individual(개인)으로 설정하고, 홈 영역(어느 지역 도메인으로 생성할지 설정)은 South Korea North로 설정하자.

이때 가입 중 홈 영역 설정이 있는데, 아래 설정을 보면 ' ID 리소스 및 기본 ID 도메인이 생성될 지리적 위치'라고 설명하고 있다. 기본적으로는 어느 지역 서버 쓸지 선택하는거니 가까운 지역으로 하는 게 좋은데, 26년 3월 28일 기준 현재에는 서울/도쿄 수요가 너무 많아 사용이 불가하다고 한다. 그래서 강제로 춘천(Chuncheon) 서버를 쓰는 수밖에 없다.

이후 과정은 찍어둔 자료가 없어서, 다른 블로그에서 아주 잘 설명된 글들(ex:https://yunwoong.tistory.com/418)을 참고하도록 하자...

가입이 끝났다면 아래와 같은 창으로 들어올 수 있다.

다만 그 전에 한 가지 팁이 있는데, 만약 사이트가 백색이라 너무 밝다면 위 화면처럼 Dark Mode를 활성화할 수도 있다.

우측 상단 프로필 클릭 > Console settings 클릭
Theme에서 Light mode, Dark mode, Match with your operating system(운영체제 설정에 맞춤) 설정이 있으니 이 중 원하는 걸 골라보자.

 

2.2 인스턴스 만들기

다시 돌아와서, 우측의 Build 카드를 보면 Create a VM instance가 존재한다. 이걸 클릭하자.

버튼 누르고 들어오면 이렇게 instance를 만들 수 있다. 클라우드 서버에 해당하는 이름을 Instance Name에 적어준다.

다음으로 클라우드에서 쓸 운영체제에 해당하는 Image, Shape를 설정한다.

여기선 다음과 같이 설정할 것이다.

  • Image: Ubuntu 20.04
  • Shape: V.M.Standard.E2.1.Micro

일단 위 상황에서 Change Image를 클릭하자.

Ubuntu 선택 후 스크롤을 내리자.

 

상세한 버전으로 Canonical Ubuntu 20.04를 선택하자.

더 최신 버전으로 해도 되는데, 강의 버전에선 20.04여서 이를 선택했다.

다음으로 Change shape를 클릭하자.

설정이 잘 되면 우분투 표시가 뜬다. 설정이 맞다면 이제 Change shape를 누르자.

설명이 많은데 휠을 내리면...
이렇게 Shape 리스트가 뜬다. VM.Standard.E2.1.Micro를 선택한 후 Select Shape를 클릭하자.

잘 선택해서 Select Shape까지 누르면 나면 Basic Information은 끝이다. Next를 눌러 넘어가자.

그 다음인 Security 부분은 개인 클라우드용에서는 크게 필요 없어서 스킵한다. 필요하다면 더 설정해보자.

다음으로는 Networking인데 여긴 중요하다.

러프하게 설명해서, 컴퓨터로 따지면 인터넷 연결을 위해 LAN을 꼽는 곳을 제공하는 게 네트워크 인터페이스 카드(NIC; network interface card)인데, 여기선 가상으로 NIC를 만들게 된다. 그게 바로 vnic(virtual network interface card)이다. 

Primary VNIC에서는 가상으로 만들 네트워크 인터페이스 카드의 이름을 지정할 수 있다. 적당히 네트워크를 식별할 만한 이름(ex: backup-vnic)을 지정한다.

그리고 처음으로 클라우드 서비스를 쓰면 virtual cloud network가 없다. 그러니 Primary Network에서는 Create new virtual cloud network를 선택하자.

New virtual cloud network name은 적당히 지어주면 되겠다.

문제는 여기서 아래에 보면, Create new virtual cloud network를 선택하면 자동 public IPv4 주소 할당 옵션을 체크할 수 없다.

Public IPv4 address가 없으면 외부에서 접근이 불가하다. 이 부분에 대해서는 2.4에서 다루도록 하자.

그리고 여기서 중요한 것이 바로 SSH 키이다.

SSH 키는 클라우드 서버에 접속할 때 인증을 위해 반드시 필요한 요소이다. 별도로 설정을 복잡하게 할 필요는 없고, Generate a key pair for me를 선택하고 나면 그에 해당하는 키는 자동으로 만들어주게 된다.

문제는 처음에 설정하고 나면 Key를 바꿀 수 없다. 그렇기 때문에, 위에서 Download private key, Download public key 버튼을 클릭해 private key, public key를 다운받고 나면, 서버를 생성하고 난 후부터는 다시는 이 파일들을 받을 수 없다.

그러니 반드시 여기서 다운받은 ssh-key-2000-00-00.key 및 ssh-key-2000-00-00.key.pub 형태의 키 파일은 잊어버리지 않게 고이고이 잘 저장해놓자.

다음은 Boot volume으로 클라우드 서비스의 I/O 스페이스를 지정하는 역할이다.

여기서는 용량 수치만 변경해준다. Specify a custom boot volume size...를 체크하고 Boot volume size를 150(GB)으로 설정한다.

이론상으로는 프리티어에서는 200기가까지 할당받을 수 있다고 한다. 그러나 내가 참고한 튜토리얼에서는 그렇게 했을 때 자꾸 프리 리소스 초과 문제가 발생했다고 해서, 안전하게 좀 더 줄인 150기가로 설정하는 걸 추천한다.

여기까지 하고 Next를 누르면 지금까지 설정한 인스턴스의 내용 요약을 볼 수 있다. 적절히 설정되어 있는지 잘 보고 우측 하단의 Craete 버튼을 누르면 서버 생성 작업이 시작된다.

대시보드에서 보면 서버 생성 작업은 꽤나 오래 걸리는데, 이때 State가 Running으로 변하게 되면 서버 생성 및 실행이 완료된 것이다!

2.3 방화벽 설정하기

이걸로 끝은 아니고, public ip가 비어 있다면 그것도 설정해야 하고, 방화벽(Firewall)에서 Perforce가 자주 쓰는 1666 포트를 여는 작업도 필요하다.

일단 방화벽부터 진행해보자. 우선 instance 설정에 들어가본다.

위 상태에서 바로 instance의 이름을 클릭하거나,

좌상단 cloud 로고를 누른 다음 아래 Resources 탭에서 instance의 이름을 클릭하면 된다. 여기서 안 뜬다면 Resources 카드 내에서 우상단에 있는 View all Resources를 클릭하자.

방화벽 설정은 다소 안쪽에 있다. 지루하더라도 조금만 참고 들어가보자...

Instance Details 그룹에 있는 virutal cloud network의 이름을 클릭하고
Subnets > subnet 이름을 클릭하고,
subnet 내에 있는 Security 탭을 클릭해서, (아마) 딱 하나 있을 Security List의 이름을 클릭하고,
마지막으로 Security rules 탭의 Add Ingress Rules를 클릭하면 끝.

위에서 Add Ingress Rules를 클릭하면 방화벽 포트 설정을 위한 규칙을 열 수 있다.

누르면 위와 같은 설정이 뜰건데(배경색은 다를 수 있음), 위 사진과 같이 설정해주자. 요약하면 다음과 같다.

  • Source Type은 CIDR
  • CIDR은 0.0.0.0/0
  • IP Protocol은 TCP
  • Source Port는 All
  • Destination Port Range는 1666

여기까지 하고 나면, Oracle 측에서의 방화벽 설정은 끝이다. 그러나 실제 터미널에 들어가서, 내부 방화벽 설정을 또 해줘야 하는데 그 부분은 나중에 살펴보자.

 

2.4 (특수한 경우) Public IP가 발급되지 않았을 때

나 같은 경우에는 강의를 분명 따라했는데 Public IP가 발급되지 않아 곤혹을 치뤘다.

이 경우엔 임시 Public IP 주소(Ephemeral public IP address)를 발급받아서 Public IP를 생성할 수 있다.

일반적으로 영구적인 Public IP는 서버가 없어져도 그대로 유지되지만, 임시 Public IP 주소(Ephemeral public IP address)는 서버를 다시 활성화했을 때나 서버를 재생성했을 때 똑같은 주소로 다시 할당되지 않는다. 그런 차이가 있긴 한데, 개인용으로 쓸 땐 사실 크게 문제가 안되긴 한다.

우선 Instance로 돌아가도록 하자.

Networking 탭을 클릭한다.

아래로 내려가면 Attached VNICs에서 그에 해당하는 VNIC가 있다. 클릭하자.

IP Administration 탭을 클릭하고, 스크롤을 오른쪽 끝까지 땡기면 위와 같은 ...을 볼 수 있다.

이제 위 사진을 따라서 ...을 찾아 클릭하면, Edit을 누를 수 있다.

이때 안으로 들어오면, 원래는 No public IP로 되어 있는 옵션이 보인다.

여기선 이미 세팅을 다 해놓은 상태라 두 옵션밖에 안 나오는데, No public IP로 설정되어 있는 상태라면 고정 IP까지 해서 총 세 개 옵션이 보이게 된다. 여기서 고정 IP로 해도 되긴 하는데, 여기선 공부용인 만큼 굳이 그럴 필요까지는 없다고 판단했다.

이러고 우하단의 Update 버튼을 누르면, 방금은 할당되어 있지 않던 Public IP address 란이 차 있는 걸 볼 수 있다.

새로운 주소가 할당된 걸 볼 수 있다!

public IP까지 할당되었다면, 오라클 클라우드 인프라에서는 더 설정할 것이 없다.

글 내용이 길어져서, Perforce 설정은 다음 글에서 진행해보자...

https://dev-nicitis.tistory.com/94

 

오라클 프리티어 기반 Perforce 설정하기 2 - 인스턴스에 퍼포스 연결하기

이전글(https://dev-nicitis.tistory.com/93)에서 오라클 클라우드 인스턴스를 생성했다.이제 이 인스턴스에 퍼포스를 설치하고 사용할 준비를 해보자. 1. 인스턴스에 연결해보기우선 인스턴스를 생성했

dev-nicitis.tistory.com

 

 

참고

https://dev.epicgames.com/community/learning/tutorials/1lV4/unreal-engine-perforce-setup-on-oracle-cloud-free-tier?utm_source=chatgpt.com#connecting&furthersteps

https://www.oracle.com/kr/cloud/free/

https://yunwoong.tistory.com/418

https://jinsu-of-coding.tistory.com/22

 

 

 

댓글